LifeV
HolzapfelMaterialNonLinear< MeshType > Class Template Reference

#include <HolzapfelMaterialNonLinear.hpp>

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

Protected Attributes

vectorPtr_Type M_stiff
 construct the vectors for the parameters More...
 
matrixSmall_Type M_identity
 
- Protected Attributes inherited from StructuralAnisotropicConstitutiveLaw< MeshType >
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 StructuralAnisotropicConstitutiveLaw< MeshTypesuper
 
typedef super::data_Type data_Type
 
typedef super::vector_Type vector_Type
 
typedef super::matrix_Type matrix_Type
 
typedef super::matrixPtr_Type matrixPtr_Type
 
typedef super::vectorPtr_Type vectorPtr_Type
 
typedef super::dataPtr_Type dataPtr_Type
 
typedef super::displayerPtr_Type displayerPtr_Type
 
typedef super::mapMarkerVolumesPtr_Type mapMarkerVolumesPtr_Type
 
typedef super::mapMarkerVolumes_Type mapMarkerVolumes_Type
 
typedef mapMarkerVolumes_Type::const_iterator mapIterator_Type
 
typedef super::mapMarkerIndexesPtr_Type mapMarkerIndexesPtr_Type
 
typedef super::mapMarkerIndexes_Type mapMarkerIndexes_Type
 
typedef mapMarkerIndexes_Type::const_iterator mapIteratorIndex_Type
 
typedef std::vector< typename MeshType::element_Type * > vectorVolumes_Type
 
typedef std::shared_ptr< vectorVolumes_TypevectorVolumesPtr_Type
 
typedef std::vector< UIntvectorIndexes_Type
 
typedef std::shared_ptr< vectorIndexes_TypevectorIndexesPtr_Type
 
typedef super::FESpace_Type FESpace_Type
 
typedef super::FESpacePtr_Type FESpacePtr_Type
 
typedef super::ETFESpacePtr_Type ETFESpacePtr_Type
 
typedef super::vectorsParameters_Type vectorsParameters_Type
 
typedef super::vectorsParametersPtr_Type vectorsParametersPtr_Type
 
typedef MatrixSmall< 3, 3 > matrixSmall_Type
 
typedef super::fiberFunction_Type fiberFunction_Type
 
typedef super::fiberFunctionPtr_Type fiberFunctionPtr_Type
 
typedef super::vectorFiberFunction_Type vectorFiberFunction_Type
 
typedef super::vectorFiberFunctionPtr_Type vectorFiberFunctionPtr_Type
 
typedef super::tensorF_Type tensorF_Type
 
typedef super::determinantF_Type determinantF_Type
 
typedef super::tensorC_Type tensorC_Type
 
typedef super::minusT_Type minusT_Type
 
typedef super::traceTensor_Type traceTensor_Type
 
typedef super::powerExpression_Type powerExpression_Type
 
typedef super::interpolatedValue_Type interpolatedValue_Type
 
typedef super::outerProduct_Type outerProduct_Type
 
typedef super::stretch_Type stretch_Type
 
typedef super::isochoricStretch_Type isochoricStretch_Type
 

Constructor & Destructor

 HolzapfelMaterialNonLinear ()
 
virtual ~HolzapfelMaterialNonLinear ()
 

Methods

void setup (const FESpacePtr_Type &dFESpace, const ETFESpacePtr_Type &dETFESpace, const std::shared_ptr< const MapEpetra > &monolithicMap, const UInt offset, const dataPtr_Type &dataMaterial)
 Setup the created object of the class StructuralIsotropicConstitutiveLaw. More...
 
void computeLinearStiff (dataPtr_Type &, const mapMarkerVolumesPtr_Type, const mapMarkerIndexesPtr_Type)
 Compute the Stiffness matrix in 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 StructualSolver::updateJacobian. More...
 
void updateNonLinearJacobianTerms (matrixPtr_Type &jacobian, const vector_Type &disp, const dataPtr_Type &dataMaterial, const mapMarkerVolumesPtr_Type, const mapMarkerIndexesPtr_Type, const displayerPtr_Type &displayer)
 Updates the nonlinear terms in the Jacobian matrix in StructualSolver::updateJacobian. More...
 
void computeStiffness (const vector_Type &disp, const UInt iter, Real factor, const dataPtr_Type &dataMaterial, const mapMarkerVolumesPtr_Type, const mapMarkerIndexesPtr_Type, const displayerPtr_Type &displayer)
 Interface method to compute the new Stiffness matrix in StructuralSolver::evalResidual and in StructuralSolver::updateSystem since the matrix is the expression of the matrix is the same. More...
 
void computeReferenceConfigurations (const vector_Type &disp, const dataPtr_Type &dataMaterial, const displayerPtr_Type &displayer)
 
void computeKinematicsVariables (const VectorElemental &dk_loc)
 Computes the new Stiffness vector for Neo-Hookean and Holzapfel materials in StructuralSolver given a certain displacement field. More...
 
void showMe (std::string const &fileNameVectStiff, std::string const &fileNameJacobain)
 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...
 
void computeLocalFirstPiolaKirchhoffTensor (Epetra_SerialDenseMatrix &firstPiola, const Epetra_SerialDenseMatrix &tensorF, const Epetra_SerialDenseMatrix &cofactorF, const std::vector< Real > &invariants, const UInt marker)
 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...
 
void setupFiberDirections (vectorFiberFunctionPtr_Type vectorOfFibers)
 
void evaluateActivationFibers (const vector_Type &displacement, vector_Type &fourthInvariant)
 

Get Methods

matrixPtr_Type const stiffMatrix () const
 Get the Stiffness matrix. More...
 
vectorPtr_Type const stiffVector () const
 Get the stiffness vector. More...
 
vectorPtr_Type const selectionCriterion (const UInt) const
 Specific for multimechanism. More...
 
vectorPtr_Type const activationDisplacement (const UInt) const
 Get the activation displacement. More...
 
vectorPtr_Type const activatedUnitFiber (const UInt) const
 Get the activation displacement. More...
 
vectorPtr_Type const activatedDeterminant (const UInt) const
 Get the activation displacement. More...
 
void apply (const vector_Type &sol, vector_Type &res, const mapMarkerVolumesPtr_Type mapsMarkerVolumes, const mapMarkerIndexesPtr_Type mapsMarkerIndexes, const displayerPtr_Type displayer)
 

Additional Inherited Members

- Public Types inherited from StructuralAnisotropicConstitutiveLaw< MeshType >
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
 
- Public Member Functions inherited from StructuralAnisotropicConstitutiveLaw< MeshType >
 StructuralAnisotropicConstitutiveLaw ()
 
virtual ~StructuralAnisotropicConstitutiveLaw ()
 
void setIthFiberVector (const vector_Type &fiberInterpolated, const UInt i)
 
void setNumberOfFamilies (const UInt n)
 
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
 

Detailed Description

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

Definition at line 52 of file HolzapfelMaterialNonLinear.hpp.

Member Typedef Documentation

◆ super

◆ data_Type

Definition at line 60 of file HolzapfelMaterialNonLinear.hpp.

◆ vector_Type

Definition at line 62 of file HolzapfelMaterialNonLinear.hpp.

◆ matrix_Type

Definition at line 63 of file HolzapfelMaterialNonLinear.hpp.

◆ matrixPtr_Type

◆ vectorPtr_Type

◆ dataPtr_Type

◆ displayerPtr_Type

◆ mapMarkerVolumesPtr_Type

◆ mapMarkerVolumes_Type

◆ mapIterator_Type

typedef mapMarkerVolumes_Type::const_iterator mapIterator_Type

Definition at line 72 of file HolzapfelMaterialNonLinear.hpp.

◆ mapMarkerIndexesPtr_Type

◆ mapMarkerIndexes_Type

◆ mapIteratorIndex_Type

typedef mapMarkerIndexes_Type::const_iterator mapIteratorIndex_Type

Definition at line 76 of file HolzapfelMaterialNonLinear.hpp.

◆ vectorVolumes_Type

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

Definition at line 78 of file HolzapfelMaterialNonLinear.hpp.

◆ vectorVolumesPtr_Type

typedef std::shared_ptr<vectorVolumes_Type> vectorVolumesPtr_Type

Definition at line 79 of file HolzapfelMaterialNonLinear.hpp.

◆ vectorIndexes_Type

typedef std::vector<UInt> vectorIndexes_Type

Definition at line 81 of file HolzapfelMaterialNonLinear.hpp.

◆ vectorIndexesPtr_Type

typedef std::shared_ptr<vectorIndexes_Type> vectorIndexesPtr_Type

Definition at line 82 of file HolzapfelMaterialNonLinear.hpp.

◆ FESpace_Type

◆ FESpacePtr_Type

◆ ETFESpacePtr_Type

◆ vectorsParameters_Type

◆ vectorsParametersPtr_Type

◆ matrixSmall_Type

Definition at line 92 of file HolzapfelMaterialNonLinear.hpp.

◆ fiberFunction_Type

◆ fiberFunctionPtr_Type

◆ vectorFiberFunction_Type

◆ vectorFiberFunctionPtr_Type

◆ tensorF_Type

◆ determinantF_Type

◆ tensorC_Type

◆ minusT_Type

◆ traceTensor_Type

◆ powerExpression_Type

◆ interpolatedValue_Type

◆ outerProduct_Type

◆ stretch_Type

◆ isochoricStretch_Type

Constructor & Destructor Documentation

◆ HolzapfelMaterialNonLinear()

Definition at line 347 of file HolzapfelMaterialNonLinear.hpp.

+ Here is the caller graph for this function:

◆ ~HolzapfelMaterialNonLinear()

Definition at line 359 of file HolzapfelMaterialNonLinear.hpp.

Member Function Documentation

◆ setup()

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

Setup the created object of the class StructuralIsotropicConstitutiveLaw.

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

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 368 of file HolzapfelMaterialNonLinear.hpp.

◆ computeLinearStiff()

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

Compute the Stiffness matrix in StructuralSolver::buildSystem()

Parameters
dataMaterialthe class with Material properties data

Empty method for exponential material

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 475 of file HolzapfelMaterialNonLinear.hpp.

◆ updateJacobianMatrix()

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

Updates the Jacobian matrix in StructualSolver::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

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 487 of file HolzapfelMaterialNonLinear.hpp.

◆ updateNonLinearJacobianTerms()

void updateNonLinearJacobianTerms ( matrixPtr_Type jacobian,
const vector_Type disp,
const dataPtr_Type dataMaterial,
const mapMarkerVolumesPtr_Type  mapsMarkerVolumes,
const mapMarkerIndexesPtr_Type  mapsMarkerIndexes,
const displayerPtr_Type displayer 
)

Updates the nonlinear terms in the Jacobian matrix in StructualSolver::updateJacobian.

Parameters
stiffstiffness matrix provided from outside
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 503 of file HolzapfelMaterialNonLinear.hpp.

+ Here is the caller graph for this function:

◆ computeStiffness()

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

Interface method to compute the new Stiffness matrix in StructuralSolver::evalResidual and in StructuralSolver::updateSystem since the matrix is the expression of the matrix is the same.

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

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 716 of file HolzapfelMaterialNonLinear.hpp.

+ Here is the caller graph for this function:

◆ computeReferenceConfigurations()

void computeReferenceConfigurations ( const vector_Type disp,
const dataPtr_Type dataMaterial,
const displayerPtr_Type displayer 
)
inlinevirtual

◆ computeKinematicsVariables()

void computeKinematicsVariables ( const VectorElemental dk_loc)
inlinevirtual

Computes the new Stiffness vector for Neo-Hookean and Holzapfel materials 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.

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 classComputes the deformation gradient F, the cofactor matrix Cof(F), the determinant of F (J = det(F)), the trace of right Cauchy-Green tensor tr(C) This function is used in StructuralIsotropicConstitutiveLaw::computeStiffness
dk_locthe elemental displacement

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 222 of file HolzapfelMaterialNonLinear.hpp.

◆ showMe()

void showMe ( std::string const &  fileNameVectStiff,
std::string const &  fileNameJacobain 
)
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 vectorShowMe method of the class (saved on a file the stiffness vector and the jacobian)

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 810 of file HolzapfelMaterialNonLinear.hpp.

◆ computeLocalFirstPiolaKirchhoffTensor()

void computeLocalFirstPiolaKirchhoffTensor ( Epetra_SerialDenseMatrix &  firstPiola,
const Epetra_SerialDenseMatrix &  tensorF,
const Epetra_SerialDenseMatrix &  cofactorF,
const std::vector< Real > &  invariants,
const UInt  marker 
)
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

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 830 of file HolzapfelMaterialNonLinear.hpp.

◆ computeCauchyStressTensor()

void computeCauchyStressTensor ( const vectorPtr_Type  disp,
const QuadratureRule evalQuad,
vectorPtr_Type  sigma_1,
vectorPtr_Type  sigma_2,
vectorPtr_Type  sigma_3 
)
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

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 842 of file HolzapfelMaterialNonLinear.hpp.

◆ setupFiberDirections()

void setupFiberDirections ( vectorFiberFunctionPtr_Type  vectorOfFibers)
virtual

◆ evaluateActivationFibers()

void evaluateActivationFibers ( const vector_Type displacement,
vector_Type fourthInvariant 
)
inlinevirtual

◆ stiffMatrix()

matrixPtr_Type const stiffMatrix ( ) const
inlinevirtual

Get the Stiffness matrix.

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 275 of file HolzapfelMaterialNonLinear.hpp.

◆ stiffVector()

vectorPtr_Type const stiffVector ( ) const
inlinevirtual

Get the stiffness vector.

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 282 of file HolzapfelMaterialNonLinear.hpp.

◆ selectionCriterion()

vectorPtr_Type const selectionCriterion ( const UInt  ) const
inlinevirtual

Specific for multimechanism.

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 288 of file HolzapfelMaterialNonLinear.hpp.

◆ activationDisplacement()

vectorPtr_Type const activationDisplacement ( const UInt  i) const
inlinevirtual

Get the activation displacement.

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 295 of file HolzapfelMaterialNonLinear.hpp.

◆ activatedUnitFiber()

vectorPtr_Type const activatedUnitFiber ( const UInt  i) const
inlinevirtual

Get the activation displacement.

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 301 of file HolzapfelMaterialNonLinear.hpp.

◆ activatedDeterminant()

vectorPtr_Type const activatedDeterminant ( const UInt  i) const
inlinevirtual

Get the activation displacement.

Implements StructuralAnisotropicConstitutiveLaw< MeshType >.

Definition at line 307 of file HolzapfelMaterialNonLinear.hpp.

◆ apply()

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

Field Documentation

◆ M_stiff

vectorPtr_Type M_stiff
protected

construct the vectors for the parameters

Parameters
VOID
Returns
VOIDVector: stiffness non-linear

Definition at line 335 of file HolzapfelMaterialNonLinear.hpp.

◆ M_identity

matrixSmall_Type M_identity
protected

Definition at line 338 of file HolzapfelMaterialNonLinear.hpp.


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