From eeb5f45e8890806ac8557a64a8993b4d861d66a7 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Fri, 5 Jul 2019 22:55:08 -0700 Subject: [PATCH] adopted from Viteshs branch --- src/plastic_dislotwin.f90 | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/src/plastic_dislotwin.f90 b/src/plastic_dislotwin.f90 index 43b379667..16baba1c9 100644 --- a/src/plastic_dislotwin.f90 +++ b/src/plastic_dislotwin.f90 @@ -53,7 +53,8 @@ module plastic_dislotwin nu, & D0, & !< prefactor for self-diffusion coefficient Qsd, & !< activation energy for dislocation climb - D, & ! system prm%rho_mob_0 = math_expand(prm%rho_mob_0, prm%N_sl) @@ -740,8 +754,11 @@ subroutine plastic_dislotwin_dotState(Mp,T,instance,of) f_unrotated, & VacancyDiffusion, & rho_dip_distance, & - v_cl, & - tau + v_cl, & !< climb velocity + Gamma, & !< stacking fault energy + tau, & + tau_cl, & ! ToDo: MD: good name? It is not a resolved stress but a different projection + b_d real(pReal), dimension(param(instance)%sum_N_sl) :: & dot_rho_dip_formation, & dot_rho_dip_climb, & @@ -760,6 +777,8 @@ subroutine plastic_dislotwin_dotState(Mp,T,instance,of) - sum(stt%f_tr(1:prm%sum_N_tr,of)) VacancyDiffusion = prm%D0*exp(-prm%Qsd/(kB*T)) + Gamma = prm%SFE_0K + prm%dSFE_dT * T + call kinetics_slip(Mp,T,instance,of,dot_gamma_sl) dot%gamma_sl(:,of) = abs(dot_gamma_sl) @@ -786,8 +805,16 @@ subroutine plastic_dislotwin_dotState(Mp,T,instance,of) if (dEq0(rho_dip_distance-rho_dip_distance_min(i))) then dot_rho_dip_climb(i) = 0.0_pReal else - v_cl = 3.0_pReal*prm%mu*VacancyDiffusion*prm%atomicVolume(i) & - / (2.0_pReal*PI*kB*T*(rho_dip_distance+rho_dip_distance_min(i))) + tau_cl = norm2(matmul(Mp,prm%n0_sl(1:3,i))) ! ToDo: MD: correct? + + if (prm%SFE_0K > 0.0_pReal) then ! ToDo: MD: I'm not really sure if this is correct. Maybe Gamma(0K) = 0 + b_d = 24.0_pReal*PI*(1.0_pReal - prm%nu)/(2.0_pReal + prm%nu)* Gamma/(prm%mu*prm%b_sl(i)) + else + b_d = 1.0_pReal + endif + + v_cl = 2.0_pReal*prm%omega*b_d**2.0_pReal*exp(-prm%Qsd/(kB*T)) & + * (exp(abs(tau_cl)*prm%b_sl(i)**3.0_pReal/(kB*T)) - 1.0_pReal) dot_rho_dip_climb(i) = 4.0_pReal*v_cl*stt%rho_dip(i,of) & / (rho_dip_distance-rho_dip_distance_min(i)) endif