How can I pass a variable to a UMAT?

Hello Everyone,

I am a beginner of the CalculiX. I want to use the CalculiX to simulate the porous metal deformation. In my case, the yield criterion is a function of the hydrostatic stress, second invariant of the deviatoric stress and relative density. The relative density is going to change when deformation take place.

Mybe I need write a new UMAT to deal with it (by call a behavior defined in shared libraries). However, relative density is not internal variable in the CalculiX. I don’t know which subroutine should be used to define the relative density? Whether sdvini.f or not? If I use the sdvini.f, Should I need compile the CalculiX as a new executable file?

Thanks
Best wishes
GCLiu

I’ve never used subroutines in CalculiX but I think that sdvini.f is indeed the way to go in this case.

1 Like

Yes, you will need to recompile CalculiX every time you change your subroutines linked to that UMAT behavior.

That is correct. You will need to write a new UMAT, then change the impacted subroutines- You can look up in the manual.

Recall that the sdvini.f is only for initialization of the solution-dependent variables. You will need a way to recalcuate the state of each variable for each iteration, so you need to code that in your UMAT or other subroutine call.

Thank you for your patient guidance. It’s a great suggestion. I will try to use the UMAT and sdvini.f.