[SMApp] Reimplementing the thick shell element of 4 nodes#14284
[SMApp] Reimplementing the thick shell element of 4 nodes#14284AlejandroCornejo wants to merge 114 commits intomasterfrom
Conversation
|
@RiccardoRossi @rickyaristio @singerTUM I have finished the implementation and validation of the 4 noded MITC thick shell and the laminate composite CL for shells. An old test of the shell has been updated and another one has been added to test the composite thickness integration CL. |
|
I think that now is ready @RiccardoRossi @philbucher @rolandwuechner @rickyaristio I solved/updated the old tests. |
|
It’s very nice. Thanks @AlejandroCornejo. Before going into the details, I want to verify one thing. The deviation we see from the test results (e.g., here) comes from the different drilling factor compared to the existing shell-thick element. Or are there any more differences from the existing one? I think this is worth noting. |
Hi Ricky, that si right, the underlying formulation is the same, I just did a deep clean and make ir compatible with the current structure of the constitutive laws. Besides, I had to dampen a bit the drilling contribution to make it more accurate and stable in nonlinear cases. |
| KRATOS_REGISTER_ELEMENT("ShellThickElement3D4N", mShellThickElement3D4N) | ||
| KRATOS_REGISTER_ELEMENT("ShellThickElementCorotational3D4N", mShellThickCorotationalElement3D4N) |
There was a problem hiding this comment.
consider that this will break every existing case with a strange error
I suggest to either:
- keep a dummy-impl with this name, that issues a proper error
- leave the old shells for some time (with deprecation warning)
- register the new shells with the same name
| class ShellQ4ThickOrthotropicLaminateLinearStaticTests(StructuralMechanicsTestFactory): | ||
| file_name = "shell_test/Shell_Q4_Thick_orthotropic_laminate_linear_static_test" |
There was a problem hiding this comment.
Why was this example removed?
There was a problem hiding this comment.
I created a brand new test verifying the composite case against an analytical solution
|
Now I have registered the old names with the current implementation of the element. Besides, it throws a proper error message that will help the user to identify the problem and how to solve it in a simple and direct way |
📝 Description
This PR adds a new reimplementation of the old "ShellThickElement3D4N", now named:
MITCThickShellElement3D4NandMITCThickShellCorotationalElement3D4N.These new shells substitute the older ones -> @rickyaristio @rolandwuechner @RiccardoRossi @matekelemen so it WILL break the old cases. These new shells are fully compatible with all the constitutive laws present in the
ConstitutiveLawsApp.In order to update the cases:
For elasticity you may use the
ReissnerMindlinShellElasticConstitutiveLawor theThicknessIntegratedIsotropicConstitutiveLawfor nonlinear ones (e.g. damage, plasticity).I have updated a few tests but I am working on it right now. Since a few changes/improvements have been done to the old shell, we may expect noticeable differences of the results. IMO all changes have been done to improve its performance, especially in the nonlinear cases with plasticity (the result was horrible before).
Beside the developments described above:
I have added a new composite stacking shell constitutive law for modelling laminate composites together with the new thick shells.
These can be used by:
{ "properties" : [{ "model_part_name" : "Structure.shell", "properties_id" : 1, "Material" : { "constitutive_law" : { "name" : "ThicknessIntegratedCompositeConstitutiveLaw", "z_layer_coordinate_vector" : [-0.045, 0.0, 0.045], // z of thecentroid w.r.t bending axis "Euler_angle_layer_vector" : [0.0, 0.0, 0.0], // rotation along the local Z axis (positive counter clock) "thickness_layer_vector" : [0.01, 0.08, 0.01] // thickness of each layer }, "Variables" : { "THICKNESS" : 0.1, // good for verification "DENSITY" : 7850.0 // TODO we can compute this internally } }, "sub_properties" : [ // subprop start { "properties_id" : 11, "Material" : { "constitutive_law" : { "name" : "GenericAnisotropicPlaneStress2DLaw" }, "Variables" : { "ORTHOTROPIC_ELASTIC_CONSTANTS" : [3.4156e9, 1.7931e9, 3.4156e9, 0.44, 0.0, 0.0], "SHEAR_MODULUS_XY" : 1.0e9, "SHEAR_MODULUS_YZ" : 1.015e9, "SHEAR_MODULUS_XZ" : 0.608e9, "EULER_ANGLES" : [0.0,0.0,0.0], "ISOTROPIC_ANISOTROPIC_YIELD_RATIO" : [1,1,1,1,1,1] }, "Tables" : {} }, "sub_properties" : [{ "properties_id" : 111, "Material" : { "constitutive_law" : { "name" : "LinearElasticPlaneStress2DLaw" }, "Variables" : { "DENSITY" : 2400.0, "YOUNG_MODULUS" : 1e6, "POISSON_RATIO" : 0.3 } } }] } // , { "properties_id" : 12, "Material" : { "constitutive_law" : { "name" : "GenericAnisotropicPlaneStress2DLaw" }, "Variables" : { "ORTHOTROPIC_ELASTIC_CONSTANTS" : [3.4156e8, 1.7931e8, 3.4156e8, 0.44, 0.0, 0.0], "SHEAR_MODULUS_XY" : 1.0e8, "SHEAR_MODULUS_YZ" : 1.015e8, "SHEAR_MODULUS_XZ" : 0.608e8, "EULER_ANGLES" : [0.0,0.0,0.0], "ISOTROPIC_ANISOTROPIC_YIELD_RATIO" : [1,1,1,1,1,1] } }, "sub_properties" : [{ "properties_id" : 121, "Material" : { "constitutive_law" : { "name" : "LinearElasticPlaneStress2DLaw" }, "Variables" : { "DENSITY" : 2400.0, "YOUNG_MODULUS" : 1e6, "POISSON_RATIO" : 0.0 } } }] } // , { "properties_id" : 13, "Material" : { "constitutive_law" : { "name" : "GenericAnisotropicPlaneStress2DLaw" }, "Variables" : { "ORTHOTROPIC_ELASTIC_CONSTANTS" : [3.4156e9, 1.7931e9, 3.4156e9, 0.44, 0.0, 0.0], "SHEAR_MODULUS_XY" : 1.0e9, "SHEAR_MODULUS_YZ" : 1.015e9, "SHEAR_MODULUS_XZ" : 0.608e9, "EULER_ANGLES" : [0.0,0.0,0.0], "ISOTROPIC_ANISOTROPIC_YIELD_RATIO" : [1,1,1,1,1,1] } }, "sub_properties" : [{ "properties_id" : 131, "Material" : { "constitutive_law" : { "name" : "LinearElasticPlaneStress2DLaw" }, "Variables" : { "DENSITY" : 2400.0, "YOUNG_MODULUS" : 1e6, "POISSON_RATIO" : 0.3 } } }] } // ] // end subprops }] } ~~