Author Topic: history variables in umati/umatl  (Read 7705 times)

Schandra

  • Full Member
  • ***
  • Posts: 82
history variables in umati/umatl
« on: May 16, 2017, 11:40:29 PM »
Dear FEAP community,

I rewrote a code for a user material from an existing user element+material subroutine.
In my umat code I have to update the state variables for every iteration.
In the first step I initialize them and then update them after the computations as follows:
Code: [Select]
         l = ud(8)
         ihpgp= 24
         nenh = 51
         call move_g(hn(nh+(l-1)*ihpgp+nenh)   ,epsi,6)

After the computation, I intend to store them as follows:
Code: [Select]
         call move_g(h1(nh+(l-1)*ihpgp+nenh)   ,epsi,6)
I pass the value of 'nh' from 'umati' to 'umatl'. 'move_g' moves the array from one location to another, here it is 'epsi'.
I see that the value of 'epsi' in this case is not updated. Can you let me know  a better way to store and update the state variables for a user material.

Warm Regards,
Chandra

JStorm

  • Sr. Member
  • ****
  • Posts: 250
Re: history variables in umati/umatl
« Reply #1 on: May 17, 2017, 12:46:22 AM »
Due you write the final state variables at the end of each iteration into h1()?
Then you can get this values at the next time increment by using hn().
Note, that state variables are only saved for equilibrium states (last increment of newton-raphson iteration of a time increment).

Schandra

  • Full Member
  • ***
  • Posts: 82
Re: history variables in umati/umatl
« Reply #2 on: May 17, 2017, 01:02:00 AM »
Hi JStorm,

Yes I write the final state variables at the end of each iteration into h1().

Regards,
Chandra

Prof. S. Govindjee

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 1165
Re: history variables in umati/umatl
« Reply #3 on: May 17, 2017, 08:49:17 AM »
Something is wrong with what you have written.  It look like you are either writing into epsi with both move_g( ) calls or you are reading out of epsi in both.  The structure should be

1. Read from hn( ) to get the converged time t_n values from the previous globally converged time step
2. Perform you constitutive computation to compute your new history values
3. Write to h1( ) your currently computed (guess for) t_n+1 history values

After three, FEAP will compute a global Newton iteration.  If it has not converged globally, your routine will be called again and you will repeat with step 1.

Schandra

  • Full Member
  • ***
  • Posts: 82
Re: history variables in umati/umatl
« Reply #4 on: May 17, 2017, 10:06:58 PM »
Dear Prof. Govindjee,

Thanks for taking time to clear it up. I shall proceed as per your instructions.

Regards,
Chandra

Yaakov

  • Sr. Member
  • ****
  • Posts: 323
Re: history variables in umati/umatl
« Reply #5 on: May 18, 2017, 09:11:59 AM »
Dear Prof. Govindjee,

Thanks very much for your answer!

In your home page, we can download user material (umat) from Prof. Miehe. I have checked, the subroutine contain no history variable.

Is It possible that we can get more typical umat (with history variable) in your homepage in furture.

Warm regards,
Yaakov

Let's boost FEAP's performance!

Prof. R.L. Taylor

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 2649
Re: history variables in umati/umatl
« Reply #6 on: May 18, 2017, 02:31:20 PM »
Attached is a umati1.f umatl1.f that uses  history variables and computes the tangent moduli using the complex step method.

Hope this helps.

Yaakov

  • Sr. Member
  • ****
  • Posts: 323
Re: history variables in umati/umatl
« Reply #7 on: May 18, 2017, 11:51:21 PM »
Dear Prof. Taylor and Prof. S. Govindjee,

This new Umat should be a huge help for all FEAP Users. As development of new user material (umat) is still a quit difficult numerical topic !

Thanks very much & Warm regards,

Yaakov
   
« Last Edit: May 18, 2017, 11:52:53 PM by Yaakov »
Let's boost FEAP's performance!

Schandra

  • Full Member
  • ***
  • Posts: 82
Re: history variables in umati/umatl
« Reply #8 on: May 19, 2017, 07:12:32 AM »
Thank you Prof. Taylor!