User login


You are here

How to postprocess the stress fields if UEL (abaqus) is used

Wugui Jiang's picture

Dear everybody,

  I had embeded the ferroelectric constitutive law into ABAQUS via UEL.  The stresses of ferroelectric devices in service are predicted, but it is too difficult to postprocess.

   Would you like tell me how to output in detail if you knew.

 W.G. Jiang

Sept. 20, 2007


Dan Cojocaru's picture

I am not familiar with UEL, but if the state variables (SVARS) are not output in the .odb file then
the only approach is to write a post-processing program. If you want to use CAE for
postprocessing then you should use the ABAQUS Scripring Interface (either Python or C++) to import
the SVARS data into the .odb file as an FieldOutput object.

Wugui Jiang's picture

Thank you for your comments.

In UEL, no filed is output for elments.  Of course, I can output these state varibles through python, but we know, all varibles are defined in integrated points. In odb, no information is available for elements. So, I have to transfer these varibles in integrated points to  nodes in UEL by using Fortran codes for TECPLOT format.

 There are some questions in this procedure.Because the node number of the model is not available in UEL, I don't know how to smooth these fields, although it is not difficult to be realized in finite element method. 


Dan Cojocaru's picture

Some ideas: 

1. I think in the worst case, you could pass each element's nodal connectivity using the PROPS vector.


2. You could pass the element number via PROPS and store the element connectivity using an array in a COMMON block. Then code a subroutine to retrieve the nodal connectivity based on the element number, subroutine that you could call from UEL.

You can always visualize data in ABAQUS/CAE, by using the scripting interface and do some coding, as long as you have a valid mesh description.  

Wugui Jiang's picture

We knew that Props(*) is a vector of materials properties. In UEL,  element connectivity vector is not available because the node number in the whole model is absent.

Dan Cojocaru's picture

From a programming point of view I think you can put whatever you want as being an element property. :-)

I might have been wrong mentioning PROPS array (which is a real-valued array).

I think you might be more interested in using  the JPROPS instead which
is an array of integers, therefore suitable for passing the nodal connectivity to UEL.

This is from : ABAQUS Analysis User's Manual (v6.6) -> 26.15.1 User-defined elements  

"Defining the element properties
You can define the number of properties associated with a particular user element and then specify their numerical values.

Specifying the number of property values required
Any number of properties can be defined to be used in forming a general user element. You can specify the number of integer property values required, n, and the number of real (floating point) property values required, m; the total number of values required is the sum of these two numbers. The default number of integer property values required is 0 and the default number of real property values required is 0.

Integer property values can be used inside user subroutine UEL as flags, indices, counters, etc. Examples of real (floating point) property values are the cross-sectional area of a beam or rod, thickness of a shell, and material properties to define the material behavior for the element.

Input File Usage:            *USER ELEMENT, I PROPERTIES=n, PROPERTIES=m"


Wugui Jiang's picture

In the help: Integer property values can be used inside user subroutine UEL as flags, indices, counters, etc. Examples of real (floating point) property values are the cross-sectional area of a beam or rod, thickness of a shell, and material properties to define the material behavior for the element.

In my opinion, the Jprops is some integer properties of the user element. These data of Jprops are constant for a same user element. just like elastic modul, flag, etc., which are passed into UEL from inp file. Different elements which have the same user element type (e.g., U1), posses of the same data. For my engineering project, about 100,000 elements, it is impossible to do that.  Forgot to say, the assembly were meshed in abaqus/CAE.

Best regards,

W.G. Jiang

Dan Cojocaru's picture

I understand, I was thinking that each element has its own JPROPS array, but it is rather that each (user defined) element type having a unique JPROPS and therefore all the elements of the same type share the same JPROPS.

However,  there must be a way. There's always a  way ! :-)

Maybe SVARS ? Each element has its own SVARS.  Can't you just use one value of SVARS to store the element label and then you can have another subroutine to look up the nodal connectivity ?



Jason Mayeur's picture

In my opinion, the best way to accomplish this goal is to use the SVARS array.  The SVARS can be printed out into the .dat file into a table (which includes the element label), which can then be filtered to create the FieldOutput() object to create the results for viewing within CAE by overlaying them on the original "dummy" mesh.  Assuming that your state variable array contains all of the values of the state variables at each integration point (i.e., its dimension is at least # of state variables x # of integration points), this is conceptually simple. This methodology avoids worrying about keeping up with the nodal connectivity, element labels, etc. and otherwise re-writing your postprocessing code from scratch.  This, of course, also assumes that the shape functions you use within your UEL can be matched with that of an element within the ABAQUS element library.  If that is the case, then outside of some coding to get the data in the appropriate format, the task is pretty straight-forward. 

And just to comment on another couple of issues that appear in the discussion thread: 1) the nodal connectivity of your elements is given in the input file and 2) the element number is passed into the subroutine as the variable JELEM.

I hope this helps.

Wugui Jiang's picture

Thanks for your help. some questions occur during operating.(1) Python interface could access data from the odb file but *.dat file. I think that the field values are read only and are impossible to be overlaid. My first question is how to create the FieldOoutput() object for viewing the element-based fileds?   (2)For example, supposing that a user element similar to C3D8E is incorporated in ABAQUS, contour of S11 is required to be show in abaqus/viewer. There are 8 integration points in each element, so we have to use 8 state variables to express S11, e.g. SVARS(1:8). My question is how to make the abaqus/viewer know the Svars(1:8) express the S11 component? In other words, if I select the Svars(1), the Viewer will show the S11 value in Integration point 1, so we could not show the S11 over the whole model.

Best regards,


I don't if this thread is still a topic, but why don't you use the ABAQUS UVARM subroutine? That is actually what I'm doing. With this subroutine you can write integration point data to the ABAQUS results database to a so-called 'dummy'-element. A 'dummy'-element is an element which has the same connectivity as your user element, but neglectible properties. In the best case it also has the same degrees of freedom, but it doesn't have to.


Best regards

Subscribe to Comments for "How to postprocess the stress fields if UEL (abaqus) is used"

Recent comments

More comments


Subscribe to Syndicate