Description
Continuum representation (CRM) deformable terrain model using SPH.
#include <CRMTerrain.h>
Public Member Functions | |
CRMTerrain (ChSystem &sys, double spacing) | |
Create a CRM terrain object. | |
void | SetActiveDomain (const ChVector3d &half_dim) |
Set half-dimensions of the active domain. More... | |
virtual void | Synchronize (double time) override |
Update the state of the terrain system at the specified time. | |
virtual void | Advance (double step) override |
Advance the state of the terrain system by the specified duration. | |
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 | 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 ChFsiProblemSPH 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, int side_flags) |
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, int side_flags) |
Construct SPH particles and optionally BCE markers from a given heightmap. More... | |
size_t | AddBoxContainer (const ChVector3d &box_size, const ChVector3d &pos, int side_flags) |
Add fixed BCE markers, representing a container for the computational domain. More... | |
std::shared_ptr< ChBody > | ConstructWaveTank (WavemakerType type, const ChVector3d &pos, const ChVector3d &box_size, double depth, std::shared_ptr< ChFunction > piston_fun, std::shared_ptr< WaveTankProfile > profile=nullptr, bool end_wall=true) |
Add a wave tank with a rigid-body wavemaker (piston-type or flap-type). More... | |
Public Member Functions inherited from chrono::fsi::ChFsiProblemSPH | |
void | SetVerbose (bool verbose) |
Enable verbose output during construction of ChFsiProblemSPH (default: false). | |
ChFsiSystemSPH & | GetSystemFSI () |
Access the underlying FSI system. | |
ChFluidSystemSPH & | GetFluidSystemSPH () |
Access the underlying SPH system. | |
ChSystem & | GetMultibodySystem () |
Access the underlying MBS system. | |
void | SetCfdSPH (const ChFluidSystemSPH::FluidProperties &fluid_props) |
Enable solution of a CFD problem. | |
void | SetElasticSPH (const ChFluidSystemSPH::ElasticMaterialProperties &mat_props) |
Enable solution of elastic SPH (for continuum representation of granular dynamics). More... | |
void | SetSPHParameters (const ChFluidSystemSPH::SPHParameters &sph_params) |
Set SPH method parameters. | |
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 | SetBcePattern1D (BcePatternMesh1D pattern, bool remove_center=false) |
Set the BCE marker pattern for 1D flexible solids for subsequent calls to AddFeaMesh. More... | |
void | SetBcePattern2D (BcePatternMesh2D pattern, bool remove_center=false) |
Set the BCE marker pattern for 2D flexible solids for subsequent calls to AddFeaMesh. More... | |
size_t | AddFeaMesh (std::shared_ptr< fea::ChMesh > mesh, bool check_embedded) |
Add an FEA mesh to the FSI problem. More... | |
void | RegisterParticlePropertiesCallback (std::shared_ptr< ParticlePropertiesCallback > callback) |
Register a callback for setting SPH particle initial properties. | |
void | SetGravitationalAcceleration (const ChVector3d &gravity) |
Set gravitational acceleration for both multibody and fluid systems. | |
void | SetStepSizeCFD (double step) |
Set integration step size for fluid dynamics. | |
void | SetStepsizeMBD (double step) |
Set integration step size for multibody dynamics. More... | |
void | DisableMBD () |
Disable automatic integration of the associated multibody system. More... | |
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... | |
void | DoStepDynamics (double step) |
Advance the dynamics of the underlying FSI system by the specified step. | |
std::shared_ptr< ChBody > | GetGroundBody () 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 ChAABB & | GetComputationalDomainSize () const |
Get limits of computational domain. | |
const ChAABB & | GetSPHBoundingBox () const |
Get limits of SPH volume. | |
const ChVector3d & | GetFsiBodyForce (std::shared_ptr< ChBody > body) const |
Return the FSI applied force on the specified body (as returned by AddRigidBody). More... | |
const ChVector3d & | GetFsiBodyTorque (std::shared_ptr< ChBody > body) const |
Return the FSI applied torque on on the specified body (as returned by AddRigidBody). More... | |
double | GetRtfCFD () const |
Get current estimated RTF (real time factor) for the fluid system. | |
double | GetRtfMBD () const |
Get current estimated RTF (real time factor) for the multibody system. | |
void | SetOutputLevel (OutputLevel output_level) |
Set SPH simulation data output level (default: STATE_PRESSURE). More... | |
void | SaveOutputData (double time, const std::string &sph_dir, const std::string &fsi_dir) |
Save current SPH and solid data to files. 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. | |
PhysicsProblem | GetPhysicsProblem () const |
std::string | GetPhysicsProblemString () const |
std::string | GetSphMethodTypeString () const |
Additional Inherited Members | |
Public Types inherited from chrono::fsi::ChFsiProblemSPH | |
enum | WavemakerType { PISTON, FLAP } |
Wave generator types. | |
Protected Types inherited from chrono::fsi::ChFsiProblemSPH | |
typedef std::unordered_set< ChVector3i, CoordHash > | GridPoints |
typedef std::vector< ChVector3d > | RealPoints |
Protected Member Functions inherited from chrono::fsi::ChFsiProblemSPH | |
ChFsiProblemSPH (ChSystem &sys, double spacing) | |
Create a ChFsiProblemSPH 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< HeightFunctor > | m_height_fun |
functor for location-dependent terrain height | |
std::shared_ptr< NormalFunctor > | m_normal_fun |
functor for location-dependent terrain normal | |
std::shared_ptr< FrictionFunctor > | m_friction_fun |
functor for location-dependent coefficient of friction | |
Protected Attributes inherited from chrono::fsi::ChFsiProblemSPH | |
ChFluidSystemSPH | m_sysSPH |
underlying Chrono SPH system | |
ChFsiSystemSPH | m_sysFSI |
underlying Chrono FSI system | |
double | m_spacing |
particle and marker spacing | |
std::shared_ptr< ChBody > | m_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< RigidBody > | m_bodies |
list of FSI rigid bodies | |
std::vector< FeaMesh > | m_meshes |
list of FSI FEA meshes | |
std::unordered_map< std::shared_ptr< ChBody >, size_t > | m_fsi_bodies |
std::shared_ptr< ParticlePropertiesCallback > | m_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()
|
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.
◆ SetActiveDomain()
void chrono::vehicle::CRMTerrain::SetActiveDomain | ( | const ChVector3d & | half_dim | ) |
Set half-dimensions of the active domain.
This value activates only those SPH particles that are within an AABB of the specified size from an object interacting with the "fluid" phase.
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