User login


You are here

Homogenization in ABAQUS

Svetlana Orlova's picture

Hello everybody,

I have a problem with homogenization of fibre reinforced composite in Abaqus.

I need to get stress components S11, S22, S33, S12, S13, S23 of each element and it's volume to calculate average stress on each element. Here comes the problem: I'm trying to use Field Output calculator but I can't multiply, for example, S11(i)*EVOL(i) because there are no components of S in this calculator and I can only operate with tensor S.

I'm sure that there are some options to get stress components and volumes from the command in script but I can't find it...

Many thanks in advance


Johannes T.B. Overvelde's picture

Here is a piece of script I use to get the stress components (I just took it out of my script, sorry if it is unreadible). I hope you understand it and get the method. Same way you can get position of nodes and calculate area or volume. I don't know if the volume of elements is present in the odb file


#get force values and calculate First Piola stress
regS1 = odb.rootAssembly.instances[instRefName1].nodeSets['VIRTUAL1']
regS2 = odb.rootAssembly.instances[instRefName2].nodeSets['VIRTUAL2']
Piola11 = RForce.getSubset(region=regS1).values[0].data[0]/(GridSpaceY*numHolesY)
Piola12 = RForce.getSubset(region=regS1).values[0].data[1]/(GridSpaceY*numHolesY)
Piola21 = RForce.getSubset(region=regS2).values[0].data[0]/(GridSpaceX*numHolesX)
Piola22 = RForce.getSubset(region=regS2).values[0].data[1]/(GridSpaceX*numHolesX)

Svetlana Orlova's picture

Thanks to Bas the problem has been solved:

from odbAccess import *
from Numeric import *
from abaqus import *
from abaqusConstants import *
import visualization
import os
import datetime
import shutil
odb = openOdb(path='Job-1.odb')
elements1 = odb.rootAssembly.elementSets['SETALLELEM']
field = odb.steps.values()[-1].frames[-1].fieldOutputs['S']
SubField = field.getSubset(region=elements1)
for i in range(0, len(SubField.values)):
      s11[i]= field.getSubset(region=elements1).values[i].data[0]
      s22[i]= field.getSubset(region=elements1).values[i].data[1]
      s33[i]= field.getSubset(region=elements1).values[i].data[2]
      s12[i]= field.getSubset(region=elements1).values[i].data[3]
      s13[i]= field.getSubset(region=elements1).values[i].data[4]
      s23[i]= field.getSubset(region=elements1).values[i].data[5]

Lianhua Ma's picture

Hi Svetlana,

If you want
to calculate the homogenized properties of periodical composite, firstly you
need to get the averaged value of the stress on each element.


It is noted
that s11[i] in your formula is NOT the stress S11 of the ith element, it is the stress S11 of the ith integration point of your FE model. If the adopted element has
two or above integration points (such as
C3D8 , C3D10…),
 your python script is not correct. Under this
circumstance, you should calculate the averaged stress of every element based
on the stresses at integration points.


Your script
code is only applicable to the FE model consisting of
tetrahedron elements (or
triangular elements).




Svetlana Orlova's picture

Does anyone know how to calculate average stress based on the stresses at integration points?

I've tried many ways but nothing works:(

Thank you in advance 

Lianhua Ma's picture

The average stress depends on the adopted element type. 
For example, if the FE model is constructed by linear brick elements (C3D8,
one element has 8 integration poins), you can compute the average stress of the
element by the corresponding 8 integration point stresses. It is essential to code
the Gaussian integral formula to calculate the average stress for every


In fact, if you want to get the averaged stress component of your whole FE model, you may
also consider another simple approach: firstly one can extract the reaction
force of every node for one specific face of your RVE model, and further obtain
the averaged stress component of the model by computing the total force and
area of this face.




Wenbin Yu's picture

There is a better approach to handle the homogenization problem. If you use VAMUCH , a
general-purpose micromechanics analysis code, you don't have to worry
about how to apply loads and boundary conditions. And how to calculate average stresses/strain. What you need as
inputs are the geometry of the unit cell and the constitutive properties
of each phases. The 6x6 stiffness and compliance matrices are generated
within one analysis. An interface is also developed for ANSYS users to
take advantage of its powerful pre/post processing capabilities.

I'm looking for how we can do homogenization on ABAQUS.
thank you in advance.

Je cherche comment nous pouvons faire homogénéisation sur ABAQUS.
merci à l'avance.

I have extracted S11 LE11 ....and other stressa nd strain components at centroid for every element and then using excel averaged the values.

Has anyone done like this by using values at centriod rather than at intergration points

getting Nu13=0.921 !!!!! :P

Wenbin Yu's picture

To avoid all the difficulty of applying PBC, creating periodic mesh, and postprocessing results, you can try the general-purpose, multiscale, multiphysics constitutive modeling code, SwiftComp. It takes a FE mesh, output the same results as your RVE analysis with PBC, at least six times faster. It can be freely lauched in the cloud at Or can be used as a plug in in ABAQUS or ANSYS. The complete set of properties is just one click away.

shahzaman's picture

The homogenization technique in ABAQUS for a RVE is presented in detail in the following paper:

Shahzamanian, M., et al., Representative Volume Element Based Modeling of Cementitious Materials. Journal of Engineering Materials and Technology, 2014. 136(1): p. 011007.

Subscribe to Comments for "Homogenization in ABAQUS"

Recent comments

More comments


Subscribe to Syndicate