G+Smo  24.08.0
Geometry + Simulation Modules
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
gsThinShellAssembler< d, T, bending > Class Template Reference

Detailed Description

template<short_t d, class T, bool bending>
class gismo::gsThinShellAssembler< d, T, bending >

Assembles the system matrix and vectors for 2D and 3D shell problems, including geometric nonlinearities and loading nonlinearities. The material nonlinearities are handled by the gsMaterialMatrixIntegrate class.

Template Parameters
dThe dimension (2 = planar, 3 = surface)
TReal type
bendingTrue: Assemble bending terms; False: Do not assemble bending terms
+ Inheritance diagram for gsThinShellAssembler< d, T, bending >:
+ Collaboration diagram for gsThinShellAssembler< d, T, bending >:

Public Member Functions

ThinShellAssemblerStatus assemble ()
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assemble (const gsFunctionSet< T > &deformed, const bool matrix=true, const bool homogenize=true)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assemble (const gsMatrix< T > &solVector, const bool matrix=true, const bool homogenize=true)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assembleFoundation ()
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assembleFoundationVector (const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assembleFoundationVector (const gsFunction< T > &foundFun, const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assembleMass (const bool lumped=false)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assembleMatrix (const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assembleMatrix (const gsMatrix< T > &solVector)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assembleMatrix (const gsFunctionSet< T > &deformed, const gsFunctionSet< T > &previous, gsMatrix< T > &update)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assembleMatrix (const gsMatrix< T > &solVector, const gsMatrix< T > &prevVector)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assemblePressureMatrix (const gsFunction< T > &pressFun)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assemblePressureMatrix (const T pressure)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assemblePressureMatrix (const gsFunction< T > &pressFun, const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assemblePressureMatrix (const T pressure, const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assemblePressureVector (const gsFunction< T > &pressFun)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assemblePressureVector (const T pressure)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assemblePressureVector (const gsFunction< T > &pressFun, const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assemblePressureVector (const T pressure, const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assemblePressureVector (const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
gsExprAssembler< T > assembler ()
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assembleVector (const gsFunctionSet< T > &deformed, const bool homogenize=true)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus assembleVector (const gsMatrix< T > &solVector, const bool homogenize=true)
 See gsThinShellAssemblerBase for details.
 
const gsMultiBasis< T > & basis () const
 See gsThinShellAssemblerBase for details.
 
gsMatrix< T > boundaryForce (const gsFunctionSet< T > &deformed, const std::vector< patchSide > &patchSides) const
 See gsThinShellAssemblerBase for details.
 
gsMatrix< T > boundaryForce (const gsFunctionSet< T > &deformed, const patchSide &ps) const
 See gsThinShellAssemblerBase for details.
 
gsMatrix< T > computePrincipalStresses (const gsMatrix< T > &points, const gsFunctionSet< T > &deformed, const T z=0)
 See gsThinShellAssemblerBase for details.
 
gsMatrix< T > computePrincipalStretches (const gsMatrix< T > &points, const gsFunctionSet< T > &deformed, const T z=0)
 See gsThinShellAssemblerBase for details.
 
gsMultiPatch< T > constructDisplacement (const gsMatrix< T > &solVector) const
 See gsThinShellAssemblerBase for details.
 
void constructDisplacement (const gsMatrix< T > &solVector, gsMultiPatch< T > &deformed) const
 See gsThinShellAssemblerBase for details.
 
gsMultiPatch< T > constructMultiPatch (const gsMatrix< T > &solVector) const
 Construct solution field from computed solution vector solVector and returns a multipatch.
 
gsMultiPatch< T > constructSolution (const gsMatrix< T > &solVector) const
 Construct deformed shell geometry from computed solution vector solVector and returns a multipatch.
 
void constructSolution (const gsMatrix< T > &solVector, gsMultiPatch< T > &deformed) const
 See gsThinShellAssemblerBase for details.
 
gsVector< T > constructSolutionVector (const gsMultiPatch< T > &deformed) const
 See gsThinShellAssemblerBase for details.
 
void constructStress (const gsFunctionSet< T > &deformed, gsPiecewiseFunction< T > &result, stress_type::type type)
 See gsThinShellAssemblerBase for details.
 
void constructStress (const gsFunctionSet< T > &original, const gsFunctionSet< T > &deformed, gsPiecewiseFunction< T > &result, stress_type::type type)
 See gsThinShellAssemblerBase for details.
 
deformationNorm (const gsMultiPatch< T > &deformed, const gsMultiPatch< T > &original)
 See gsThinShellAssemblerBase for details.
 
gsMatrix< T > fullSolutionVector (const gsMatrix< T > &vector) const
 See gsThinShellAssemblerBase for details.
 
const gsMultiPatch< T > & geometry () const
 See gsThinShellAssemblerBase for details.
 
getArea (const gsFunctionSet< T > &geometry)
 See gsThinShellAssemblerBase for details.
 
gsMultiBasis< T > & getBasis ()
 Gets the basis.
 
getDisplacementNorm (const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
getElasticEnergy (const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
gsDofMapper getMapper () const
 See gsThinShellAssemblerBase for details.
 
gsDofMapper getMapper ()
 See gsThinShellAssemblerBase for details.
 
const gsPointLoads< T > & getPointLoads ()
 Gets the registered point loads.
 
const gsPointLoads< T > & getPointMass ()
 Gets the registered point masses.
 
const gsFunctionSet< T > & getSpaceBasis ()
 See gsThinShellAssemblerBase for details.
 
 gsThinShellAssembler (const gsMultiPatch< T > &patches, const gsMultiBasis< T > &basis, const gsBoundaryConditions< T > &bconditions, const gsFunction< T > &surface_force, const gsMaterialMatrixContainer< T > &materialmatrices)
 Constructor for the shell assembler. More...
 
 gsThinShellAssembler (const gsMultiPatch< T > &patches, const gsMultiBasis< T > &basis, const gsBoundaryConditions< T > &bconditions, const gsFunction< T > &surface_force, gsMaterialMatrixBase< T > *materialmatrix)
 Constructor for the shell assembler. More...
 
 gsThinShellAssembler ()
 Constructor for te shell assembler. More...
 
 gsThinShellAssembler (const gsThinShellAssembler &other)
 Copy constructor (makes deep copy)
 
 gsThinShellAssembler (gsThinShellAssembler &&other)
 Move constructor.
 
void homogenizeDirichlet ()
 See gsThinShellAssemblerBase for details.
 
interfaceErrorC0 (const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
interfaceErrorG1 (const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
interfaceErrorGaussCurvature (const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
interfaceErrorMeanCurvature (const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
interfaceErrorNormal (const gsFunctionSet< T > &deformed)
 See gsThinShellAssemblerBase for details.
 
gsSparseMatrix< T > & massMatrix ()
 Returns a reference to the mass matrix that is assembled.
 
gsMaterialMatrixBase< T > * material (const index_t p) const
 Returns the material matrix on patch p used in the class.
 
gsMaterialMatrixContainer< T > materials () const
 Returns the material matrices used in the class.
 
const gsSparseMatrix< T > & matrix () const
 Returns a reference to the system matrix that is assembled.
 
index_t numDofs () const
 See gsThinShellAssemblerBase for details.
 
gsThinShellAssembleroperator= (const gsThinShellAssembler &other)
 Assignment operator.
 
gsThinShellAssembleroperator= (gsThinShellAssembler &&other)
 Move assignment operator.
 
gsOptionListoptions ()
 See gsThinShellAssemblerBase for details.
 
void plotSolution (std::string string, const gsMatrix< T > &solVector)
 See gsThinShellAssemblerBase for details.
 
gsMatrix< T > projectL2 (const gsFunction< T > &fun)
 See gsThinShellAssemblerBase for details. More...
 
void projectL2_into (const gsFunction< T > &fun, gsMatrix< T > &result)
 See gsThinShellAssemblerBase for details.
 
void projectL2_into (const gsFunction< T > &fun, gsMultiPatch< T > &result)
 See gsThinShellAssemblerBase for details. More...
 
const gsMatrix< T > & rhs () const
 Returns a reference to the right-hand side vector that is assembled.
 
void setBasis (const gsMultiBasis< T > &basis)
 Overwrites the basis. More...
 
void setFoundation (const gsFunction< T > &foundation)
 See gsThinShellAssemblerBase for details.
 
void setOptions (gsOptionList &options)
 See gsThinShellAssemblerBase for details.
 
void setPointLoads (const gsPointLoads< T > &pLoads)
 See gsThinShellAssemblerBase for details.
 
void setPointMass (const gsPointLoads< T > &pMass)
 Registers a gsPointLoads object for a point mass acting on the shell. The point masss must be 1-dimensional.
 
void setPressure (const gsFunction< T > &pressure)
 See gsThinShellAssemblerBase for details.
 
void setSpaceBasis (const gsFunctionSet< T > &spaceBasis)
 See gsThinShellAssemblerBase for details.
 
void setUndeformed (const gsMultiPatch< T > &patches)
 See gsThinShellAssemblerBase for details.
 
ThinShellAssemblerStatus status () const
 See gsThinShellAssemblerBase for details.
 
void updateBCs (const gsBoundaryConditions< T > &bconditions)
 See gsThinShellAssemblerBase for details.
 

Protected Member Functions

gsMultiPatch< T > _constructSolution (const gsMatrix< T > &solVector, const gsMultiPatch< T > &undeformed) const
 See gsThinShellAssemblerBase for details.
 
void _initialize ()
 Initializes the method.
 

Private Member Functions

template<short_t _d, bool _bending>
std::enable_if<(_d==3)&&_bending,
ThinShellAssemblerStatus >
::type 
assemble_impl ()
 Specialisation of assemble() for surfaces (3D) More...
 
template<short_t _d, bool _bending>
std::enable_if<!(_d==3
&&_bending),
ThinShellAssemblerStatus >
::type 
assemble_impl ()
 Specialisation of assemble() for planar geometries (2D)
 
template<short_t _d, bool _bending>
std::enable_if<(_d==3)&&_bending,
ThinShellAssemblerStatus >
::type 
assembleMatrix_impl (const gsFunctionSet< T > &deformed)
 Implementation of assembleMatrix for surfaces (3D)
 
template<short_t _d, bool _bending>
std::enable_if<!(_d==3
&&_bending),
ThinShellAssemblerStatus >
::type 
assembleMatrix_impl (const gsFunctionSet< T > &deformed)
 Implementation of assembleMatrix for planar geometries (2D)
 
template<short_t _d, bool _bending>
std::enable_if<(_d==3)&&_bending,
ThinShellAssemblerStatus >
::type 
assembleMatrix_impl (const gsFunctionSet< T > &deformed, const gsFunctionSet< T > &previous, gsMatrix< T > &update)
 Implementation of assembleMatrix for surfaces (3D)
 
template<short_t _d, bool _bending>
std::enable_if<!(_d==3
&&_bending),
ThinShellAssemblerStatus >
::type 
assembleMatrix_impl (const gsFunctionSet< T > &deformed, const gsFunctionSet< T > &previous, gsMatrix< T > &update)
 Implementation of assembleMatrix for planar geometries (2D)
 
template<short_t _d, bool _bending>
std::enable_if<(_d==3)&&_bending,
ThinShellAssemblerStatus >
::type 
assembleVector_impl (const gsFunctionSet< T > &deformed, const bool homogenize)
 Implementation of assembleVector for surfaces (3D)
 
template<short_t _d, bool _bending>
std::enable_if<!(_d==3
&&_bending),
ThinShellAssemblerStatus >
::type 
assembleVector_impl (const gsFunctionSet< T > &deformed, const bool homogenize)
 Implementation of assembleVector for planar geometries (2D)
 
template<short_t _d, bool _bending>
std::enable_if<(_d==3)&&_bending,
gsMatrix< T > >::type 
boundaryForce_impl (const gsFunctionSet< T > &deformed, const std::vector< patchSide > &patchSides) const
 Implementation of the boundary force vector for surfaces (3D)
 
template<short_t _d, bool _bending>
std::enable_if<!(_d==3
&&_bending), gsMatrix< T >
>::type 
boundaryForce_impl (const gsFunctionSet< T > &deformed, const std::vector< patchSide > &patchSides) const
 Implementation of the boundary force vector for planar geometries (2D)
 

Constructor & Destructor Documentation

gsThinShellAssembler ( const gsMultiPatch< T > &  patches,
const gsMultiBasis< T > &  basis,
const gsBoundaryConditions< T > &  bconditions,
const gsFunction< T > &  surface_force,
const gsMaterialMatrixContainer< T > &  materialmatrices 
)

Constructor for the shell assembler.

Parameters
[in]patchesThe geometry
[in]basisThe basis
[in]bconditionsThe boundary condition
[in]surface_forceThe surface force
materialmatrixThe material matrix container
gsThinShellAssembler ( const gsMultiPatch< T > &  patches,
const gsMultiBasis< T > &  basis,
const gsBoundaryConditions< T > &  bconditions,
const gsFunction< T > &  surface_force,
gsMaterialMatrixBase< T > *  materialmatrix 
)

Constructor for the shell assembler.

Parameters
[in]patchesThe geometry
[in]basisThe basis
[in]bconditionsThe boundary condition
[in]surface_forceThe surface force
materialmatrixThe material matrix class

Constructor for te shell assembler.

Parameters
[in]patchesThe geometry
[in]basisThe basis
[in]bconditionsThe boundary condition
[in]surface_forceThe surface force
materialmatrixThe material matrix classDefault empty constructor

Member Function Documentation

std::enable_if<(_d==3)&&_bending, ThinShellAssemblerStatus >::type assemble_impl ( )
private

Specialisation of assemble() for surfaces (3D)

Assembles the Kirchhoff-Love shell equations including the bending terms. Optionally, pressure is included via p * n * u Optionally, foundation stiffness is included via k_x v_x v_x + k_y v_y v_y + k_z v_z v_z Since the variational energy of the foundation force k_i u_i is equal to k_i u_i v_i where i denotes any direction, u_i are displacemets and v_i are spaces.

gsMatrix< T > projectL2 ( const gsFunction< T > &  fun)
virtual

See gsThinShellAssemblerBase for details.

todo: make a projection with BCs? todo: test

Implements gsThinShellAssemblerBase< T >.

void projectL2_into ( const gsFunction< T > &  fun,
gsMultiPatch< T > &  result 
)
virtual

See gsThinShellAssemblerBase for details.

todo: make a projection with BCs? todo: test

Implements gsThinShellAssemblerBase< T >.

void setBasis ( const gsMultiBasis< T > &  basis)
inlinevirtual

Overwrites the basis.

Parameters
[in]bconditionsThe basis

Implements gsThinShellAssemblerBase< T >.