Skip to content

[SMApp] Reimplementing the thick shell element of 4 nodes#14284

Open
AlejandroCornejo wants to merge 74 commits intomasterfrom
CLApp/adding-new-4N-shell
Open

[SMApp] Reimplementing the thick shell element of 4 nodes#14284
AlejandroCornejo wants to merge 74 commits intomasterfrom
CLApp/adding-new-4N-shell

Conversation

@AlejandroCornejo
Copy link
Copy Markdown
Member

📝 Description

This PR adds a new reimplementation of the old "ShellThickElement3D4N", now named:

  • MITCThickShellElement3D4N and MITCThickShellCorotationalElement3D4N.

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 ReissnerMindlinShellElasticConstitutiveLaw or the ThicknessIntegratedIsotropicConstitutiveLaw for 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).

TO DO:

  • Solve test results
  • Implement composite layers CL foe the shells

Note that I will not merge this PR until we reach a positive consensus.

Copy link
Copy Markdown
Member

@loumalouomega loumalouomega left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nothing from my side

Copy link
Copy Markdown
Contributor

@rickyaristio rickyaristio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @AlejandroCornejo , sorry for the delay.

Overall, this is very nice. Nothing in particular from my side, I just have a few questions about the drilling part that you may answer.

Comment on lines +1143 to +1144
return 0.2 * (rConstitutiveMatrix(0, 0) - 2.0 * rConstitutiveMatrix(0, 1) + rConstitutiveMatrix(1, 1) + rConstitutiveMatrix(2, 2));
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you clarify the 0.2 factor here? Also, is this derived from a specific formulation?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


// multiply the section tangent matrices and stress resultants by 'dA'
D *= dA;
double Ddrilling = CalculateEquivalentShearModulus(D) * (r_props.Has(STABILIZATION_FACTOR) ? r_props[STABILIZATION_FACTOR] : drilling_factor); // drilling stiffness
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this STABILIZATION_FACTOR?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is a good question. In the original implementation it was 1 by default. Reading literature, it seems that this drilling energy can be tuned to better adapt your necessities. In elasticity, a value close to 1 gives good results, and 0.1 mainly the same ones.

However, in plasticity, the value=1 induces spurious oscillations and totally wrong results... With 0.1 I found a good compromise in both situations. In any case, I exposed this value to be tuned in the StructuralMaterials.json in case is needed.

const auto& r_props = GetProperties();
const auto& r_geom = GetGeometry();
const Matrix& shapeFunctions = r_geom.ShapeFunctionsValues();
const double thickness = r_props[THICKNESS];
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const double thickness = r_props[THICKNESS];

const auto& r_props = GetProperties();
const auto& r_geom = GetGeometry();
const Matrix& shapeFunctions = r_geom.ShapeFunctionsValues();
const double thickness = r_props[THICKNESS];
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const double thickness = r_props[THICKNESS];

const auto& r_props = GetProperties();
const auto& r_geom = GetGeometry();
const Matrix& shapeFunctions = r_geom.ShapeFunctionsValues();
const double thickness = r_props[THICKNESS];
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const double thickness = r_props[THICKNESS];

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants