G+Smo
24.08.0
Geometry + Simulation Modules
|
This example shows how to perform a non-linear quasi-static analysis using the Arc-length methods submodule of Structural Analysis Module. The arc-length methods provided by this submodule work on user-defined operators from gsStructuralAnalysisOps, hence can be used with any element and in any application. In this example, we use the gsKLShell. The goals of the tutorial are the following:
For detailed information about the construction of gsThinShellAssembler and gsMaterialMatrixBase, please consult the tutorials Tutorial: Linear Kirchhoff-Love shell analysis and Tutorial: Non-Linear Kirchhoff-Love shell analysis.
The set-up of the problem to be solved for this example is identical to the one in Tutorial: Non-Linear Kirchhoff-Love shell analysis. The reader is referred to that example for a full overview of the code.
To use the Crisfield arc-length method, or any other arc-length method in Arc-length methods, we need to define a Jacobian matrix and an arc-length residual. Th former is defined from the gsStructuralAnalysisOps, similar to Tutorial: Non-Linear Kirchhoff-Love shell analysis using the gsStructuralAnalysis module. The latter is defined as follows:
Here, the external load vector \(F\) is subtracted with a factor \(\lambda\) to incorporate the load magnification factor in the residual.
Using the external force vector \(F\), a Jacobian matrix \(K_{NL}(\mathbf{u})\) and a residual vector \(R(\mathbf{u})\), an arc-length solver can be defined. In the following, a gsALMCrisfield is defined:
The quasi-static problem is solved for combinations of the load factor \(\lambda\) and the solution \(\mathbf{u}\), also known as continuation. The full solution loop is given by:
It can be seen that the export of the solution field is similar as in Tutorial: Linear Kirchhoff-Love shell analysis Tutorial: Non-Linear Kirchhoff-Love shell analysis, but the Paraview files are added to a gsParaviewCollection. This is saved at the end of the simulation as follows:
Here is the full file nonlinear_shell_arclength.cpp
. Clicking on a function or class name will lead you to its reference documentation.