function to initialize absolute tolerance for state not needed

This commit is contained in:
Martin Diehl 2018-11-28 17:12:06 +01:00
parent 5983496c35
commit b917ae2cca
1 changed files with 12 additions and 41 deletions

View File

@ -64,7 +64,6 @@ module plastic_disloUCLA
plastic_disloUCLA_kinkheight, & !< height of the kink pair plastic_disloUCLA_kinkheight, & !< height of the kink pair
plastic_disloUCLA_omega, & !< attempt frequency for kink pair nucleation plastic_disloUCLA_omega, & !< attempt frequency for kink pair nucleation
plastic_disloUCLA_kinkwidth, & !< width of the kink pair plastic_disloUCLA_kinkwidth, & !< width of the kink pair
plastic_disloUCLA_dislolength, & !< dislocation length (lamda)
plastic_disloUCLA_friction, & !< friction coeff. B (kMC) plastic_disloUCLA_friction, & !< friction coeff. B (kMC)
!* !*
plastic_disloUCLA_nonSchmidCoeff !< non-Schmid coefficients (bcc) plastic_disloUCLA_nonSchmidCoeff !< non-Schmid coefficients (bcc)
@ -144,8 +143,8 @@ module plastic_disloUCLA
plastic_disloUCLA_dotState, & plastic_disloUCLA_dotState, &
plastic_disloUCLA_postResults plastic_disloUCLA_postResults
private :: & private :: &
plastic_disloUCLA_stateInit, & plastic_disloUCLA_stateInit
plastic_disloUCLA_aTolState
contains contains
@ -252,7 +251,6 @@ material_allocatePlasticState
allocate(plastic_disloUCLA_kinkheight(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal) allocate(plastic_disloUCLA_kinkheight(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal)
allocate(plastic_disloUCLA_omega(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal) allocate(plastic_disloUCLA_omega(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal)
allocate(plastic_disloUCLA_kinkwidth(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal) allocate(plastic_disloUCLA_kinkwidth(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal)
allocate(plastic_disloUCLA_dislolength(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal)
allocate(plastic_disloUCLA_friction(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal) allocate(plastic_disloUCLA_friction(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal)
allocate(plastic_disloUCLA_QedgePerSlipFamily(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal) allocate(plastic_disloUCLA_QedgePerSlipFamily(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal)
allocate(plastic_disloUCLA_v0PerSlipFamily(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal) allocate(plastic_disloUCLA_v0PerSlipFamily(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal)
@ -368,8 +366,7 @@ plastic_disloUCLA_Noutput(phase_plasticityInstance(p)) = plastic_disloUCLA_Noutp
enddo enddo
end associate end associate
enddo enddo
print*, plastic_disloUCLA_sizePostResults
print*, plastic_disloUCLA_output
rewind(fileUnit) rewind(fileUnit)
phase = 0_pInt phase = 0_pInt
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= MATERIAL_partPhase) ! wind forward to <phase> do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= MATERIAL_partPhase) ! wind forward to <phase>
@ -445,9 +442,6 @@ plastic_disloUCLA_Noutput(phase_plasticityInstance(p)) = plastic_disloUCLA_Noutp
case ('kink_width') case ('kink_width')
plastic_disloUCLA_kinkwidth(1:Nchunks_SlipFamilies,instance) = & plastic_disloUCLA_kinkwidth(1:Nchunks_SlipFamilies,instance) = &
tempPerSlip(1:Nchunks_SlipFamilies) tempPerSlip(1:Nchunks_SlipFamilies)
case ('dislolength')
plastic_disloUCLA_dislolength(1:Nchunks_SlipFamilies,instance) = &
tempPerSlip(1:Nchunks_SlipFamilies)
case ('friction_coeff') case ('friction_coeff')
plastic_disloUCLA_friction(1:Nchunks_SlipFamilies,instance) = & plastic_disloUCLA_friction(1:Nchunks_SlipFamilies,instance) = &
tempPerSlip(1:Nchunks_SlipFamilies) tempPerSlip(1:Nchunks_SlipFamilies)
@ -542,6 +536,7 @@ plastic_disloUCLA_Noutput(phase_plasticityInstance(p)) = plastic_disloUCLA_Noutp
initializeInstances: do phase = 1_pInt, size(phase_plasticity) initializeInstances: do phase = 1_pInt, size(phase_plasticity)
myPhase2: if (phase_plasticity(phase) == PLASTICITY_disloUCLA_ID) then myPhase2: if (phase_plasticity(phase) == PLASTICITY_disloUCLA_ID) then
p = phase
NofMyPhase=count(material_phase==phase) NofMyPhase=count(material_phase==phase)
instance = phase_plasticityInstance(phase) instance = phase_plasticityInstance(phase)
ns = plastic_disloUCLA_totalNslip(instance) ns = plastic_disloUCLA_totalNslip(instance)
@ -610,38 +605,36 @@ plastic_disloUCLA_Noutput(phase_plasticityInstance(p)) = plastic_disloUCLA_Noutp
startIndex=1_pInt startIndex=1_pInt
endIndex=ns endIndex=ns
state(instance)%rhoEdge=>plasticState(phase)%state(startIndex:endIndex,:) state(instance)%rhoEdge=>plasticState(phase)%state(startIndex:endIndex,:)
state0(instance)%rhoEdge=>plasticState(phase)%state0(startIndex:endIndex,:)
dotState(instance)%rhoEdge=>plasticState(phase)%dotState(startIndex:endIndex,:) dotState(instance)%rhoEdge=>plasticState(phase)%dotState(startIndex:endIndex,:)
plasticState(p)%aTolState(startIndex:endIndex) = plastic_disloUCLA_aTolRho(instance)
startIndex=endIndex+1_pInt startIndex=endIndex+1_pInt
endIndex=endIndex+ns endIndex=endIndex+ns
state(instance)%rhoEdgeDip=>plasticState(phase)%state(startIndex:endIndex,:) state(instance)%rhoEdgeDip=>plasticState(phase)%state(startIndex:endIndex,:)
state0(instance)%rhoEdgeDip=>plasticState(phase)%state0(startIndex:endIndex,:)
dotState(instance)%rhoEdgeDip=>plasticState(phase)%dotState(startIndex:endIndex,:) dotState(instance)%rhoEdgeDip=>plasticState(phase)%dotState(startIndex:endIndex,:)
plasticState(p)%aTolState(startIndex:endIndex) = plastic_disloUCLA_aTolRho(instance)
startIndex=endIndex+1_pInt startIndex=endIndex+1_pInt
endIndex=endIndex+ns endIndex=endIndex+ns
state(instance)%accshear_slip=>plasticState(phase)%state(startIndex:endIndex,:) state(instance)%accshear_slip=>plasticState(phase)%state(startIndex:endIndex,:)
state0(instance)%accshear_slip=>plasticState(phase)%state0(startIndex:endIndex,:)
dotState(instance)%accshear_slip=>plasticState(phase)%dotState(startIndex:endIndex,:) dotState(instance)%accshear_slip=>plasticState(phase)%dotState(startIndex:endIndex,:)
plasticState(p)%aTolState(startIndex:endIndex) = 1e6_pReal
startIndex=endIndex+1_pInt startIndex=endIndex+1_pInt
endIndex=endIndex+ns endIndex=endIndex+ns
state(instance)%invLambdaSlip=>plasticState(phase)%state(startIndex:endIndex,:) state(instance)%invLambdaSlip=>plasticState(phase)%state(startIndex:endIndex,:)
state0(instance)%invLambdaSlip=>plasticState(phase)%state0(startIndex:endIndex,:)
startIndex=endIndex+1_pInt startIndex=endIndex+1_pInt
endIndex=endIndex+ns endIndex=endIndex+ns
state(instance)%mfp_slip=>plasticState(phase)%state(startIndex:endIndex,:) state(instance)%mfp_slip=>plasticState(phase)%state(startIndex:endIndex,:)
state0(instance)%mfp_slip=>plasticState(phase)%state0(startIndex:endIndex,:)
startIndex=endIndex+1_pInt startIndex=endIndex+1_pInt
endIndex=endIndex+ns endIndex=endIndex+ns
state(instance)%threshold_stress_slip=>plasticState(phase)%state(startIndex:endIndex,:) state(instance)%threshold_stress_slip=>plasticState(phase)%state(startIndex:endIndex,:)
state0(instance)%threshold_stress_slip=>plasticState(phase)%state0(startIndex:endIndex,:)
call plastic_disloUCLA_stateInit(phase,instance) call plastic_disloUCLA_stateInit(phase,instance)
call plastic_disloUCLA_aTolState(phase,instance)
plasticState(p)%state0 = plasticState(p)%state ! ToDo: this could be done centrally
endif myPhase2 endif myPhase2
enddo initializeInstances enddo initializeInstances
@ -711,32 +704,10 @@ subroutine plastic_disloUCLA_stateInit(ph,instance)
tempState(5_pInt*ns+1:6_pInt*ns) = tauSlipThreshold0 tempState(5_pInt*ns+1:6_pInt*ns) = tauSlipThreshold0
plasticState(ph)%state0 = spread(tempState,2,size(plasticState(ph)%state(1,:))) plasticState(ph)%state = spread(tempState,2,size(plasticState(ph)%state(1,:)))
end subroutine plastic_disloUCLA_stateInit end subroutine plastic_disloUCLA_stateInit
!--------------------------------------------------------------------------------------------------
!> @brief sets the relevant state values for a given instance of this plasticity
!--------------------------------------------------------------------------------------------------
subroutine plastic_disloUCLA_aTolState(ph,instance)
use material, only: &
plasticState
implicit none
integer(pInt), intent(in) :: &
ph, &
instance ! number specifying the current instance of the plasticity
! Tolerance state for dislocation densities
plasticState(ph)%aTolState(1_pInt:2_pInt*plastic_disloUCLA_totalNslip(instance)) = &
plastic_disloUCLA_aTolRho(instance)
! Tolerance state for accumulated shear due to slip
plasticState(ph)%aTolState(2_pInt*plastic_disloUCLA_totalNslip(instance)+1_pInt: &
3_pInt*plastic_disloUCLA_totalNslip(instance))=1e6_pReal
end subroutine plastic_disloUCLA_aTolState
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
!> @brief calculates derived quantities from state !> @brief calculates derived quantities from state