Description

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 (TO BE REMOVED IN FUTURE using Vlasov / Prandtl theories):

  • 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)
 Set rectangular centered section, using two triangles. More...
 
virtual void SetAsCircularSection (double diameter)
 Set circular centered, using n triangles. More...
 
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 (ChMatrixNM< double, 6, 6 > &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
 
std::vector< std::shared_ptr< ChSectionMaterial > > materials
 
std::vector< ChVector< int > > triangles
 

Additional Inherited Members

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

Member Function Documentation

◆ ComputeStress()

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

Compute the generalized cut force and cut torque.

Parameters
stress_nlocal stress (generalized force), x component = traction along beam
stress_mlocal stress (generalized torque), x component = torsion torque along beam
strain_elocal strain (deformation part): x= elongation, y and z are shear
strain_klocal strain (curvature part), x= torsion, y and z are line curvatures

Implements chrono::fea::ChElasticityCosserat.

◆ Materials()

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

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.

◆ SetAsCircularSection()

void chrono::fea::ChElasticityCosseratMesh::SetAsCircularSection ( double  diameter)
virtual

Set circular centered, using n triangles.

Note: for testing only, use ChElasticityCosseratSimple instead. No material defined: you still must set E and G.

◆ SetAsRectangularSection()

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

Set rectangular centered section, using two triangles.

Note: for testing only, use ChElasticityCosseratSimple instead. No material defined: you still must set E and G.

◆ Triangles()

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

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.


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