Meaning of stress and strain vectors

About the development of the FEM module/workbench.

Moderator: bernd

sodelo
Posts: 73
Joined: Tue Jan 24, 2017 9:20 am

Meaning of stress and strain vectors

Post by sodelo »

Hi,

I am a bit puzzled by the post-processing option for stress and strain vectors, both in the Pipeline (possibility to display X,Y,Z or magnitude) or from the importCcxFrdResult.py

Code: Select all

        # we found a stress line in the frd file
        if mode_stress_found and (line[1:3] == "-1"):
            elem = int(line[4:13])
            stress_1 = float(line[13:25])
            stress_2 = float(line[25:37])
            stress_3 = float(line[37:49])
            stress_4 = float(line[49:61])
            stress_5 = float(line[61:73])
            stress_6 = float(line[73:85])
            mode_stress[elem] = (stress_1, stress_2, stress_3, stress_4, stress_5, stress_6)
            mode_stressv[elem] = FreeCAD.Vector(stress_1, stress_2, stress_3)
        if line[5:13] == "TOSTRAIN":
            mode_strain_found = True
        # we found a strain line in the frd file
        if mode_strain_found and (line[1:3] == "-1"):
            elem = int(line[4:13])
            strain_1 = float(line[13:25])
            strain_2 = float(line[25:37])
            strain_3 = float(line[37:49])
#            strain_4 = float(line[49:61])  #Not used in vector
#            strain_5 = float(line[61:73])
#            strain_6 = float(line[73:85])
            mode_strain[elem] = FreeCAD.Vector(strain_1, strain_2, strain_3)
Indeed, I do not see what is the meaning of a stress (or strain) vector based on the 3 first components of the stress (or strain) tensor.
These are tensors and we should have the possibility to display all the components (including shear components). They become vectors only when projected on a particular material plane. If am not mistaken, there is no such plane anyway which would lead to a stress vector composed of Sxx, Syy and Szz (except if the shear components are zero and we project on the plane which normal is 1,1,1).
I fear there is some mistake here but maybe I have completely misunderstood the meaning of this. Could someone highlight me?

Moreover, the stress tensor is read by the python script but apparently there is no direct way to post-process it.

Thanks,
User avatar
bernd
Veteran
Posts: 12849
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Meaning of stress and strain vectors

Post by bernd »

Would you may be give more informations. Seams you know some more theoretical background informations. What should be added to FEM results in FreeCAD from your point of view?
sodelo
Posts: 73
Joined: Tue Jan 24, 2017 9:20 am

Re: Meaning of stress and strain vectors

Post by sodelo »

This is not easy to explain without drawing. I will give it a try but a book of mechanics would be far better.

Stress and Strains are tensors. In 3D, they can be seen as a symmetrical matrix like this one (9 components but only differents):
| Sxx Sxy Sxz |
| Sxy Syy Syz |
| Sxz Syz Szz|
The diagonal terms are the normal stresses. The extra-diagonal terms are the shear stresses.
The common sense states that a stress is a vector defined by a force applied on a small section of material (a small facet which is oriented by the normal to its plane).
On this small facet, you can project the stress vector and computes: the tangential stress on the facet and the normal stress.

One of the beauty of these tensors is that you can compute the stress vectors applied on all the facets of your material (whatever their orientation) by just doing the product between the tensor and the normal to the facet.
For example, if you are interested in the facet which normal is (0,0,1) (this is the X-Y plane), the applied stress vector is (Sxz,Syz,Szz).
(For those who remember, the Mohr's Circles are just another way to state it).
Since the stress tensor has only 6 different components, another way to define it is to use a vector of 6 components (Sxx,Syy,Szz,Sxy,Syz,Sxz). However, this vector is not a geometrical vector and should not be displayed in a 3D-space coordinate system!
All FE post-processors allow to display the 6 components of the tensor so that you can have a look at them.
Let's consider a bar which is stretched in the X direction. Sxx will be the normal stress to its section. Sxy will the shear stress applied on the cross-section in the direction y.
Syy will be the normal stress applied in its thickness in the Y direction.

Another important notion are the principal stresses and strains. There is always a coordinate system for which there is no shear stress (only normal stresses).
To get them, you need to diagonalize the stress tensor (or matrix) to derive the principal stresses (you get 3 terms on the diagonal) and the associated directions with respect to your coordinate system.

So what is important to display?
- each component of the stress and strain tensors (6 components), (contour field)
- the equivalent stress (contour field)
- principal stress and strains (max, mid and min) (contour fields)
- direction of the principal stresses and strains (using small arrows or segments) in order to check in which direction they are applied. This is especially useful when the principal stresses are not aligned with the coordinate system.

The contour field are easy to display. It may be more difficult for the principal stress and strain directions.
User avatar
makkemal
Posts: 395
Joined: Wed Apr 29, 2015 12:41 pm
Location: South Africa
Contact:

Re: Meaning of stress and strain vectors

Post by makkemal »

Stress and Strains are tensors. In 3D, they can be seen as a symmetrical matrix like this one (9 components but only differents):
| Sxx Sxy Sxz |
| Sxy Syy Syz |
| Sxz Syz Szz|
The diagonal terms are the normal stresses. The extra-diagonal terms are the shear stresses.
The common sense states that a stress is a vector defined by a force applied on a small section of material (a small facet which is oriented by the normal to its plane).
For stress we do this to obtain principal stresses. Which is valuable
However you have no information about the direction of these Principal stresses and the differ for each element.
Just knowing what happens in x,y,z is very useful for interpreting results that is why they are added separately.
I have never had a need to understand strains in principal direction thus I only added x,y,z for which I have had many uses
sodelo
Posts: 73
Joined: Tue Jan 24, 2017 9:20 am

Re: Meaning of stress and strain vectors

Post by sodelo »

X,Y and Z components are indeed very useful but so are the shear components as well. However I fear the currently computed magnitude is meaningless.
ALll FE post-processors provide 6 components (for example CGX). This is standard practice.

For the principal directions, they can be computed at the same time that the principal stresses and strains during the diagonalization process.

I understand what has been implemented was suitable for your needs. However even better exploitation can be done with these proposed improvements.
User avatar
makkemal
Posts: 395
Joined: Wed Apr 29, 2015 12:41 pm
Location: South Africa
Contact:

Re: Meaning of stress and strain vectors

Post by makkemal »

True But that requires a whole new object the freecad vector has three direction, yes magnitude does not make sense for those values
JeffWitz
Posts: 54
Joined: Fri Mar 27, 2015 9:14 am
Location: Lille, France

Re: Meaning of stress and strain vectors

Post by JeffWitz »

I agree, that having all the components of the stress and strain tensor is mandatory. When one wants to analyse results Von Mises criteria can lead to interpretation errors. I think it is very important to get access to all this data in FreeCAD.

Another interesting is to be able to operate on the strain and stress components in numpy in order to be able to simply calculate the criteria that we want.

Regarding the vectorisation of the stress there are two different ways of doing it you have the Voigt notation where the stress vector is {Sxx,Syy,Szz,Syz,Sxz,Sxy} and the strain {Exx,Eyy,Ezz,2*Eyz,2*Exz,2*Exy}
and the Mandel notation where the stress vector is {Sxx,Syy,Szz,sqrt(2)*Syz,sqrt(2)*Sxz,sqrt(2)*Sxy} and the strain {Exx,Eyy,Ezz,sqrt(2)*Eyz,sqrt(2)*Exz,sqrt(2)*Exy}.

For example Code_Aster and Cast3m use the Mandel Notation but I think that Abaqus (and so Calculix) use Voigt.

One has to be to know which one is in use in the FEM Code
sodelo
Posts: 73
Joined: Tue Jan 24, 2017 9:20 am

Re: Meaning of stress and strain vectors

Post by sodelo »

+1
Personnaly I prefer Voigt since I am used to it (hardly a good criterion :D )
User avatar
bernd
Veteran
Posts: 12849
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Meaning of stress and strain vectors

Post by bernd »

It seams it is a very important topic. But this for sure needs some more development. We should keep this in mind, thus ... issue #2918
JeffWitz
Posts: 54
Joined: Fri Mar 27, 2015 9:14 am
Location: Lille, France

Re: Meaning of stress and strain vectors

Post by JeffWitz »

It seams it is a very important topic. But this for sure needs some more development. We should keep this in mind, thus ... issue #2918
On this issue it is said that there are 9 components but those two tensors are symmetric so there are only 6 components.
+1
Personnaly I prefer Voigt since I am used to it (hardly a good criterion :D )
In fact I prefer the other representation as there is an homomorphism between the fourth order tensor in c_{ijkl} in R³ and C_{ij} in M(6,6) and C_{ij} is also a tensor (but not in the case of Voigt). It means that you can operate freely with linear algebra, rotation, inversion, diagonalisation. For example it simplify the work on composite materials. You can easily compute Kelvin modes which are really interesting for damage modeling, ....

But this is more research concerns that engineer one. Most of the FEM engineer use Voigt ... sadly.
Post Reply