diff --git a/PRIVATE b/PRIVATE index 2cfe059d4..6f4a7a859 160000 --- a/PRIVATE +++ b/PRIVATE @@ -1 +1 @@ -Subproject commit 2cfe059d411b00e62e005107c3031ec988b2cd84 +Subproject commit 6f4a7a8598dfceae5c2178c8c2554245d8164cb2 diff --git a/src/phase_mechanical_plastic_dislotungsten.f90 b/src/phase_mechanical_plastic_dislotungsten.f90 index ad9853b3a..2c7429059 100644 --- a/src/phase_mechanical_plastic_dislotungsten.f90 +++ b/src/phase_mechanical_plastic_dislotungsten.f90 @@ -357,8 +357,8 @@ module function dislotungsten_dotState(Mp,ph,en) result(dotState) dot_gamma = abs(dot_gamma) where(dEq0(dot_gamma)) + d_hat = dst%Lambda_sl(:,en) ! upper limit dot_rho_dip_formation = 0.0_pREAL - dot_rho_dip_climb = 0.0_pREAL else where d_hat = math_clip(mu*prm%b_sl/(8.0_pREAL*PI*(1.0_pREAL-nu)*tau_eff), & left = prm%d_caron, & ! lower limit @@ -366,9 +366,14 @@ module function dislotungsten_dotState(Mp,ph,en) result(dotState) dot_rho_dip_formation = merge(dot_gamma * 2.0_pREAL*(d_hat-prm%d_caron)/prm%b_sl * stt%rho_mob(:,en), & 0.0_pREAL, & prm%dipoleformation) + end where + + where(dEq0(d_hat-prm%d_caron)) + dot_rho_dip_climb = 0.0_pREAL + else where v_cl = (3.0_pREAL*mu*prm%D_0*exp(-prm%Q_cl/(K_B*T))*prm%f_at/(2.0_pREAL*PI*K_B*T)) & * (1.0_pREAL/(d_hat+prm%d_caron)) - dot_rho_dip_climb = (4.0_pREAL*v_cl*stt%rho_dip(:,en))/(d_hat-prm%d_caron) ! ToDo: Discuss with Franz: Stress dependency? + dot_rho_dip_climb = (4.0_pREAL*v_cl*stt%rho_dip(:,en))/(d_hat-prm%d_caron) ! ToDo: Discuss with Franz: Stress dependency? end where dot_rho_mob = dot_gamma / (prm%b_sl*dst%Lambda_sl(:,en)) & ! multiplication diff --git a/src/phase_mechanical_plastic_dislotwin.f90 b/src/phase_mechanical_plastic_dislotwin.f90 index 0bd0e1355..aa6c83035 100644 --- a/src/phase_mechanical_plastic_dislotwin.f90 +++ b/src/phase_mechanical_plastic_dislotwin.f90 @@ -671,33 +671,31 @@ module function dislotwin_dotState(Mp,ph,en) result(dotState) tau = math_tensordot(Mp,prm%P_sl(1:3,1:3,i)) significantSlipStress: if (dEq0(tau) .or. prm%omitDipoles) then + d_hat = dst%Lambda_sl(i,en) dot_rho_dip_formation(i) = 0.0_pREAL - dot_rho_dip_climb(i) = 0.0_pREAL else significantSlipStress - d_hat = 3.0_pREAL*mu*prm%b_sl(i)/(16.0_pREAL*PI*abs(tau)) - d_hat = math_clip(d_hat, right = dst%Lambda_sl(i,en)) - d_hat = math_clip(d_hat, left = prm%d_caron(i)) - + d_hat = math_clip(3.0_pREAL*mu*prm%b_sl(i)/(16.0_pREAL*PI*abs(tau)), & + left = prm%d_caron(i), & + right = dst%Lambda_sl(i,en)) dot_rho_dip_formation(i) = 2.0_pREAL*(d_hat-prm%d_caron(i))/prm%b_sl(i) & * stt%rho_mob(i,en)*abs_dot_gamma_sl(i) - - if (dEq(d_hat,prm%d_caron(i))) then - dot_rho_dip_climb(i) = 0.0_pREAL - else - ! Argon & Moffat, Acta Metallurgica, Vol. 29, pg 293 to 299, 1981 - sigma_cl = dot_product(prm%n0_sl(1:3,i),matmul(Mp,prm%n0_sl(1:3,i))) - if (prm%extendedDislocations) then - b_d = 24.0_pREAL*PI*(1.0_pREAL - nu)/(2.0_pREAL + nu) * prm%Gamma_sf%at(T) / (mu*prm%b_sl(i)) - else - b_d = 1.0_pREAL - end if - v_cl = 2.0_pREAL*prm%omega*b_d**2*exp(-prm%Q_cl/(K_B*T)) & - * (exp(abs(sigma_cl)*prm%b_sl(i)**3/(K_B*T)) - 1.0_pREAL) - - dot_rho_dip_climb(i) = 4.0_pREAL*v_cl*stt%rho_dip(i,en) & - / (d_hat-prm%d_caron(i)) - end if end if significantSlipStress + + if (dEq(d_hat,prm%d_caron(i))) then + dot_rho_dip_climb(i) = 0.0_pREAL + else + ! Argon & Moffat, Acta Metallurgica, Vol. 29, pg 293 to 299, 1981 + sigma_cl = dot_product(prm%n0_sl(1:3,i),matmul(Mp,prm%n0_sl(1:3,i))) + if (prm%extendedDislocations) then + b_d = 24.0_pREAL*PI*(1.0_pREAL - nu)/(2.0_pREAL + nu) * prm%Gamma_sf%at(T) / (mu*prm%b_sl(i)) + else + b_d = 1.0_pREAL + end if + v_cl = 2.0_pREAL*prm%omega*b_d**2*exp(-prm%Q_cl/(K_B*T)) & + * (exp(abs(sigma_cl)*prm%b_sl(i)**3/(K_B*T)) - 1.0_pREAL) + dot_rho_dip_climb(i) = 4.0_pREAL*v_cl*stt%rho_dip(i,en) & + / (d_hat-prm%d_caron(i)) + end if end do slipState dot_rho_mob = abs_dot_gamma_sl/(prm%b_sl*dst%Lambda_sl(:,en)) &