chrono::vehicle::CRMTerrain Class Reference

Description

Continuum representation (CRM) deformable terrain model using SPH.

#include <CRMTerrain.h>

Inheritance diagram for chrono::vehicle::CRMTerrain:
Collaboration diagram for chrono::vehicle::CRMTerrain:

Public Member Functions

 CRMTerrain (ChSystem &sys, double spacing)
 Create a CRM terrain object.
 
virtual void Synchronize (double time) override
 Update the state of the terrain system at the specified time.
 
virtual double GetHeight (const ChVector3d &loc) const override
 Get the terrain height below the specified location.
 
virtual chrono::ChVector3d GetNormal (const ChVector3d &loc) const override
 Get the terrain normal at the point below the specified location.
 
virtual float GetCoefficientFriction (const ChVector3d &loc) const override
 Get the terrain coefficient of friction at the point below the specified location. More...
 
- Public Member Functions inherited from chrono::vehicle::ChTerrain
virtual void Advance (double step)
 Advance the state of the terrain system by the specified duration.
 
virtual void GetProperties (const ChVector3d &loc, double &height, ChVector3d &normal, float &friction) const
 Get all terrain characteristics at the point below the specified location.
 
void RegisterHeightFunctor (std::shared_ptr< HeightFunctor > functor)
 Specify the functor object to provide the terrain height at given locations. More...
 
void RegisterNormalFunctor (std::shared_ptr< NormalFunctor > functor)
 Specify the functor object to provide the terrain normal at given locations. More...
 
void RegisterFrictionFunctor (std::shared_ptr< FrictionFunctor > functor)
 Specify the functor object to provide the coefficient of friction at given locations.
 
- Public Member Functions inherited from chrono::fsi::ChFsiProblemCartesian
 ChFsiProblemCartesian (ChSystem &sys, double spacing)
 Create a ChFsiProblem object. More...
 
void Construct (const std::string &sph_file, const std::string &bce_file, const ChVector3d &pos)
 Construct using information from the specified files. More...
 
void Construct (const ChVector3d &box_size, const ChVector3d &pos, bool bottom_wall, bool side_walls)
 Construct SPH particles and optionally BCE markers in a box of given dimensions. More...
 
void Construct (const std::string &heightmap_file, double length, double width, const ChVector2d &height_range, double depth, bool uniform_depth, const ChVector3d &pos, bool bottom_wall, bool side_walls)
 Construct SPH particles and optionally BCE markers from a given heightmap. More...
 
size_t AddBoxContainer (const ChVector3d &box_size, const ChVector3d &pos, bool bottom_wall, bool side_walls, bool top_wall)
 Add fixed BCE markers, representing a container for the computational domain. More...
 
std::shared_ptr< ChBodyAddWaveMaker (WavemakerType type, const ChVector3d &box_size, const ChVector3d &pos, std::shared_ptr< ChFunction > piston_fun)
 Add a rigid-body wavemaker (piston-type or flap-type). More...
 
- Public Member Functions inherited from chrono::fsi::ChFsiProblem
void SetVerbose (bool verbose)
 Enable verbose output during construction of ChFsiProblem (default: false).
 
ChSystemGetSystyemMBS ()
 Access the underlying MBS system.
 
ChSystemFsiGetSystemFSI ()
 Access the underlying FSI system.
 
size_t AddRigidBody (std::shared_ptr< ChBody > body, const chrono::utils::ChBodyGeometry &geometry, bool check_embedded, bool use_grid_bce=false)
 Add a rigid body to the FSI problem. More...
 
size_t AddRigidBodySphere (std::shared_ptr< ChBody > body, const ChVector3d &pos, double radius, bool use_grid_bce=false)
 
size_t AddRigidBodyBox (std::shared_ptr< ChBody > body, const ChFramed &pos, const ChVector3d &size)
 
size_t AddRigidBodyCylinderX (std::shared_ptr< ChBody > body, const ChFramed &pos, double radius, double length, bool use_grid_bce=false)
 
size_t AddRigidBodyMesh (std::shared_ptr< ChBody > body, const ChVector3d &pos, const std::string &obj_file, const ChVector3d &interior_point, double scale)
 
void RegisterParticlePropertiesCallback (std::shared_ptr< ParticlePropertiesCallback > callback)
 Register a callback for setting SPH particle initial properties.
 
void SetComputationalDomainSize (ChAABB aabb)
 Explicitly set the computational domain limits. More...
 
void Initialize ()
 Complete construction of the FSI problem and initialize the FSI system. More...
 
std::shared_ptr< ChBodyGetGroundBody () const
 Get the ground body.
 
size_t GetNumSPHParticles () const
 Get number of SPH particles.
 
size_t GetNumBoundaryBCEMarkers () const
 Get number of boundary BCE markers.
 
const ChAABBGetComputationalDomainSize () const
 Get limits of computational domain.
 
const ChAABBGetSPHBoundingBox () const
 Get limits of SPH volume.
 
const ChVector3dGetFsiBodyForce (std::shared_ptr< ChBody > body) const
 Return the FSI applied force on the specified body (as returned by AddRigidBody). More...
 
const ChVector3dGetFsiBodyTorque (std::shared_ptr< ChBody > body) const
 Return the FSI applied torque on on the specified body (as returned by AddRigidBody). More...
 
void SaveInitialMarkers (const std::string &out_dir) const
 Save the set of initial SPH and BCE grid locations to files in the specified output directory.
 

Additional Inherited Members

- Public Types inherited from chrono::fsi::ChFsiProblem
enum  WavemakerType { PISTON, FLAP }
 Wave generator types.
 
- Protected Types inherited from chrono::fsi::ChFsiProblem
typedef std::unordered_set< ChVector3i, CoordHashGridPoints
 
typedef std::vector< ChVector3dRealPoints
 
- Protected Member Functions inherited from chrono::fsi::ChFsiProblem
 ChFsiProblem (ChSystem &sys, double spacing)
 Create a ChFsiProblem object. More...
 
void ProcessBody (RigidBody &b)
 Prune SPH markers that are inside the solid body volume. More...
 
int ProcessBodyMesh (RigidBody &b, ChTriangleMeshConnected trimesh, const ChVector3d &interior_point)
 Prune SPH markers that are inside a body mesh volume. More...
 
- Protected Attributes inherited from chrono::vehicle::ChTerrain
std::shared_ptr< HeightFunctorm_height_fun
 functor for location-dependent terrain height
 
std::shared_ptr< NormalFunctorm_normal_fun
 functor for location-dependent terrain normal
 
std::shared_ptr< FrictionFunctorm_friction_fun
 functor for location-dependent coefficient of friction
 
- Protected Attributes inherited from chrono::fsi::ChFsiProblem
ChSystemFsi m_sysFSI
 underlying Chrono FSI system
 
ChSystemm_sys
 associated Chrono MBS system
 
double m_spacing
 particle and marker spacing
 
std::shared_ptr< ChBodym_ground
 ground body
 
GridPoints m_sph
 SPH particle grid locations.
 
GridPoints m_bce
 boundary BCE marker grid locations
 
ChVector3d m_offset_sph
 SPH particles offset.
 
ChVector3d m_offset_bce
 boundary BCE particles offset
 
ChAABB m_domain_aabb
 computational domain bounding box
 
ChAABB m_sph_aabb
 SPH volume bounding box.
 
std::vector< RigidBodym_bodies
 list of FSI rigid bodies
 
std::unordered_map< std::shared_ptr< ChBody >, size_t > m_fsi_bodies
 
std::shared_ptr< ParticlePropertiesCallbackm_props_cb
 callback for particle properties
 
bool m_verbose
 if true, write information to standard output
 
bool m_initialized
 set to 'true' once terrain is initialized
 

Member Function Documentation

◆ GetCoefficientFriction()

virtual float chrono::vehicle::CRMTerrain::GetCoefficientFriction ( const ChVector3d loc) const
inlineoverridevirtual

Get the terrain coefficient of friction at the point below the specified location.

This coefficient of friction value may be used by certain tire models to modify the tire characteristics, but it will have no effect on the interaction of the terrain with other objects (including tire models that do not explicitly use it).

Reimplemented from chrono::vehicle::ChTerrain.


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