LifeV
SecondOrderExponentialMaterialNonLinear< MeshType > Class Template Reference

#include <SecondOrderExponentialMaterialNonLinear.hpp>

+ Inheritance diagram for SecondOrderExponentialMaterialNonLinear< MeshType >:
+ Collaboration diagram for SecondOrderExponentialMaterialNonLinear< 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
 

Constructor & Destructor

 SecondOrderExponentialMaterialNonLinear ()
 
virtual ~SecondOrderExponentialMaterialNonLinear ()
 

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, 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 Exponential 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::SecondOrderExponentialMaterialNonLinear< MeshType >

Definition at line 49 of file SecondOrderExponentialMaterialNonLinear.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

Definition at line 69 of file SecondOrderExponentialMaterialNonLinear.hpp.

◆ vectorVolumes_Type

◆ vectorVolumesPtr_Type

typedef std::shared_ptr<vectorVolumes_Type> vectorVolumesPtr_Type

Definition at line 72 of file SecondOrderExponentialMaterialNonLinear.hpp.

◆ mapMarkerIndexesPtr_Type

◆ mapMarkerIndexes_Type

◆ mapIteratorIndex_Type

typedef mapMarkerIndexes_Type::const_iterator mapIteratorIndex_Type

Definition at line 76 of file SecondOrderExponentialMaterialNonLinear.hpp.

◆ vectorIndexes_Type

typedef std::vector<UInt> vectorIndexes_Type

Definition at line 78 of file SecondOrderExponentialMaterialNonLinear.hpp.

◆ vectorIndexesPtr_Type

typedef std::shared_ptr<vectorIndexes_Type> vectorIndexesPtr_Type

Definition at line 79 of file SecondOrderExponentialMaterialNonLinear.hpp.

◆ FESpacePtr_Type

◆ ETFESpacePtr_Type

◆ vectorsParameters_Type

◆ vectorsParametersPtr_Type

◆ matrixSmall_Type

◆ tensorF_Type

◆ determinantF_Type

◆ tensorC_Type

◆ minusT_Type

◆ traceTensor_Type

Constructor & Destructor Documentation

◆ SecondOrderExponentialMaterialNonLinear()

◆ ~SecondOrderExponentialMaterialNonLinear()

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 302 of file SecondOrderExponentialMaterialNonLinear.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 second order exponential material

Implements StructuralIsotropicConstitutiveLaw< MeshType >.

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

Definition at line 384 of file SecondOrderExponentialMaterialNonLinear.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

Nonlinear part of jacobian loop on volumes (i)

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

  1. Stiffness matrix : int { (- 4/3 * alpha * J^(-2/3) * exp( gamma*( Ic_iso - 3)^2 )*
    • ( Ic_isoK + ( Ic_isoK - 3 ) * ( 2 * gamma * ( Ic_isoK - 3) +1 ) ) ) * ( F^-T : ) ( F : ) }
  2. Stiffness matrix : int { 4 * alpha * J^(-4/3) * exp( gamma*( Ic_iso - 3)^2 ) * ( 1.0 + 2 * gamma * (Ic_isoK - 3 )^2 ) * ( F : ) ( F : ) }
    1. Stiffness matrix : int { ( 4.0/9.0 * alpha * Ic_isoK * exp( gamma*( Ic_iso - 3)^2 ) * ( Ic_isoK + 2 * gamma * (Ic_isoK - 3)^2 * Ic_isoK + (Ic_isoK - 3) ) ) * ( F^-T : ) ( F^-T : )}
  3. Stiffness matrix : int { (-4.0/3.0 * alpha * J^(-2/3) * exp( gamma*( Ic_iso - 3)*( Ic_iso - 3) ) * ( Ic_isoK + 2*gamma*(Ic_isok - 3)Ic + 1) ) * ( F : ) ( F^-T : ) }
  4. Stiffness matrix : int { (2 * alpha * J^(-2/3) * exp( gamma*( Ic_iso - 3)*( Ic_iso - 3))*(Ic_iso - 3) ) * ( : )}
  5. Stiffness matrix : int { 2.0/3.0 * alpha * Ic_iso * ( Ic_iso - 3) * exp(gamma*( Ic_iso - 3)*( Ic_iso - 3)) * (CofF [ ]^t CofF ) : }

Definition at line 402 of file SecondOrderExponentialMaterialNonLinear.hpp.

◆ computeStiffness()

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

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

Volumetric part

Source term Pvol: int { bulk /2* (J1^2 - J1 + log(J1) ) * 1/J1 * (CofF1 : v) }

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

Source term P1iso_Exp: int { 2 * alpha * ( Ic1_iso - 3 ) * exp(gamma *( Ic1_iso -3 )^2) * ( J1^(-2/3)* (F1 : v) - 1/3 * (Ic1_iso / J1) * (CofF1 : v) ) }

Implements StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 560 of file SecondOrderExponentialMaterialNonLinear.hpp.

◆ computeKinematicsVariables()

void computeKinematicsVariables ( const VectorElemental dk_loc)
virtual

Computes the new Stiffness vector for Neo-Hookean and Exponential 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 658 of file SecondOrderExponentialMaterialNonLinear.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 752 of file SecondOrderExponentialMaterialNonLinear.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 769 of file SecondOrderExponentialMaterialNonLinear.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 811 of file SecondOrderExponentialMaterialNonLinear.hpp.

◆ stiffMatrix()

matrixPtr_Type const stiffMatrix ( ) const
inlinevirtual

Get the Stiffness matrix.

Implements StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 239 of file SecondOrderExponentialMaterialNonLinear.hpp.

◆ stiffVector()

vectorPtr_Type const stiffVector ( ) const
inlinevirtual

Get the stiffness vector.

Implements StructuralIsotropicConstitutiveLaw< MeshType >.

Definition at line 246 of file SecondOrderExponentialMaterialNonLinear.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 340 of file SecondOrderExponentialMaterialNonLinear.hpp.

Field Documentation

◆ M_stiff

vectorPtr_Type M_stiff
protected

Vector: stiffness non-linear.

Definition at line 270 of file SecondOrderExponentialMaterialNonLinear.hpp.

◆ M_identity

matrixSmall_Type M_identity
protected

Definition at line 273 of file SecondOrderExponentialMaterialNonLinear.hpp.


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