storing data per slip system simplifies calculation
This commit is contained in:
parent
c9bb051261
commit
3431086fdb
|
@ -111,7 +111,8 @@ module plastic_dislotwin
|
||||||
p, & !< p-exponent in glide velocity
|
p, & !< p-exponent in glide velocity
|
||||||
q, & !< q-exponent in glide velocity
|
q, & !< q-exponent in glide velocity
|
||||||
r, & !< r-exponent in twin nucleation rate
|
r, & !< r-exponent in twin nucleation rate
|
||||||
s !< s-exponent in trans nucleation rate
|
s, & !< s-exponent in trans nucleation rate
|
||||||
|
shear_twin !< characteristic shear for twins
|
||||||
real(pReal), dimension(:,:), allocatable, private :: &
|
real(pReal), dimension(:,:), allocatable, private :: &
|
||||||
interaction_SlipSlip, & !< coefficients for slip-slip interaction for each interaction type and instance
|
interaction_SlipSlip, & !< coefficients for slip-slip interaction for each interaction type and instance
|
||||||
interaction_SlipTwin, & !< coefficients for slip-twin interaction for each interaction type and instance
|
interaction_SlipTwin, & !< coefficients for slip-twin interaction for each interaction type and instance
|
||||||
|
@ -576,6 +577,8 @@ subroutine plastic_dislotwin_init(fileUnit)
|
||||||
prm%qShearBand <= 0.0_pReal) &
|
prm%qShearBand <= 0.0_pReal) &
|
||||||
call IO_error(211_pInt,el=instance,ext_msg='qShearBand ('//PLASTICITY_DISLOTWIN_label//')')
|
call IO_error(211_pInt,el=instance,ext_msg='qShearBand ('//PLASTICITY_DISLOTWIN_label//')')
|
||||||
|
|
||||||
|
prm%p = math_expand(prm%p,prm%Nslip)
|
||||||
|
prm%q = math_expand(prm%q,prm%Nslip)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
allocate(forestProjectionEdge(prm%totalNslip,prm%totalNslip,maxNinstance), source=0.0_pReal)
|
allocate(forestProjectionEdge(prm%totalNslip,prm%totalNslip,maxNinstance), source=0.0_pReal)
|
||||||
|
@ -1259,8 +1262,8 @@ subroutine plastic_dislotwin_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,Temperature
|
||||||
!* Stress ratios
|
!* Stress ratios
|
||||||
stressRatio =((abs(tau_slip(j))- state(instance)%threshold_stress_slip(j,of))/&
|
stressRatio =((abs(tau_slip(j))- state(instance)%threshold_stress_slip(j,of))/&
|
||||||
(prm%SolidSolutionStrength+prm%tau_peierlsPerSlipFamily(f)))
|
(prm%SolidSolutionStrength+prm%tau_peierlsPerSlipFamily(f)))
|
||||||
StressRatio_p = stressRatio** prm%p(f)
|
StressRatio_p = stressRatio** prm%p(j)
|
||||||
StressRatio_pminus1 = stressRatio**(prm%p(f)-1.0_pReal)
|
StressRatio_pminus1 = stressRatio**(prm%p(j)-1.0_pReal)
|
||||||
!* Boltzmann ratio
|
!* Boltzmann ratio
|
||||||
BoltzmannRatio = prm%Qedge(j)/(kB*Temperature)
|
BoltzmannRatio = prm%Qedge(j)/(kB*Temperature)
|
||||||
!* Initial shear rates
|
!* Initial shear rates
|
||||||
|
@ -1270,15 +1273,15 @@ subroutine plastic_dislotwin_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,Temperature
|
||||||
|
|
||||||
!* Shear rates due to slip
|
!* Shear rates due to slip
|
||||||
gdot_slip(j) = DotGamma0 &
|
gdot_slip(j) = DotGamma0 &
|
||||||
* exp(-BoltzmannRatio*(1-StressRatio_p) ** prm%q(f)) &
|
* exp(-BoltzmannRatio*(1-StressRatio_p) ** prm%q(j)) &
|
||||||
* sign(1.0_pReal,tau_slip(j))
|
* sign(1.0_pReal,tau_slip(j))
|
||||||
|
|
||||||
!* Derivatives of shear rates
|
!* Derivatives of shear rates
|
||||||
dgdot_dtauslip(j) = &
|
dgdot_dtauslip(j) = &
|
||||||
abs(gdot_slip(j))*BoltzmannRatio*prm%p(f)&
|
abs(gdot_slip(j))*BoltzmannRatio*prm%p(j)&
|
||||||
*prm%q(f)/&
|
*prm%q(j)/&
|
||||||
(prm%SolidSolutionStrength+prm%tau_peierlsPerSlipFamily(f))*&
|
(prm%SolidSolutionStrength+prm%tau_peierlsPerSlipFamily(f))*&
|
||||||
StressRatio_pminus1*(1-StressRatio_p)**(prm%q(f)-1.0_pReal)
|
StressRatio_pminus1*(1-StressRatio_p)**(prm%q(j)-1.0_pReal)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
!* Plastic velocity gradient for dislocation glide
|
!* Plastic velocity gradient for dislocation glide
|
||||||
|
@ -1560,8 +1563,8 @@ subroutine plastic_dislotwin_dotState(Tstar_v,Temperature,ipc,ip,el)
|
||||||
!* Stress ratios
|
!* Stress ratios
|
||||||
stressRatio =((abs(tau_slip(j))- state(instance)%threshold_stress_slip(j,of))/&
|
stressRatio =((abs(tau_slip(j))- state(instance)%threshold_stress_slip(j,of))/&
|
||||||
(prm%SolidSolutionStrength+prm%tau_peierlsPerSlipFamily(f)))
|
(prm%SolidSolutionStrength+prm%tau_peierlsPerSlipFamily(f)))
|
||||||
StressRatio_p = stressRatio** prm%p(f)
|
StressRatio_p = stressRatio** prm%p(j)
|
||||||
StressRatio_pminus1 = stressRatio**(prm%p(f)-1.0_pReal)
|
StressRatio_pminus1 = stressRatio**(prm%p(j)-1.0_pReal)
|
||||||
!* Boltzmann ratio
|
!* Boltzmann ratio
|
||||||
BoltzmannRatio = prm%Qedge(j)/(kB*Temperature)
|
BoltzmannRatio = prm%Qedge(j)/(kB*Temperature)
|
||||||
!* Initial shear rates
|
!* Initial shear rates
|
||||||
|
@ -1569,7 +1572,7 @@ subroutine plastic_dislotwin_dotState(Tstar_v,Temperature,ipc,ip,el)
|
||||||
|
|
||||||
!* Shear rates due to slip
|
!* Shear rates due to slip
|
||||||
gdot_slip(j) = DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)** &
|
gdot_slip(j) = DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)** &
|
||||||
prm%q(f))*sign(1.0_pReal,tau_slip(j))
|
prm%q(j))*sign(1.0_pReal,tau_slip(j))
|
||||||
endif
|
endif
|
||||||
!* Multiplication
|
!* Multiplication
|
||||||
DotRhoMultiplication = abs(gdot_slip(j))/(prm%burgers_slip(j)*state(instance)%mfp_slip(j,of))
|
DotRhoMultiplication = abs(gdot_slip(j))/(prm%burgers_slip(j)*state(instance)%mfp_slip(j,of))
|
||||||
|
@ -1810,8 +1813,8 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
stressRatio = ((abs(tau)-state(ph)%threshold_stress_slip(j,of))/&
|
stressRatio = ((abs(tau)-state(ph)%threshold_stress_slip(j,of))/&
|
||||||
(prm%SolidSolutionStrength+&
|
(prm%SolidSolutionStrength+&
|
||||||
prm%tau_peierlsPerSlipFamily(f)))
|
prm%tau_peierlsPerSlipFamily(f)))
|
||||||
StressRatio_p = stressRatio** prm%p(f)
|
StressRatio_p = stressRatio** prm%p(j)
|
||||||
StressRatio_pminus1 = stressRatio**(prm%p(f)-1.0_pReal)
|
StressRatio_pminus1 = stressRatio**(prm%p(j)-1.0_pReal)
|
||||||
!* Boltzmann ratio
|
!* Boltzmann ratio
|
||||||
BoltzmannRatio = prm%Qedge(j)/(kB*Temperature)
|
BoltzmannRatio = prm%Qedge(j)/(kB*Temperature)
|
||||||
!* Initial shear rates
|
!* Initial shear rates
|
||||||
|
@ -1822,7 +1825,7 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
!* Shear rates due to slip
|
!* Shear rates due to slip
|
||||||
plastic_dislotwin_postResults(c+j) = &
|
plastic_dislotwin_postResults(c+j) = &
|
||||||
DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)**&
|
DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)**&
|
||||||
prm%q(f))*sign(1.0_pReal,tau)
|
prm%q(j))*sign(1.0_pReal,tau)
|
||||||
else
|
else
|
||||||
plastic_dislotwin_postResults(c+j) = 0.0_pReal
|
plastic_dislotwin_postResults(c+j) = 0.0_pReal
|
||||||
endif
|
endif
|
||||||
|
@ -1915,11 +1918,11 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
StressRatio_p = ((abs(tau)-state(instance)%threshold_stress_slip(j,of))/&
|
StressRatio_p = ((abs(tau)-state(instance)%threshold_stress_slip(j,of))/&
|
||||||
(prm%SolidSolutionStrength+&
|
(prm%SolidSolutionStrength+&
|
||||||
prm%tau_peierlsPerSlipFamily(f)))&
|
prm%tau_peierlsPerSlipFamily(f)))&
|
||||||
**prm%p(f)
|
**prm%p(j)
|
||||||
StressRatio_pminus1 = ((abs(tau)-state(instance)%threshold_stress_slip(j,of))/&
|
StressRatio_pminus1 = ((abs(tau)-state(instance)%threshold_stress_slip(j,of))/&
|
||||||
(prm%SolidSolutionStrength+&
|
(prm%SolidSolutionStrength+&
|
||||||
prm%tau_peierlsPerSlipFamily(f)))&
|
prm%tau_peierlsPerSlipFamily(f)))&
|
||||||
**(prm%p(f)-1.0_pReal)
|
**(prm%p(j)-1.0_pReal)
|
||||||
!* Boltzmann ratio
|
!* Boltzmann ratio
|
||||||
BoltzmannRatio = prm%Qedge(j)/(kB*Temperature)
|
BoltzmannRatio = prm%Qedge(j)/(kB*Temperature)
|
||||||
!* Initial shear rates
|
!* Initial shear rates
|
||||||
|
@ -1929,7 +1932,7 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
|
|
||||||
!* Shear rates due to slip
|
!* Shear rates due to slip
|
||||||
gdot_slip(j) = DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)**&
|
gdot_slip(j) = DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)**&
|
||||||
prm%q(f))*sign(1.0_pReal,tau)
|
prm%q(j))*sign(1.0_pReal,tau)
|
||||||
else
|
else
|
||||||
gdot_slip(j) = 0.0_pReal
|
gdot_slip(j) = 0.0_pReal
|
||||||
endif
|
endif
|
||||||
|
@ -2007,11 +2010,11 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
StressRatio_p = ((abs(tau)-state(instance)%threshold_stress_slip(j,of))/&
|
StressRatio_p = ((abs(tau)-state(instance)%threshold_stress_slip(j,of))/&
|
||||||
(prm%SolidSolutionStrength+&
|
(prm%SolidSolutionStrength+&
|
||||||
prm%tau_peierlsPerSlipFamily(f)))&
|
prm%tau_peierlsPerSlipFamily(f)))&
|
||||||
**prm%p(f)
|
**prm%p(j)
|
||||||
StressRatio_pminus1 = ((abs(tau)-state(instance)%threshold_stress_slip(j,of))/&
|
StressRatio_pminus1 = ((abs(tau)-state(instance)%threshold_stress_slip(j,of))/&
|
||||||
(prm%SolidSolutionStrength+&
|
(prm%SolidSolutionStrength+&
|
||||||
prm%tau_peierlsPerSlipFamily(f)))&
|
prm%tau_peierlsPerSlipFamily(f)))&
|
||||||
**(prm%p(f)-1.0_pReal)
|
**(prm%p(j)-1.0_pReal)
|
||||||
!* Boltzmann ratio
|
!* Boltzmann ratio
|
||||||
BoltzmannRatio = prm%Qedge(j)/(kB*Temperature)
|
BoltzmannRatio = prm%Qedge(j)/(kB*Temperature)
|
||||||
!* Initial shear rates
|
!* Initial shear rates
|
||||||
|
@ -2021,15 +2024,15 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
|
|
||||||
!* Shear rates due to slip
|
!* Shear rates due to slip
|
||||||
gdot_slip(j) = DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)**&
|
gdot_slip(j) = DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)**&
|
||||||
prm%q(f))*sign(1.0_pReal,tau)
|
prm%q(j))*sign(1.0_pReal,tau)
|
||||||
|
|
||||||
!* Derivatives of shear rates
|
!* Derivatives of shear rates
|
||||||
dgdot_dtauslip = &
|
dgdot_dtauslip = &
|
||||||
abs(gdot_slip(j))*BoltzmannRatio*prm%p(f)&
|
abs(gdot_slip(j))*BoltzmannRatio*prm%p(j)&
|
||||||
*prm%q(f)/&
|
*prm%q(j)/&
|
||||||
(prm%SolidSolutionStrength+&
|
(prm%SolidSolutionStrength+&
|
||||||
prm%tau_peierlsPerSlipFamily(f))*&
|
prm%tau_peierlsPerSlipFamily(f))*&
|
||||||
StressRatio_pminus1*(1-StressRatio_p)**(prm%q(f)-1.0_pReal)
|
StressRatio_pminus1*(1-StressRatio_p)**(prm%q(j)-1.0_pReal)
|
||||||
|
|
||||||
else
|
else
|
||||||
gdot_slip(j) = 0.0_pReal
|
gdot_slip(j) = 0.0_pReal
|
||||||
|
|
Loading…
Reference in New Issue