mean velocity of dislocation corrected for higher temperatures
- v_wait: obstacle spacing over waiting time (effective velocity) - v_run: 'true' velocity of a dislocation moving between obstacles for higher temperatures v_run becomes important and bounds the velocity
This commit is contained in:
parent
5d1e648d17
commit
9cc3a77e01
|
@ -1404,20 +1404,27 @@ pure subroutine kinetics_slip(prm,stt,mse,of,Mp,temperature,gdot_slip,dgdot_dtau
|
||||||
tau, &
|
tau, &
|
||||||
stressRatio, &
|
stressRatio, &
|
||||||
StressRatio_p, &
|
StressRatio_p, &
|
||||||
BoltzmannRatio
|
BoltzmannRatio, &
|
||||||
|
v_wait_inverse, & !< inverse of the effective velocity of a dislocation waiting at obstacles
|
||||||
|
v_run_inverse, & !< inverse of the velocity of a free moving dislocation
|
||||||
|
tau_eff !< effective resolved stress
|
||||||
integer(pInt) :: i
|
integer(pInt) :: i
|
||||||
|
|
||||||
do i = 1_pInt, prm%totalNslip
|
do i = 1_pInt, prm%totalNslip
|
||||||
tau(i) = math_mul33xx33(Mp,prm%Schmid_slip(1:3,1:3,i))
|
tau(i) = math_mul33xx33(Mp,prm%Schmid_slip(1:3,1:3,i))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
significantStress: where((abs(tau)-mse%threshold_stress_slip(:,of)) > tol_math_check)
|
tau_eff = abs(tau)-mse%threshold_stress_slip(:,of)
|
||||||
stressRatio = ((abs(tau)- mse%threshold_stress_slip(:,of))/&
|
|
||||||
(prm%SolidSolutionStrength+prm%tau_peierls(:)))
|
significantStress: where(tau_eff > tol_math_check)
|
||||||
|
stressRatio = tau_eff/(prm%SolidSolutionStrength+prm%tau_peierls)
|
||||||
StressRatio_p = stressRatio** prm%p
|
StressRatio_p = stressRatio** prm%p
|
||||||
BoltzmannRatio = prm%Qedge/(kB*Temperature)
|
BoltzmannRatio = prm%Qedge/(kB*Temperature)
|
||||||
gdot_slip = stt%rhoEdge(:,of)*prm%burgers_slip* prm%v0 &
|
v_wait_inverse = prm%v0**(-1.0_pReal) * exp(BoltzmannRatio*(1.0_pReal-StressRatio_p)** prm%q)
|
||||||
* sign(exp(-BoltzmannRatio*(1.0_pReal-StressRatio_p)** prm%q), tau)
|
v_run_inverse = prm%B/(tau_eff*prm%burgers_slip)
|
||||||
|
|
||||||
|
gdot_slip = sign(stt%rhoEdge(:,of)*prm%burgers_slip/(v_wait_inverse+v_run_inverse),tau)
|
||||||
|
|
||||||
dgdot_dtau = abs(gdot_slip)*BoltzmannRatio*prm%p * prm%q &
|
dgdot_dtau = abs(gdot_slip)*BoltzmannRatio*prm%p * prm%q &
|
||||||
/ (prm%SolidSolutionStrength+prm%tau_peierls) &
|
/ (prm%SolidSolutionStrength+prm%tau_peierls) &
|
||||||
* stressRatio**(prm%p-1.0_pReal)*(1.0_pReal-StressRatio_p)**(prm%q-1.0_pReal)
|
* stressRatio**(prm%p-1.0_pReal)*(1.0_pReal-StressRatio_p)**(prm%q-1.0_pReal)
|
||||||
|
@ -1428,11 +1435,11 @@ pure subroutine kinetics_slip(prm,stt,mse,of,Mp,temperature,gdot_slip,dgdot_dtau
|
||||||
|
|
||||||
if(present(dgdot_dtau_slip)) dgdot_dtau_slip = dgdot_dtau
|
if(present(dgdot_dtau_slip)) dgdot_dtau_slip = dgdot_dtau
|
||||||
|
|
||||||
end subroutine
|
end subroutine kinetics_slip
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates shear rates on slip systems
|
!> @brief calculates shear rates on twin systems
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure subroutine kinetics_twin(prm,stt,mse,of,Mp,temperature,gdot_slip,gdot_twin,dgdot_dtau_twin)
|
pure subroutine kinetics_twin(prm,stt,mse,of,Mp,temperature,gdot_slip,gdot_twin,dgdot_dtau_twin)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
|
@ -1475,7 +1482,7 @@ pure subroutine kinetics_twin(prm,stt,mse,of,Mp,temperature,gdot_slip,gdot_twin,
|
||||||
s1=prm%fcc_twinNucleationSlipPair(1,i)
|
s1=prm%fcc_twinNucleationSlipPair(1,i)
|
||||||
s2=prm%fcc_twinNucleationSlipPair(2,i)
|
s2=prm%fcc_twinNucleationSlipPair(2,i)
|
||||||
if (tau(i) < mse%tau_r_twin(i,of)) then
|
if (tau(i) < mse%tau_r_twin(i,of)) then
|
||||||
Ndot0_twin=(abs(gdot_slip(s1))*(stt%rhoEdge(s2,of)+stt%rhoEdgeDip(s2,of))+& !!!!! correct?
|
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)))/&
|
abs(gdot_slip(s2))*(stt%rhoEdge(s1,of)+stt%rhoEdgeDip(s1,of)))/&
|
||||||
(prm%L0_twin*prm%burgers_slip(i))*&
|
(prm%L0_twin*prm%burgers_slip(i))*&
|
||||||
(1.0_pReal-exp(-prm%VcrossSlip/(kB*Temperature)*&
|
(1.0_pReal-exp(-prm%VcrossSlip/(kB*Temperature)*&
|
||||||
|
@ -1500,7 +1507,7 @@ pure subroutine kinetics_twin(prm,stt,mse,of,Mp,temperature,gdot_slip,gdot_twin,
|
||||||
|
|
||||||
if(present(dgdot_dtau_twin)) dgdot_dtau_twin = dgdot_dtau
|
if(present(dgdot_dtau_twin)) dgdot_dtau_twin = dgdot_dtau
|
||||||
|
|
||||||
end subroutine
|
end subroutine kinetics_twin
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -1547,7 +1554,7 @@ pure subroutine kinetics_trans(prm,stt,mse,of,Mp,temperature,gdot_slip,gdot_tran
|
||||||
s1=prm%fcc_twinNucleationSlipPair(1,i)
|
s1=prm%fcc_twinNucleationSlipPair(1,i)
|
||||||
s2=prm%fcc_twinNucleationSlipPair(2,i)
|
s2=prm%fcc_twinNucleationSlipPair(2,i)
|
||||||
if (tau(i) < mse%tau_r_trans(i,of)) then
|
if (tau(i) < mse%tau_r_trans(i,of)) then
|
||||||
Ndot0_trans=(abs(gdot_slip(s1))*(stt%rhoEdge(s2,of)+stt%rhoEdgeDip(s2,of))+& ! s1/s2 mixing correct?
|
Ndot0_trans=(abs(gdot_slip(s1))*(stt%rhoEdge(s2,of)+stt%rhoEdgeDip(s2,of))+&
|
||||||
abs(gdot_slip(s2))*(stt%rhoEdge(s1,of)+stt%rhoEdgeDip(s1,of)))/&
|
abs(gdot_slip(s2))*(stt%rhoEdge(s1,of)+stt%rhoEdgeDip(s1,of)))/&
|
||||||
(prm%L0_trans*prm%burgers_slip(i))*& ! burgers_slip correct?
|
(prm%L0_trans*prm%burgers_slip(i))*& ! burgers_slip correct?
|
||||||
(1.0_pReal-exp(-prm%VcrossSlip/(kB*Temperature)*&
|
(1.0_pReal-exp(-prm%VcrossSlip/(kB*Temperature)*&
|
||||||
|
@ -1583,7 +1590,7 @@ pure subroutine kinetics_trans(prm,stt,mse,of,Mp,temperature,gdot_slip,gdot_tran
|
||||||
!
|
!
|
||||||
! if(present(dgdot_dtau_twin)) dgdot_dtau_twin = dgdot_dtau
|
! if(present(dgdot_dtau_twin)) dgdot_dtau_twin = dgdot_dtau
|
||||||
!
|
!
|
||||||
end subroutine
|
end subroutine kinetics_trans
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief return array of constitutive results
|
!> @brief return array of constitutive results
|
||||||
|
|
Loading…
Reference in New Issue