chrono::vehicle::ChVehicleCosimTerrainNodeSCM Class Reference
Description
Definition of the SCM deformable terrain node.
#include <ChVehicleCosimTerrainNodeSCM.h>
Inheritance diagram for chrono::vehicle::ChVehicleCosimTerrainNodeSCM:
Collaboration diagram for chrono::vehicle::ChVehicleCosimTerrainNodeSCM:
Public Member Functions | |
ChVehicleCosimTerrainNodeSCM (double length, double width) | |
Create an SCM terrain node. Note that no SCM parameters are set. | |
ChVehicleCosimTerrainNodeSCM (const std::string &specfile) | |
Create an SCM terrain node using parameters from the provided JSON specfile. | |
virtual ChSystem * | GetSystem () override |
Return a pointer to the underlying Chrono system. | |
void | SetFromSpecfile (const std::string &specfile) |
Set full terrain specification from JSON specfile. | |
void | SetPropertiesSCM (double spacing, double Bekker_Kphi, double Bekker_Kc, double Bekker_n, double Mohr_cohesion, double Mohr_friction, double Janosi_shear, double elastic_K, double damping_R) |
Set the SCM material properties for terrain. More... | |
void | SetNumThreads (int num_threads) |
Set the number of OpenMP threads for SCM ray-casting (default: 1). | |
void | SetProxyContactRadius (double radius) |
Set sweeping sphere radius for proxy bodies (default 5e-3). More... | |
void | SetInputFromCheckpoint (const std::string &filename) |
Initialize SCM terrain from the specified checkpoint file (which must exist in the output directory). More... | |
virtual void | WriteCheckpoint (const std::string &filename) const override |
Write checkpoint to the specified file (which will be created in the output directory). | |
Public Member Functions inherited from chrono::vehicle::ChVehicleCosimTerrainNodeChrono | |
Type | GetType () const |
Return the type of this terrain node. | |
void | SetProxyFixed (bool fixed) |
Set the proxy bodies as fixed to ground. | |
virtual double | GetInitHeight () const override final |
Return the terrain initial height. | |
void | AddRigidObstacle (const RigidObstacle &obstacle) |
Add a rigid obstacle. | |
Public Member Functions inherited from chrono::vehicle::ChVehicleCosimTerrainNode | |
virtual NodeType | GetNodeType () const override |
Return the node type as NodeType::TERRAIN. | |
void | EnableRuntimeVisualization (bool render, double render_fps=100) |
Enable/disable run-time visualization (default: false). More... | |
void | SetDimensions (double length, double width) |
Set the terrain patch dimensions. More... | |
virtual void | Initialize () override final |
Initialize this node. More... | |
virtual void | Synchronize (int step_number, double time) override final |
Synchronize this node. More... | |
virtual void | Advance (double step_size) override final |
Advance simulation. More... | |
virtual void | OutputData (int frame) override final |
Output logging and debugging data. | |
virtual void | OutputVisualizationData (int frame) override |
Output post-processing visualization data. More... | |
virtual int | GetNumContacts () const |
Return current number of contacts. More... | |
Public Member Functions inherited from chrono::vehicle::ChVehicleCosimBaseNode | |
std::string | GetNodeTypeString () const |
Return the node type as a string. | |
bool | IsCosimNode () const |
Return true if this node is part of the co-simulation infrastructure. | |
void | SetStepSize (double step) |
Set the integration step size (default: 1e-4). | |
double | GetStepSize () const |
Get the integration step size. | |
void | SetOutDir (const std::string &dir_name, const std::string &suffix) |
Set the name of the output directory and an identifying suffix. More... | |
void | SetVerbose (bool verbose) |
Enable/disable verbose messages during simulation (default: true). | |
const std::string & | GetOutDirName () const |
Get the output directory name for this node. | |
double | GetStepExecutionTime () const |
Get the simulation execution time for the current step on this node. More... | |
double | GetTotalExecutionTime () const |
Get the cumulative simulation execution time on this node. | |
Additional Inherited Members | |
Public Types inherited from chrono::vehicle::ChVehicleCosimTerrainNodeChrono | |
enum | Type { Type::RIGID, Type::SCM, Type::GRANULAR_OMP, Type::GRANULAR_GPU, Type::GRANULAR_MPI, Type::GRANULAR_SPH, Type::UNKNOWN } |
Type of Chrono terrain. More... | |
Public Types inherited from chrono::vehicle::ChVehicleCosimBaseNode | |
enum | NodeType { NodeType::MBS, NodeType::TERRAIN, NodeType::TIRE } |
Type of node participating in co-simulation. More... | |
enum | InterfaceType { InterfaceType::BODY, InterfaceType::MESH } |
Type of the tire-terrain communication interface. More... | |
Static Public Member Functions inherited from chrono::vehicle::ChVehicleCosimTerrainNodeChrono | |
static std::string | GetTypeAsString (Type type) |
Return a string describing the type of this terrain node. | |
static Type | GetTypeFromString (const std::string &type) |
Infer the terrain node type from the given string. | |
static bool | ReadSpecfile (const std::string &specfile, rapidjson::Document &d) |
Read a JSON specification file for a Chrono terrain node. | |
static Type | GetTypeFromSpecfile (const std::string &specfile) |
Get the terrain type from the given JSON specification file. | |
static ChVector2 | GetSizeFromSpecfile (const std::string &specfile) |
Get the terrain dimensions (length and width) from the given JSON specification file. | |
Static Public Member Functions inherited from chrono::vehicle::ChVehicleCosimBaseNode | |
static std::string | OutputFilename (const std::string &dir, const std::string &root, const std::string &ext, int frame, int frame_digits) |
Utility function for creating an output file name. More... | |
Protected Types inherited from chrono::vehicle::ChVehicleCosimTerrainNodeChrono | |
typedef std::vector< ProxyBody > | Proxies |
Protected Member Functions inherited from chrono::vehicle::ChVehicleCosimTerrainNodeChrono | |
ChVehicleCosimTerrainNodeChrono (Type type, double length, double width, ChContactMethod method) | |
Construct a base class terrain node. More... | |
virtual void | OnInitialize (unsigned int num_tires) override |
Initialize this Chrono terrain node. More... | |
virtual void | OnAdvance (double step_size) override |
Advance simulation. More... | |
Protected Member Functions inherited from chrono::vehicle::ChVehicleCosimTerrainNode | |
ChVehicleCosimTerrainNode (double length, double width) | |
Construct a terrain node to wrap a terrain patch of given length and width. | |
virtual void | OnSynchronize (int step_number, double time) |
Perform any additional operations after the data exchange and synchronization with the MBS node. More... | |
virtual void | UpdateMeshProxies (unsigned int i, MeshState &mesh_state) |
Update the state of all proxy bodies for the i-th tire mesh. More... | |
Protected Member Functions inherited from chrono::vehicle::ChVehicleCosimBaseNode | |
ChVehicleCosimBaseNode (const std::string &name) | |
Protected Attributes inherited from chrono::vehicle::ChVehicleCosimTerrainNodeChrono | |
Type | m_type |
terrain type | |
ChContactMethod | m_method |
contact method (SMC or NSC) | |
std::shared_ptr< ChMaterialSurface > | m_material_terrain |
material properties for terrain bodies | |
double | m_init_height |
terrain initial height | |
std::vector< Proxies > | m_proxies |
proxy bodies for each tire | |
bool | m_fixed_proxies |
are proxy bodies fixed to ground? | |
std::vector< RigidObstacle > | m_obstacles |
list of rigid obstacles | |
Protected Attributes inherited from chrono::vehicle::ChVehicleCosimTerrainNode | |
bool | m_render |
if true, perform run-time rendering | |
double | m_render_step |
time step between rendered frames | |
double | m_hdimX |
patch half-length (X direction) | |
double | m_hdimY |
patch half-width (Y direction) | |
InterfaceType | m_interface_type |
type of communication interface | |
std::vector< double > | m_tire_radius |
tire radius | |
std::vector< double > | m_tire_width |
tire width | |
std::vector< double > | m_load_mass |
vertical load on tire | |
std::vector< MaterialInfo > | m_mat_props |
tire contact material properties | |
std::vector< MeshData > | m_mesh_data |
tire mesh data | |
std::vector< MeshState > | m_mesh_state |
tire mesh state (used for MESH communication) | |
std::vector< BodyState > | m_spindle_state |
spindle state (used for BODY communication interface) | |
Protected Attributes inherited from chrono::vehicle::ChVehicleCosimBaseNode | |
int | m_rank |
MPI rank of this node (in MPI_COMM_WORLD) | |
double | m_step_size |
integration step size | |
std::string | m_name |
name of the node | |
std::string | m_out_dir |
top-level output directory | |
std::string | m_node_out_dir |
node-specific output directory | |
std::ofstream | m_outf |
output file stream | |
unsigned int | m_num_mbs_nodes |
unsigned int | m_num_terrain_nodes |
unsigned int | m_num_tire_nodes |
ChTimer< double > | m_timer |
timer for integration cost | |
double | m_cum_sim_time |
cumulative integration cost | |
bool | m_verbose |
verbose messages during simulation? | |
Static Protected Attributes inherited from chrono::vehicle::ChVehicleCosimBaseNode | |
static const double | m_gacc = -9.81 |
Member Function Documentation
◆ SetInputFromCheckpoint()
void chrono::vehicle::ChVehicleCosimTerrainNodeSCM::SetInputFromCheckpoint | ( | const std::string & | filename | ) |
Initialize SCM terrain from the specified checkpoint file (which must exist in the output directory).
By default, a flat rectangular SCM terrain patch is used.
◆ SetPropertiesSCM()
void chrono::vehicle::ChVehicleCosimTerrainNodeSCM::SetPropertiesSCM | ( | double | spacing, |
double | Bekker_Kphi, | ||
double | Bekker_Kc, | ||
double | Bekker_n, | ||
double | Mohr_cohesion, | ||
double | Mohr_friction, | ||
double | Janosi_shear, | ||
double | elastic_K, | ||
double | damping_R | ||
) |
Set the SCM material properties for terrain.
- Parameters
-
spacing SCM grid spacing Bekker_Kphi Kphi, frictional modulus in Bekker model Bekker_Kc Kc, cohesive modulus in Bekker model Bekker_n n, exponent of sinkage in Bekker model (usually 0.6...1.8) Mohr_cohesion cohesion [Pa], for shear failure Mohr_friction Friction angle [degrees], for shear failure Janosi_shear shear parameter J [m], (usually a few mm or cm) elastic_K elastic stiffness K per unit area, [Pa/m] (must be larger than Kphi) damping_R vertical damping R per unit area [Pa.s/m] (proportional to vertical speed)
◆ SetProxyContactRadius()
|
inline |
Set sweeping sphere radius for proxy bodies (default 5e-3).
This value is used as a "thickness" for collision meshes (a non-zero value can improve robustness of the collision detection algorithm).
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono_vehicle/cosim/terrain/ChVehicleCosimTerrainNodeSCM.h
- /builds/uwsbel/chrono/src/chrono_vehicle/cosim/terrain/ChVehicleCosimTerrainNodeSCM.cpp