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

This example shows how to perform a non-linear dynamic analysis using the Dynamic solvers submodule of Structural Analysis Module. The dynamic solvers 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.

The assembly of the linear stiffness matrix and the external force vector are similar as in Tutorial: Non-Linear Kirchhoff-Love shell analysis. To assemble the mass matrix, an additional assembly is performed using assembleMass(). The full assembly is given by:

To use the Newmark time integrator or any other time integrator from Dynamic solvers, we need to define a Jacobian matrix and a residual, optionally time-independent. Both are defined from the gsStructuralAnalysisOps, similar to Tutorial: Non-Linear Kirchhoff-Love shell analysis using the gsStructuralAnalysis module.

In addition, an operator for mass and damping needs to be defined. These operators are simple lambda functions returning a constant matrix:

Using the mass, damping and Jacobian matrices \(M\), \(C\) and \(K_{NL}(\mathbf{u})\) and a residual vector \(R(\mathbf{u})\), an non-linear dynamic solver can be defined. In the following, a gsDynamicNewmark is defined:

The solution is initialized with zero-vectors, as follows:

The non-linear dynamic problem is solved by stepping over time. After some initializations, a simple time stepping loop is used:

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:

Annotated source file

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