G+Smo  23.12.0
Geometry + Simulation Modules
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Tutorial: Linear Kirchhoff-Love shell analysis on multi-patches using gsUnstructuredSplines

This example solves a linear shell problem on a multi-patch using the gsThinShellAssembler and the Unstructured splines module module. The goals of the tutorial are the following:

  • Define an unstructured spline
  • Solve the linear shell equation on the multi-patch basis

For detailed information about the construction of gsThinShellAssembler and gsMaterialMatrixBase, please consult the tutorial Tutorial: Linear Kirchhoff-Love shell analysis.

The problem to be solved corresponds to the hyperboloid shell example from [1].

Firstly, the geometry is loaded in the same way as we load a geometry in Tutorial: Linear Kirchhoff-Love shell analysis. To be sure that our geometry has interfaces and boundaries, we compute its topology:

Refinement and elevation of the geometry (and the basis) are performed on the multi-patch geometry as is. This is the same as in Tutorial: Linear Kirchhoff-Love shell analysis.

To perform isogeometric analysis on the multi-patch geometry and a smooth corresponding multi-basis, we will use the gsMappedBasis and gsMappedSpline. These objects use a locally defined (non-smooth) basis and a sparse mapping matrix. The smooth basis is defined using the D-Patch construction from [2], available in G+Smo using gsDPatch. The D-Patch is constructed on the gsMultiBasis belonging to our original geometry.

The construction of the smooth basis and the corresponding geometry is done as follows:

The boundary conditions and external forces correspond to the hyperboloid shell case from [1], i.e. one edge of the hyperboloid is fully fixed. The boundary conditions are consequently applied to patch 0 and 1. See Boundary conditions and loads for more details on applying boundary conditions.

Similarly, we define a surface force corresponding to the benchmark problem

The configuration of the material matrix and the shell assembler is the same as in Tutorial: Linear Kirchhoff-Love shell analysis, just with different material parameters, corresponding to the benchmark problem in [1].

Assembly of the problem, as well as solving it, is the same as in Tutorial: Linear Kirchhoff-Love shell analysis.

Construction of the solution works slightly different when a gsMappedBasis is used for analysis. Instead of storing the solutions in a gsMultiPatch, we now store them in a gsMappedSpline. To define the deformed geometry on top of the original geometry, one can use the gsFunctionSum class, which basically evaluates two functions on a parametric point, and sums their values. The full code for the construction of the deformed geometry is here:

As can be seen in the following snippet, the constructed solution object can be used for evaluation:

And for visualization:

[1] Bathe, Klaus-Jürgen, Alexander Iosilevich, and Dominique Chapelle. "An evaluation of the MITC shell elements." Computers & Structures 75.1 (2000): 1-30.

[2] Toshniwal D, Speleers H, Hughes TJ. Smooth cubic spline spaces on unstructured quadrilateral meshes with particular emphasis on extraordinary points: Geometric design and isogeometric analysis considerations. Computer Methods in Applied Mechanics and Engineering. 2017 Dec 1;327:411-58.

Annotated source file

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