renaming in accordance with the DAMASK paper

This commit is contained in:
Martin Diehl 2018-09-14 11:09:55 +02:00
parent af32b3d85b
commit 9f16cefd9f
1 changed files with 79 additions and 75 deletions

View File

@ -57,12 +57,12 @@ module plastic_phenopowerlaw
Nslip, & !< active number of slip systems per family Nslip, & !< active number of slip systems per family
Ntwin !< active number of twin systems per family Ntwin !< active number of twin systems per family
real(pReal), dimension(:), allocatable :: & real(pReal), dimension(:), allocatable :: &
tau0_slip, & !< initial critical shear stress for slip xi_slip_0, & !< initial critical shear stress for slip
tau0_twin, & !< initial critical shear stress for twin xi_twin_0, & !< initial critical shear stress for twin
tausat_slip, & !< maximum critical shear stress for slip xi_slip_sat, & !< maximum critical shear stress for slip
nonSchmidCoeff, & nonSchmidCoeff, &
H_int, & !< per family hardening activity (optional) !ToDo: Better name! H_int, & !< per family hardening activity (optional) !ToDo: Better name!
shear_twin !< characteristic shear for twins gamma_twin_char !< characteristic shear for twins
real(pReal), dimension(:,:), allocatable :: & real(pReal), dimension(:,:), allocatable :: &
interaction_SlipSlip, & !< slip resistance from slip activity interaction_SlipSlip, & !< slip resistance from slip activity
interaction_SlipTwin, & !< slip resistance from twin activity interaction_SlipTwin, & !< slip resistance from twin activity
@ -82,10 +82,10 @@ module plastic_phenopowerlaw
type, private :: tPhenopowerlawState type, private :: tPhenopowerlawState
real(pReal), pointer, dimension(:,:) :: & real(pReal), pointer, dimension(:,:) :: &
s_slip, & xi_slip, &
s_twin, & xi_twin, &
accshear_slip, & gamma_slip, &
accshear_twin, & gamma_twin, &
whole whole
real(pReal), pointer, dimension(:) :: & real(pReal), pointer, dimension(:) :: &
sumGamma, & sumGamma, &
@ -158,7 +158,11 @@ subroutine plastic_phenopowerlaw_init
real(pReal), dimension(0), parameter :: emptyRealArray = [real(pReal)::] real(pReal), dimension(0), parameter :: emptyRealArray = [real(pReal)::]
character(len=65536), dimension(0), parameter :: emptyStringArray = [character(len=65536)::] character(len=65536), dimension(0), parameter :: emptyStringArray = [character(len=65536)::]
type(tParameters) :: prm type(tParameters) :: &
prm
type(tPhenopowerlawState) :: &
stt, &
dot
integer(kind(undefined_ID)) :: & integer(kind(undefined_ID)) :: &
outputID !< ID of each post result output outputID !< ID of each post result output
@ -186,7 +190,7 @@ subroutine plastic_phenopowerlaw_init
do p = 1_pInt, size(phase_plasticityInstance) do p = 1_pInt, size(phase_plasticityInstance)
if (phase_plasticity(p) /= PLASTICITY_PHENOPOWERLAW_ID) cycle if (phase_plasticity(p) /= PLASTICITY_PHENOPOWERLAW_ID) cycle
instance = phase_plasticityInstance(p) instance = phase_plasticityInstance(p)
associate(prm => param(instance)) associate(prm => param(instance),stt => state(instance),dot => dotState(instance))
extmsg = '' extmsg = ''
prm%Nslip = config_phase(p)%getInts('nslip',defaultVal=emptyIntArray) prm%Nslip = config_phase(p)%getInts('nslip',defaultVal=emptyIntArray)
@ -198,8 +202,8 @@ subroutine plastic_phenopowerlaw_init
if (prm%totalNslip > 0_pInt) then if (prm%totalNslip > 0_pInt) then
! reading in slip related parameters ! reading in slip related parameters
prm%tau0_slip = config_phase(p)%getFloats('tau0_slip', requiredShape=shape(prm%Nslip)) prm%xi_slip_0 = config_phase(p)%getFloats('tau0_slip', requiredShape=shape(prm%Nslip))
prm%tausat_slip = config_phase(p)%getFloats('tausat_slip', requiredShape=shape(prm%Nslip)) prm%xi_slip_sat = config_phase(p)%getFloats('tausat_slip', requiredShape=shape(prm%Nslip))
prm%interaction_SlipSlip = spread(config_phase(p)%getFloats('interaction_slipslip', & prm%interaction_SlipSlip = spread(config_phase(p)%getFloats('interaction_slipslip', &
requiredShape=shape(prm%Nslip)),2,1) requiredShape=shape(prm%Nslip)),2,1)
prm%H_int = config_phase(p)%getFloats('h_int', requiredShape=shape(prm%Nslip), & prm%H_int = config_phase(p)%getFloats('h_int', requiredShape=shape(prm%Nslip), &
@ -213,18 +217,18 @@ subroutine plastic_phenopowerlaw_init
prm%h0_SlipSlip = config_phase(p)%getFloat('h0_slipslip') prm%h0_SlipSlip = config_phase(p)%getFloat('h0_slipslip')
! sanity checks for slip related parameters ! sanity checks for slip related parameters
if (any(prm%tau0_slip < 0.0_pReal .and. prm%Nslip > 0_pInt)) & if (any(prm%xi_slip_0 < 0.0_pReal .and. prm%Nslip > 0_pInt)) &
extmsg = trim(extmsg)//"tau0_slip " extmsg = trim(extmsg)//"xi_slip_0 "
if (any(prm%tausat_slip < prm%tau0_slip .and. prm%Nslip > 0_pInt)) & if (any(prm%xi_slip_sat < prm%xi_slip_0 .and. prm%Nslip > 0_pInt)) &
extmsg = trim(extmsg)//"tausat_slip " extmsg = trim(extmsg)//"xi_slip_sat "
if (prm%gdot0_slip <= 0.0_pReal) extmsg = trim(extmsg)//"gdot0_slip " if (prm%gdot0_slip <= 0.0_pReal) extmsg = trim(extmsg)//"gdot0_slip "
if (dEq0(prm%a_slip)) extmsg = trim(extmsg)//"a_slip " ! ToDo: negative values ok? if (dEq0(prm%a_slip)) extmsg = trim(extmsg)//"a_slip " ! ToDo: negative values ok?
if (dEq0(prm%n_slip)) extmsg = trim(extmsg)//"n_slip " ! ToDo: negative values ok? if (dEq0(prm%n_slip)) extmsg = trim(extmsg)//"n_slip " ! ToDo: negative values ok?
! expand slip related parameters from system => family ! expand slip related parameters from system => family
prm%tau0_slip = math_expand(prm%tausat_slip,prm%Nslip) prm%xi_slip_0 = math_expand(prm%xi_slip_0,prm%Nslip)
prm%tausat_slip = math_expand(prm%tausat_slip,prm%Nslip) prm%xi_slip_sat = math_expand(prm%xi_slip_sat,prm%Nslip)
prm%H_int = math_expand(prm%H_int,prm%Nslip) prm%H_int = math_expand(prm%H_int,prm%Nslip)
endif endif
@ -237,7 +241,7 @@ subroutine plastic_phenopowerlaw_init
if (prm%totalNtwin > 0_pInt) then if (prm%totalNtwin > 0_pInt) then
! reading in twin related parameters ! reading in twin related parameters
prm%tau0_twin = config_phase(p)%getFloats('tau0_twin', requiredShape=shape(prm%Ntwin)) prm%xi_twin_0 = config_phase(p)%getFloats('tau0_twin', requiredShape=shape(prm%Ntwin))
prm%interaction_TwinTwin = spread(config_phase(p)%getFloats('interaction_twintwin', & prm%interaction_TwinTwin = spread(config_phase(p)%getFloats('interaction_twintwin', &
requiredShape=shape(prm%Ntwin)),2,1) requiredShape=shape(prm%Ntwin)),2,1)
@ -247,13 +251,13 @@ subroutine plastic_phenopowerlaw_init
prm%h0_TwinTwin = config_phase(p)%getFloat('h0_twintwin') prm%h0_TwinTwin = config_phase(p)%getFloat('h0_twintwin')
! sanity checks for twin related parameters ! sanity checks for twin related parameters
if (any(prm%tau0_twin < 0.0_pReal .and. prm%Ntwin > 0_pInt)) & if (any(prm%xi_twin_0 < 0.0_pReal .and. prm%Ntwin > 0_pInt)) &
extmsg = trim(extmsg)//"tau0_slip " extmsg = trim(extmsg)//"xi_twin_0 "
if (prm%gdot0_twin <= 0.0_pReal) extmsg = trim(extmsg)//"gdot0_twin " if (prm%gdot0_twin <= 0.0_pReal) extmsg = trim(extmsg)//"gdot0_twin "
if (dEq0(prm%n_twin)) extmsg = trim(extmsg)//"n_twin " ! ToDo: negative values ok? if (dEq0(prm%n_twin)) extmsg = trim(extmsg)//"n_twin " ! ToDo: negative values ok?
! expand slip related parameters from system => family ! expand slip related parameters from system => family
prm%tau0_twin = math_expand(prm%tau0_twin,prm%Ntwin) prm%xi_twin_0 = math_expand(prm%xi_twin_0,prm%Ntwin)
endif endif
if (prm%totalNslip > 0_pInt .and. prm%totalNtwin > 0_pInt) then if (prm%totalNslip > 0_pInt .and. prm%totalNtwin > 0_pInt) then
@ -331,8 +335,8 @@ subroutine plastic_phenopowerlaw_init
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! allocate state arrays ! allocate state arrays
NipcMyPhase = count(material_phase == p) ! number of IPCs containing my phase NipcMyPhase = count(material_phase == p) ! number of IPCs containing my phase
sizeState = size(['tau_slip ','accshear_slip']) * prm%TotalNslip & sizeState = size(['tau_slip ','gamma_slip']) * prm%TotalNslip &
+ size(['tau_twin ','accshear_twin']) * prm%TotalNtwin & + size(['tau_twin ','gamma_twin']) * prm%TotalNtwin &
+ size(['sum(gamma)', 'sum(f) ']) + size(['sum(gamma)', 'sum(f) '])
sizeDotState = sizeState sizeDotState = sizeState
@ -407,14 +411,14 @@ subroutine plastic_phenopowerlaw_init
allocate(temp1(prm%totalNtwin,prm%totalNslip),source = 0.0_pReal) allocate(temp1(prm%totalNtwin,prm%totalNslip),source = 0.0_pReal)
allocate(temp2(prm%totalNtwin,prm%totalNtwin),source = 0.0_pReal) allocate(temp2(prm%totalNtwin,prm%totalNtwin),source = 0.0_pReal)
allocate(prm%Schmid_twin(3,3,prm%totalNtwin),source = 0.0_pReal) allocate(prm%Schmid_twin(3,3,prm%totalNtwin),source = 0.0_pReal)
allocate(prm%shear_twin(prm%totalNtwin),source = 0.0_pReal) allocate(prm%gamma_twin_char(prm%totalNtwin),source = 0.0_pReal)
i = 0_pInt i = 0_pInt
myTwinFamilies: do f = 1_pInt,size(prm%Ntwin,1) ! >>> interaction twin -- X myTwinFamilies: do f = 1_pInt,size(prm%Ntwin,1) ! >>> interaction twin -- X
index_myFamily = sum(prm%Ntwin(1:f-1_pInt)) index_myFamily = sum(prm%Ntwin(1:f-1_pInt))
myTwinSystems: do j = 1_pInt,prm%Ntwin(f) myTwinSystems: do j = 1_pInt,prm%Ntwin(f)
i = i + 1_pInt i = i + 1_pInt
prm%Schmid_twin(1:3,1:3,i) = lattice_Stwin(1:3,1:3,sum(lattice_NTwinsystem(1:f-1,p))+j,p) prm%Schmid_twin(1:3,1:3,i) = lattice_Stwin(1:3,1:3,sum(lattice_NTwinsystem(1:f-1,p))+j,p)
prm%shear_twin(i) = lattice_shearTwin(sum(lattice_Ntwinsystem(1:f-1,p))+j,p) prm%gamma_twin_char(i) = lattice_shearTwin(sum(lattice_Ntwinsystem(1:f-1,p))+j,p)
slipFamilies: do o = 1_pInt,size(prm%Nslip,1) slipFamilies: do o = 1_pInt,size(prm%Nslip,1)
index_otherFamily = sum(prm%Nslip(1:o-1_pInt)) index_otherFamily = sum(prm%Nslip(1:o-1_pInt))
slipSystems: do k = 1_pInt,prm%Nslip(o) slipSystems: do k = 1_pInt,prm%Nslip(o)
@ -443,34 +447,34 @@ subroutine plastic_phenopowerlaw_init
! locally defined state aliases and initialization of state0 and aTolState ! locally defined state aliases and initialization of state0 and aTolState
startIndex = 1_pInt startIndex = 1_pInt
endIndex = prm%totalNslip endIndex = prm%totalNslip
state (instance)%s_slip => plasticState(p)%state (startIndex:endIndex,:) stt%xi_slip => plasticState(p)%state (startIndex:endIndex,:)
state (instance)%s_slip = spread(prm%tau0_slip, 2, NipcMyPhase) stt%xi_slip = spread(prm%xi_slip_0, 2, NipcMyPhase)
dotState(instance)%s_slip => plasticState(p)%dotState(startIndex:endIndex,:) dot%xi_slip => plasticState(p)%dotState(startIndex:endIndex,:)
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolResistance plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolResistance
startIndex = endIndex + 1_pInt startIndex = endIndex + 1_pInt
endIndex = endIndex + prm%totalNtwin endIndex = endIndex + prm%totalNtwin
state (instance)%s_twin => plasticState(p)%state (startIndex:endIndex,:) stt%xi_twin => plasticState(p)%state (startIndex:endIndex,:)
state (instance)%s_twin = spread(prm%tau0_twin, 2, NipcMyPhase) stt%xi_twin = spread(prm%xi_twin_0, 2, NipcMyPhase)
dotState(instance)%s_twin => plasticState(p)%dotState(startIndex:endIndex,:) dot%xi_twin => plasticState(p)%dotState(startIndex:endIndex,:)
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolResistance plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolResistance
startIndex = endIndex + 1_pInt startIndex = endIndex + 1_pInt
endIndex = endIndex + 1_pInt endIndex = endIndex + 1_pInt
state (instance)%sumGamma => plasticState(p)%state (startIndex,:) stt%sumGamma => plasticState(p)%state (startIndex,:)
dotState(instance)%sumGamma => plasticState(p)%dotState(startIndex,:) dot%sumGamma => plasticState(p)%dotState(startIndex,:)
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolShear plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolShear
startIndex = endIndex + 1_pInt startIndex = endIndex + 1_pInt
endIndex = endIndex + 1_pInt endIndex = endIndex + 1_pInt
state (instance)%sumF=>plasticState(p)%state (startIndex,:) stt%sumF=>plasticState(p)%state (startIndex,:)
dotState(instance)%sumF=>plasticState(p)%dotState(startIndex,:) dot%sumF=>plasticState(p)%dotState(startIndex,:)
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolTwinFrac plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolTwinFrac
startIndex = endIndex + 1_pInt startIndex = endIndex + 1_pInt
endIndex = endIndex + prm%totalNslip endIndex = endIndex + prm%totalNslip
state (instance)%accshear_slip => plasticState(p)%state (startIndex:endIndex,:) stt%gamma_slip => plasticState(p)%state (startIndex:endIndex,:)
dotState(instance)%accshear_slip => plasticState(p)%dotState(startIndex:endIndex,:) dot%gamma_slip => plasticState(p)%dotState(startIndex:endIndex,:)
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolShear plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolShear
! global alias ! global alias
plasticState(p)%slipRate => plasticState(p)%dotState(startIndex:endIndex,:) plasticState(p)%slipRate => plasticState(p)%dotState(startIndex:endIndex,:)
@ -478,11 +482,11 @@ subroutine plastic_phenopowerlaw_init
startIndex = endIndex + 1_pInt startIndex = endIndex + 1_pInt
endIndex = endIndex + prm%totalNtwin endIndex = endIndex + prm%totalNtwin
state (instance)%accshear_twin => plasticState(p)%state (startIndex:endIndex,:) stt%gamma_twin => plasticState(p)%state (startIndex:endIndex,:)
dotState(instance)%accshear_twin => plasticState(p)%dotState(startIndex:endIndex,:) dot%gamma_twin => plasticState(p)%dotState(startIndex:endIndex,:)
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolShear plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolShear
dotState(instance)%whole => plasticState(p)%dotState dot%whole => plasticState(p)%dotState
end associate end associate
enddo enddo
@ -593,7 +597,7 @@ subroutine plastic_phenopowerlaw_dotState(Mstar6,ipc,ip,el)
of of
real(pReal) :: & real(pReal) :: &
c_SlipSlip,c_TwinSlip,c_TwinTwin, & c_SlipSlip,c_TwinSlip,c_TwinTwin, &
ssat_offset xi_slip_sat_offset
real(pReal), dimension(3,3) :: & real(pReal), dimension(3,3) :: &
S !< Second-Piola Kirchhoff stress S !< Second-Piola Kirchhoff stress
@ -621,35 +625,35 @@ subroutine plastic_phenopowerlaw_dotState(Mstar6,ipc,ip,el)
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! calculate left and right vectors ! calculate left and right vectors
left_SlipSlip = 1.0_pReal + prm%H_int left_SlipSlip = 1.0_pReal + prm%H_int
ssat_offset = prm%spr*sqrt(stt%sumF(of)) xi_slip_sat_offset = prm%spr*sqrt(stt%sumF(of))
right_SlipSlip = abs(1.0_pReal-stt%s_slip(:,of) / (prm%tausat_slip+ssat_offset)) **prm%a_slip & right_SlipSlip = abs(1.0_pReal-stt%xi_slip(:,of) / (prm%xi_slip_sat+xi_slip_sat_offset)) **prm%a_slip &
* sign(1.0_pReal,1.0_pReal-stt%s_slip(:,of) / (prm%tausat_slip+ssat_offset)) * sign(1.0_pReal,1.0_pReal-stt%xi_slip(:,of) / (prm%xi_slip_sat+xi_slip_sat_offset))
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! shear rates ! shear rates
call kinetics_slip(prm,stt,of,S,gdot_slip_pos,gdot_slip_neg) call kinetics_slip(prm,stt,of,S,gdot_slip_pos,gdot_slip_neg)
dot%accshear_slip(:,of) = abs(gdot_slip_pos+gdot_slip_neg) dot%gamma_slip(:,of) = abs(gdot_slip_pos+gdot_slip_neg)
dot%sumGamma(of) = sum(dot%accshear_slip(:,of)) dot%sumGamma(of) = sum(dot%gamma_slip(:,of))
call kinetics_twin(prm,stt,of,S,dot%accshear_twin(:,of)) call kinetics_twin(prm,stt,of,S,dot%gamma_twin(:,of))
if (stt%sumF(of) < 0.98_pReal) dot%sumF(of) = sum(dot%accshear_twin(:,of)/prm%shear_twin) if (stt%sumF(of) < 0.98_pReal) dot%sumF(of) = sum(dot%gamma_twin(:,of)/prm%gamma_twin_char)
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! hardening ! hardening
hardeningSlip: do i = 1_pInt, prm%totalNslip hardeningSlip: do i = 1_pInt, prm%totalNslip
dot%s_slip(i,of) = & dot%xi_slip(i,of) = &
c_SlipSlip * left_SlipSlip(i) & c_SlipSlip * left_SlipSlip(i) &
* dot_product(prm%interaction_SlipSlip(i,:),right_SlipSlip*dot%accshear_slip(:,of)) & * dot_product(prm%interaction_SlipSlip(i,:),right_SlipSlip*dot%gamma_slip(:,of)) &
+ & + &
dot_product(prm%interaction_SlipTwin(i,:),dot%accshear_twin(:,of)) dot_product(prm%interaction_SlipTwin(i,:),dot%gamma_twin(:,of))
enddo hardeningSlip enddo hardeningSlip
hardeningTwin: do i = 1_pInt, prm%totalNtwin hardeningTwin: do i = 1_pInt, prm%totalNtwin
dot%s_twin(i,of) = & dot%xi_twin(i,of) = &
c_TwinSlip & c_TwinSlip &
* dot_product(prm%interaction_TwinSlip(i,:),dot%accshear_slip(:,of)) & * dot_product(prm%interaction_TwinSlip(i,:),dot%gamma_slip(:,of)) &
+ & + &
c_TwinTwin & c_TwinTwin &
* dot_product(prm%interaction_TwinTwin(i,:),dot%accshear_twin(:,of)) * dot_product(prm%interaction_TwinTwin(i,:),dot%gamma_twin(:,of))
enddo hardeningTwin enddo hardeningTwin
end associate end associate
@ -701,9 +705,9 @@ subroutine kinetics_slip(prm,stt,of,S,gdot_slip_pos,gdot_slip_neg, &
enddo enddo
gdot_slip_pos = 0.5_pReal*prm%gdot0_slip & gdot_slip_pos = 0.5_pReal*prm%gdot0_slip &
* sign(abs(tau_slip_pos/stt%s_slip(:,of))**prm%n_slip, tau_slip_pos) * sign(abs(tau_slip_pos/stt%xi_slip(:,of))**prm%n_slip, tau_slip_pos)
gdot_slip_neg = 0.5_pReal*prm%gdot0_slip & gdot_slip_neg = 0.5_pReal*prm%gdot0_slip &
* sign(abs(tau_slip_neg/stt%s_slip(:,of))**prm%n_slip, tau_slip_neg) * sign(abs(tau_slip_neg/stt%xi_slip(:,of))**prm%n_slip, tau_slip_neg)
if (present(dgdot_dtau_slip_pos)) then if (present(dgdot_dtau_slip_pos)) then
where(dNeq0(tau_slip_pos)) where(dNeq0(tau_slip_pos))
@ -755,7 +759,7 @@ subroutine kinetics_twin(prm,stt,of,S,gdot_twin,dgdot_dtau_twin)
do i = 1_pInt, prm%totalNtwin do i = 1_pInt, prm%totalNtwin
tau_twin(i) = math_mul33xx33(S,prm%Schmid_twin(1:3,1:3,i)) tau_twin(i) = math_mul33xx33(S,prm%Schmid_twin(1:3,1:3,i))
enddo enddo
gdot_twin = merge((1.0_pReal-stt%sumF(of))*prm%gdot0_twin*(abs(tau_twin)/stt%s_twin(:,of))**prm%n_twin, & gdot_twin = merge((1.0_pReal-stt%sumF(of))*prm%gdot0_twin*(abs(tau_twin)/stt%xi_twin(:,of))**prm%n_twin, &
0.0_pReal, tau_twin>0.0_pReal) 0.0_pReal, tau_twin>0.0_pReal)
if (present(dgdot_dtau_twin)) then if (present(dgdot_dtau_twin)) then
@ -788,7 +792,7 @@ function plastic_phenopowerlaw_postResults(Mstar6,ipc,ip,el) result(postResults)
integer(pInt), intent(in) :: & integer(pInt), intent(in) :: &
ipc, & !< component-ID of integration point ipc, & !< component-ID of integration point
ip, & !< integration point ip, & !< integration point
el !< element !< microstructure state el !< element
real(pReal), dimension(3,3) :: & real(pReal), dimension(3,3) :: &
S !< Second-Piola Kirchhoff stress S !< Second-Piola Kirchhoff stress
@ -818,10 +822,10 @@ function plastic_phenopowerlaw_postResults(Mstar6,ipc,ip,el) result(postResults)
select case(prm%outputID(o)) select case(prm%outputID(o))
case (resistance_slip_ID) case (resistance_slip_ID)
postResults(c+1_pInt:c+prm%totalNslip) = stt%s_slip(1:prm%totalNslip,of) postResults(c+1_pInt:c+prm%totalNslip) = stt%xi_slip(1:prm%totalNslip,of)
c = c + prm%totalNslip c = c + prm%totalNslip
case (accumulatedshear_slip_ID) case (accumulatedshear_slip_ID)
postResults(c+1_pInt:c+prm%totalNslip) = stt%accshear_slip(1:prm%totalNslip,of) postResults(c+1_pInt:c+prm%totalNslip) = stt%gamma_slip(1:prm%totalNslip,of)
c = c + prm%totalNslip c = c + prm%totalNslip
case (shearrate_slip_ID) case (shearrate_slip_ID)
call kinetics_slip(prm,stt,of,S,gdot_slip_pos,gdot_slip_neg) call kinetics_slip(prm,stt,of,S,gdot_slip_pos,gdot_slip_neg)
@ -840,10 +844,10 @@ function plastic_phenopowerlaw_postResults(Mstar6,ipc,ip,el) result(postResults)
c = c + prm%totalNslip c = c + prm%totalNslip
case (resistance_twin_ID) case (resistance_twin_ID)
postResults(c+1_pInt:c+prm%totalNtwin) = stt%s_twin(1:prm%totalNtwin,of) postResults(c+1_pInt:c+prm%totalNtwin) = stt%xi_twin(1:prm%totalNtwin,of)
c = c + prm%totalNtwin c = c + prm%totalNtwin
case (accumulatedshear_twin_ID) case (accumulatedshear_twin_ID)
postResults(c+1_pInt:c+prm%totalNtwin) = stt%accshear_twin(1:prm%totalNtwin,of) postResults(c+1_pInt:c+prm%totalNtwin) = stt%gamma_twin(1:prm%totalNtwin,of)
c = c + prm%totalNtwin c = c + prm%totalNtwin
case (shearrate_twin_ID) case (shearrate_twin_ID)
call kinetics_twin(prm,stt,of,S,postResults(c+1_pInt:c+prm%totalNtwin)) call kinetics_twin(prm,stt,of,S,postResults(c+1_pInt:c+prm%totalNtwin))