don't do calculation of dependentStates/microstructure manually
This commit is contained in:
parent
8baa4f9c81
commit
e7f7fa74b7
|
@ -840,51 +840,14 @@ subroutine plastic_dislotwin_init(fileUnit)
|
||||||
dst%strainTransFraction=>plasticState(p)%dotState(startIndex:endIndex,:)
|
dst%strainTransFraction=>plasticState(p)%dotState(startIndex:endIndex,:)
|
||||||
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolTransFrac
|
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolTransFrac
|
||||||
|
|
||||||
invLambdaSlip0 = spread(0.0_pReal,1,prm%totalNslip) ! calculation required? Seems to be the same as in microstructure
|
dst%whole => plasticState(p)%dotState
|
||||||
forall (i = 1_pInt:prm%totalNslip) &
|
|
||||||
invLambdaSlip0(i) = sqrt(dot_product(math_expand(prm%rho0,prm%Nslip)+ &
|
|
||||||
math_expand(prm%rhoDip0,prm%Nslip),prm%forestProjectionEdge(1:prm%totalNslip,i)))/ &
|
|
||||||
prm%CLambdaSlip(i)
|
|
||||||
mse%invLambdaSlip = spread(math_expand(invLambdaSlip0,prm%Nslip),2, NofMyPhase)
|
|
||||||
|
|
||||||
|
|
||||||
allocate(mse%invLambdaSlipTwin(prm%totalNslip,NofMyPhase),source=0.0_pReal)
|
allocate(mse%invLambdaSlipTwin(prm%totalNslip,NofMyPhase),source=0.0_pReal)
|
||||||
allocate(mse%invLambdaTwin(prm%totalNtwin,NofMyPhase),source=0.0_pReal)
|
allocate(mse%invLambdaTwin(prm%totalNtwin,NofMyPhase),source=0.0_pReal)
|
||||||
allocate(mse%invLambdaSlipTrans(prm%totalNtrans,NofMyPhase),source=0.0_pReal)
|
allocate(mse%invLambdaSlipTrans(prm%totalNtrans,NofMyPhase),source=0.0_pReal)
|
||||||
allocate(mse%invLambdaTrans(prm%totalNtrans,NofMyPhase),source=0.0_pReal)
|
allocate(mse%invLambdaTrans(prm%totalNtrans,NofMyPhase),source=0.0_pReal)
|
||||||
|
|
||||||
MeanFreePathSlip0 = prm%GrainSize/(1.0_pReal+invLambdaSlip0*prm%GrainSize)
|
|
||||||
mse%mfp_slip = spread(math_expand(MeanFreePathSlip0,prm%Nslip),2, NofMyPhase)
|
|
||||||
|
|
||||||
MeanFreePathTwin0 = spread(prm%GrainSize,1,prm%totalNtwin)
|
|
||||||
mse%mfp_twin = spread(math_expand(MeanFreePathTwin0,prm%Ntwin),2, NofMyPhase)
|
|
||||||
|
|
||||||
MeanFreePathTrans0 = spread(prm%GrainSize,1,prm%totalNtrans)
|
|
||||||
mse%mfp_trans = spread(math_expand(MeanFreePathTrans0,prm%Ntrans),2, NofMyPhase)
|
|
||||||
|
|
||||||
tauSlipThreshold0 = spread(0.0_pReal,1,prm%totalNslip)
|
|
||||||
forall (i = 1_pInt:prm%totalNslip) tauSlipThreshold0(i) = &
|
|
||||||
prm%mu*prm%burgers_slip(i) * sqrt(dot_product(math_expand(prm%rho0 + prm%rhoDip0,prm%Nslip),&
|
|
||||||
prm%interaction_SlipSlip(i,1:prm%totalNslip)))
|
|
||||||
mse%threshold_stress_slip = spread(math_expand(tauSlipThreshold0,prm%Nslip),2, NofMyPhase)
|
|
||||||
|
|
||||||
allocate(mse%threshold_stress_twin(prm%totalNtwin,NofMyPhase), source=0.0_pReal)
|
allocate(mse%threshold_stress_twin(prm%totalNtwin,NofMyPhase), source=0.0_pReal)
|
||||||
allocate(mse%threshold_stress_trans(prm%totalNtrans,NofMyPhase),source=0.0_pReal)
|
allocate(mse%threshold_stress_trans(prm%totalNtrans,NofMyPhase),source=0.0_pReal)
|
||||||
|
|
||||||
TwinVolume0= spread(0.0_pReal,1,prm%totalNtwin)
|
|
||||||
forall (i = 1_pInt:prm%totalNtwin) TwinVolume0(i) = &
|
|
||||||
(PI/4.0_pReal)*prm%twinsize(i)*MeanFreePathTwin0(i)**2.0_pReal
|
|
||||||
mse%twinVolume = &
|
|
||||||
spread(math_expand(TwinVolume0,prm%Ntwin),2, NofMyPhase)
|
|
||||||
|
|
||||||
MartensiteVolume0= spread(0.0_pReal,1,prm%totalNtrans)
|
|
||||||
forall (i = 1_pInt:prm%totalNtrans) MartensiteVolume0(i) = &
|
|
||||||
(PI/4.0_pReal)*prm%lamellarsizePerTransSystem(i)*MeanFreePathTrans0(i)**2.0_pReal
|
|
||||||
mse%martensiteVolume = &
|
|
||||||
spread(math_expand(MartensiteVolume0,prm%Ntrans),2, NofMyPhase)
|
|
||||||
|
|
||||||
dst%whole => plasticState(p)%dotState
|
|
||||||
|
|
||||||
allocate(mse%tau_r_twin(prm%totalNtwin,NofMyPhase), source=0.0_pReal)
|
allocate(mse%tau_r_twin(prm%totalNtwin,NofMyPhase), source=0.0_pReal)
|
||||||
allocate(mse%tau_r_trans(prm%totalNtrans,NofMyPhase), source=0.0_pReal)
|
allocate(mse%tau_r_trans(prm%totalNtrans,NofMyPhase), source=0.0_pReal)
|
||||||
|
|
||||||
|
@ -916,7 +879,6 @@ function plastic_dislotwin_homogenizedC(ipc,ip,el)
|
||||||
of
|
of
|
||||||
real(pReal) :: sumf_twin, sumf_trans
|
real(pReal) :: sumf_twin, sumf_trans
|
||||||
|
|
||||||
!* Shortened notation
|
|
||||||
of = phasememberAt(ipc,ip,el)
|
of = phasememberAt(ipc,ip,el)
|
||||||
associate(prm => param(phase_plasticityInstance(material_phase(ipc,ip,el))),&
|
associate(prm => param(phase_plasticityInstance(material_phase(ipc,ip,el))),&
|
||||||
stt => state(phase_plasticityInstance(material_phase(ipc,ip,el))))
|
stt => state(phase_plasticityInstance(material_phase(ipc,ip,el))))
|
||||||
|
|
Loading…
Reference in New Issue