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.

Pass Element Nodal Displacements to User Defined Material Subroutine

    • mwhitte6
      Subscriber

      I am working on implementing a user defined material model that requires access to the displacement field directly to include some atypical components like the hessian of the displacement field. 

      How can I pass the element nodal displacement field into the user defined material subroutine? I looked through all the documentation and a lot of the code in the object file version of LS-DYNA. However, many of the variables are not defined, e.g. in commented code sections, and the naming convention doesn't not provide a sufficient description to make an educated guess. 

      I know it seems a little odd but the deformation gradient is right there which is one step removed from the data I need. I would think the displacements are nearby I just don't know where to find them.

      Thanks in advance for any assistance you can offer. 

       

      Edit 7/28/2026 12:15p

      After some further digging it seems like it might be possible to define my own solid element type which has a call to the usrmat() subroutine. The user defined element subroutine has access to the nodal displacement field which I could then pass to the main user defined material subroutine usrmat() and on into the individual umatxx() subroutines where the material behavior is actually defined. Seems like a long and tedious work around.

      I am also wondering if the nodal displacements are more directly accessible to the user defined material subroutine through a common block data structure. That would be very straightforward and simple to use. More digging on this required. I was hoping that's how the displacement field was referenced in the user defined element subroutine and I could just copy it but alas tis not the case.

      Thinking about it more here I am going to assume that the usrmat() function called from the standard solid element subroutine does not pass the nodal displacements to the usrmat() subroutine, and I would need access to that code to make that modification. Which makes me think that the user defined element is the way to go. However, if I update the subroutine call format are other parts of the code like the standard solid element function call going complain; I'm going to try this first because it is the simplest solution. If that doesn't work then, I think one could define a custom usrmat_custom() which would be called by the user defined element and could be passed the displacement field.

       

      Here's to chasing little white rabbits and jabberwockies.

    • ErKo
      Ansys Employee

      Hi

       

      I will ask an expert on umats to provide some feedback if possibe - please bare with us.

      Thank you

      Erko

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