chrono::fea::ChMaterialShellKirchhoff Class Reference

Description

Material for a single layer of a thin shell (Kirchoff-Love shell theory, i.e.

shells without shear effects). This base implementation assumes that one creates a ChMaterialShellKirchhoff by providing three components:

Thickness is defined when adding a ChMaterialShellKirchhoff material as a layer in a shell finite element. A material can be shared between multiple layers.

#include <ChMaterialShellKirchhoff.h>

Public Member Functions

 ChMaterialShellKirchhoff (std::shared_ptr< ChElasticityKirchhoff > melasticity)
 
 ChMaterialShellKirchhoff (std::shared_ptr< ChElasticityKirchhoff > melasticity, std::shared_ptr< ChPlasticityKirchhoff > mplasticity)
 
 ChMaterialShellKirchhoff (std::shared_ptr< ChElasticityKirchhoff > melasticity, std::shared_ptr< ChPlasticityKirchhoff > mplasticity, std::shared_ptr< ChDampingKirchhoff > mdamping)
 
virtual void ComputeStress (ChVector<> &n, ChVector<> &m, const ChVector<> &eps, const ChVector<> &kur, const double z_inf, const double z_sup, const double angle, ChShellKirchhoffInternalData *mdata_new=nullptr, const ChShellKirchhoffInternalData *mdata=nullptr)
 Compute the generalized cut force and cut torque, given the actual generalized section strain expressed as deformation vector e and curvature k, that is: {n,m}=f({e,k}), and given the actual material state required for plasticity if any (but if mdata=nullptr, computes only the elastic force). More...
 
virtual void ComputeStiffnessMatrix (ChMatrixRef K, const ChVector<> &eps, const ChVector<> &kur, const double z_inf, const double z_sup, const double angle, const ChShellKirchhoffInternalData *mdata=nullptr)
 Compute the 6x6 tangent material stiffness matrix [Km] = dσ/dε at a given strain state, and at given internal data state (if mdata=nullptr, computes only the elastic tangent stiffenss, regardless of plasticity). More...
 
void SetElasticity (std::shared_ptr< ChElasticityKirchhoff > melasticity)
 Set the elasticity model for this section. More...
 
std::shared_ptr< ChElasticityKirchhoffGetElasticity ()
 Get the elasticity model for this section. More...
 
void SetPlasticity (std::shared_ptr< ChPlasticityKirchhoff > mplasticity)
 Set the plasticity model for this section. More...
 
std::shared_ptr< ChPlasticityKirchhoffGetPlasticity ()
 Get the elasticity model for this section, if any. More...
 
void SetDamping (std::shared_ptr< ChDampingKirchhoff > mdamping)
 Set the damping model for this section. More...
 
std::shared_ptr< ChDampingKirchhoffGetDamping ()
 Get the damping model for this section. More...
 
void SetDensity (double md)
 Set the density of the shell (kg/m^3)
 
double GetDensity () const
 

Constructor & Destructor Documentation

◆ ChMaterialShellKirchhoff() [1/3]

chrono::fea::ChMaterialShellKirchhoff::ChMaterialShellKirchhoff ( std::shared_ptr< ChElasticityKirchhoff melasticity)
Parameters
melasticityelasticity model

◆ ChMaterialShellKirchhoff() [2/3]

chrono::fea::ChMaterialShellKirchhoff::ChMaterialShellKirchhoff ( std::shared_ptr< ChElasticityKirchhoff melasticity,
std::shared_ptr< ChPlasticityKirchhoff mplasticity 
)
Parameters
melasticityelasticity model
mplasticityplasticity model, if any

◆ ChMaterialShellKirchhoff() [3/3]

chrono::fea::ChMaterialShellKirchhoff::ChMaterialShellKirchhoff ( std::shared_ptr< ChElasticityKirchhoff melasticity,
std::shared_ptr< ChPlasticityKirchhoff mplasticity,
std::shared_ptr< ChDampingKirchhoff mdamping 
)
Parameters
melasticityelasticity model
mplasticityplasticity model, if any
mdampingdamping model, if any

Member Function Documentation

◆ ComputeStiffnessMatrix()

void chrono::fea::ChMaterialShellKirchhoff::ComputeStiffnessMatrix ( ChMatrixRef  K,
const ChVector<> &  eps,
const ChVector<> &  kur,
const double  z_inf,
const double  z_sup,
const double  angle,
const ChShellKirchhoffInternalData mdata = nullptr 
)
virtual

Compute the 6x6 tangent material stiffness matrix [Km] = dσ/dε at a given strain state, and at given internal data state (if mdata=nullptr, computes only the elastic tangent stiffenss, regardless of plasticity).

Parameters
K12x12 stiffness matrix
epsstrains e_11, e_22, e_12
kurcurvature k_11, k_22, k_12
z_inflayer lower z value (along thickness coord)
z_suplayer upper z value (along thickness coord)
anglelayer angle respect to x (if needed)
mdatamaterial internal variables, at this point, if any, including {p_strain_e, p_strain_k, p_strain_acc}

◆ ComputeStress()

void chrono::fea::ChMaterialShellKirchhoff::ComputeStress ( ChVector<> &  n,
ChVector<> &  m,
const ChVector<> &  eps,
const ChVector<> &  kur,
const double  z_inf,
const double  z_sup,
const double  angle,
ChShellKirchhoffInternalData mdata_new = nullptr,
const ChShellKirchhoffInternalData mdata = nullptr 
)
virtual

Compute the generalized cut force and cut torque, given the actual generalized section strain expressed as deformation vector e and curvature k, that is: {n,m}=f({e,k}), and given the actual material state required for plasticity if any (but if mdata=nullptr, computes only the elastic force).

If there is plasticity, the stress is clamped by automatically performing an implicit return mapping. In sake of generality, if possible this is the function that should be used by beam finite elements to compute internal forces, ex.by some Gauss quadrature.

Parameters
nforces n_11, n_22, n_12 (per unit length)
mtorques m_11, m_22, m_12 (per unit length)
epsstrains e_11, e_22, e_12
kurcurvature k_11, k_22, k_12
z_inflayer lower z value (along thickness coord)
z_suplayer upper z value (along thickness coord)
anglelayer angle respect to x (if needed)
mdata_newupdated material internal variables, at this point, including {p_strain_e, p_strain_k, p_strain_acc}
mdatacurrent material internal variables, at this point, including {p_strain_e, p_strain_k, p_strain_acc}

◆ GetDamping()

std::shared_ptr<ChDampingKirchhoff> chrono::fea::ChMaterialShellKirchhoff::GetDamping ( )
inline

Get the damping model for this section.

By default no damping.

◆ GetElasticity()

std::shared_ptr<ChElasticityKirchhoff> chrono::fea::ChMaterialShellKirchhoff::GetElasticity ( )
inline

Get the elasticity model for this section.

Use this function to access parameters such as stiffness, Young modulus, etc. By default it uses a simple centered linear elastic model.

◆ GetPlasticity()

std::shared_ptr<ChPlasticityKirchhoff> chrono::fea::ChMaterialShellKirchhoff::GetPlasticity ( )
inline

Get the elasticity model for this section, if any.

Use this function to access parameters such as yeld limit, etc.

◆ SetDamping()

void chrono::fea::ChMaterialShellKirchhoff::SetDamping ( std::shared_ptr< ChDampingKirchhoff mdamping)

Set the damping model for this section.

By default no damping.

◆ SetElasticity()

void chrono::fea::ChMaterialShellKirchhoff::SetElasticity ( std::shared_ptr< ChElasticityKirchhoff melasticity)

Set the elasticity model for this section.

By default it uses a simple centered linear elastic model, but you can set more complex models.

◆ SetPlasticity()

void chrono::fea::ChMaterialShellKirchhoff::SetPlasticity ( std::shared_ptr< ChPlasticityKirchhoff mplasticity)

Set the plasticity model for this section.

This is independent from the elasticity model. Note that by default there is no plasticity model, so by default plasticity never happens.


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