LifeV
StructuralAnisotropicConstitutiveLaw< MeshType > Class Template Referenceabstract

#include <StructuralAnisotropicConstitutiveLaw.hpp>

+ Inheritance diagram for StructuralAnisotropicConstitutiveLaw< MeshType >:
+ Collaboration diagram for StructuralAnisotropicConstitutiveLaw< MeshType >:

Protected Attributes

FESpacePtr_Type M_dispFESpace
 construct the vectors for the parameters 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
 
displayerPtr_Type M_displayer
 
vectorFiberFunctionPtr_Type M_vectorOfFibers
 Map between markers and volumes on the mesh. More...
 
vectorInterpolatedFibers_Type M_vectorInterpolated
 std::vector to store the vector of the interpolation of the fiber direction. More...
 
Real M_epsilon
 

Type definitions

typedef StructuralConstitutiveLawData data_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 FactorySingleton< Factory< StructuralAnisotropicConstitutiveLaw< MeshType >, std::string > > StructureAnisotropicMaterialFactory
 
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
 
typedef std::function< Real(Real const &, Real const &, Real const &, Real const &, ID const &) > fiberFunction_Type
 
typedef std::shared_ptr< fiberFunction_TypefiberFunctionPtr_Type
 
typedef std::vector< fiberFunctionPtr_TypevectorFiberFunction_Type
 
typedef std::shared_ptr< vectorFiberFunction_TypevectorFiberFunctionPtr_Type
 
typedef std::vector< vectorPtr_TypevectorInterpolatedFibers_Type
 
typedef ExpressionDefinitions::deformationGradient_Type tensorF_Type
 
typedef ExpressionDefinitions::determinantTensorF_Type determinantF_Type
 
typedef ExpressionDefinitions::rightCauchyGreenTensor_Type tensorC_Type
 
typedef ExpressionDefinitions::minusTransposedTensor_Type minusT_Type
 
typedef ExpressionDefinitions::traceTensor_Type traceTensor_Type
 
typedef ExpressionDefinitions::powerExpression_Type powerExpression_Type
 
typedef ExpressionDefinitions::isochoricTrace_Type isochoricTrace_Type
 
typedef ExpressionDefinitions::interpolatedValue_Type interpolatedValue_Type
 
typedef ExpressionDefinitions::outerProduct_Type outerProduct_Type
 
typedef ExpressionDefinitions::stretch_Type stretch_Type
 
typedef ExpressionDefinitions::isochoricStretch_Type isochoricStretch_Type
 

Constructor & Deconstructor

 StructuralAnisotropicConstitutiveLaw ()
 
virtual ~StructuralAnisotropicConstitutiveLaw ()
 

Methods

virtual void setup (const FESpacePtr_Type &dFESpace, const ETFESpacePtr_Type &ETFESpace, const std::shared_ptr< const MapEpetra > &monolithicMap, const UInt offset, const dataPtr_Type &dataMaterial)=0
 Setup the created object of the class StructuralAnisotropicConstitutiveLaw. More...
 
virtual void computeLinearStiff (dataPtr_Type &dataMaterial, const mapMarkerVolumesPtr_Type, const mapMarkerIndexesPtr_Type)=0
 Computes the linear part of the stiffness matrix StructuralSolver::buildSystem. More...
 
virtual void updateJacobianMatrix (const vector_Type &disp, const dataPtr_Type &dataMaterial, const mapMarkerVolumesPtr_Type mapsMarkerVolumes, const mapMarkerIndexesPtr_Type mapsMarkerIndexes, const displayerPtr_Type &displayer)=0
 Updates the Jacobian matrix in StructuralSolver::updateJacobian. More...
 
virtual 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)=0
 Computes the new Stiffness matrix in StructuralSolver given a certain displacement field. More...
 
virtual void computeReferenceConfigurations (const vector_Type &sol, const dataPtr_Type &dataMaterial, const displayerPtr_Type &displayer)=0
 
virtual void computeKinematicsVariables (const VectorElemental &dk_loc)=0
 Computes the deformation Gradient F, the cofactor of F Cof(F), the determinant of F J = det(F), the trace of C Tr(C). More...
 
virtual void showMe (std::string const &fileNameStiff, std::string const &fileNameJacobian)=0
 Output of the class. More...
 
virtual void computeLocalFirstPiolaKirchhoffTensor (Epetra_SerialDenseMatrix &firstPiola, const Epetra_SerialDenseMatrix &tensorF, const Epetra_SerialDenseMatrix &cofactorF, const std::vector< Real > &invariants, const UInt material)=0
 Compute the First Piola Kirchhoff Tensor. More...
 
virtual void computeCauchyStressTensor (const vectorPtr_Type disp, const QuadratureRule &evalQuad, vectorPtr_Type sigma_1, vectorPtr_Type sigma_2, vectorPtr_Type sigma_3)=0
 Compute the First Piola Kirchhoff Tensor. More...
 
virtual void setupFiberDirections (vectorFiberFunctionPtr_Type vectorOfFibers)=0
 
virtual void evaluateActivationFibers (const vector_Type &displacement, vector_Type &fourthInvariant)=0
 

Set Methods

void setIthFiberVector (const vector_Type &fiberInterpolated, const UInt i)
 
void setNumberOfFamilies (const UInt n)
 

Get Methods

MapEpetra const & map () const
 Getters Get the Epetramap. More...
 
FESpace_TypedFESpace ()
 Get the FESpace object. More...
 
matrixPtr_Type const jacobian () const
 Get the Stiffness matrix. More...
 
const vector_TypeithFiberVector (const UInt i) const
 
virtual matrixPtr_Type const stiffMatrix () const =0
 Get the Stiffness matrix. More...
 
virtual vectorPtr_Type const stiffVector () const =0
 Get the Stiffness vector. More...
 
virtual vectorPtr_Type const selectionCriterion (const UInt i) const =0
 Getters specific for the multi-mechanism model Get the selction vector (the one that measures if the activation criterion is met) More...
 
virtual vectorPtr_Type const activationDisplacement (const UInt i) const =0
 Get the activation displacement. More...
 
virtual vectorPtr_Type const activatedUnitFiber (const UInt i) const =0
 Get the activation displacement. More...
 
virtual vectorPtr_Type const activatedDeterminant (const UInt i) const =0
 Get the activation displacement. More...
 
virtual void apply (const vector_Type &sol, vector_Type &res, const mapMarkerVolumesPtr_Type mapsMarkerVolumes, const mapMarkerIndexesPtr_Type mapsMarkerIndexes, const displayerPtr_Type displayer)=0
 

Detailed Description

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

Definition at line 89 of file StructuralAnisotropicConstitutiveLaw.hpp.

Member Typedef Documentation

◆ data_Type

◆ matrix_Type

◆ matrixPtr_Type

typedef std::shared_ptr<matrix_Type> matrixPtr_Type

Definition at line 98 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ vector_Type

◆ vectorPtr_Type

typedef std::shared_ptr<vector_Type> vectorPtr_Type

Definition at line 100 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ dataPtr_Type

typedef std::shared_ptr<data_Type> dataPtr_Type

Definition at line 102 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ displayerPtr_Type

typedef std::shared_ptr<const Displayer> displayerPtr_Type

Definition at line 103 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ StructureAnisotropicMaterialFactory

◆ vectorVolumes_Type

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

Definition at line 107 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ mapMarkerVolumes_Type

◆ mapMarkerVolumesPtr_Type

◆ vectorIndexes_Type

typedef std::vector<UInt> vectorIndexes_Type

Definition at line 112 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ mapMarkerIndexes_Type

◆ mapMarkerIndexesPtr_Type

◆ ETFESpace_Type

◆ ETFESpacePtr_Type

typedef std::shared_ptr<ETFESpace_Type> ETFESpacePtr_Type

Definition at line 117 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ FESpace_Type

◆ FESpacePtr_Type

typedef std::shared_ptr<FESpace_Type> FESpacePtr_Type

Definition at line 120 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ vectorsParameters_Type

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

Definition at line 123 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ vectorsParametersPtr_Type

◆ fiberFunction_Type

typedef std::function<Real ( Real const&, Real const&, Real const&, Real const&, ID const& ) > fiberFunction_Type

Definition at line 128 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ fiberFunctionPtr_Type

typedef std::shared_ptr<fiberFunction_Type> fiberFunctionPtr_Type

Definition at line 129 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ vectorFiberFunction_Type

◆ vectorFiberFunctionPtr_Type

◆ vectorInterpolatedFibers_Type

◆ tensorF_Type

◆ determinantF_Type

◆ tensorC_Type

◆ minusT_Type

◆ traceTensor_Type

◆ powerExpression_Type

◆ isochoricTrace_Type

◆ interpolatedValue_Type

◆ outerProduct_Type

◆ stretch_Type

◆ isochoricStretch_Type

Constructor & Destructor Documentation

◆ StructuralAnisotropicConstitutiveLaw()

◆ ~StructuralAnisotropicConstitutiveLaw()

virtual ~StructuralAnisotropicConstitutiveLaw ( )
inlinevirtual

Definition at line 161 of file StructuralAnisotropicConstitutiveLaw.hpp.

Member Function Documentation

◆ setup()

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

Setup the created object of the class StructuralAnisotropicConstitutiveLaw.

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

Implemented in AnisotropicMultimechanismMaterialNonLinear< MeshType >, DistributedHolzapfelMaterialNonLinear< MeshType >, HolzapfelMaterialNonLinear< MeshType >, and HolzapfelGeneralizedMaterialNonLinear< MeshType >.

◆ computeLinearStiff()

virtual void computeLinearStiff ( dataPtr_Type dataMaterial,
const mapMarkerVolumesPtr_Type  ,
const mapMarkerIndexesPtr_Type   
)
pure virtual

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

Parameters
dataMaterialthe class with Material properties data

Implemented in AnisotropicMultimechanismMaterialNonLinear< MeshType >, DistributedHolzapfelMaterialNonLinear< MeshType >, HolzapfelMaterialNonLinear< MeshType >, and HolzapfelGeneralizedMaterialNonLinear< MeshType >.

◆ updateJacobianMatrix()

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

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

Implemented in AnisotropicMultimechanismMaterialNonLinear< MeshType >, DistributedHolzapfelMaterialNonLinear< MeshType >, HolzapfelMaterialNonLinear< MeshType >, and HolzapfelGeneralizedMaterialNonLinear< MeshType >.

◆ computeStiffness()

virtual 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 
)
pure virtual

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

Implemented in AnisotropicMultimechanismMaterialNonLinear< MeshType >, DistributedHolzapfelMaterialNonLinear< MeshType >, HolzapfelMaterialNonLinear< MeshType >, and HolzapfelGeneralizedMaterialNonLinear< MeshType >.

◆ computeReferenceConfigurations()

◆ computeKinematicsVariables()

virtual void computeKinematicsVariables ( const VectorElemental dk_loc)
pure virtual

Computes the deformation Gradient F, the cofactor of F Cof(F), the determinant of F J = det(F), the trace of C Tr(C).

Parameters
dk_loclocal displacement vector

Implemented in AnisotropicMultimechanismMaterialNonLinear< MeshType >, DistributedHolzapfelMaterialNonLinear< MeshType >, HolzapfelMaterialNonLinear< MeshType >, and HolzapfelGeneralizedMaterialNonLinear< MeshType >.

◆ showMe()

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

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

Implemented in AnisotropicMultimechanismMaterialNonLinear< MeshType >, DistributedHolzapfelMaterialNonLinear< MeshType >, HolzapfelMaterialNonLinear< MeshType >, and HolzapfelGeneralizedMaterialNonLinear< MeshType >.

◆ computeLocalFirstPiolaKirchhoffTensor()

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

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

Implemented in AnisotropicMultimechanismMaterialNonLinear< MeshType >, DistributedHolzapfelMaterialNonLinear< MeshType >, HolzapfelMaterialNonLinear< MeshType >, and HolzapfelGeneralizedMaterialNonLinear< MeshType >.

◆ computeCauchyStressTensor()

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

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

Implemented in AnisotropicMultimechanismMaterialNonLinear< MeshType >, DistributedHolzapfelMaterialNonLinear< MeshType >, HolzapfelMaterialNonLinear< MeshType >, and HolzapfelGeneralizedMaterialNonLinear< MeshType >.

◆ setupFiberDirections()

◆ evaluateActivationFibers()

◆ setIthFiberVector()

void setIthFiberVector ( const vector_Type fiberInterpolated,
const UInt  i 
)
inline

Definition at line 276 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ setNumberOfFamilies()

void setNumberOfFamilies ( const UInt  n)
inline

Definition at line 286 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ map()

MapEpetra const& map ( ) const
inline

Getters Get the Epetramap.

Definition at line 299 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ dFESpace()

FESpace_Type& dFESpace ( )
inline

Get the FESpace object.

Definition at line 305 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ jacobian()

matrixPtr_Type const jacobian ( ) const
inline

Get the Stiffness matrix.

Definition at line 311 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ ithFiberVector()

const vector_Type& ithFiberVector ( const UInt  i) const
inline

Definition at line 317 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ stiffMatrix()

◆ stiffVector()

◆ selectionCriterion()

virtual vectorPtr_Type const selectionCriterion ( const UInt  i) const
pure virtual

Getters specific for the multi-mechanism model Get the selction vector (the one that measures if the activation criterion is met)

Implemented in AnisotropicMultimechanismMaterialNonLinear< MeshType >, DistributedHolzapfelMaterialNonLinear< MeshType >, HolzapfelMaterialNonLinear< MeshType >, and HolzapfelGeneralizedMaterialNonLinear< MeshType >.

◆ activationDisplacement()

◆ activatedUnitFiber()

◆ activatedDeterminant()

◆ apply()

Field Documentation

◆ M_dispFESpace

FESpacePtr_Type M_dispFESpace
protected

construct the vectors for the parameters

Parameters
VOID
Returns
VOIDProtected Members

Definition at line 364 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ M_dispETFESpace

ETFESpacePtr_Type M_dispETFESpace
protected

Definition at line 366 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ M_localMap

std::shared_ptr<const MapEpetra> M_localMap
protected

Definition at line 368 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ M_jacobian

matrixPtr_Type M_jacobian
protected

Matrix jacobian.

Definition at line 371 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ M_offset

UInt M_offset
protected

The Offset parameter.

Definition at line 374 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ M_dataMaterial

dataPtr_Type M_dataMaterial
protected

Definition at line 376 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ M_displayer

displayerPtr_Type M_displayer
protected

Definition at line 378 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ M_vectorOfFibers

vectorFiberFunctionPtr_Type M_vectorOfFibers
protected

Map between markers and volumes on the mesh.

std::shared to the vector of fibers

Definition at line 384 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ M_vectorInterpolated

vectorInterpolatedFibers_Type M_vectorInterpolated
protected

std::vector to store the vector of the interpolation of the fiber direction.

Definition at line 388 of file StructuralAnisotropicConstitutiveLaw.hpp.

◆ M_epsilon

Real M_epsilon
protected

Definition at line 391 of file StructuralAnisotropicConstitutiveLaw.hpp.


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