LifeV
StructuralConstitutiveLaw< MeshType > Class Template Reference

This class is an abstract class to define different type of models for the arterial wall. This class has just pure virtual methods. They are implemented in the specific class for one material. More...

#include <StructuralConstitutiveLaw.hpp>

+ Collaboration diagram for StructuralConstitutiveLaw< MeshType >:

Protected Attributes

FESpacePtr_Type M_dispFESpace
 Protected Members. More...
 
ETFESpacePtr_Type M_dispETFESpace
 
std::shared_ptr< const MapEpetraM_localMap
 
matrixPtr_Type M_jacobian
 Matrix jacobian. More...
 
UInt M_offset
 The Offset parameter. More...
 
dataPtr_Type M_dataMaterial
 
isotropicLawPtr_Type M_isotropicLaw
 
anisotropicLawPtr_Type M_anisotropicLaw
 
displayerPtr_Type M_displayer
 
matrixPtr_Type M_matrixStiffness
 
vectorPtr_Type M_vectorStiffness
 

Type definitions

typedef StructuralConstitutiveLawData data_Type
 
typedef StructuralIsotropicConstitutiveLaw< MeshTypeisotropicLaw_Type
 
typedef std::shared_ptr< isotropicLaw_TypeisotropicLawPtr_Type
 
typedef StructuralAnisotropicConstitutiveLaw< MeshTypeanisotropicLaw_Type
 
typedef std::shared_ptr< anisotropicLaw_TypeanisotropicLawPtr_Type
 
typedef MatrixEpetra< Realmatrix_Type
 
typedef std::shared_ptr< matrix_TypematrixPtr_Type
 
typedef VectorEpetra vector_Type
 
typedef std::shared_ptr< vector_TypevectorPtr_Type
 
typedef std::shared_ptr< data_TypedataPtr_Type
 
typedef std::shared_ptr< const DisplayerdisplayerPtr_Type
 
typedef std::vector< typename MeshType::element_Type *> vectorVolumes_Type
 
typedef std::map< UInt, vectorVolumes_TypemapMarkerVolumes_Type
 
typedef std::shared_ptr< mapMarkerVolumes_TypemapMarkerVolumesPtr_Type
 
typedef std::vector< UIntvectorIndexes_Type
 
typedef std::map< UInt, vectorIndexes_TypemapMarkerIndexes_Type
 
typedef std::shared_ptr< mapMarkerIndexes_TypemapMarkerIndexesPtr_Type
 
typedef ETFESpace< MeshType, MapEpetra, 3, 3 > ETFESpace_Type
 
typedef std::shared_ptr< ETFESpace_TypeETFESpacePtr_Type
 
typedef FESpace< MeshType, MapEpetraFESpace_Type
 
typedef std::shared_ptr< FESpace_TypeFESpacePtr_Type
 
typedef std::vector< std::vector< Real > > vectorsParameters_Type
 
typedef std::shared_ptr< vectorsParameters_TypevectorsParametersPtr_Type
 

Constructor & Deconstructor

 StructuralConstitutiveLaw ()
 
virtual ~StructuralConstitutiveLaw ()
 

Methods

void setup (const FESpacePtr_Type &dFESpace, const ETFESpacePtr_Type &ETFESpace, const std::shared_ptr< const MapEpetra > &monolithicMap, const UInt offset, const dataPtr_Type &dataMaterial, const displayerPtr_Type &displayer)
 Setup the created object of the class StructuralConstitutiveLaw. More...
 
void computeLinearStiff (dataPtr_Type &dataMaterial, const mapMarkerVolumesPtr_Type, const mapMarkerIndexesPtr_Type)
 Computes the linear part of the stiffness matrix StructuralSolver::buildSystem. More...
 
void updateJacobianMatrix (const vector_Type &disp, const dataPtr_Type &dataMaterial, const mapMarkerVolumesPtr_Type mapsMarkerVolumes, const mapMarkerIndexesPtr_Type mapsMarkerIndexes, const displayerPtr_Type &displayer)
 Updates the Jacobian matrix in StructuralSolver::updateJacobian. More...
 
void computeStiffness (const vector_Type &sol, const UInt iter, Real factor, const dataPtr_Type &dataMaterial, const mapMarkerVolumesPtr_Type mapsMarkerVolumes, const mapMarkerIndexesPtr_Type mapsMarkerIndexes, const displayerPtr_Type &displayer)
 Computes the new Stiffness matrix in StructuralSolver given a certain displacement field. More...
 
void showMe (std::string const &fileNameStiff, std::string const &fileNameJacobian)
 Output of the class. More...
 
void computeLocalFirstPiolaKirchhoffTensor (Epetra_SerialDenseMatrix &firstPiola, const Epetra_SerialDenseMatrix &tensorF, const Epetra_SerialDenseMatrix &cofactorF, const std::vector< Real > &invariants, const UInt material)
 Compute the First Piola Kirchhoff Tensor. More...
 
void computeCauchyStressTensor (const vectorPtr_Type disp, const QuadratureRule &evalQuad, vectorPtr_Type sigma_1, vectorPtr_Type sigma_2, vectorPtr_Type sigma_3)
 Compute the First Piola Kirchhoff Tensor. More...
 

Get Methods

MapEpetra const & map () const
 Getters Get the Epetramap. More...
 
FESpace_TypedFESpace ()
 Get the FESpace object. More...
 
ETFESpace_TypedETFESpace ()
 Get the FESpace object. More...
 
matrixPtr_Type const jacobian () const
 Get the Stiffness matrix. More...
 
isotropicLawPtr_Type isotropicLaw () const
 
anisotropicLawPtr_Type anisotropicLaw () const
 
const matrixPtr_Type stiffMatrix ()
 Get the Stiffness matrix (linear case) More...
 
const vectorPtr_Type stiffVector ()
 Get the Stiffness vector (nonlinear case) More...
 
void apply (const vector_Type &sol, vector_Type &res, const mapMarkerVolumesPtr_Type mapsMarkerVolumes, const mapMarkerIndexesPtr_Type mapsMarkerIndexes)
 

Detailed Description

template<typename MeshType>
class LifeV::StructuralConstitutiveLaw< MeshType >

This class is an abstract class to define different type of models for the arterial wall. This class has just pure virtual methods. They are implemented in the specific class for one material.

Definition at line 88 of file StructuralConstitutiveLaw.hpp.

Member Typedef Documentation

◆ data_Type

◆ isotropicLaw_Type

◆ isotropicLawPtr_Type

typedef std::shared_ptr<isotropicLaw_Type> isotropicLawPtr_Type

Definition at line 98 of file StructuralConstitutiveLaw.hpp.

◆ anisotropicLaw_Type

◆ anisotropicLawPtr_Type

typedef std::shared_ptr<anisotropicLaw_Type> anisotropicLawPtr_Type

Definition at line 101 of file StructuralConstitutiveLaw.hpp.

◆ matrix_Type

Definition at line 103 of file StructuralConstitutiveLaw.hpp.

◆ matrixPtr_Type

typedef std::shared_ptr<matrix_Type> matrixPtr_Type

Definition at line 104 of file StructuralConstitutiveLaw.hpp.

◆ vector_Type

Definition at line 105 of file StructuralConstitutiveLaw.hpp.

◆ vectorPtr_Type

typedef std::shared_ptr<vector_Type> vectorPtr_Type

Definition at line 106 of file StructuralConstitutiveLaw.hpp.

◆ dataPtr_Type

typedef std::shared_ptr<data_Type> dataPtr_Type

Definition at line 108 of file StructuralConstitutiveLaw.hpp.

◆ displayerPtr_Type

typedef std::shared_ptr<const Displayer> displayerPtr_Type

Definition at line 109 of file StructuralConstitutiveLaw.hpp.

◆ vectorVolumes_Type

typedef std::vector< typename MeshType::element_Type* > vectorVolumes_Type

Definition at line 111 of file StructuralConstitutiveLaw.hpp.

◆ mapMarkerVolumes_Type

Definition at line 113 of file StructuralConstitutiveLaw.hpp.

◆ mapMarkerVolumesPtr_Type

Definition at line 114 of file StructuralConstitutiveLaw.hpp.

◆ vectorIndexes_Type

typedef std::vector<UInt> vectorIndexes_Type

Definition at line 116 of file StructuralConstitutiveLaw.hpp.

◆ mapMarkerIndexes_Type

Definition at line 117 of file StructuralConstitutiveLaw.hpp.

◆ mapMarkerIndexesPtr_Type

Definition at line 118 of file StructuralConstitutiveLaw.hpp.

◆ ETFESpace_Type

Definition at line 121 of file StructuralConstitutiveLaw.hpp.

◆ ETFESpacePtr_Type

typedef std::shared_ptr<ETFESpace_Type> ETFESpacePtr_Type

Definition at line 122 of file StructuralConstitutiveLaw.hpp.

◆ FESpace_Type

Definition at line 124 of file StructuralConstitutiveLaw.hpp.

◆ FESpacePtr_Type

typedef std::shared_ptr<FESpace_Type> FESpacePtr_Type

Definition at line 125 of file StructuralConstitutiveLaw.hpp.

◆ vectorsParameters_Type

typedef std::vector<std::vector<Real> > vectorsParameters_Type

Definition at line 128 of file StructuralConstitutiveLaw.hpp.

◆ vectorsParametersPtr_Type

Definition at line 129 of file StructuralConstitutiveLaw.hpp.

Constructor & Destructor Documentation

◆ StructuralConstitutiveLaw()

◆ ~StructuralConstitutiveLaw()

virtual ~StructuralConstitutiveLaw ( )
inlinevirtual

Definition at line 139 of file StructuralConstitutiveLaw.hpp.

Member Function Documentation

◆ setup()

void setup ( const FESpacePtr_Type dFESpace,
const ETFESpacePtr_Type ETFESpace,
const std::shared_ptr< const MapEpetra > &  monolithicMap,
const UInt  offset,
const dataPtr_Type dataMaterial,
const displayerPtr_Type displayer 
)

Setup the created object of the class StructuralConstitutiveLaw.

Parameters
dFespacethe FiniteElement Space
monolithicMapthe MapEpetra
offsetthe offset parameter used assembling the matrices

Definition at line 345 of file StructuralConstitutiveLaw.hpp.

◆ computeLinearStiff()

void computeLinearStiff ( dataPtr_Type dataMaterial,
const mapMarkerVolumesPtr_Type  mapsMarkerVolumes,
const mapMarkerIndexesPtr_Type  mapsMarkerIndexes 
)

Computes the linear part of the stiffness matrix StructuralSolver::buildSystem.

Parameters
dataMaterialthe class with Material properties data

Definition at line 382 of file StructuralConstitutiveLaw.hpp.

◆ updateJacobianMatrix()

void updateJacobianMatrix ( const vector_Type disp,
const dataPtr_Type dataMaterial,
const mapMarkerVolumesPtr_Type  mapsMarkerVolumes,
const mapMarkerIndexesPtr_Type  mapsMarkerIndexes,
const displayerPtr_Type displayer 
)

Updates the Jacobian matrix in StructuralSolver::updateJacobian.

Parameters
dispsolution at the k-th iteration of NonLinearRichardson Method
dataMateriala pointer to the dataType member in StructuralSolver class to get the material coefficients (e.g. Young modulus, Poisson ratio..)
displayera pointer to the Dysplaier member in the StructuralSolver class

Definition at line 395 of file StructuralConstitutiveLaw.hpp.

◆ computeStiffness()

void computeStiffness ( const vector_Type sol,
const UInt  iter,
Real  factor,
const dataPtr_Type dataMaterial,
const mapMarkerVolumesPtr_Type  mapsMarkerVolumes,
const mapMarkerIndexesPtr_Type  mapsMarkerIndexes,
const displayerPtr_Type displayer 
)

Computes the new Stiffness matrix in StructuralSolver given a certain displacement field.

This function is used both in StructuralSolver::evalResidual and in StructuralSolver::updateSystem since the matrix is the expression of the matrix is the same. This is virtual and not pure virtual since in the linear St. Venant-Kirchhoff law it is not needed.

Parameters
solthe solution vector
factorscaling factor used in FSI
dataMateriala pointer to the dataType member in StructuralSolver class to get the material coefficients (e.g. Young modulus, Poisson ratio..)
displayera pointer to the Dysplaier member in the StructuralSolver class

Definition at line 425 of file StructuralConstitutiveLaw.hpp.

◆ showMe()

void showMe ( std::string const &  fileNameStiff,
std::string const &  fileNameJacobian 
)

Output of the class.

Parameters
fileNamelinearStiffthe filename where to apply the spy method for the linear part of the Stiffness matrix
fileNameStiffthe filename where to apply the spy method for the Stiffness matrix

Definition at line 467 of file StructuralConstitutiveLaw.hpp.

◆ computeLocalFirstPiolaKirchhoffTensor()

void computeLocalFirstPiolaKirchhoffTensor ( Epetra_SerialDenseMatrix &  firstPiola,
const Epetra_SerialDenseMatrix &  tensorF,
const Epetra_SerialDenseMatrix &  cofactorF,
const std::vector< Real > &  invariants,
const UInt  material 
)

Compute the First Piola Kirchhoff Tensor.

Parameters
firstPiolaEpetra_SerialDenseMatrix that has to be filled
tensorFEpetra_SerialDenseMatrix the deformation gradient
cofactorFEpetra_SerialDenseMatrix cofactor of F
invariantsstd::vector with the invariants of C and the detF
materialUInt number to get the material parameteres form the VenantElasticData class

Definition at line 484 of file StructuralConstitutiveLaw.hpp.

◆ computeCauchyStressTensor()

void computeCauchyStressTensor ( const vectorPtr_Type  disp,
const QuadratureRule evalQuad,
vectorPtr_Type  sigma_1,
vectorPtr_Type  sigma_2,
vectorPtr_Type  sigma_3 
)

Compute the First Piola Kirchhoff Tensor.

Parameters
dispthe displacement field from which we compute the fisrt piola-Kirchhoff tensor
sigma_1the first column of the Cauchy stress tensor
sigma_2the second column of the Cauchy stress tensor
sigma_3the third column of the Cauchy stress tensor

Definition at line 584 of file StructuralConstitutiveLaw.hpp.

◆ map()

MapEpetra const& map ( ) const
inline

Getters Get the Epetramap.

Definition at line 248 of file StructuralConstitutiveLaw.hpp.

◆ dFESpace()

FESpace_Type& dFESpace ( )
inline

Get the FESpace object.

Definition at line 254 of file StructuralConstitutiveLaw.hpp.

◆ dETFESpace()

ETFESpace_Type& dETFESpace ( )
inline

Get the FESpace object.

Definition at line 260 of file StructuralConstitutiveLaw.hpp.

◆ jacobian()

matrixPtr_Type const jacobian ( ) const
inline

Get the Stiffness matrix.

Definition at line 266 of file StructuralConstitutiveLaw.hpp.

◆ isotropicLaw()

isotropicLawPtr_Type isotropicLaw ( ) const
inline

Definition at line 271 of file StructuralConstitutiveLaw.hpp.

◆ anisotropicLaw()

anisotropicLawPtr_Type anisotropicLaw ( ) const
inline

Definition at line 276 of file StructuralConstitutiveLaw.hpp.

◆ stiffMatrix()

Get the Stiffness matrix (linear case)

Definition at line 513 of file StructuralConstitutiveLaw.hpp.

◆ stiffVector()

Get the Stiffness vector (nonlinear case)

Definition at line 533 of file StructuralConstitutiveLaw.hpp.

◆ apply()

void apply ( const vector_Type sol,
vector_Type res,
const mapMarkerVolumesPtr_Type  mapsMarkerVolumes,
const mapMarkerIndexesPtr_Type  mapsMarkerIndexes 
)

Definition at line 558 of file StructuralConstitutiveLaw.hpp.

Field Documentation

◆ M_dispFESpace

FESpacePtr_Type M_dispFESpace
protected

Protected Members.

Definition at line 297 of file StructuralConstitutiveLaw.hpp.

◆ M_dispETFESpace

ETFESpacePtr_Type M_dispETFESpace
protected

Definition at line 299 of file StructuralConstitutiveLaw.hpp.

◆ M_localMap

std::shared_ptr<const MapEpetra> M_localMap
protected

Definition at line 301 of file StructuralConstitutiveLaw.hpp.

◆ M_jacobian

matrixPtr_Type M_jacobian
protected

Matrix jacobian.

Definition at line 304 of file StructuralConstitutiveLaw.hpp.

◆ M_offset

UInt M_offset
protected

The Offset parameter.

Definition at line 307 of file StructuralConstitutiveLaw.hpp.

◆ M_dataMaterial

dataPtr_Type M_dataMaterial
protected

Definition at line 309 of file StructuralConstitutiveLaw.hpp.

◆ M_isotropicLaw

isotropicLawPtr_Type M_isotropicLaw
protected

Definition at line 311 of file StructuralConstitutiveLaw.hpp.

◆ M_anisotropicLaw

anisotropicLawPtr_Type M_anisotropicLaw
protected

Definition at line 313 of file StructuralConstitutiveLaw.hpp.

◆ M_displayer

displayerPtr_Type M_displayer
protected

Definition at line 315 of file StructuralConstitutiveLaw.hpp.

◆ M_matrixStiffness

matrixPtr_Type M_matrixStiffness
protected

Definition at line 317 of file StructuralConstitutiveLaw.hpp.

◆ M_vectorStiffness

vectorPtr_Type M_vectorStiffness
protected

Definition at line 319 of file StructuralConstitutiveLaw.hpp.


The documentation for this class was generated from the following file: