long name does not help here
This commit is contained in:
parent
ea1fd621aa
commit
34d1c011c7
|
@ -1554,7 +1554,7 @@ end subroutine plastic_dislotwin_dotState
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief return array of constitutive results
|
!> @brief return array of constitutive results
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el) result(postResults)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
tol_math_check, &
|
tol_math_check, &
|
||||||
dEq0
|
dEq0
|
||||||
|
@ -1591,7 +1591,7 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
el !< element
|
el !< element
|
||||||
|
|
||||||
real(pReal), dimension(plasticState(material_phase(ipc,ip,el))%sizePostResults) :: &
|
real(pReal), dimension(plasticState(material_phase(ipc,ip,el))%sizePostResults) :: &
|
||||||
plastic_dislotwin_postResults
|
postResults
|
||||||
integer(pInt) :: &
|
integer(pInt) :: &
|
||||||
instance,&
|
instance,&
|
||||||
f,o,i,c,j,index_myFamily,&
|
f,o,i,c,j,index_myFamily,&
|
||||||
|
@ -1622,15 +1622,15 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
|
|
||||||
!* Required output
|
!* Required output
|
||||||
c = 0_pInt
|
c = 0_pInt
|
||||||
plastic_dislotwin_postResults = 0.0_pReal
|
postResults = 0.0_pReal
|
||||||
do o = 1_pInt,size(prm%outputID)
|
do o = 1_pInt,size(prm%outputID)
|
||||||
select case(prm%outputID(o))
|
select case(prm%outputID(o))
|
||||||
|
|
||||||
case (edge_density_ID)
|
case (edge_density_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+prm%totalNslip) = state(instance)%rhoEdge(1_pInt:prm%totalNslip,of)
|
postResults(c+1_pInt:c+prm%totalNslip) = state(instance)%rhoEdge(1_pInt:prm%totalNslip,of)
|
||||||
c = c + prm%totalNslip
|
c = c + prm%totalNslip
|
||||||
case (dipole_density_ID)
|
case (dipole_density_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+prm%totalNslip) = state(instance)%rhoEdgeDip(1_pInt:prm%totalNslip,of)
|
postResults(c+1_pInt:c+prm%totalNslip) = state(instance)%rhoEdgeDip(1_pInt:prm%totalNslip,of)
|
||||||
c = c + prm%totalNslip
|
c = c + prm%totalNslip
|
||||||
case (shear_rate_slip_ID)
|
case (shear_rate_slip_ID)
|
||||||
j = 0_pInt
|
j = 0_pInt
|
||||||
|
@ -1655,20 +1655,20 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
DotGamma0 = state(instance)%rhoEdge(j,of)*prm%burgers_slip(j)* prm%v0(j)
|
DotGamma0 = state(instance)%rhoEdge(j,of)*prm%burgers_slip(j)* prm%v0(j)
|
||||||
|
|
||||||
!* Shear rates due to slip
|
!* Shear rates due to slip
|
||||||
plastic_dislotwin_postResults(c+j) = DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)**&
|
postResults(c+j) = DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)**&
|
||||||
prm%q(j))*sign(1.0_pReal,tau)
|
prm%q(j))*sign(1.0_pReal,tau)
|
||||||
else
|
else
|
||||||
plastic_dislotwin_postResults(c+j) = 0.0_pReal
|
postResults(c+j) = 0.0_pReal
|
||||||
endif
|
endif
|
||||||
|
|
||||||
enddo ; enddo
|
enddo ; enddo
|
||||||
c = c + prm%totalNslip
|
c = c + prm%totalNslip
|
||||||
case (accumulated_shear_slip_ID)
|
case (accumulated_shear_slip_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+prm%totalNslip) = &
|
postResults(c+1_pInt:c+prm%totalNslip) = &
|
||||||
state(instance)%accshear_slip(1_pInt:prm%totalNslip,of)
|
state(instance)%accshear_slip(1_pInt:prm%totalNslip,of)
|
||||||
c = c + prm%totalNslip
|
c = c + prm%totalNslip
|
||||||
case (mfp_slip_ID)
|
case (mfp_slip_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+prm%totalNslip) =&
|
postResults(c+1_pInt:c+prm%totalNslip) =&
|
||||||
state(instance)%mfp_slip(1_pInt:prm%totalNslip,of)
|
state(instance)%mfp_slip(1_pInt:prm%totalNslip,of)
|
||||||
c = c + prm%totalNslip
|
c = c + prm%totalNslip
|
||||||
case (resolved_stress_slip_ID)
|
case (resolved_stress_slip_ID)
|
||||||
|
@ -1677,12 +1677,12 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
index_myFamily = sum(lattice_NslipSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
index_myFamily = sum(lattice_NslipSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
||||||
do i = 1_pInt,prm%Nslip(f) ! process each (active) slip system in family
|
do i = 1_pInt,prm%Nslip(f) ! process each (active) slip system in family
|
||||||
j = j + 1_pInt
|
j = j + 1_pInt
|
||||||
plastic_dislotwin_postResults(c+j) =&
|
postResults(c+j) =&
|
||||||
math_mul33xx33(S,lattice_Sslip(1:3,1:3,1,index_myFamily+i,ph))
|
math_mul33xx33(S,lattice_Sslip(1:3,1:3,1,index_myFamily+i,ph))
|
||||||
enddo; enddo
|
enddo; enddo
|
||||||
c = c + prm%totalNslip
|
c = c + prm%totalNslip
|
||||||
case (threshold_stress_slip_ID)
|
case (threshold_stress_slip_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+prm%totalNslip) = &
|
postResults(c+1_pInt:c+prm%totalNslip) = &
|
||||||
state(instance)%threshold_stress_slip(1_pInt:prm%totalNslip,of)
|
state(instance)%threshold_stress_slip(1_pInt:prm%totalNslip,of)
|
||||||
c = c + prm%totalNslip
|
c = c + prm%totalNslip
|
||||||
case (edge_dipole_distance_ID)
|
case (edge_dipole_distance_ID)
|
||||||
|
@ -1691,18 +1691,18 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
index_myFamily = sum(lattice_NslipSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
index_myFamily = sum(lattice_NslipSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
||||||
do i = 1_pInt,prm%Nslip(f) ! process each (active) slip system in family
|
do i = 1_pInt,prm%Nslip(f) ! process each (active) slip system in family
|
||||||
j = j + 1_pInt
|
j = j + 1_pInt
|
||||||
plastic_dislotwin_postResults(c+j) = &
|
postResults(c+j) = &
|
||||||
(3.0_pReal*lattice_mu(ph)*prm%burgers_slip(j))/&
|
(3.0_pReal*lattice_mu(ph)*prm%burgers_slip(j))/&
|
||||||
(16.0_pReal*pi*abs(math_mul33xx33(S,lattice_Sslip(1:3,1:3,1,index_myFamily+i,ph))))
|
(16.0_pReal*pi*abs(math_mul33xx33(S,lattice_Sslip(1:3,1:3,1,index_myFamily+i,ph))))
|
||||||
plastic_dislotwin_postResults(c+j)=min(plastic_dislotwin_postResults(c+j),&
|
postResults(c+j)=min(postResults(c+j),&
|
||||||
state(instance)%mfp_slip(j,of))
|
state(instance)%mfp_slip(j,of))
|
||||||
! plastic_dislotwin_postResults(c+j)=max(plastic_dislotwin_postResults(c+j),&
|
! postResults(c+j)=max(postResults(c+j),&
|
||||||
! plasticState(ph)%state(4*ns+2*nt+2*nr+j, of))
|
! plasticState(ph)%state(4*ns+2*nt+2*nr+j, of))
|
||||||
enddo; enddo
|
enddo; enddo
|
||||||
c = c + prm%totalNslip
|
c = c + prm%totalNslip
|
||||||
case (resolved_stress_shearband_ID)
|
case (resolved_stress_shearband_ID)
|
||||||
do j = 1_pInt,6_pInt ! loop over all shearband families
|
do j = 1_pInt,6_pInt ! loop over all shearband families
|
||||||
plastic_dislotwin_postResults(c+j) = dot_product(Tstar_v,sbSv(1:6,j,ipc,ip,el))
|
postResults(c+j) = dot_product(Tstar_v,sbSv(1:6,j,ipc,ip,el))
|
||||||
enddo
|
enddo
|
||||||
c = c + 6_pInt
|
c = c + 6_pInt
|
||||||
case (shear_rate_shearband_ID)
|
case (shear_rate_shearband_ID)
|
||||||
|
@ -1724,13 +1724,13 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
!* Initial shear rates
|
!* Initial shear rates
|
||||||
DotGamma0 = prm%sbVelocity
|
DotGamma0 = prm%sbVelocity
|
||||||
! Shear rate due to shear band
|
! Shear rate due to shear band
|
||||||
plastic_dislotwin_postResults(c+j) = &
|
postResults(c+j) = &
|
||||||
DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)**prm%qShearBand)*&
|
DotGamma0*exp(-BoltzmannRatio*(1_pInt-StressRatio_p)**prm%qShearBand)*&
|
||||||
sign(1.0_pReal,tau)
|
sign(1.0_pReal,tau)
|
||||||
enddo
|
enddo
|
||||||
c = c + 6_pInt
|
c = c + 6_pInt
|
||||||
case (twin_fraction_ID)
|
case (twin_fraction_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+prm%totalNtwin) = state(instance)%twinFraction(1_pInt:prm%totalNtwin,of)
|
postResults(c+1_pInt:c+prm%totalNtwin) = state(instance)%twinFraction(1_pInt:prm%totalNtwin,of)
|
||||||
c = c + prm%totalNtwin
|
c = c + prm%totalNtwin
|
||||||
case (shear_rate_twin_ID)
|
case (shear_rate_twin_ID)
|
||||||
if (prm%totalNtwin > 0_pInt) then
|
if (prm%totalNtwin > 0_pInt) then
|
||||||
|
@ -1799,7 +1799,7 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
end select
|
end select
|
||||||
StressRatio_r = (state(instance)%threshold_stress_twin(j,of)/tau) &
|
StressRatio_r = (state(instance)%threshold_stress_twin(j,of)/tau) &
|
||||||
**prm%r(j)
|
**prm%r(j)
|
||||||
plastic_dislotwin_postResults(c+j) = &
|
postResults(c+j) = &
|
||||||
(prm%MaxTwinFraction-sumf)*lattice_shearTwin(index_myFamily+i,ph)*&
|
(prm%MaxTwinFraction-sumf)*lattice_shearTwin(index_myFamily+i,ph)*&
|
||||||
state(instance)%twinVolume(j,of)*Ndot0_twin*exp(-StressRatio_r)
|
state(instance)%twinVolume(j,of)*Ndot0_twin*exp(-StressRatio_r)
|
||||||
endif
|
endif
|
||||||
|
@ -1808,10 +1808,10 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
endif
|
endif
|
||||||
c = c + prm%totalNtwin
|
c = c + prm%totalNtwin
|
||||||
case (accumulated_shear_twin_ID)
|
case (accumulated_shear_twin_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+prm%totalNtwin) = state(instance)%accshear_twin(1_pInt:prm%totalNtwin,of)
|
postResults(c+1_pInt:c+prm%totalNtwin) = state(instance)%accshear_twin(1_pInt:prm%totalNtwin,of)
|
||||||
c = c + prm%totalNtwin
|
c = c + prm%totalNtwin
|
||||||
case (mfp_twin_ID)
|
case (mfp_twin_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+prm%totalNtwin) = state(instance)%mfp_twin(1_pInt:prm%totalNtwin,of)
|
postResults(c+1_pInt:c+prm%totalNtwin) = state(instance)%mfp_twin(1_pInt:prm%totalNtwin,of)
|
||||||
c = c + prm%totalNtwin
|
c = c + prm%totalNtwin
|
||||||
case (resolved_stress_twin_ID)
|
case (resolved_stress_twin_ID)
|
||||||
if (prm%totalNtwin > 0_pInt) then
|
if (prm%totalNtwin > 0_pInt) then
|
||||||
|
@ -1820,12 +1820,12 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
index_myFamily = sum(lattice_NtwinSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
index_myFamily = sum(lattice_NtwinSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
||||||
do i = 1_pInt,prm%Ntwin(f) ! process each (active) slip system in family
|
do i = 1_pInt,prm%Ntwin(f) ! process each (active) slip system in family
|
||||||
j = j + 1_pInt
|
j = j + 1_pInt
|
||||||
plastic_dislotwin_postResults(c+j) = math_mul33xx33(S,lattice_Stwin(1:3,1:3,index_myFamily+i,ph))
|
postResults(c+j) = math_mul33xx33(S,lattice_Stwin(1:3,1:3,index_myFamily+i,ph))
|
||||||
enddo; enddo
|
enddo; enddo
|
||||||
endif
|
endif
|
||||||
c = c + prm%totalNtwin
|
c = c + prm%totalNtwin
|
||||||
case (threshold_stress_twin_ID)
|
case (threshold_stress_twin_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+prm%totalNtwin) = state(instance)%threshold_stress_twin(1_pInt:prm%totalNtwin,of)
|
postResults(c+1_pInt:c+prm%totalNtwin) = state(instance)%threshold_stress_twin(1_pInt:prm%totalNtwin,of)
|
||||||
c = c + prm%totalNtwin
|
c = c + prm%totalNtwin
|
||||||
case (stress_exponent_ID)
|
case (stress_exponent_ID)
|
||||||
j = 0_pInt
|
j = 0_pInt
|
||||||
|
@ -1871,27 +1871,27 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
!* Stress exponent
|
!* Stress exponent
|
||||||
plastic_dislotwin_postResults(c+j) = &
|
postResults(c+j) = &
|
||||||
merge(0.0_pReal,(tau/gdot_slip(j))*dgdot_dtauslip,dEq0(gdot_slip(j)))
|
merge(0.0_pReal,(tau/gdot_slip(j))*dgdot_dtauslip,dEq0(gdot_slip(j)))
|
||||||
enddo ; enddo
|
enddo ; enddo
|
||||||
c = c + prm%totalNslip
|
c = c + prm%totalNslip
|
||||||
case (sb_eigenvalues_ID)
|
case (sb_eigenvalues_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+3_pInt) = math_eigenvaluesSym33(S)
|
postResults(c+1_pInt:c+3_pInt) = math_eigenvaluesSym33(S)
|
||||||
c = c + 3_pInt
|
c = c + 3_pInt
|
||||||
case (sb_eigenvectors_ID)
|
case (sb_eigenvectors_ID)
|
||||||
call math_eigenValuesVectorsSym33(S,eigValues,eigVectors)
|
call math_eigenValuesVectorsSym33(S,eigValues,eigVectors)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+9_pInt) = reshape(eigVectors,[9])
|
postResults(c+1_pInt:c+9_pInt) = reshape(eigVectors,[9])
|
||||||
c = c + 9_pInt
|
c = c + 9_pInt
|
||||||
case (stress_trans_fraction_ID)
|
case (stress_trans_fraction_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+prm%totalNtrans) = &
|
postResults(c+1_pInt:c+prm%totalNtrans) = &
|
||||||
state(instance)%stressTransFraction(1_pInt:prm%totalNtrans,of)
|
state(instance)%stressTransFraction(1_pInt:prm%totalNtrans,of)
|
||||||
c = c + prm%totalNtrans
|
c = c + prm%totalNtrans
|
||||||
case (strain_trans_fraction_ID)
|
case (strain_trans_fraction_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+prm%totalNtrans) = &
|
postResults(c+1_pInt:c+prm%totalNtrans) = &
|
||||||
state(instance)%strainTransFraction(1_pInt:prm%totalNtrans,of)
|
state(instance)%strainTransFraction(1_pInt:prm%totalNtrans,of)
|
||||||
c = c + prm%totalNtrans
|
c = c + prm%totalNtrans
|
||||||
case (trans_fraction_ID)
|
case (trans_fraction_ID)
|
||||||
plastic_dislotwin_postResults(c+1_pInt:c+prm%totalNtrans) = &
|
postResults(c+1_pInt:c+prm%totalNtrans) = &
|
||||||
state(instance)%stressTransFraction(1_pInt:prm%totalNtrans,of) + &
|
state(instance)%stressTransFraction(1_pInt:prm%totalNtrans,of) + &
|
||||||
state(instance)%strainTransFraction(1_pInt:prm%totalNtrans,of)
|
state(instance)%strainTransFraction(1_pInt:prm%totalNtrans,of)
|
||||||
c = c + prm%totalNtrans
|
c = c + prm%totalNtrans
|
||||||
|
|
Loading…
Reference in New Issue