From f84d2abedccb3ecd9138793aa6aab491b3b5e90b Mon Sep 17 00:00:00 2001 From: Philip Eisenlohr Date: Fri, 6 Mar 2009 11:28:48 +0000 Subject: [PATCH] corrected mistake in Lp tangent calculation (Christoph, pls check) --- trunk/constitutive_j2.f90 | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/trunk/constitutive_j2.f90 b/trunk/constitutive_j2.f90 index c17ce019e..7359f095d 100644 --- a/trunk/constitutive_j2.f90 +++ b/trunk/constitutive_j2.f90 @@ -11,7 +11,7 @@ ! constitution j2 ! (output) flowstress ! (output) strainrate -! c11 110.9e9 # (3 C11 + 2 C12 + 2 C44) / 5 +! c11 110.9e9 # (3 C11 + 2 C12 + 2 C44) / 5 ... with C44 = C11-C12 !! ! c12 58.34e9 # (1 C11 + 4 C12 - 1 C44) / 5 ! taylorfactor 3 ! s0 31e6 @@ -281,30 +281,33 @@ subroutine constitutive_j2_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,sta real(pReal), dimension(3,3) :: Lp real(pReal), dimension(3,3,3,3) :: dLp_dTstar3333 real(pReal), dimension(9,9) :: dLp_dTstar - real(pReal) norm_Tstar - real(pReal) factor + real(pReal) norm_Tstar, squarenorm_Tstar, factor + matID = phase_constitutionInstance(material_phase(ipc,ip,el)) Tstar33 = math_Mandel6to33(Tstar_v) - norm_Tstar = dsqrt(math_mul6x6(Tstar_v,Tstar_v)) - + squarenorm_Tstar = math_mul6x6(Tstar_v,Tstar_v) + norm_Tstar = dsqrt(Tstar) + !* Calculation of Lp Lp = Tstar33/norm_Tstar*constitutive_j2_gdot0(matID)/constitutive_j2_fTaylor(matID)* & (dsqrt(1.5_pReal)/constitutive_j2_fTaylor(matID)*norm_Tstar/state(ipc,ip,el)%p(1))**constitutive_j2_n(matID) !* Calculation of the tangent of Lp + factor = constitutive_j2_gdot0(matID)/constitutive_j2_fTaylor(matID)* & + (dsqrt(1.5_pReal)/ constitutive_j2_fTaylor(matID)/state(ipc,ip,el)%p(1))**constitutive_j2_n(matID) * & + norm_Tstar**(constitutive_j2_n(matID)-1.0_pReal) + dLp_dTstar3333 = 0.0_pReal dLp_dTstar = 0.0_pReal - factor = constitutive_j2_gdot0(matID)/constitutive_j2_fTaylor(matID)* & - (dsqrt(1.5_pReal)/ constitutive_j2_fTaylor(matID)/state(ipc,ip,el)%p(1))**constitutive_j2_n(matID) * & - * norm_Tstar**(constitutive_j2_n(matID)-1.0_pReal) forall (k=1:3,l=1:3,m=1:3,n=1:3) & - dLp_dTstar3333(k,l,m,n) = factor * (constitutive_j2_n(matID)-1.0_pReal)/(norm_Tstar**2.0_pReal) * Tstar33(k,l)*Tstar33(m,n) + dLp_dTstar3333(k,l,m,n) = Tstar33(k,l)*Tstar33(m,n) * (constitutive_j2_n(matID)-1.0_pReal)/squarenorm_Tstar forall (k=1:3,l=1:3) & - dLp_dTstar3333(k,l,k,l) = dLp_dTstar3333(k,l,k,l) + factor - dLp_dTstar = math_Plain3333to99(dLp_dTstar3333) + dLp_dTstar3333(k,k,l,l) = dLp_dTstar3333(k,k,l,l) + 1.0_pReal + dLp_dTstar = math_Plain3333to99(factor * dLp_dTstar3333) return + end subroutine @@ -340,9 +343,9 @@ function constitutive_j2_dotState(Tstar_v,Temperature,state,ipc,ip,el) norm_Tstar = dsqrt(math_mul6x6(Tstar_v,Tstar_v)) constitutive_j2_dotState = constitutive_j2_gdot0(matID)/constitutive_j2_fTaylor(matID)* & (dsqrt(1.5_pReal)/constitutive_j2_fTaylor(matID)*norm_Tstar/state(ipc,ip,el)%p(1))** & - constitutive_j2_n(matID) * & - constitutive_j2_h0(matID)*(1.0_pReal-state(ipc,ip,el)%p(1)/constitutive_j2_s_sat(matID))** & - constitutive_j2_w0(matID) + constitutive_j2_n(matID) * & + constitutive_j2_h0(matID)*(1.0_pReal-state(ipc,ip,el)%p(1)/constitutive_j2_s_sat(matID))** & + constitutive_j2_w0(matID) return @@ -387,9 +390,9 @@ pure function constitutive_j2_postResults(Tstar_v,Temperature,dt,state,ipc,ip,el constitutive_j2_postResults(c+1) = state(ipc,ip,el)%p(1) c = c + 1 case ('strainrate') - constitutive_j2_postResults(c+1) = constitutive_j2_gdot0(matID)/constitutive_j2_fTaylor(matID)* & + constitutive_j2_postResults(c+1) = constitutive_j2_gdot0(matID)/constitutive_j2_fTaylor(matID)* & (dsqrt(1.5_pReal)/constitutive_j2_fTaylor(matID)*norm_Tstar/state(ipc,ip,el)%p(1))** & - constitutive_j2_n(matID) + constitutive_j2_n(matID) c = c + 1 end select enddo