KratosMultiphysics / Kratos

Kratos Multiphysics (A.K.A Kratos) is a framework for building parallel multi-disciplinary simulation software. Modularity, extensibility and HPC are the main objectives. Kratos has BSD license and is written in C++ with extensive Python interface.
https://kratosmultiphysics.github.io/Kratos/
Other
1.03k stars 245 forks source link

Plain strain bug? #7715

Open salvalatorre opened 4 years ago

salvalatorre commented 4 years ago

Hi, I'm trying to run a simple test which consists of a cylindrical ring subjected to an external unitary pressure. I'm using the Structural Mechanics Application. I'm using plane strain conditions. The problem is that, while sigma_r and sigma_theta are correct and close enough to the analytical solution, sigma_z turns out to be 0, when theory says that it should not the case. I'm adding some snapshots. Could you please have a look? Thanks!

@KratosMultiphysics/structural-mechanics @KratosMultiphysics/dem

sigma_radial sigma_theta sigma_axial

loumalouomega commented 4 years ago

SI, SII and SIII are not Sigma theta, Sigma r and Sigma z. Are the principal stresses. As you can see in https://en.wikipedia.org/wiki/Infinitesimal_strain_theory#Plane_strain :+1:

imagen

salvalatorre commented 4 years ago

Sorry, I don't understand that thing about temporarily removed... It's obvious that, in order to keep the plain strain condition, a sigma_zz different to zero is needed...

salvalatorre commented 4 years ago

And I'm sorry, but SI, SII and SIII ARE Sigma Z, Sigma r and Sigma theta and the principal stresses as well.

loumalouomega commented 4 years ago

Sorry, I don't understand that thing about temporarily removed... It's obvious that, in order to keep the plain strain condition, a sigma_zz different to zero is needed...

Yes, see my last correction. This term is usually removed from the analysis, meaning that we need a postprocess to recover.

loumalouomega commented 4 years ago

And I'm sorry, but SI, SII and SIII ARE Sigma Z, Sigma r and Sigma theta and the principal stresses as well.

For this particular problem maybe, but as we don't use polar coordinates I would not consider it

loumalouomega commented 4 years ago

Yes, see my last correction. This term is usually removed from the analysis, meaning that we need a postprocess to recover.

And SI, SII and SIII is postprocessed directly from GiD.

loumalouomega commented 4 years ago

Can you @salvalatorre attach the example?, I will think how to fiux it.

salvalatorre commented 4 years ago

And I'm sorry, but SI, SII and SIII ARE Sigma Z, Sigma r and Sigma theta and the principal stresses as well.

For this particular problem maybe, but as we don't use polar coordinates I would not consider it

Not maybe, Vicente, in this case they coincide, even if it's by GiD's mistake.

salvalatorre commented 4 years ago

Can you @salvalatorre attach the example?, I will think how to fiux it.

OK, thanks!

maceligueta commented 4 years ago

Hi @loumalouomega Apparently Sigma_z is 0.0 from the Kratos results. I guess that this actually requires some kind of post-processing after solving the system, before sending the results to GiD.

salvalatorre commented 4 years ago

There you are! struc_test_38.gid.zip

loumalouomega commented 4 years ago

Yes, that is what I meant.

El vie., 30 oct. 2020 17:55, Miguel Angel Celigueta < notifications@github.com> escribió:

Hi @loumalouomega https://github.com/loumalouomega Apparently Sigma_z is 0.0 from the Kratos results. I guess that this actually requires some kind of post-processing after solving the system, before sending the results to GiD.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/KratosMultiphysics/Kratos/issues/7715#issuecomment-719662843, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEYQZAFVJL6UULMXFX5NH5DSNLUA3ANCNFSM4TFEFL5Q .

ncarmona8 commented 2 years ago

Hi... I am trying to desing an undergraound tunnelling to study plane strain. In the post proces y just can see the von mises stress, so, how i can see the principal stress for my model??. I hope you could help me

maceligueta commented 2 years ago

Gid allows you to print Si, Sii and Siii of any matrix result (3x3 matrix). However, as you can see in this issue, the Z-stress is not well computed, so the principal stresses might be wrong as well. FYI @AlejandroCornejo

AlejandroCornejo commented 2 years ago

Maybe I'm wrong, but as far as I know Kratos computes the stress and it's GiD who add the principal stress calculation. In this sense, if the ZZ is not well computed (or null) GiD won't be able to compute the principal stresses correctly.

loumalouomega commented 2 years ago

Maybe I'm wrong, but as far as I know Kratos computes the stress and it's GiD who add the principal stress calculation. In this sense, if the ZZ is not well computed (or null) GiD won't be able to compute the principal stresses correctly.

But this is a postprocess in any case

AlejandroCornejo commented 2 years ago

Maybe I'm wrong, but as far as I know Kratos computes the stress and it's GiD who add the principal stress calculation. In this sense, if the ZZ is not well computed (or null) GiD won't be able to compute the principal stresses correctly.

But this is a postprocess in any case

Exactly

RiccardoRossi commented 2 years ago

guys,

i think the answer is kind of incomplete. let me be more "didactic".

the point is that in 2D we use a strain of size 3.

so we do either

S = Cplane_strain *eps

or

S = Cplane_stress *eps

where the matrices are calculated correctly.

now, since S is also of size 3, Szz is 0 and that is what is shown.

HOWEVER one could recover the CORRECT Szz ad

Szz = - nuS_xx -nuS_yy

for a linear elastic low this would be exact, however it may not be so for a non linear CL (only the CL can know how the stresses are related )

in the practice there are two options

  1. QUICK AND DIRTY: implement a Calculate(STRESS_TENSOR) in the CL and call it at postprocess time when we ask for the stress on the gauss points
  2. THE "GOOD" solution (see #9043 ) : use a strain of size3 in the plane stress case and of size4 in the plane_strain case. This is a little more complex since it implies changing the kinematics for 2D elments (matrix B becomes 42 on each node insterad of 32, and elasticity tensor becomes 4 by 4)

neither solution is very complicated, nevertheless both need some work... so we need someone to volunteer taking care of it