Ansys Assistant will be unavailable on the Learning Forum starting January 30. An upgraded version is coming soon. We apologize for any inconvenience and appreciate your patience. Stay tuned for updates.
LS Dyna

LS Dyna

Topics related to LS-DYNA, Autodyn, Explicit STR and more.

User Material (UMAT) with EOS Coupling Issue – pc() Array Remains Zero

    • 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=1
      2. Reserve first 4 history variables for EOS
      3. 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


    • Vijay
      Ansys Employee

      Hi 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.

Viewing 1 reply thread
  • You must be logged in to reply to this topic.
[bingo_chatbox]