TAGGED: equation-of-state, UMAT
-
-
November 30, 2025 at 12:58 pm
Amrith Mariappan
SubscriberÂI'm experiencing an issue with coupling a user-defined material (UMAT49V) to an equation of state in LS-DYNA R16.1. The EOS pressure array pc(i) accessed via common/eosdloc/ remains zero throughout the simulation, even though the configuration appears correct.ÂEnvironment:- LS-DYNA Version: R16.1-182-g5848067bc5 (MPP, Windows 10, Intel Fortran 19.0)- Material: *MAT_USER_DEFINED_MATERIAL_MODELS (MT=49)- EOS: *EOS_GRUNEISEN (EOSID=1)ÂConfiguration:My material card is set up with:- IEOS = 1 (EOS coupling enabled)- NHV = 12 (reserved 4 slots for EOS as per manual)- PART card references both MID=1 (UMAT) and EOSID=1 (EOS)ÂIn my UMAT49V subroutine, I access the pressure via:text common/eosdloc/pc(nlq) ... p_eos = pc(i)textÂObserved Behavior:- Debug prints show pc(i) = 0.0 for all cycles- The UMAT is being called (deviatoric stresses compute correctly)- Time stepping is working (4347 cycles completed)- Elements are deforming (strain increments are non-zero)ÂWhat Works:- MAT_010 (*MAT_ELASTIC_PLASTIC_HYDRO) with the SAME *EOS_GRUNEISEN card works correctly and produces non-zero pressure- This confirms the EOS card itself is validÂQuestion:Is the common/eosdloc/pc() mechanism supported for *MAT_USER_DEFINED_MATERIAL_MODELS in R16.1? The manual (Appendix A, section on user materials with EOS) states that I should:1. Set IEOS=12. Reserve first 4 history variables for EOS3. Access pressure via pc(i)ÂI've done all three, but pc(i) never gets populated. Is there a compilation flag, additional include file, or different approach needed for user materials to access EOS pressure in R16?ÂWorkaround Consideration:Would implementing the EOS in dyn21ueos.f (using ueos41) instead of relying on external *EOS_GRUNEISEN cards be more reliable for user material coupling?ÂAny guidance would be greatly appreciated. I can provide the full keyword file and UMAT code if needed for troubleshooting.ÂThank you,Amrith -
December 12, 2025 at 11:40 am
Vijay
Ansys EmployeeHi Amrith,
common/eosdloc/pc is not the pressure, it is the pressure cutoff that is set by the material routine (umat49v in this case). It will be zero until you set it to something else in umat49v. The pressure is carried through the stress tensor. From Appendix A
The following example user-defined subroutine uses an equation-of-state (EOS). Unlike
standard models, it updates only the deviatoric stress and assigns a value to PC, the pres-
sure cut-off. The pressure cut-off limits the amount of hydrostatic pressure that can be
carried in tension (that is, when the pressure is negative). The default value is zero. A
large negative number will allow the material to carry an unlimited pressure load in ten-
sion. Typically, the pressure cut-off is a function of the current state of the material and
varies with time. Thus, the material model subroutine needs to calculate it. We made
the pressure cut-off a constant value for simplicity in this example. The named common
block eosdloc stores the pressure cut-off array"The *EOS updates the hydrostatic part of the stress tensor in parallel with the stress update in *MAT.
As I understand it, you want the *EOS to only supply positive pressure (from compression) and let the *MAT fully handle the tensile case.
The variable pc(i) sets what minimum pressures are allowed from the *EOS, .e.g the default pc(i)=0 means that the *EOS is only active in compression, i.e. it can only supply positive pressure.
Thanks,
Vijay
Introducing Ansys Assistant a 24/7 AI-powered virtual assistant for active Ansys academic customers.
-
- You must be logged in to reply to this topic.
-
5614
-
1885
-
1403
-
1298
-
1021
© 2026 Copyright ANSYS, Inc. All rights reserved.