make correction of hardening coefficients thread safe

This commit is contained in:
Christoph Kords 2012-10-05 16:05:51 +00:00
parent 353d9968d5
commit a84e0529c3
1 changed files with 8 additions and 8 deletions

View File

@ -1217,6 +1217,9 @@ real(pReal), dimension(constitutive_nonlocal_totalNslip(phase_plasticityInstance
rhoDip ! dipole dislocation density (edge, screw)
real(pReal), dimension(constitutive_nonlocal_totalNslip(phase_plasticityInstance(material_phase(g,ip,el))),8) :: &
rhoSgl ! single dislocation density (edge+, edge-, screw+, screw-, used edge+, used edge-, used screw+, used screw-)
real(pReal), dimension(constitutive_nonlocal_totalNslip(phase_plasticityInstance(material_phase(g,ip,el))), &
constitutive_nonlocal_totalNslip(phase_plasticityInstance(material_phase(g,ip,el)))) :: &
myInteractionMatrix ! corrected slip interaction matrix
real(pReal), dimension(2,maxval(constitutive_nonlocal_totalNslip),FE_maxNipNeighbors) :: &
neighboring_rhoExcess ! excess density at neighboring material point
real(pReal), dimension(3,constitutive_nonlocal_totalNslip(phase_plasticityInstance(material_phase(g,ip,el))),2) :: &
@ -1260,6 +1263,8 @@ forall (s = 1_pInt:ns) &
!*** calculate the threshold shear stress for dislocation slip
myInteractionMatrix = 0.0_pReal
myInteractionMatrix(1:ns,1:ns) = constitutive_nonlocal_interactionMatrixSlipSlip(1:ns,1:ns,instance)
if (latticeStruct == 1_pInt) then ! in case of fcc: coefficients are corrected for the line tension effect (see Kubin,Devincre,Hoc; 2008; Modeling dislocation storage rates and mean free paths in face-centered cubic crystals)
do s = 1_pInt,ns
myRhoForest = max(rhoForest(s),constitutive_nonlocal_significantRho(instance))
@ -1272,20 +1277,15 @@ if (latticeStruct == 1_pInt) then ! in case of fcc: coefficients are corrected f
constitutive_nonlocal_slipSystemLattice(s2,instance), &
latticeStruct)
select case(interactionCoefficient)
case(3,4,5,6) ! only correct junction forming interactions (4,5,6) and colinear interaction (3)
constitutive_nonlocal_interactionMatrixSlipSlip(s,s2,instance) &
= correction * constitutive_nonlocal_interactionSlipSlip(interactionCoefficient, instance)
case default
constitutive_nonlocal_interactionMatrixSlipSlip(s,s2,instance) &
= constitutive_nonlocal_interactionSlipSlip(interactionCoefficient, instance)
case(3_pInt,4_pInt,5_pInt,6_pInt) ! only correct junction forming interactions (4,5,6) and colinear interaction (3)
myInteractionMatrix(s,s2) = correction * myInteractionMatrix(s,s2)
endselect
enddo
enddo
endif
forall (s = 1_pInt:ns) &
tauThreshold(s) = constitutive_nonlocal_Gmod(instance) * constitutive_nonlocal_burgers(s,instance) &
* sqrt(dot_product((sum(abs(rhoSgl),2) + sum(abs(rhoDip),2)), &
constitutive_nonlocal_interactionMatrixSlipSlip(s,1:ns,instance)))
* sqrt(dot_product((sum(abs(rhoSgl),2) + sum(abs(rhoDip),2)), myInteractionMatrix(s,1:ns)))