Description

Interface to a Chrono::Gpu system.

#include <ChSystemGpu.h>

Inheritance diagram for chrono::gpu::ChSystemGpu:

Public Member Functions

 ChSystemGpu (float sphere_rad, float density, const ChVector< float > &boxDims, ChVector< float > O=ChVector< float >(0))
 Construct system with given sphere radius, density, big domain dimensions and center.
 
 ChSystemGpu (const std::string &checkpoint)
 Construct system with a checkpoint file.
 
void SetGravitationalAcceleration (const ChVector< float > &g)
 Set gravitational acceleration vector.
 
void SetParticles (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, velocities and angular velocities.
 
void ReadParticleFile (const std::string &infilename)
 Set particle positions, velocities and angular velocities from a file.
 
void ReadContactHistoryFile (const std::string &infilename)
 Set particle contact friction history from a file.
 
void ReadCheckpointFile (const std::string &infilename, bool overwrite=false)
 
void SetBDFixed (bool fixed)
 Set the big domain to be fixed or not. More...
 
void SetBDCenter (const ChVector< float > &O)
 Set the center of the big box domain, relative to the origin of the coordinate system (default: [0,0,0]). More...
 
void SetParticleFixed (const std::vector< bool > &fixed)
 Set flags indicating whether or not a particle is fixed. More...
 
void SetParticleOutputMode (CHGPU_OUTPUT_MODE mode)
 Set the output mode of the simulation.
 
void SetParticleOutputFlags (unsigned int flags)
 Set output settings bit flags by bitwise ORing settings in CHGPU_OUTPUT_FLAGS.
 
void SetFixedStepSize (float size_UU)
 Set timestep size.
 
void SetDefragmentOnInitialize (bool defragment)
 If yes, on Initialize(), particles will have their order re-arranged so that those in the same SD are close together. More...
 
void EnableMinLength (bool useMinLen)
 Ensure that the deformation-based length unit is used.
 
void DisableMinLength ()
 
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 UseMaterialBasedModel (bool val)
 
void SetYoungModulus_SPH (double someValue)
 Set youngs modulus of spheres.
 
void SetYoungModulus_WALL (double someValue)
 Set youngs modulus of boundary.
 
void SetPoissonRatio_SPH (double someValue)
 Set poisson ratio of sphere.
 
void SetPoissonRatio_WALL (double someValue)
 Set poisson ratio of boundary.
 
void SetRestitution_SPH (double someValue)
 Set coefficient of restitution of spheres.
 
void SetRestitution_WALL (double someValue)
 Set coefficient of restitution of spheres.
 
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 SetPsiT (unsigned int psi_T)
 
void SetPsiL (unsigned int psi_L)
 
void SetPsiR (float psi_R=1.f)
 
void SetRecordingContactInfo (bool record)
 Enable/disable recording of contact info.
 
void SetSimTime (float time)
 Manually set the simulation time (mainly used for restarted simulation).
 
void SetVerbosity (CHGPU_VERBOSITY level)
 Set simualtion verbosity level.
 
size_t CreateBCSphere (const ChVector< float > &center, float radius, bool outward_normal, bool track_forces, float mass)
 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 CreateCustomizedPlate (const ChVector< float > &pos_center, const ChVector< float > &normal, float hdim_y)
 create a plate 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.
 
double GetMaxParticleZ () const
 Return the maximum Z position over all particles.
 
double GetMinParticleZ () const
 Return the minimum Z position over all particles.
 
float GetParticleRadius () const
 Return the radius of a spherical particle.
 
ChVector< float > GetParticlePosition (int nSphere) const
 Return particle position.
 
void SetParticlePosition (int nSphere, const ChVector< double > pos)
 Set particle position.
 
void SetParticleVelocity (int nSphere, const ChVector< double > velo)
 Set particle velocity.
 
ChVector< float > GetParticleAngVelocity (int nSphere) const
 Return particle angular velocity.
 
ChVector< float > GetParticleLinAcc (int nSphere) const
 return particle acc
 
bool IsFixed (int nSphere) const
 Return whether or not the particle is fixed.
 
ChVector< float > GetParticleVelocity (int nSphere) const
 Return particle linear velocity.
 
float GetParticlesKineticEnergy () const
 Return the total kinetic energy of all particles.
 
ChVector< float > GetBCPlanePosition (size_t plane_id) const
 Return position of BC plane.
 
ChVector< float > GetBCSpherePosition (size_t sphere_id) const
 Return position of BC sphere.
 
void SetBCSpherePosition (size_t sphere_bc_id, const ChVector< float > &pos)
 Set position of BC spheres.
 
ChVector< float > GetBCSphereVelocity (size_t sphere_id) const
 Return velocity of BC sphere.
 
void SetBCSphereVelocity (size_t sphere_bc_id, const ChVector< float > &velo)
 Set velocity of BC spheres.
 
void SetBCPlaneRotation (size_t plane_id, ChVector< double > center, ChVector< double > omega)
 Set BC plane rotation.
 
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.
 
virtual void Initialize ()
 Initialize simulation so that it can be advanced. More...
 
virtual double AdvanceSimulation (float duration)
 Advance simulation by duration in user units, return actual duration elapsed. More...
 
void WriteCheckpointFile (const std::string &outfilename)
 Write a one-stop checkpoint file for Chrono::Gpu. More...
 
void WriteParticleFile (const std::string &outfilename) const
 Write particle positions according to the system output mode.
 
void WriteContactHistoryFile (const std::string &outfilename) const
 Write contact pair history to a file.
 
void WriteContactInfoFile (const std::string &outfilename) const
 Write contact force and torque to a file.
 
size_t EstimateMemUsage () const
 Roughly estimate of the total amount of memory used by the system.
 
ChVector< float > getRollingFrictionTorque (int i, int j)
 Get rolling friction torque between body i and j, return 0 if not in contact.
 
ChVector< float > getSlidingFrictionForce (int i, int j)
 Get tangential friction force between body i and j, return 0 if not in contact.
 
ChVector< float > getNormalForce (int i, int j)
 Get normal friction force between body i and j, return 0 if not in contact.
 
ChVector< float > getRollingVrot (int i, int j)
 Get v_rot for rolling friction.
 
float getRollingCharContactTime (int i, int j)
 get contact char time
 
void getNeighbors (int ID, std::vector< int > &neighborList)
 get index list of neighbors
 

Protected Member Functions

 ChSystemGpu ()
 Protected default constructor. Derived class must create m_sys.
 
void ReadCsvParticles (std::ifstream &ifile, unsigned int totRow=UINT_MAX)
 Set particle positions, velocities and angular velocities from a CSV ifstream. More...
 
void ReadHstHistory (std::ifstream &ifile, unsigned int totItem=UINT_MAX)
 Set particle contact friction history from a hst ifstream. More...
 
virtual bool SetParamsFromIdentifier (const std::string &identifier, std::istringstream &iss1, bool overwrite)
 Give a string identifier, set the corresponding simulation parameter, using a switch statement. More...
 
unsigned int ReadDatParams (std::ifstream &ifile, bool overwrite)
 Set simulation params from a DAT checkpoint file stream. More...
 
void WriteCheckpointParams (std::ofstream &cpFile) const
 Write simulation params to a stream. WriteCheckpointFile() is its wrapper.
 
void WriteCsvParticles (std::ofstream &ptFile) const
 Write particle position, velocity and ang. More...
 
void WriteRawParticles (std::ofstream &ptFile) const
 
void WriteChPFParticles (std::ofstream &ptFile) const
 
void WriteHstHistory (std::ofstream &histFile) const
 Write contact pair/history to a stream. More...
 
void SetGravitationalAcceleration (const float3 g)
 Set gravitational acceleration as a float3 vector.
 

Protected Attributes

ChSystemGpu_impl * m_sys
 underlying system implementation
 

Member Function Documentation

◆ AdvanceSimulation()

double chrono::gpu::ChSystemGpu::AdvanceSimulation ( float  duration)
virtual

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

Requires Initialize() to have been called.

Reimplemented in chrono::gpu::ChSystemGpuMesh.

◆ Initialize()

void chrono::gpu::ChSystemGpu::Initialize ( )
virtual

Initialize simulation so that it can be advanced.

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

Reimplemented in chrono::gpu::ChSystemGpuMesh.

◆ ReadCsvParticles()

void chrono::gpu::ChSystemGpu::ReadCsvParticles ( std::ifstream &  ifile,
unsigned int  totRow = UINT_MAX 
)
protected

Set particle positions, velocities and angular velocities from a CSV ifstream.

Methods that read sphere position/velocity info from a file serve as its wrapper.

◆ ReadDatParams()

unsigned int chrono::gpu::ChSystemGpu::ReadDatParams ( std::ifstream &  ifile,
bool  overwrite 
)
protected

Set simulation params from a DAT checkpoint file stream.

Returns the number of particles. If instructed to overwrite, then overwrite current simulation parameters with the values in the checkpoint file; else, when an inconsistency is found, throw an error. ReadCheckpointFile() is its wrapper.

◆ ReadHstHistory()

void chrono::gpu::ChSystemGpu::ReadHstHistory ( std::ifstream &  ifile,
unsigned int  totItem = UINT_MAX 
)
protected

Set particle contact friction history from a hst ifstream.

Methods that read history info from a file serve as its wrapper.

◆ SetBDCenter()

void chrono::gpu::ChSystemGpu::SetBDCenter ( const ChVector< float > &  O)

Set the center of the big box domain, relative to the origin of the coordinate system (default: [0,0,0]).

Note that the domain is always axis-aligned. The user must make sure that all simulation information (particle locations, boundaries, meshes...) is consistent with this domain.

◆ SetBDFixed()

void chrono::gpu::ChSystemGpu::SetBDFixed ( bool  fixed)

Set the big domain to be fixed or not.

If fixed, it will ignore any given position functions.

◆ SetDefragmentOnInitialize()

void chrono::gpu::ChSystemGpu::SetDefragmentOnInitialize ( bool  defragment)

If yes, on Initialize(), particles will have their order re-arranged so that those in the same SD are close together.

This is usually done if starting from scratch, and optional if this is a re-started simulation. Note this is by default on, unless the user loads simulation data from files, in which case it gets disabled.

◆ SetFrictionMode()

void chrono::gpu::ChSystemGpu::SetFrictionMode ( CHGPU_FRICTION_MODE  new_mode)

Set friction formulation.

The frictionless setting uses a streamlined solver and avoids storing any physics information associated with friction.

◆ SetParamsFromIdentifier()

bool chrono::gpu::ChSystemGpu::SetParamsFromIdentifier ( const std::string &  identifier,
std::istringstream &  iss1,
bool  overwrite 
)
protectedvirtual

Give a string identifier, set the corresponding simulation parameter, using a switch statement.

ReadDatParams() is its wrapper. It must be virtual, because derived classes also use it (and may call it from a inherited method), and read some more data (thus built on top of it). We must ensure those derived classes call the correct version of it.

◆ SetParticleFixed()

void chrono::gpu::ChSystemGpu::SetParticleFixed ( const std::vector< bool > &  fixed)

Set flags indicating whether or not a particle is fixed.

MUST be called only once and MUST be called before Initialize.

◆ SetRollingMode()

void chrono::gpu::ChSystemGpu::SetRollingMode ( CHGPU_ROLLING_MODE  new_mode)

Set rolling resistence formulation.

NOTE: This requires friction to be active, otherwise this setting will be ignored.

◆ WriteCheckpointFile()

void chrono::gpu::ChSystemGpu::WriteCheckpointFile ( const std::string &  outfilename)

Write a one-stop checkpoint file for Chrono::Gpu.

All information defining a simulation is in this file.

◆ WriteCsvParticles()

void chrono::gpu::ChSystemGpu::WriteCsvParticles ( std::ofstream &  ptFile) const
protected

Write particle position, velocity and ang.

vel. to a stream (of several possible formats). WriteCheckpointFile() and WriteParticleFile() are their wrappers.

◆ WriteHstHistory()

void chrono::gpu::ChSystemGpu::WriteHstHistory ( std::ofstream &  histFile) const
protected

Write contact pair/history to a stream.

WriteCheckpointFile() and WriteContactHistoryFile() are its wrappers.


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