chrono::gpu::ChSystemGpuMesh Class Reference

Description

Interface to a Chrono::Gpu mesh system.

#include <ChSystemGpu.h>

Inheritance diagram for chrono::gpu::ChSystemGpuMesh:
Collaboration diagram for chrono::gpu::ChSystemGpuMesh:

Public Member Functions

 ChSystemGpuMesh (float sphere_rad, float density, float3 boxDims)
 Construct system with given sphere radius, density, and big domain dimensions.
 
unsigned int AddMesh (std::shared_ptr< geometry::ChTriangleMeshConnected > mesh, float mass)
 Add a trimesh to the granular system. More...
 
unsigned int AddMesh (const std::string &filename, const ChVector< float > &translation, const ChMatrix33< float > &rotscale, float mass)
 Add a trimesh from the specified Wavefront OBJ file to the granular system. More...
 
std::vector< unsigned int > AddMeshes (const std::vector< std::string > &objfilenames, const std::vector< ChVector< float >> &translations, const std::vector< ChMatrix33< float >> &rotscales, const std::vector< float > &masses)
 Add a set of trimeshes from Wavefront OBJ files into granular system. More...
 
void EnableMeshCollision (bool val)
 Enable/disable mesh collision (for all defined meshes).
 
void ApplyMeshMotion (unsigned int mesh_id, const ChVector<> &pos, const ChQuaternion<> &rot, const ChVector<> &lin_vel, const ChVector<> &ang_vel)
 Apply rigid body motion to specified mesh.
 
unsigned int GetNumMeshes () const
 Return the number of meshes in the system.
 
std::shared_ptr< geometry::ChTriangleMeshConnectedGetMesh (unsigned int mesh_id) const
 Return the specified mesh in the system. More...
 
float GetMeshMass (unsigned int mesh_id) const
 Return the mass of the specified mesh. More...
 
void SetStaticFrictionCoeff_SPH2MESH (float mu)
 Set sphere-to-mesh static friction coefficient.
 
void SetRollingCoeff_SPH2MESH (float mu)
 Set sphere-to-mesh rolling friction coefficient.
 
void SetSpinningCoeff_SPH2MESH (float mu)
 Set sphere-to-mesh spinning friction coefficient.
 
void SetKn_SPH2MESH (double someValue)
 Set sphere-to-mesh normal contact stiffness.
 
void SetGn_SPH2MESH (double someValue)
 Set sphere-to-mesh normal damping coefficient.
 
void SetKt_SPH2MESH (double someValue)
 Set sphere-to-mesh tangential contact stiffness.
 
void SetGt_SPH2MESH (double someValue)
 Set sphere-to-mesh tangential damping coefficient.
 
void SetAdhesionRatio_SPH2MESH (float someValue)
 Set the ratio of adhesion force to sphere weight for sphere to mesh.
 
void SetMeshVerbosity (CHGPU_MESH_VERBOSITY level)
 Set verbosity level of mesh operations.
 
virtual void Initialize () override
 Initialize simulation so that it can be advanced. More...
 
void InitializeMeshes ()
 Initialize only the trimeshes (assumes the granular material was already initialized). More...
 
virtual double AdvanceSimulation (float duration) override
 Advance simulation by duration in user units, return actual duration elapsed. More...
 
void CollectMeshContactForces (std::vector< ChVector<>> &forces, std::vector< ChVector<>> &torques)
 Collect contact forces exerted on all meshes by the granular system.
 
void CollectMeshContactForces (int mesh, ChVector<> &force, ChVector<> &torque)
 Collect contact forces exerted on the specified meshe by the granular system.
 
void WriteMeshes (std::string outfilename) const
 Write visualization files for triangle meshes with current positions.
 
- Public Member Functions inherited from chrono::gpu::ChSystemGpu
 ChSystemGpu (float sphere_rad, float density, float3 boxDims)
 Construct system with given sphere radius, density, and big domain dimensions.
 
void SetGravitationalAcceleration (const ChVector< float > g)
 Setr gravitational acceleration vector.
 
void SetParticlePositions (const std::vector< ChVector< float >> &points, const std::vector< ChVector< float >> &vels=std::vector< ChVector< float >>(), const std::vector< ChVector< float >> &ang_vels=std::vector< ChVector< float >>())
 Set particle positions.
 
void SetBDFixed (bool fixed)
 Set the big domain to be fixed or not. More...
 
void SetParticleFixed (const std::vector< bool > &fixed)
 Set flags indicating whether or not a particle is fixed. More...
 
void SetOutputMode (CHGPU_OUTPUT_MODE mode)
 Set the output mode of the simulation.
 
void SetOutputFlags (unsigned char flags)
 Set output settings bit flags by bitwise ORing settings in CHGPU_OUTPUT_FLAGS.
 
void SetFixedStepSize (float size_UU)
 Set timestep size.
 
void DisableMinLength ()
 Ensure that the deformation-based length unit is used.
 
void SetTimeIntegrator (CHGPU_TIME_INTEGRATOR new_integrator)
 Set the time integration scheme for the system.
 
void SetFrictionMode (CHGPU_FRICTION_MODE new_mode)
 Set friction formulation. More...
 
void SetRollingMode (CHGPU_ROLLING_MODE new_mode)
 Set rolling resistence formulation. More...
 
void SetStaticFrictionCoeff_SPH2SPH (float mu)
 Set sphere-to-sphere static friction coefficient.
 
void SetStaticFrictionCoeff_SPH2WALL (float mu)
 Set sphere-to-wall static friction coefficient.
 
void SetRollingCoeff_SPH2SPH (float mu)
 Set sphere-to-sphere rolling friction coefficient – units and use vary by rolling friction mode.
 
void SetRollingCoeff_SPH2WALL (float mu)
 Set sphere-to-wall rolling friction coefficient – units and use vary by rolling friction mode.
 
void SetSpinningCoeff_SPH2SPH (float mu)
 Set sphere-to-sphere spinning friction coefficient – units and use vary by spinning friction mode.
 
void SetSpinningCoeff_SPH2WALL (float mu)
 Set sphere-to-wall spinning friction coefficient – units and use vary by spinning friction mode.
 
void SetKn_SPH2SPH (double someValue)
 Set sphere-to-sphere normal contact stiffness.
 
void SetKn_SPH2WALL (double someValue)
 Set sphere-to-wall normal contact stiffness.
 
void SetGn_SPH2SPH (double someValue)
 Set sphere-to-sphere normal damping coefficient.
 
void SetGn_SPH2WALL (double someValue)
 Set sphere-to-wall normal damping coefficient.
 
void SetKt_SPH2SPH (double someValue)
 Set sphere-to-sphere tangential contact stiffness.
 
void SetGt_SPH2SPH (double someValue)
 Set sphere-to-sphere tangential damping coefficient.
 
void SetKt_SPH2WALL (double someValue)
 Set sphere-to-wall tangential contact stiffness.
 
void SetGt_SPH2WALL (double someValue)
 Set sphere-to-wall tangential damping coefficient.
 
void SetCohesionRatio (float someValue)
 Set the ratio of cohesion to gravity for monodisperse spheres. Assumes a constant cohesion model.
 
void SetAdhesionRatio_SPH2WALL (float someValue)
 Set the ratio of adhesion to gravity for sphere to wall. Assumes a constant cohesion model.
 
void SetMaxSafeVelocity_SU (float max_vel)
 Safety check velocity to ensure the simulation is still stable.
 
void SetPsiFactors (unsigned int psi_T, unsigned int psi_L, float psi_R=1.f)
 Set tuning psi factors for tuning the non-dimensionalization.
 
void SetRecordingContactInfo (bool record)
 Enable/disable recording of contact info.
 
void SetVerbosity (CHGPU_VERBOSITY level)
 Set simualtion verbosity level.
 
size_t CreateBCSphere (const ChVector< float > &center, float radius, bool outward_normal, bool track_forces)
 Create an axis-aligned sphere boundary condition.
 
size_t CreateBCConeZ (const ChVector< float > &tip, float slope, float hmax, float hmin, bool outward_normal, bool track_forces)
 Create a Z-axis aligned cone boundary condition.
 
size_t CreateBCPlane (const ChVector< float > &pos, const ChVector< float > &normal, bool track_forces)
 Create a plane boundary condition.
 
size_t CreateBCCylinderZ (const ChVector< float > &center, float radius, bool outward_normal, bool track_forces)
 Create a Z-axis aligned cylinder boundary condition.
 
bool DisableBCbyID (size_t BC_id)
 Disable a boundary condition by its ID, returns false if the BC does not exist.
 
bool EnableBCbyID (size_t BC_id)
 Enable a boundary condition by its ID, returns false if the BC does not exist.
 
bool SetBCOffsetFunction (size_t BC_id, const GranPositionFunction &offset_function)
 Enable a boundary condition by its ID, returns false if the BC does not exist.
 
void setBDWallsMotionFunction (const GranPositionFunction &pos_fn)
 Prescribe the motion of the big domain, allows wavetank-style simulations.
 
float GetSimTime () const
 Return current simulation time.
 
size_t GetNumParticles () const
 Return the total number of particles in the system.
 
float GetParticleRadius () const
 Return the radius of a spherical particle.
 
double GetMaxParticleZ () const
 Return the maximum Z position over all particles.
 
ChVector< float > GetParticlePosition (int nSphere) const
 Return particle position.
 
ChVector< float > GetParticleAngVelocity (int nSphere) const
 Return particle angular velocity.
 
ChVector< float > GetParticleVelocity (int nSphere) const
 Return particle linear velocity.
 
ChVector< float > GetBCPlanePosition (size_t plane_id) const
 Return position of BC plane.
 
bool GetBCReactionForces (size_t BC_id, ChVector< float > &force) const
 Get the reaction forces on a boundary by ID, returns false if the forces are invalid (bad BC ID)
 
int GetNumContacts () const
 Return number of particle-particle contacts.
 
unsigned int GetNumSDs () const
 Return number of subdomains in the big domain.
 
void WriteFile (std::string ofile) const
 Write particle positions according to the system output mode.
 
void WriteContactInfoFile (std::string ofile) const
 Write contact info file.
 
size_t EstimateMemUsage () const
 Roughly estimate of the total amount of memory used by the system.
 

Additional Inherited Members

- Protected Member Functions inherited from chrono::gpu::ChSystemGpu
 ChSystemGpu ()
 Protected default constructor. Derived class must create m_sys.
 
- Protected Attributes inherited from chrono::gpu::ChSystemGpu
ChSystemGpu_impl * m_sys
 underlying system implementation
 

Member Function Documentation

◆ AddMesh() [1/2]

unsigned int chrono::gpu::ChSystemGpuMesh::AddMesh ( const std::string &  filename,
const ChVector< float > &  translation,
const ChMatrix33< float > &  rotscale,
float  mass 
)

Add a trimesh from the specified Wavefront OBJ file to the granular system.

The return value is a mesh identifier which can be used during the simulation to apply rigid body motion to the mesh; see ApplyMeshMotion(). This function must be called before Initialize().

◆ AddMesh() [2/2]

unsigned int chrono::gpu::ChSystemGpuMesh::AddMesh ( std::shared_ptr< geometry::ChTriangleMeshConnected mesh,
float  mass 
)

Add a trimesh to the granular system.

The return value is a mesh identifier which can be used during the simulation to apply rigid body motion to the mesh; see ApplyMeshMotion(). This function must be called before Initialize().

◆ AddMeshes()

std::vector< unsigned int > chrono::gpu::ChSystemGpuMesh::AddMeshes ( const std::vector< std::string > &  objfilenames,
const std::vector< ChVector< float >> &  translations,
const std::vector< ChMatrix33< float >> &  rotscales,
const std::vector< float > &  masses 
)

Add a set of trimeshes from Wavefront OBJ files into granular system.

The return value is a vector of mesh identifiers which can be used during the simulation to apply rigid body motion to the mesh; see ApplyMeshMotion(). This function must be called before Initialize().

◆ AdvanceSimulation()

double chrono::gpu::ChSystemGpuMesh::AdvanceSimulation ( float  duration)
overridevirtual

Advance simulation by duration in user units, return actual duration elapsed.

Requires Initialize() to have been called.

Reimplemented from chrono::gpu::ChSystemGpu.

◆ GetMesh()

std::shared_ptr<geometry::ChTriangleMeshConnected> chrono::gpu::ChSystemGpuMesh::GetMesh ( unsigned int  mesh_id) const
inline

Return the specified mesh in the system.

The mesh is assumed to have been added with one of the AddMesh() functions.

◆ GetMeshMass()

float chrono::gpu::ChSystemGpuMesh::GetMeshMass ( unsigned int  mesh_id) const
inline

Return the mass of the specified mesh.

The mesh is assumed to have been added with one of the AddMesh() functions.

◆ Initialize()

void chrono::gpu::ChSystemGpuMesh::Initialize ( )
overridevirtual

Initialize simulation so that it can be advanced.

Must be called before AdvanceSimulation and after simulation parameters are set. This function initializes both the granular material and any existing trimeshes.

Reimplemented from chrono::gpu::ChSystemGpu.

◆ InitializeMeshes()

void chrono::gpu::ChSystemGpuMesh::InitializeMeshes ( )

Initialize only the trimeshes (assumes the granular material was already initialized).

Must be called before AdvanceSimulation and after simulation parameters are set.


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