G+Smo  23.12.0
Geometry + Simulation Modules
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Tutorial: Non-Linear Kirchhoff-Love shell analysis using the gsStructuralAnalysis module

This example solves a non-linear shell problem using the gsThinShellAssembler and a static solver from Structural Analysis Module. 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.

In Tutorial: Non-Linear Kirchhoff-Love shell analysis, the Jacobian and Residual operators are already defined as std::function objects. In the present example, we use a similar approach, now defined through gsStructuralAnalysisOps. In particular, the Jacobian and Residual operators are given by:

The Newton-Raphson solver - gsStaticNewton - used in this example is derived from gsStaticBase. There are also other solvers available in the Static solvers submodule. The Newton-Raphson solver needs to be defined using a linear stiffness matrix \(K\), an external force vector \(F\), a Jacobian matrix \(K_{NL}(\mathbf{u})\) and a residual vector \(R(\mathbf{u})\). The latter two are defined above in Jacobian and Residual, whereas the former two are defined like in linear_shell_Assembler:

Consequently, the static solver is constructed as follows:

The gsStaticNewton simply performs Newton-Raphson iterations under the hood. Solving the non-linear system is simply done by using:

Where the solution vector is obtained in the last line. As can be seen in the snipped above, the solver returns a status via gsStatus, which can be used to check whether the solver converged or not. Evaluation and export of the solutions is similar as in Tutorial: Linear Kirchhoff-Love shell analysis and Tutorial: Non-Linear Kirchhoff-Love shell analysis.

Annotated source file

Here is the full file nonlinear_shell_static.cpp. Clicking on a function or class name will lead you to its reference documentation.