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>
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) | |
ChMesh * | GetMesh () |
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'. | |
std::shared_ptr< ChMaterialSurface > & | GetMaterialSurface () |
Set the material surface for 'boundary contact'. | |
Additional Inherited Members | |
Protected Attributes inherited from chrono::fea::ChContactSurface | |
std::shared_ptr< ChMaterialSurface > | matsurface |
material for contacts | |
ChMesh * | mmesh |
Member Function Documentation
◆ AddFacesFromBoundary()
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:
- solids:
- ChElementTetra_4: tetrahedrons
- ChFaceBrick_9: solid hexahedrons
- shells:
- ChElementShellANCF ANCF: shells (only one side)
- ChElementShellReissner: Reissner 4-nodes shells (only one side)
- beams:
- ChElementCableANCF: ANCF beams (as sphere-swept lines, i.e. sequence of capsules)
- ChElementBeamEuler: Euler-Bernoulli beams (as sphere-swept lines, i.e. sequence of capsules) More will follow in future.
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_swept radius of swept sphere ccw indicate clockwise or counterclockwise vertex ordering
◆ GetTriangleList()
|
inline |
As AddFacesFromBoundary, but only for faces containing selected nodes in node_set.
Get the list of triangles.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono/fea/ChContactSurfaceMesh.h
- /builds/uwsbel/chrono/src/chrono/fea/ChContactSurfaceMesh.cpp