chrono::fea::ChPlasticityCosseratLumped Class Reference

Description

Lumped plasticity of Cosserat-type beams.

This defines 6 independent yelds for the six generalized forces/moments in the beam. Note that this is a rough approximation of plasticity in beams for at least two main reasons: it cannot capture how plastic zones are made inside a section (which is mostly important when cycling with back and forth bending), and it does not capture coupled My+Mz effects, or Nx+My or Nx+Mz as often happens. Briefly: use it if plasticization happens in a scenario of pure bending on a single xy or xz plane, or pure compression/extension, or pure torsion. This can be shared between multiple beams.

#include <ChBeamSectionCosserat.h>

Inheritance diagram for chrono::fea::ChPlasticityCosseratLumped:
Collaboration diagram for chrono::fea::ChPlasticityCosseratLumped:

Public Member Functions

virtual bool ComputeStressWithReturnMapping (ChVector<> &stress_n, ChVector<> &stress_m, ChVector<> &e_strain_e_new, ChVector<> &e_strain_k_new, ChBeamMaterialInternalData &data_new, const ChVector<> &tot_strain_e, const ChVector<> &tot_strain_k, const ChBeamMaterialInternalData &data) override
 
virtual void CreatePlasticityData (int numpoints, std::vector< std::unique_ptr< ChBeamMaterialInternalData > > &plastic_data)
 Compute the 6x6 tangent material stiffness matrix [Km]=d/d, given actual internal data and deformation and curvature (if needed). More...
 
virtual void SetAsRectangularSection (double width_y, double width_z) override
 Shortcut: set parameters at once, given the y and z widths of the beam assumed with rectangular shape. More...
 
virtual void SetAsCircularSection (double diameter) override
 Shortcut: set parameters at once, given the diameter of the beam assumed with circular shape. More...
 
- Public Member Functions inherited from chrono::fea::ChPlasticityCosserat
virtual void ComputeStiffnessMatrixElastoplastic (ChMatrixDynamic<> &K, const ChVector<> &strain_e, const ChVector<> &strain_k, const ChBeamMaterialInternalData &data)
 Compute the 6x6 tangent material stiffness matrix [Km]=d/d, given actual internal data and deformation and curvature (if needed). More...
 

Public Attributes

std::shared_ptr< ChFunctionn_yeld_x
 
std::shared_ptr< ChFunctionn_beta_x
 
std::shared_ptr< ChFunctionn_yeld_y
 
std::shared_ptr< ChFunctionn_beta_y
 
std::shared_ptr< ChFunctionn_yeld_z
 
std::shared_ptr< ChFunctionn_beta_z
 
std::shared_ptr< ChFunctionn_yeld_Mx
 
std::shared_ptr< ChFunctionn_beta_Mx
 
std::shared_ptr< ChFunctionn_yeld_My
 
std::shared_ptr< ChFunctionn_beta_My
 
std::shared_ptr< ChFunctionn_yeld_Mz
 
std::shared_ptr< ChFunctionn_beta_Mz
 
- Public Attributes inherited from chrono::fea::ChPlasticityCosserat
ChBeamSectionCosseratsection
 
double nr_yeld_tolerance
 
int nr_yeld_maxiters
 

Member Function Documentation

bool chrono::fea::ChPlasticityCosseratLumped::ComputeStressWithReturnMapping ( ChVector<> &  stress_n,
ChVector<> &  stress_m,
ChVector<> &  e_strain_e_new,
ChVector<> &  e_strain_k_new,
ChBeamMaterialInternalData data_new,
const ChVector<> &  tot_strain_e,
const ChVector<> &  tot_strain_k,
const ChBeamMaterialInternalData data 
)
overridevirtual

<<<< sigma_y(p_strain_acc)

<<<< beta(p_strain_e)

<<<< sigma_y(p_strain_acc)

<<<< beta(p_strain_acc)

<<<< sigma_y(p_strain_acc)

<<<< beta(p_strain_acc)

<<<< sigma_y(p_strain_acc)

<<<< beta(p_strain_acc)

<<<< sigma_y(p_strain_acc)

<<<< beta(p_strain_acc)

<<<< sigma_y(p_strain_acc)

<<<< beta(p_strain_acc)

<<<< sigma_y(p_strain_acc)

<<<< beta(p_strain_acc)

Parameters
stress_nreturn the local stress (generalized force), x component = traction along beam
stress_mreturn the local stress (generalized torque), x component = torsion torque along beam
e_strain_e_newreturn updated elastic strain (deformation part)
e_strain_k_newreturn updated elastic strain (curvature part)
data_newreturn updated material internal variables, at this point, including {p_strain_e, p_strain_k, p_strain_acc}
tot_strain_etrial tot strain (deformation part): x= elongation, y and z are shear
tot_strain_ktrial tot strain (curvature part), x= torsion, y and z are line curvatures
datacurrent material internal variables, at this point, including {p_strain_e, p_strain_k, p_strain_acc}

Implements chrono::fea::ChPlasticityCosserat.

virtual void chrono::fea::ChPlasticityCosseratLumped::CreatePlasticityData ( int  numpoints,
std::vector< std::unique_ptr< ChBeamMaterialInternalData > > &  plastic_data 
)
virtual

Compute the 6x6 tangent material stiffness matrix [Km]=d/d, given actual internal data and deformation and curvature (if needed).

If in plastic regime, uses elastoplastic matrix, otherwise uses elastic.

Reimplemented from chrono::fea::ChPlasticityCosserat.

virtual void chrono::fea::ChPlasticityCosseratLumped::SetAsCircularSection ( double  diameter)
overridevirtual

Shortcut: set parameters at once, given the diameter of the beam assumed with circular shape.

Implements chrono::fea::ChPlasticityCosserat.

virtual void chrono::fea::ChPlasticityCosseratLumped::SetAsRectangularSection ( double  width_y,
double  width_z 
)
overridevirtual

Shortcut: set parameters at once, given the y and z widths of the beam assumed with rectangular shape.

Implements chrono::fea::ChPlasticityCosserat.