chrono::fea::ChContactSurfaceMesh Class Reference

Description

Class which defines a contact surface for FEA elements, using a mesh of triangles.

Differently from ChContactSurfaceNodeCloud, this also captures the FEAnodes-vs-FEAfaces and FEAedge-vs-FEAedges cases, but it has a higher computational overhead

#include <ChContactSurfaceMesh.h>

Inheritance diagram for chrono::fea::ChContactSurfaceMesh:
Collaboration diagram for chrono::fea::ChContactSurfaceMesh:

Public Member Functions

 ChContactSurfaceMesh (ChMesh *parentmesh=0)
 
void AddFacesFromBoundary (double sphere_swept=0.0, bool ccw=true)
 Given a FEA mesh (ex a mesh of tetrahedrons) it finds the faces on the outer boundary. More...
 
std::vector< std::shared_ptr< ChContactTriangleXYZ > > & GetTriangleList ()
 As AddFacesFromBoundary, but only for faces containing selected nodes in node_set. More...
 
std::vector< std::shared_ptr< ChContactTriangleXYZROT > > & GetTriangleListRot ()
 Get the list of triangles, for nodes with rotational dofs too.
 
unsigned int GetNumTriangles () const
 Get the number of triangles.
 
unsigned int GetNumVertices () const
 Get the number of vertices.
 
virtual void SurfaceSyncCollisionModels ()
 Functions to interface this with ChPhysicsItem container.
 
virtual void SurfaceAddCollisionModelsToSystem (ChSystem *msys)
 
virtual void SurfaceRemoveCollisionModelsFromSystem (ChSystem *msys)
 
- Public Member Functions inherited from chrono::fea::ChContactSurface
 ChContactSurface (ChMesh *parentmesh=0)
 
ChMeshGetMesh ()
 Get owner mesh.
 
void SetMesh (ChMesh *mm)
 Set owner mesh.
 
void SetMaterialSurface (const std::shared_ptr< ChMaterialSurface > &mnewsurf)
 Set the material surface for 'boundary contact'.
 
virtual std::shared_ptr< ChMaterialSurface > & GetMaterialSurfaceBase ()
 Set the material surface for 'boundary contact'.
 

Additional Inherited Members

- Protected Attributes inherited from chrono::fea::ChContactSurface
std::shared_ptr< ChMaterialSurfacematsurface
 material for contacts
 
ChMeshmmesh
 

Member Function Documentation

void chrono::fea::ChContactSurfaceMesh::AddFacesFromBoundary ( double  sphere_swept = 0.0,
bool  ccw = true 
)

Given a FEA mesh (ex a mesh of tetrahedrons) it finds the faces on the outer boundary.

That is, it scans all the finite elements already added in the parent ChMesh and adds the faces that are not shared (ie. the faces on the boundary 'skin'). For shells, the argument 'ccw' indicates whether the face vertices are provided in a counter-clockwise (default) or clockwise order, this has a reason: shells collisions are oriented and might work only from the "outer" side. Supported elements that generate boundary skin:

Case1. Outer skin boundary of meshes of TETRAHEDRONS:

Case2. skin of ANCF SHELLS:

Case3. EULER BEAMS (handles as a skinny triangle, with sphere swept radii, i.e. a capsule):

Case4. ANCF BEAMS (handles as a skinny triangle, with sphere swept radii, i.e. a capsule):

Case5. Outer surface boundaries of 9-node brick meshes:

Case6. skin of REISSNER SHELLS:

Case7. Outer surface boundaries of 8-node hexahedron brick meshes:

Parameters
sphere_sweptradius of swept sphere
ccwindicate clockwise or counterclockwise vertex ordering
std::vector<std::shared_ptr<ChContactTriangleXYZ> >& chrono::fea::ChContactSurfaceMesh::GetTriangleList ( )

As AddFacesFromBoundary, but only for faces containing selected nodes in node_set.

Get the list of triangles.