LifeV
VenantKirchhoffMaterialNonLinearPenalized< MeshType > Class Template Reference

#include <VenantKirchhoffMaterialNonLinearPenalized.hpp>

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

Protected Member Functions

void setupVectorsParameters (void)
 construct the vectors for the parameters More...
 

Protected Attributes

vectorPtr_Type M_stiff
 Vector: stiffness non-linear. More...
 
matrixSmall_Type M_identity
 
- Protected Attributes inherited from StructuralIsotropicConstitutiveLaw< MeshType >
dataPtr_Type M_dataMaterial
 Protected Members. More...
 
FESpacePtr_Type M_dispFESpace
 
ETFESpacePtr_Type M_dispETFESpace
 
std::shared_ptr< const MapEpetraM_localMap
 
matrixPtr_Type M_jacobian
 Matrix jacobian. More...
 
UInt M_offset
 The Offset parameter. More...
 
vectorsParametersPtr_Type M_vectorsParameters
 Map between markers and volumes on the mesh. More...
 

Type definitions

typedef StructuralIsotropicConstitutiveLaw< 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::vectorVolumes_Type vectorVolumes_Type
 
typedef std::shared_ptr< vectorVolumes_TypevectorVolumesPtr_Type
 
typedef super::mapMarkerIndexesPtr_Type mapMarkerIndexesPtr_Type
 
typedef super::mapMarkerIndexes_Type mapMarkerIndexes_Type
 
typedef mapMarkerIndexes_Type::const_iterator mapIteratorIndex_Type
 
typedef std::vector< UIntvectorIndexes_Type
 
typedef std::shared_ptr< vectorIndexes_TypevectorIndexesPtr_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::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 ExpressionDefinitions::traceSquaredTensor_Type traceSquaredTensor_Type
 

Constructor & Destructor

 VenantKirchhoffMaterialNonLinearPenalized ()
 
virtual ~VenantKirchhoffMaterialNonLinearPenalized ()
 

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 &sol, 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 &sol, 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 &sol, 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 computeKinematicsVariables (const VectorElemental &dk_loc)
 Computes the new Stiffness vector for Neo-Hookean and VK-Penalized 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...
 

Get Methods

matrixPtr_Type const stiffMatrix () const
 Get the Stiffness matrix. More...
 
vectorPtr_Type const stiffVector () const
 Get the stiffness vector. 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 StructuralIsotropicConstitutiveLaw< 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< StructuralIsotropicConstitutiveLaw< MeshType >, std::string > > StructureIsotropicMaterialFactory
 
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 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
 
- Public Member Functions inherited from StructuralIsotropicConstitutiveLaw< MeshType >
 StructuralIsotropicConstitutiveLaw ()
 
virtual ~StructuralIsotropicConstitutiveLaw ()
 
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...
 

Detailed Description

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

Definition at line 50 of file VenantKirchhoffMaterialNonLinearPenalized.hpp.

Member Typedef Documentation

◆ super

◆ data_Type

◆ vector_Type

◆ matrix_Type

◆ matrixPtr_Type

◆ vectorPtr_Type

◆ dataPtr_Type

◆ displayerPtr_Type

◆ mapMarkerVolumesPtr_Type

◆ mapMarkerVolumes_Type

◆ mapIterator_Type

typedef mapMarkerVolumes_Type::const_iterator mapIterator_Type

◆ vectorVolumes_Type

◆ vectorVolumesPtr_Type

typedef std::shared_ptr<vectorVolumes_Type> vectorVolumesPtr_Type

◆ mapMarkerIndexesPtr_Type

◆ mapMarkerIndexes_Type

◆ mapIteratorIndex_Type

typedef mapMarkerIndexes_Type::const_iterator mapIteratorIndex_Type

◆ vectorIndexes_Type

typedef std::vector<UInt> vectorIndexes_Type

◆ vectorIndexesPtr_Type

typedef std::shared_ptr<vectorIndexes_Type> vectorIndexesPtr_Type

◆ FESpacePtr_Type

◆ ETFESpacePtr_Type

◆ vectorsParameters_Type

◆ vectorsParametersPtr_Type

◆ matrixSmall_Type

◆ tensorF_Type

◆ determinantF_Type

◆ tensorC_Type

◆ minusT_Type

◆ traceTensor_Type

◆ traceSquaredTensor_Type

Constructor & Destructor Documentation

◆ VenantKirchhoffMaterialNonLinearPenalized()

◆ ~VenantKirchhoffMaterialNonLinearPenalized()

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 StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 307 of file VenantKirchhoffMaterialNonLinearPenalized.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 this law

Implements StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 381 of file VenantKirchhoffMaterialNonLinearPenalized.hpp.

◆ updateJacobianMatrix()

void updateJacobianMatrix ( const vector_Type sol,
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 StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 393 of file VenantKirchhoffMaterialNonLinearPenalized.hpp.

◆ updateNonLinearJacobianTerms()

void updateNonLinearJacobianTerms ( matrixPtr_Type jacobian,
const vector_Type sol,
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

Nonlinear part of jacobian loop on volumes (i)

Stiffness for non-linear terms of the VK-Penalized model

The results of the integrals are stored at each step into elmatK, until to build K matrix of the bilinear form

VOLUMETRIC PART

  1. Stiffness matrix: int { 1/2 * bulk * ( 2 - 1/J + 1/J^2 ) * ( CofF : ) (CofF : v) }
  2. Stiffness matrix: int { 1/2 * bulk * ( 1/J- 1 - log(J)/J^2 ) * ( CofF1 [ ]^t CofF ) : v }

ISOCHORIC PART 0. Stiffness matrix : int { -(2.0/3.0) * Jk^(-2.0/3.0) * ( (lambda/2) * Ic_isok - ( (3/2)*lambda + mu ) ) * F^-T: ) * ( F - (1.0/3.0) * Ic_k * F^-T ): }

  1. Stiffness matrix : int { ( -4.0/3.0) * ( mu * J^(-4/3) ) * ( F^-T: ) * ( F C ) : v }
  2. Stiffness matrix : int { ( mu * J^(-4/3) ) * ( (-4.0/3.0) * ( FkCk : ) ) * F^-T : v ) }

Definition at line 412 of file VenantKirchhoffMaterialNonLinearPenalized.hpp.

◆ computeStiffness()

void computeStiffness ( const vector_Type sol,
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

Stiffness for non-linear terms of the Neo-Hookean model Volumetric part : int { bulk /2* (J1^2 - J1 + log(J1) ) * 1/J1 * (CofF1 : v) }

Isochoric part : int { J^(-2.0/3.0) * ( {lambda}{2}*Ic_isoK - {3}{2}*lambda - mu )*

Isochoric part second term

Source term P2iso_VKPenalized: int { ( mu * Jk^(-4.0/3.0) )* ( (F*C : v) - 1/3 * (Ic_squared) * (F1^-T : v) ) }

Implements StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 652 of file VenantKirchhoffMaterialNonLinearPenalized.hpp.

◆ computeKinematicsVariables()

void computeKinematicsVariables ( const VectorElemental dk_loc)
virtual

Computes the new Stiffness vector for Neo-Hookean and VK-Penalized 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 StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 748 of file VenantKirchhoffMaterialNonLinearPenalized.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 StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 890 of file VenantKirchhoffMaterialNonLinearPenalized.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 StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 908 of file VenantKirchhoffMaterialNonLinearPenalized.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 StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 977 of file VenantKirchhoffMaterialNonLinearPenalized.hpp.

◆ stiffMatrix()

matrixPtr_Type const stiffMatrix ( ) const
inlinevirtual

Get the Stiffness matrix.

Implements StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 244 of file VenantKirchhoffMaterialNonLinearPenalized.hpp.

◆ stiffVector()

vectorPtr_Type const stiffVector ( ) const
inlinevirtual

Get the stiffness vector.

Implements StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 251 of file VenantKirchhoffMaterialNonLinearPenalized.hpp.

◆ apply()

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

◆ setupVectorsParameters()

void setupVectorsParameters ( void  )
protectedvirtual

construct the vectors for the parameters

Parameters
VOID
Returns
VOID

Implements StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 341 of file VenantKirchhoffMaterialNonLinearPenalized.hpp.

Field Documentation

◆ M_stiff

vectorPtr_Type M_stiff
protected

Vector: stiffness non-linear.

Definition at line 275 of file VenantKirchhoffMaterialNonLinearPenalized.hpp.

◆ M_identity

matrixSmall_Type M_identity
protected

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