Well, I found a mistake in my code. I forgot to add two lines after to call fengy3. Now both xlamd and ha are changing along the solution.
subroutine umatl3( f , detf,td,d,ud,hn,h1,nh,ii,istrt, sig,dd,isw)
implicit none
include 'pmod2d.h' ! etype = 1 (displacement method)
! = 2 (mixed method)
include 'elaugm.h' ! elamd, eha
include 'elengy.h' ! estore
include 'pconstant.h' ! program constants
if (isw.eq.14) then ! initialize history terms
else
! This function computes the cauchy stresses, the spatial tangent moduli
! and the energy density
call guccione(f,detf,d,ud, sige,dde,estore)
if(etype.eq.1) then
! Write sig and dd considering sige and dde,
! in this case sig = sige
! dd = dde
elseif(etype.eq.2) then
c Augmented Lagrangian parameters
ha = eha
xlamd = elamd
c Compute pressure and volumetric moduli
jsw = nint(d(170))
call fengy3(d,detf(3), u,up,upp,ha,hp,hpp,jsw)
c Save current Augmented Lagrangian parameters
eha = ha
elamd = xlamd
c Pressure and tanget (not mixed pressure)
press = up + xlamd * hp
upp = (upp + xlamd * hpp ) * detf(1)
! Write sig and dd, following the paper of Simo and Taylor 1991,
! considering sige, dde and the pressure field
c Correct stored energy
estore = estore + u
endif ! etype
endif ! isw case
end ! program
Now my problem is with the AUGM option. If I run my script, the first augment loop converges, but in the second step, when is solving the system with a new xlamd, it diverges. I have been playing with the inputs but I don't get any successful result.
Thank you.