diff --git a/trunk/CPFEM.f90 b/trunk/CPFEM.f90 index 24116615e..3a6217dfa 100644 --- a/trunk/CPFEM.f90 +++ b/trunk/CPFEM.f90 @@ -441,13 +441,13 @@ stress: do ! inner iteration: stress Rstress = Tstar_v - T_elastic ! step size control: if residuum does not improve redo iteration with reduced step size if(maxval(abs(Rstress)) > maxval(abs(Rstress_old)) .and. & - maxval(abs(Rstress)) > 1.0e-6 .and. iStress > 1) then -! write(6,*) 'Hallo', iStress + maxval(abs(Rstress)) > abstol_ResStress .and. iStress > 1) then Tstar_v=Tstar_v+0.5*dTstar_v dTstar_v=0.5*dTstar_v cycle endif - if (iStress > 1 .and. (maxval(abs(Tstar_v)) < 1.0e-3_pReal .or. maxval(abs(Rstress/maxval(abs(Tstar_v)))) < tol_Stress)) exit stress + if (iStress > 1 .and. & + (maxval(abs(Tstar_v)) < abstol_Stress .or. maxval(abs(Rstress/maxval(abs(Tstar_v)))) < reltol_Stress)) exit stress ! update stress guess using inverse of dRes/dTstar (Newton--Raphson) LTL = 0.0_pReal @@ -488,7 +488,7 @@ stress: do ! inner iteration: stress forall (i=1:constitutive_Nstatevars(grain,CPFEM_in,cp_en), state_new(i)/=0.0_pReal) & RstateS(i) = Rstate(i)/state_new(i) state_new = state_old+dstate - if (maxval(abs(RstateS)) < tol_State) exit state + if (maxval(abs(RstateS)) < reltol_State) exit state enddo state ! write(6,*) 'istate', istate diff --git a/trunk/prec.f90 b/trunk/prec.f90 index 0893ebe8b..7e3ca1211 100644 --- a/trunk/prec.f90 +++ b/trunk/prec.f90 @@ -19,13 +19,14 @@ ! *** Maximum number of iterations in outer (state variables) loop *** integer(pInt), parameter :: nState = 50_pInt ! *** Convergence criteria for outer (state variables) loop *** - real(pReal), parameter :: tol_State = 1.0e-6_pReal + real(pReal), parameter :: reltol_State = 1.0e-6_pReal ! *** Maximum number of iterations in inner (stress) loop *** integer(pInt), parameter :: nStress = 500_pInt -! *** Convergence criteria for inner (stress) loop *** - real(pReal), parameter :: tol_Stress = 1.0e-6_pReal -! *** Factor for maximum stress correction in inner (stress) loop *** -! real(pReal), parameter :: crite = 0.1_pReal - +! *** Convergence criteria for inner (stress) loop *** + real(pReal), parameter :: reltol_Stress = 1.0e-6_pReal +! *** Convergence criteria for inner (stress) loop *** + real(pReal), parameter :: abstol_Stress = 1.0e3_pReal +! *** Convergence criteria for inner (stress) loop *** + real(pReal), parameter :: abstol_ResStress = 1.0_pReal END MODULE prec