chrono::fea::ChMaterial3DStressNeoHookean Class Reference

Description

Class for properties of the 3D elasticity from Neo-Hookean model.

It is a simple type of hyperelastic material that, for small strains, converges to linear elasticity. Yet can be used for large rotations etc. Better than the ChMaterial3DStressStVenant because it can withstand larger compression. It can be used for metals and rubber (up to moderate deformations)

#include <ChMaterial3DStressNeoHookean.h>

Inheritance diagram for chrono::fea::ChMaterial3DStressNeoHookean:
Collaboration diagram for chrono::fea::ChMaterial3DStressNeoHookean:

Public Member Functions

 ChMaterial3DStressNeoHookean (double young=10000000, double poisson=0.4, double density=1000)
 
void SetYoungModulus (double E)
 Set the Young elastic modulus, in Pa (N/m^2), as the ratio of the uniaxial stress over the uniaxial strain, for hookean materials.
 
double GetYoungModulus () const
 Get the Young elastic modulus, in Pa (N/m^2).
 
void SetPoissonRatio (double v)
 Set the Poisson ratio, as v=-transverse_strain/axial_strain, so takes into account the 'squeezing' effect of materials that are pulled. More...
 
double GetPoissonRatio () const
 Get the Poisson ratio, as v=-transverse_strain/axial_strain.
 
void SetShearModulus (double G)
 Set the shear modulus G, in Pa (N/m^2). More...
 
double GetShearModulus () const
 Get the shear modulus G, in Pa (N/m^2)
 
double GetLameFirstParam () const
 Get Lamé first parameter (the second is shear modulus, so GetShearModulus() )
 
double GetBulkModulus () const
 Get bulk modulus (increase of pressure for decrease of volume), in Pa.
 
double GetPWaveModulus () const
 Get P-wave modulus (if V=speed of propagation of a P-wave, then (M/density)=V^2 )
 
virtual void ComputeElasticStress (ChStressTensor<> &stress, const ChMatrix33d &C_deformation) override
 Compute elastic stress from elastic strain. More...
 
virtual void ComputeElasticTangentModulus (ChMatrixNM< double, 6, 6 > &C, const ChMatrix33d &C_def) override
 Computes the tangent modulus C. More...
 
void SetRayleighDampingAlpha (double alpha)
 Set the Rayleigh mass-proportional damping factor alpha, to build damping R as R=alpha*M + beta*K.
 
double GetRayleighDampingAlpha () const
 Set the Rayleigh mass-proportional damping factor alpha, in R=alpha*M + beta*K.
 
void SetRayleighDampingBeta (double beta)
 Set the Rayleigh stiffness-proportional damping factor beta, to build damping R as R=alpha*M + beta*K.
 
double GetRayleighDampingBeta () const
 Set the Rayleigh stiffness-proportional damping factor beta, in R=alpha*M + beta*K.
 
- Public Member Functions inherited from chrono::fea::ChMaterial3DHyperelastic
virtual void ComputeStress (ChStressTensor<> &S_stress, const ChMatrix33d &F, const ChMatrix33d *l, ChFieldData *data_per_point, ChElementData *data_per_element) override
 Implement interface to lower level stress material. More...
 
virtual void ComputeTangentModulus (ChMatrixNM< double, 6, 6 > &C, const ChMatrix33d &F, const ChMatrix33d *l, ChFieldData *data_per_point, ChElementData *data_per_element) override
 Implement interface to lower level stress material. More...
 
virtual bool IsSpatialVelocityGradientNeeded () const override
 Hyperelastic materials do not need info on the spatial velocity gradient l=\nabla_x v , Returning false from this means that the ChDomainXXYY can know that the computation of the "l" parameter could be skipped left to null when calling ComputeStress(...)
 
- Public Member Functions inherited from chrono::fea::ChMaterial3DStress
virtual void ComputeUpdateEndStep (ChFieldData *data_per_point, ChElementData *data_per_element, const double time)
 Update your own auxiliary data, if any, at the end of time step (ex for plasticity). More...
 
- Public Member Functions inherited from chrono::fea::ChMaterial3DDensity
 ChMaterial3DDensity (double density=1000)
 
virtual void SetDensity (double density)
 Set the density of the material, in kg/m^2.
 
virtual double GetDensity () const
 Get the density of the material, in kg/m^2.
 
- Public Member Functions inherited from chrono::fea::ChMaterial
virtual std::unique_ptr< ChFieldDataCreateMaterialPointData () const
 Implement this if the material needs custom data per material point, returning a std::make_unique<ChFieldDataCustom>() where ChFieldDataCustom is your custom class with aditional states/properties per-point.
 

Additional Inherited Members

- Protected Attributes inherited from chrono::fea::ChMaterial3DDensity
double m_density
 

Member Function Documentation

◆ ComputeElasticStress()

virtual void chrono::fea::ChMaterial3DStressNeoHookean::ComputeElasticStress ( ChStressTensor<> &  stress,
const ChMatrix33d C_deformation 
)
inlineoverridevirtual

Compute elastic stress from elastic strain.

Starts computing Green-Lagrange strain E from C_deformation, the right Cauchy-Green deformation. For small strains the Green Lagrange strain in Voigt notation coincides with espilon tensor. Return stress as Piola-Kirchhoff S tensor, in Voigt notation.

Implements chrono::fea::ChMaterial3DHyperelastic.

◆ ComputeElasticTangentModulus()

virtual void chrono::fea::ChMaterial3DStressNeoHookean::ComputeElasticTangentModulus ( ChMatrixNM< double, 6, 6 > &  C,
const ChMatrix33d C_def 
)
inlineoverridevirtual

Computes the tangent modulus C.

It takes the right Cauchy-Green deformation tensor C_def, and returns the tangent modulus in 6x6 matrix C, for dS = C * dE where S is 2nd PK stress, and E is Green Lagrange strain.

Reimplemented from chrono::fea::ChMaterial3DHyperelastic.

◆ SetPoissonRatio()

void chrono::fea::ChMaterial3DStressNeoHookean::SetPoissonRatio ( double  v)
inline

Set the Poisson ratio, as v=-transverse_strain/axial_strain, so takes into account the 'squeezing' effect of materials that are pulled.

Note: v=0.5 means perfectly incompressible material, that could give problems with some type of solvers. Setting v also changes G.

◆ SetShearModulus()

void chrono::fea::ChMaterial3DStressNeoHookean::SetShearModulus ( double  G)
inline

Set the shear modulus G, in Pa (N/m^2).

Setting G also changes Poisson ratio v.


The documentation for this class was generated from the following file:
  • /builds/uwsbel/chrono/src/chrono/fea/ChMaterial3DStressNeoHookean.h