Uexpected input in user material

Hello everyone,

I am currently in the process of understanding the umat workflow, and for this I am playing a bit with the input arguments of umat_user.f. I stumbled upon some unexpected behaviour, but most likely i got something wrong here:

The Green Lagrange strain is defined as E = 1/2(F^T*F-1). I used the following lines of code at the beginning of my umat:

      real*8 emectest(3,3), idi(3,3)
      write(*,*) 'Green Lagrange ','point: ',iint
      write(*,*) 'E11',emec(1)
      write(*,*) 'E22',emec(2)
      write(*,*) 'E33',emec(3)
      write(*,*) 'E12',emec(4)
      write(*,*) 'E13',emec(5)
      write(*,*) 'E23',emec(6)
!
      idi=0.0d0
      emectest=0.0d0
      do i=1,3
            idi(i,i)=1.0d0
      end do
!
      do i=1,3
      do j=1,3
            emectest(i,j)=0.5d0*(xkl(j,i)*xkl(i,j)-idi(i,j))
      end do
      end do
!      
      write(*,*) 'Green Lagrange from defgrad ','point: ',iint
      write(*,*) 'F->E11',emectest(1,1)
      write(*,*) 'F->E22',emectest(2,2)
      write(*,*) 'F->E33',emectest(3,3)
      write(*,*) 'F->E12',emectest(1,2)
      write(*,*) 'F->E13',emectest(1,3)
      write(*,*) 'F->E23',emectest(2,3)

I would expect the result to be the same for each integration point, but for some reason this is only the case for the first two diagonal entrys. In my understanding, it should produce the same output, indepentendly on the material law itself.
Am I missing something here?

The deformation gradient xkl contains both the mechanical and the thermal part of the deformation gradient (F = F_me*F_th) and emec is just the mechanical Lagrangian strain.

So in case your simulation is about thermal expansion, emec and emectest are not equal.
However, I would expect all three components in the main diagonal to be different and not just the third one.

How does your model or your input file look like?

Edit: I think I see the problem, independent of the type of your simulation.

You need an additional loop for the summation itself (C_ij = F_ki*F_kj), and you need to sum up the values for all k:

C = 0.0d0
 do i = 1,3
    do j = 1,3
      do k = 1,3
        C(i, j) = C(i, j) + F(k, i) * F(k, j)
      end do
    end do
  end do

From here you can continue to compute the Lagrangian strain.

However, consider my first comment. In thermomechanical simulations, the deformation gradient contains a thermal part. Therefore the UMAT for the ciarlet material computes the right Cauchy-Green tensor based on the mechanical Lagrangian strain and not on the deformation gradient.

1 Like

Thanks, that is a valuable information to know!

Currently, i don’t have any temperature changes, but they are considered to be implemented at the next step. The Temperature however, is already included in the stress computation. But T_0 is equal to the current Temperature t1l at all times for now, so that part vanishes.

I also looked a bit closer, for the first iteration, all three diagonals are equal. The third one starts to deviate more, the more iterations are done. So my guess is, I messed up at some other location as well. Most likely with the seperate computation of Cij you proposed and me only loading in the z-direction, could be the explanation.

For my model, I need to seperate the volumetric strain by F° = (1/detF^1/3)F, and then use F° to compute the isochoric left cauchy green strain B°=F°F°^T. So it makes more sense to me, to not use emec but xkl for all of my computations.