chrono::fea::ChElasticityCosseratMesh Class Reference


Elasticity for a beam section in 3D, where the section is defined by a mesh of triangles.

This model saves you from the need of knowing I_z, I_y, A, etc., because the generalized n and m are automatically computed by integrating stresses on the triangulated section. Note that stresses are linearly interpolated between the vertexes of the triangle sections. Triangles can share vertexes. Each vertex has its own material. Section is assumed always flat, even if the section mesh is not connected, ex. if one models a section like a "8" shape where the two "o" are not connected. Benefits:

  • no need to provide I_y, I_z, A, etc.
  • possibility of getting values of stresses in different points of the section
  • possibility of using some 1D plasticity to discover plasticizing zones in the section Limitations:
  • section torsional warping not included,
  • torsion stresses are correct only in tube-like shapes, or similar; other models such as ChElasticityCosseratAdvanced contain torsional effects via the macroscopic J constant; here there is a torsion correction factor just for correcting the m_x result, but at this point, shear in material points would have less meaning.
  • shear stresses (ex. cantilever with transverse load) should be almost parabolic in the section in reality, here would be constant. Other models such as ChElasticityCosseratAdvanced correct this effect at the macroscopic level using the Timoshenko correction factors Ks_y and Ks_z, here they are used as well, but if so, shear in material points would have less meaning. This material can be shared between multiple beams.

#include <ChBeamSectionCosserat.h>

Inheritance diagram for chrono::fea::ChElasticityCosseratMesh:
Collaboration diagram for chrono::fea::ChElasticityCosseratMesh:

Public Member Functions

virtual std::vector< ChVector2<> > & Vertexes ()
 Access the list of vertexes, to get/change/add mesh section vertexes.
std::vector< std::shared_ptr< ChSectionMaterial > > & Materials ()
 Access the list of material(s), to get/change/add mesh section materials. More...
std::vector< ChVector< int > > & Triangles ()
 Access the list of triangles, to get/change/add mesh section triangles. More...
virtual void SetAsRectangularSection (double width_y, double width_z) override
 Set rectangular centered. No material defined.
virtual void SetAsCircularSection (double diameter) override
 Set circular centered. No material defined.
virtual void ComputeStress (ChVector<> &stress_n, ChVector<> &stress_m, const ChVector<> &strain_e, const ChVector<> &strain_k) override
 Compute the generalized cut force and cut torque. More...
- Public Member Functions inherited from chrono::fea::ChElasticityCosserat
virtual void ComputeStiffnessMatrix (ChMatrixDynamic<> &K, const ChVector<> &strain_e, const ChVector<> &strain_k)
 Compute the 6x6 tangent material stiffness matrix [Km]=d/d, given actual deformation and curvature (if needed). More...

Protected Attributes

std::vector< ChVector2<> > vertexes
 Compute the 6x6 tangent material stiffness matrix [Km] =d/d. More...
std::vector< std::shared_ptr< ChSectionMaterial > > materials
std::vector< ChVector< int > > triangles

Additional Inherited Members

- Public Attributes inherited from chrono::fea::ChElasticityCosserat

Member Function Documentation

void chrono::fea::ChElasticityCosseratMesh::ComputeStress ( ChVector<> &  stress_n,
ChVector<> &  stress_m,
const ChVector<> &  strain_e,
const ChVector<> &  strain_k 

Compute the generalized cut force and cut torque.

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
strain_ethe local strain (deformation part): x= elongation, y and z are shear
strain_kthe local strain (curvature part), x= torsion, y and z are line curvatures

Implements chrono::fea::ChElasticityCosserat.

std::vector<std::shared_ptr<ChSectionMaterial> >& chrono::fea::ChElasticityCosseratMesh::Materials ( )

Access the list of material(s), to get/change/add mesh section materials.

Each material correspond to an equivalent vertex. If there is only one material, it will be used for all vertexes.

std::vector<ChVector<int> >& chrono::fea::ChElasticityCosseratMesh::Triangles ( )

Access the list of triangles, to get/change/add mesh section triangles.

Each triangle has three integer indexes pointing to the three connected vertexes in the Vertexes() array, where 0 is the 1st vertex etc.

Member Data Documentation

std::vector<ChVector2<> > chrono::fea::ChElasticityCosseratMesh::vertexes

Compute the 6x6 tangent material stiffness matrix [Km] =d/d.

  • for the moment defaults to numerical differentiation *