removed
- accumulatedshear_twin: linearly depends on twin volume fraction - output of further derived quantities
This commit is contained in:
parent
aecb5f20bf
commit
3843bf599c
|
@ -33,10 +33,7 @@ module plastic_dislotwin
|
||||||
resolved_stress_slip_ID, &
|
resolved_stress_slip_ID, &
|
||||||
threshold_stress_slip_ID, &
|
threshold_stress_slip_ID, &
|
||||||
edge_dipole_distance_ID, &
|
edge_dipole_distance_ID, &
|
||||||
stress_exponent_ID, &
|
|
||||||
twin_fraction_ID, &
|
twin_fraction_ID, &
|
||||||
shear_rate_twin_ID, &
|
|
||||||
accumulated_shear_twin_ID, &
|
|
||||||
mfp_twin_ID, &
|
mfp_twin_ID, &
|
||||||
resolved_stress_twin_ID, &
|
resolved_stress_twin_ID, &
|
||||||
threshold_stress_twin_ID, &
|
threshold_stress_twin_ID, &
|
||||||
|
@ -137,7 +134,6 @@ module plastic_dislotwin
|
||||||
rhoEdgeDip, &
|
rhoEdgeDip, &
|
||||||
accshear_slip, &
|
accshear_slip, &
|
||||||
twinFraction, &
|
twinFraction, &
|
||||||
accshear_twin, &
|
|
||||||
stressTransFraction, &
|
stressTransFraction, &
|
||||||
strainTransFraction, &
|
strainTransFraction, &
|
||||||
whole
|
whole
|
||||||
|
@ -545,19 +541,10 @@ subroutine plastic_dislotwin_init
|
||||||
case ('edge_dipole_distance')
|
case ('edge_dipole_distance')
|
||||||
outputID = merge(edge_dipole_distance_ID,undefined_ID,prm%totalNslip > 0_pInt)
|
outputID = merge(edge_dipole_distance_ID,undefined_ID,prm%totalNslip > 0_pInt)
|
||||||
outputSize = prm%totalNslip
|
outputSize = prm%totalNslip
|
||||||
case ('stress_exponent')
|
|
||||||
outputID = merge(stress_exponent_ID,undefined_ID,prm%totalNslip > 0_pInt)
|
|
||||||
outputSize = prm%totalNslip
|
|
||||||
|
|
||||||
case ('twin_fraction')
|
case ('twin_fraction')
|
||||||
outputID = merge(twin_fraction_ID,undefined_ID,prm%totalNtwin >0_pInt)
|
outputID = merge(twin_fraction_ID,undefined_ID,prm%totalNtwin >0_pInt)
|
||||||
outputSize = prm%totalNtwin
|
outputSize = prm%totalNtwin
|
||||||
case ('shear_rate_twin','shearrate_twin')
|
|
||||||
outputID = merge(shear_rate_twin_ID,undefined_ID,prm%totalNtwin >0_pInt)
|
|
||||||
outputSize = prm%totalNtwin
|
|
||||||
case ('accumulated_shear_twin')
|
|
||||||
outputID = merge(accumulated_shear_twin_ID,undefined_ID,prm%totalNtwin >0_pInt)
|
|
||||||
outputSize = prm%totalNtwin
|
|
||||||
case ('mfp_twin')
|
case ('mfp_twin')
|
||||||
outputID = merge(mfp_twin_ID,undefined_ID,prm%totalNtwin >0_pInt)
|
outputID = merge(mfp_twin_ID,undefined_ID,prm%totalNtwin >0_pInt)
|
||||||
outputSize = prm%totalNtwin
|
outputSize = prm%totalNtwin
|
||||||
|
@ -596,7 +583,7 @@ subroutine plastic_dislotwin_init
|
||||||
! allocate state arrays
|
! allocate state arrays
|
||||||
NipcMyPhase = count(material_phase == p)
|
NipcMyPhase = count(material_phase == p)
|
||||||
sizeDotState = int(size(['rho ','rhoDip ','accshearslip']),pInt) * prm%totalNslip &
|
sizeDotState = int(size(['rho ','rhoDip ','accshearslip']),pInt) * prm%totalNslip &
|
||||||
+ int(size(['twinFraction','accsheartwin']),pInt) * prm%totalNtwin &
|
+ int(size(['twinFraction']),pInt) * prm%totalNtwin &
|
||||||
+ int(size(['stressTransFraction','strainTransFraction']),pInt) * prm%totalNtrans
|
+ int(size(['stressTransFraction','strainTransFraction']),pInt) * prm%totalNtrans
|
||||||
sizeState = sizeDotState
|
sizeState = sizeDotState
|
||||||
|
|
||||||
|
@ -636,12 +623,6 @@ subroutine plastic_dislotwin_init
|
||||||
dot%twinFraction=>plasticState(p)%dotState(startIndex:endIndex,:)
|
dot%twinFraction=>plasticState(p)%dotState(startIndex:endIndex,:)
|
||||||
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolTwinFrac
|
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolTwinFrac
|
||||||
|
|
||||||
startIndex = endIndex + 1_pInt
|
|
||||||
endIndex=endIndex+prm%totalNtwin
|
|
||||||
stt%accshear_twin=>plasticState(p)%state(startIndex:endIndex,:)
|
|
||||||
dot%accshear_twin=>plasticState(p)%dotState(startIndex:endIndex,:)
|
|
||||||
plasticState(p)%aTolState(startIndex:endIndex) = 1.0e6_pReal
|
|
||||||
|
|
||||||
startIndex = endIndex + 1_pInt
|
startIndex = endIndex + 1_pInt
|
||||||
endIndex=endIndex+prm%totalNtrans
|
endIndex=endIndex+prm%totalNtrans
|
||||||
stt%stressTransFraction=>plasticState(p)%state(startIndex:endIndex,:)
|
stt%stressTransFraction=>plasticState(p)%state(startIndex:endIndex,:)
|
||||||
|
@ -992,7 +973,6 @@ subroutine plastic_dislotwin_dotState(Mp,Temperature,instance,of)
|
||||||
Ndot0_twin=prm%Ndot0_twin(i)
|
Ndot0_twin=prm%Ndot0_twin(i)
|
||||||
endif isFCCtwin
|
endif isFCCtwin
|
||||||
dot%twinFraction(i,of) = f_unrotated * mse%twinVolume(i,of)*Ndot0_twin*exp(-StressRatio_r)
|
dot%twinFraction(i,of) = f_unrotated * mse%twinVolume(i,of)*Ndot0_twin*exp(-StressRatio_r)
|
||||||
dot%accshear_twin(i,of) = dot%twinFraction(i,of) * prm%shear_twin(i)
|
|
||||||
endif significantTwinStress
|
endif significantTwinStress
|
||||||
|
|
||||||
enddo twinState
|
enddo twinState
|
||||||
|
@ -1019,9 +999,6 @@ subroutine plastic_dislotwin_dotState(Mp,Temperature,instance,of)
|
||||||
endif isFCCtrans
|
endif isFCCtrans
|
||||||
dot%strainTransFraction(i,of) = f_unrotated * &
|
dot%strainTransFraction(i,of) = f_unrotated * &
|
||||||
mse%martensiteVolume(i,of)*Ndot0_trans*exp(-StressRatio_s)
|
mse%martensiteVolume(i,of)*Ndot0_trans*exp(-StressRatio_s)
|
||||||
!* Dotstate for accumulated shear due to transformation
|
|
||||||
!dot%accshear_trans(i,of) = dot%strainTransFraction(i,of) * &
|
|
||||||
! lattice_sheartrans(index_myfamily+i,ph)
|
|
||||||
endif significantTransStress
|
endif significantTransStress
|
||||||
|
|
||||||
enddo transState
|
enddo transState
|
||||||
|
@ -1247,55 +1224,6 @@ function plastic_dislotwin_postResults(Mp,Temperature,instance,of) result(postRe
|
||||||
case (twin_fraction_ID)
|
case (twin_fraction_ID)
|
||||||
postResults(c+1_pInt:c+prm%totalNtwin) = stt%twinFraction(1_pInt:prm%totalNtwin,of)
|
postResults(c+1_pInt:c+prm%totalNtwin) = stt%twinFraction(1_pInt:prm%totalNtwin,of)
|
||||||
c = c + prm%totalNtwin
|
c = c + prm%totalNtwin
|
||||||
case (shear_rate_twin_ID)
|
|
||||||
do j = 1_pInt, prm%totalNslip
|
|
||||||
tau = math_mul33xx33(Mp,prm%Schmid_slip(1:3,1:3,j))
|
|
||||||
if((abs(tau)-mse%threshold_stress_slip(j,of)) > tol_math_check) then
|
|
||||||
StressRatio_p = ((abs(tau)-mse%threshold_stress_slip(j,of))/&
|
|
||||||
(prm%SolidSolutionStrength+&
|
|
||||||
prm%tau_peierls(j)))&
|
|
||||||
**prm%p(j)
|
|
||||||
StressRatio_pminus1 = ((abs(tau)-mse%threshold_stress_slip(j,of))/&
|
|
||||||
(prm%SolidSolutionStrength+&
|
|
||||||
prm%tau_peierls(j)))&
|
|
||||||
**(prm%p(j)-1.0_pReal)
|
|
||||||
BoltzmannRatio = prm%Qedge(j)/(kB*Temperature)
|
|
||||||
DotGamma0 = stt%rhoEdge(j,of)*prm%burgers_slip(j)* prm%v0(j)
|
|
||||||
|
|
||||||
gdot_slip(j) = DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)**&
|
|
||||||
prm%q(j))*sign(1.0_pReal,tau)
|
|
||||||
else
|
|
||||||
gdot_slip(j) = 0.0_pReal
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
|
|
||||||
do j = 1_pInt, prm%totalNtwin
|
|
||||||
tau = math_mul33xx33(Mp,prm%Schmid_twin(1:3,1:3,j))
|
|
||||||
|
|
||||||
if ( tau > 0.0_pReal ) then
|
|
||||||
isFCCtwin: if (prm%fccTwinTransNucleation) then
|
|
||||||
s1=prm%fcc_twinNucleationSlipPair(1,j)
|
|
||||||
s2=prm%fcc_twinNucleationSlipPair(2,j)
|
|
||||||
if (tau < mse%tau_r_twin(j,of)) then
|
|
||||||
Ndot0_twin=(abs(gdot_slip(s1))*(stt%rhoEdge(s2,of)+stt%rhoEdgeDip(s2,of))+&
|
|
||||||
abs(gdot_slip(s2))*(stt%rhoEdge(s1,of)+stt%rhoEdgeDip(s1,of)))/&
|
|
||||||
(prm%L0_twin* prm%burgers_slip(j))*&
|
|
||||||
(1.0_pReal-exp(-prm%VcrossSlip/(kB*Temperature)* (mse%tau_r_twin(j,of)-tau)))
|
|
||||||
else
|
|
||||||
Ndot0_twin=0.0_pReal
|
|
||||||
end if
|
|
||||||
else isFCCtwin
|
|
||||||
Ndot0_twin=prm%Ndot0_twin(j)
|
|
||||||
endif isFCCtwin
|
|
||||||
StressRatio_r = (mse%threshold_stress_twin(j,of)/tau) **prm%r(j)
|
|
||||||
postResults(c+j) = (prm%MaxTwinFraction-sumf_twin)*prm%shear_twin(j) &
|
|
||||||
* mse%twinVolume(j,of)*Ndot0_twin*exp(-StressRatio_r)
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
c = c + prm%totalNtwin
|
|
||||||
case (accumulated_shear_twin_ID)
|
|
||||||
postResults(c+1_pInt:c+prm%totalNtwin) = stt%accshear_twin(1_pInt:prm%totalNtwin,of)
|
|
||||||
c = c + prm%totalNtwin
|
|
||||||
case (mfp_twin_ID)
|
case (mfp_twin_ID)
|
||||||
postResults(c+1_pInt:c+prm%totalNtwin) = mse%mfp_twin(1_pInt:prm%totalNtwin,of)
|
postResults(c+1_pInt:c+prm%totalNtwin) = mse%mfp_twin(1_pInt:prm%totalNtwin,of)
|
||||||
c = c + prm%totalNtwin
|
c = c + prm%totalNtwin
|
||||||
|
@ -1307,34 +1235,7 @@ function plastic_dislotwin_postResults(Mp,Temperature,instance,of) result(postRe
|
||||||
case (threshold_stress_twin_ID)
|
case (threshold_stress_twin_ID)
|
||||||
postResults(c+1_pInt:c+prm%totalNtwin) = mse%threshold_stress_twin(1_pInt:prm%totalNtwin,of)
|
postResults(c+1_pInt:c+prm%totalNtwin) = mse%threshold_stress_twin(1_pInt:prm%totalNtwin,of)
|
||||||
c = c + prm%totalNtwin
|
c = c + prm%totalNtwin
|
||||||
case (stress_exponent_ID)
|
|
||||||
do j = 1_pInt, prm%totalNslip
|
|
||||||
tau = math_mul33xx33(Mp,prm%Schmid_slip(1:3,1:3,j))
|
|
||||||
if((abs(tau)-mse%threshold_stress_slip(j,of)) > tol_math_check) then
|
|
||||||
StressRatio_p = ((abs(tau)-mse%threshold_stress_slip(j,of))/&
|
|
||||||
(prm%SolidSolutionStrength+&
|
|
||||||
prm%tau_peierls(j)))&
|
|
||||||
**prm%p(j)
|
|
||||||
StressRatio_pminus1 = ((abs(tau)-mse%threshold_stress_slip(j,of))/&
|
|
||||||
(prm%SolidSolutionStrength+&
|
|
||||||
prm%tau_peierls(j)))&
|
|
||||||
**(prm%p(j)-1.0_pReal)
|
|
||||||
BoltzmannRatio = prm%Qedge(j)/(kB*Temperature)
|
|
||||||
DotGamma0 = stt%rhoEdge(j,of)*prm%burgers_slip(j)* prm%v0(j)
|
|
||||||
|
|
||||||
gdot_slip(j) = DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)**&
|
|
||||||
prm%q(j))*sign(1.0_pReal,tau)
|
|
||||||
|
|
||||||
dgdot_dtauslip = abs(gdot_slip(j))*BoltzmannRatio*prm%p(j) *prm%q(j)/&
|
|
||||||
(prm%SolidSolutionStrength+ prm%tau_peierls(j))*&
|
|
||||||
StressRatio_pminus1*(1-StressRatio_p)**(prm%q(j)-1.0_pReal)
|
|
||||||
else
|
|
||||||
gdot_slip(j) = 0.0_pReal
|
|
||||||
dgdot_dtauslip = 0.0_pReal
|
|
||||||
endif
|
|
||||||
postResults(c+j) = merge(0.0_pReal,(tau/gdot_slip(j))*dgdot_dtauslip,dEq0(gdot_slip(j)))
|
|
||||||
enddo
|
|
||||||
c = c + prm%totalNslip
|
|
||||||
case (stress_trans_fraction_ID)
|
case (stress_trans_fraction_ID)
|
||||||
postResults(c+1_pInt:c+prm%totalNtrans) = stt%stressTransFraction(1_pInt:prm%totalNtrans,of)
|
postResults(c+1_pInt:c+prm%totalNtrans) = stt%stressTransFraction(1_pInt:prm%totalNtrans,of)
|
||||||
c = c + prm%totalNtrans
|
c = c + prm%totalNtrans
|
||||||
|
|
Loading…
Reference in New Issue