From 20f203f799ee9cad2be40dd19668e50c43d3d183 Mon Sep 17 00:00:00 2001 From: Christoph Kords Date: Sun, 20 May 2012 13:57:35 +0000 Subject: [PATCH] allow minimum stable dipole height equal to zero; ensure that maximum stable dipole height is not smaller than the minimum value --- code/constitutive_nonlocal.f90 | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/code/constitutive_nonlocal.f90 b/code/constitutive_nonlocal.f90 index 5f5e7b1c6..bc2664268 100644 --- a/code/constitutive_nonlocal.f90 +++ b/code/constitutive_nonlocal.f90 @@ -377,7 +377,7 @@ constitutive_nonlocal_interactionSlipSlip = 0.0_pReal allocate(constitutive_nonlocal_minimumDipoleHeightPerSlipFamily(lattice_maxNslipFamily,2,maxNinstance)) allocate(constitutive_nonlocal_peierlsStressPerSlipFamily(lattice_maxNslipFamily,2,maxNinstance)) -constitutive_nonlocal_minimumDipoleHeightPerSlipFamily = 0.0_pReal +constitutive_nonlocal_minimumDipoleHeightPerSlipFamily = -1.0_pReal constitutive_nonlocal_peierlsStressPerSlipFamily = 0.0_pReal !*** readout data from material.config file @@ -527,9 +527,9 @@ enddo if (constitutive_nonlocal_rhoDipScrew0(f,i) < 0.0_pReal) call IO_error(251_pInt,ext_msg='rhoDipScrew0') if (constitutive_nonlocal_burgersPerSlipFamily(f,i) <= 0.0_pReal) call IO_error(251_pInt,ext_msg='burgers') if (constitutive_nonlocal_lambda0PerSlipFamily(f,i) <= 0.0_pReal) call IO_error(251_pInt,ext_msg='lambda0') - if (constitutive_nonlocal_minimumDipoleHeightPerSlipFamily(f,1,i) <= 0.0_pReal) & + if (constitutive_nonlocal_minimumDipoleHeightPerSlipFamily(f,1,i) < 0.0_pReal) & call IO_error(251_pInt,ext_msg='minimumDipoleHeightEdge') - if (constitutive_nonlocal_minimumDipoleHeightPerSlipFamily(f,2,i) <= 0.0_pReal) & + if (constitutive_nonlocal_minimumDipoleHeightPerSlipFamily(f,2,i) < 0.0_pReal) & call IO_error(251_pInt,ext_msg='minimumDipoleHeightScrew') if (constitutive_nonlocal_peierlsStressPerSlipFamily(f,1,i) <= 0.0_pReal) call IO_error(251_pInt,ext_msg='peierlsStressEdge') if (constitutive_nonlocal_peierlsStressPerSlipFamily(f,2,i) <= 0.0_pReal) call IO_error(251_pInt,ext_msg='peierlsStressScrew') @@ -575,7 +575,7 @@ allocate(constitutive_nonlocal_lambda0(maxTotalNslip, maxNinstance)) constitutive_nonlocal_lambda0 = 0.0_pReal allocate(constitutive_nonlocal_minimumDipoleHeight(maxTotalNslip,2,maxNinstance)) -constitutive_nonlocal_minimumDipoleHeight = 0.0_pReal +constitutive_nonlocal_minimumDipoleHeight = -1.0_pReal allocate(constitutive_nonlocal_forestProjectionEdge(maxTotalNslip, maxTotalNslip, maxNinstance)) constitutive_nonlocal_forestProjectionEdge = 0.0_pReal @@ -1655,6 +1655,7 @@ dUpper(1:ns,2) = min(1.0_pReal / sqrt(sum(abs(rhoSgl),2) + sum(rhoDip,2)), & constitutive_nonlocal_Gmod(myInstance) * constitutive_nonlocal_burgers(1:ns,myInstance) & / (8.0_pReal * pi * abs(tau))) dUpper(1:ns,1) = dUpper(1:ns,2) / (1.0_pReal - constitutive_nonlocal_nu(myInstance)) +dUpper = max(dUpper,dLower) deltaDUpper = dUpper - dUpperOld @@ -1693,7 +1694,6 @@ forall (c = 1:2) & + abs(deltaRhoSingle2DipoleStress(1:ns,2*(c-1)+6)) - !*** store new maximum dipole height in state forall (c = 1_pInt:2_pInt) & @@ -1868,8 +1868,6 @@ ns = constitutive_nonlocal_totalNslip(myInstance) tau = 0.0_pReal gdot = 0.0_pReal -dLower = 0.0_pReal -dUpper = 0.0_pReal !*** shortcut to state variables @@ -1944,6 +1942,7 @@ dUpper(1:ns,2) = min( 1.0_pReal / sqrt( sum(abs(rhoSgl),2)+sum(rhoDip,2) ), & constitutive_nonlocal_Gmod(myInstance) * constitutive_nonlocal_burgers(1:ns,myInstance) & / ( 8.0_pReal * pi * abs(tau) ) ) dUpper(1:ns,1) = dUpper(1:ns,2) / ( 1.0_pReal - constitutive_nonlocal_nu(myInstance) ) +dUpper = max(dUpper,dLower)