-
-
July 28, 2026 at 3:54 pm
mwhitte6
SubscriberI 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.
-
July 29, 2026 at 7:27 am
ErKo
Ansys EmployeeHi
Â
I will ask an expert on umats to provide some feedback if possibe - please bare with us.
Thank you
Erko
-
- You must be logged in to reply to this topic.
-
6880
-
1906
-
1544
-
1344
-
1217
© 2026 Copyright ANSYS, Inc. All rights reserved.