G+Smo  23.12.0
Geometry + Simulation Modules
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Structural Analysis Module

Detailed Description

This module contains algorithms for structural analysis. The module is versatile in its use with the elasticity elements from Elasticity module and Kirchhoff-Love shell module. The module is enhanced by the gsSpectra class for eigenvalue computations.

Using the Structural Analysis module

The routines in the structural analysis module are typically based on different operators:

Where \(\mathbf{u}_h\) is the discrete solution. All types for the operators used in the Structural Analysis Module module are defined by gsStructuralAnalysisOps

The force vector

The force vector ( \(\mathbf{F}_{\text{ext}}\)) is the vector that contains the external force contributions on the object. These could be due to body forces, point loads, etc. It is defined as a gsVector throughout the module.

The linear stiffness matrix

The linear stiffness matrix ( \(K_L\)) is the matrix that has to be assembled given the undeformed configuration of the object. In fact, it is similar to assembling the tangential stiffness matrix around the zero vector ( \(K(\mathbf{0}_h)\)). The linear stiffness matrix should always be provided as a gsSparseMatrix.

The tangential stiffness matrix or Jacobian

The residual vector is the vector that represents the difference between the internal and external forces inside the body:

\begin{align*} \mathbf{R}(\mathbf{u}_h) = \mathbf{F}_{\text{ext}} - \mathbf{F}_{\text{int}}(\mathbf{u}_h) \end{align*}

Since the residual depends on the solution vector \(\mathbf{u}_h\), it has to be an object that takes the solution vector as an input. In the module, the residual vector has the following type:

typedef std::function<gsVector<real_t> (gsVector<real_t> const &) > Residual_t;

When using the Structural Analysis module in practice, one can define the residual vector as a lambda function:

// Declare Residual type
typedef std::function<gsVector<real_t> (gsVector<real_t> const &) > Residual_t;
// Define Residual function
Residual_t Residual = [&<objects needed to assemble the Jacobian>](gsVector<real_t> const &x)
{
<Code to assemble the Residual>
return <Residual>
};

For some applications, the use of arc-length methods for continuation, the external force is scaled with an unknown load factor \(\lambda\). In this case, the definition of the residual is

\begin{align*} \mathbf{R}(\mathbf{u}_h,\lambda) = \lambda\mathbf{F}_{\text{ext}} - \mathbf{F}_{\text{int}}(\mathbf{u}_h) \end{align*}

In this case, the residual can be defined as follows, using the external load vector as input as well:

// Declare ALResidual type
typedef std::function<gsVector<real_t> (gsVector<real_t> const &, real_t, gsVector<real_t> const &) > ALResidual_t;
// Define ALResidual function
ALResidual_t ALResidual = [&time,&stopwatch,&assembler,&mp_def](gsVector<real_t> const &x, real_t lam, gsVector<real_t> const &force)
{
<Code to assemble the ALResidual>
return <ALResidual>
};

The tangential stiffness matrix or Jacobian

The tangential stiffness matrix is the matrix that follows from linearizing the linear stiffness matrix with respect to the deformations collected a discrete vector ( \(\mathbf{u}_h\)). Therefore, the tangential stiffness matrix is an object that takes the solution vector as an input. In the module, the tangential stiffness matrix has the following type:

std::function < gsSparseMatrix<T> ( gsVector<T> const &, gsVector<T> const &) >

When using the Structural Analysis module in practice, one can define the tangential stiffness matrix as a lambda function:

// Declare Jacobian type
typedef std::function<gsSparseMatrix<real_t> (gsVector<real_t> const &)> Jacobian_t;
// Define Jacobian function
Jacobian_t Jacobian = [&<objects needed to assemble the Jacobian>](gsVector<real_t> const &x)
{
<Code to assemble the Jacobian>
return <Jacobian>
};

Tutorials

In the folder gsStructuralAnalysis/tutorials, some tutorials are provided, explaining the use of the Structural Analysis Module module. These tutorials follow-up on the tutorials provided in the gsKLShell module, see Tutorials. The tutorials can be compiled using the target gsStructuralAnalysis-tutorials. The available tutorials are:

  1. Tutorial: Non-Linear Kirchhoff-Love shell analysis using the gsStructuralAnalysis module
  2. Tutorial: Non-Linear Quasi-Static analysis using Kirchhoff-Love shells
  3. Tutorial: Non-Linear dynamic analysis using Kirchhoff-Love shells

Modules

 Arc-length methods
 
 Dynamic solvers
 
 Eigenproblem solvers
 
 Static solvers
 

Classes

class  gsALMBase< T >
 Performs the arc length method to solve a nonlinear system of equations. More...
 
class  gsContinuationBase< T >
 Base class for simple continuation schemes. More...
 
class  gsControlDisplacement< T >
 Simple class for displacement control given a static solver. More...
 
class  gsDynamicBase< T >
 Performs the arc length method to solve a nonlinear system of equations. More...
 
class  gsDynamicBathe< T, _NL >
 Performs the arc length method to solve a nonlinear system of equations. More...
 
class  gsDynamicExplicitEuler< T, _NL >
 Performs the arc length method to solve a nonlinear system of equations. More...
 
class  gsDynamicImplicitEuler< T, _NL >
 Performs the arc length method to solve a nonlinear system of equations. More...
 
class  gsDynamicNewmark< T, _NL >
 Performs the arc length method to solve a nonlinear system of equations. More...
 
class  gsDynamicRK4< T, _NL >
 Performs the arc length method to solve a nonlinear system of equations. More...
 
class  gsDynamicWilson< T, _NL >
 Performs the arc length method to solve a nonlinear system of equations. More...
 
class  gsDynamicXBraid< T >
 Performs the arc length method to solve a nonlinear system of equations. More...
 
class  gsEigenProblemBase< T >
 Base class for buckling and modal analyses. More...
 
class  gsStaticComposite< T >
 Static solver using a newton method. More...
 
class  gsStaticNewton< T >
 Static solver using a newton method. More...