maximum relative step length in stress integration cannot decrease below 1

intermediate tensor "A" is calculated only once before the Lp loop in "integrateStress"
This commit is contained in:
Christoph Kords 2012-08-21 08:53:36 +00:00
parent aacf900135
commit ad7381cfdd
1 changed files with 7 additions and 7 deletions

View File

@ -2867,7 +2867,7 @@ if (all(invFp_current == 0.0_pReal)) then ! ... failed?
#endif #endif
return return
endif endif
A = math_mul33x33(transpose(invFp_current), math_mul33x33(transpose(Fg_new),math_mul33x33(Fg_new,invFp_current))) A = math_mul33x33(Fg_new,invFp_current) ! intermediate tensor needed later to calculate dFe_dLp
!* start LpLoop with normal step length !* start LpLoop with normal step length
@ -2894,11 +2894,11 @@ LpLoop: do
return return
endif endif
A = math_mul33x33(Fg_new,invFp_current) ! intermediate tensor needed later to calculate dFe_dLp
B = math_I3 - dt*Lpguess
Fe = math_mul33x33(A,B) ! current elastic deformation tensor
!* calculate 2nd Piola-Kirchhoff stress tensor !* calculate 2nd Piola-Kirchhoff stress tensor
B = math_I3 - dt*Lpguess
Fe = math_mul33x33(A,B) ! current elastic deformation tensor
call constitutive_TandItsTangent(Tstar, dT_dFe3333, Fe, g,i,e) ! call constitutive law to calculate 2nd Piola-Kirchhoff stress and its derivative call constitutive_TandItsTangent(Tstar, dT_dFe3333, Fe, g,i,e) ! call constitutive law to calculate 2nd Piola-Kirchhoff stress and its derivative
Tstar_v = math_Mandel33to6(Tstar) Tstar_v = math_Mandel33to6(Tstar)
p_hydro = sum(Tstar_v(1:3)) / 3.0_pReal p_hydro = sum(Tstar_v(1:3)) / 3.0_pReal
@ -3006,7 +3006,7 @@ LpLoop: do
Lpguess = Lpguess_old Lpguess = Lpguess_old
residuum = residuum_old residuum = residuum_old
endif endif
steplength_max = steplength - 1.0_pReal ! limit acceleration steplength_max = max(steplength - 1.0_pReal, 1.0_pReal) ! limit acceleration
steplength = steplength0 ! grinding halt steplength = steplength0 ! grinding halt
jacoCounter = 0_pInt ! reset counter for Jacobian update (we want to do an update next time!) jacoCounter = 0_pInt ! reset counter for Jacobian update (we want to do an update next time!)
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) then if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) then