Project Chrono: chrono::vehicle::ChVehicleCosimTerrainNodeChrono Class Reference

Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
chrono::vehicle::ChVehicleCosimTerrainNodeChrono Class Referenceabstract
VEHICLE module » Co-simulation » Terrain nodes using Chrono physics

## Description

Base class for terrain nodes that use one of the Chrono terrain formulations.

`#include <ChVehicleCosimTerrainNodeChrono.h>`

Inheritance diagram for chrono::vehicle::ChVehicleCosimTerrainNodeChrono:
[legend]
Collaboration diagram for chrono::vehicle::ChVehicleCosimTerrainNodeChrono:
[legend]

## Classes
struct | RigidObstacle
| Specification of a rigid obstacle. More...
struct | Proxy
| Base class for a proxy associated with a co-simulation solid. More...
struct | ProxyBodySet
| Proxy bodies associated with a co-simulation solid. More...
struct | ProxyMesh
| Proxy contact mesh surface associated with a co-simulation solid. More...

## Public Types
enum class | Type { RIGID , SCM , GRANULAR_OMP , GRANULAR_GPU , GRANULAR_SPH , UNKNOWN }
| Type of Chrono terrain. More...
Public Types inherited from chrono::vehicle::ChVehicleCosimBaseNode
enum class | NodeType { MBS_WHEELED , MBS_TRACKED , TERRAIN , TIRE }
| Type of node participating in co-simulation. More...
enum class | InterfaceType { BODY , MESH }
| Type of the vehicle-terrain communication interface. More...

## Public Member Functions
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 | SetDimensions (double length, double width)
| Set the terrain patch dimensions.
void | GetDimensions (double &length, double &width)
| Get the terrain patch dimensions.
virtual void | Initialize () override final
| Initialize this node.
virtual void | Synchronize (int step_number, double time) override final
| Synchronize this node.
virtual void | Advance (double step_size) override final
| Advance simulation.
virtual void | OutputData (int frame) override final
| Output logging and debugging data.
virtual void | OutputVisualizationData (int frame) override
| Output post-processing visualization data.
virtual unsigned int | GetNumContacts () const
| Return current number of contacts.
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.
void | SetVerbose (bool verbose)
| Enable/disable verbose messages during simulation (default: true).
void | EnableRuntimeVisualization (double render_fps=100, bool save_img=false)
| Enable run-time visualization (default: false).
void | SetCameraPosition (const ChVector3d &cam_pos, const ChVector3d &cam_target=VNULL)
| Set camera location and target point.
void | SetCameraTracking (bool track)
| Enable/disable tracking of objects (default: true).
void | EnablePostprocessVisualization (double render_fps=100)
| Enable Blender postprocessing (default: false).
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.
double | GetTotalExecutionTime () const
| Get the cumulative simulation execution time on this node.
virtual void | OnRender ()
| Render the current simulation frame.
void | Render (double step_size)
| Render simulation frame.
virtual void | WriteCheckpoint (const std::string &filename) const
| Write checkpoint to the specified file (which will be created in the output directory).

## Static Public Member Functions
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 ChVector2d | 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.

## Protected Member Functions
| ChVehicleCosimTerrainNodeChrono (Type type, double length, double width, ChContactMethod method)
| Construct a base class terrain node.
virtual void | OnInitialize (unsigned int num_objects) override
| Initialize this Chrono terrain node.
virtual void | OnAdvance (double step_size) override
| Advance simulation.
virtual ChSystem * | GetSystem ()=0
| Return a pointer to the underlying Chrono system.
virtual void | Construct ()=0
| Construct the terrain (independent of the vehicle system).
virtual void | CreateRigidProxy (unsigned int i)=0
| Create the i-th proxy rigid.
virtual void | CreateMeshProxy (unsigned int i)
| Create the i-th proxy mesh.
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 bool | SupportsMeshInterface () const =0
| Specify whether or not the terrain node supports the MESH communication interface.
virtual void | OnSynchronize (int step_number, double time)
| Perform any additional operations after the data exchange and synchronization with the MBS node.
virtual void | OnOutputData (int frame)
| Perform additional output at the specified frame (called from within OutputData).
virtual void | UpdateMeshProxy (unsigned int i, MeshState &mesh_state)
| Update the state of the i-th proxy mesh.
virtual void | GetForceMeshProxy (unsigned int i, MeshContact &mesh_contact)
| Collect cumulative contact forces on the i-th proxy mesh.
virtual void | UpdateRigidProxy (unsigned int i, BodyState &rigid_state)=0
| Update the state of the i-th proxy rigid.
virtual void | GetForceRigidProxy (unsigned int i, TerrainForce &rigid_contact)=0
| Collect cumulative contact force and torque on the i-th proxy rigid.
Protected Member Functions inherited from chrono::vehicle::ChVehicleCosimBaseNode
| ChVehicleCosimBaseNode (const std::string &name)
virtual ChSystem * | GetSystemPostprocess () const =0
| Get the Chrono system that holds the visualization shapes (used only for post-processing export).
void | SendGeometry (const ChVehicleGeometry &geom, int dest) const
| Utility function to pack and send a struct with geometry information.
void | RecvGeometry (ChVehicleGeometry &geom, int source) const
| Utility function to receive and unpack a struct with geometry information.
void | ProgressBar (unsigned int x, unsigned int n, unsigned int w=50)
| Utility function to display a progress bar to the terminal.

## Protected Attributes
Type | m_type
| terrain type
ChContactMethod | m_method
| contact method (SMC or NSC)
std::shared_ptr< ChContactMaterial > | m_material_terrain
| material properties for terrain bodies
double | m_init_height
| terrain initial height
std::vector< std::shared_ptr< Proxy > > | m_proxies
| proxies for solid objects
bool | m_fixed_proxies
| are proxies fixed to ground?
std::vector< RigidObstacle > | m_obstacles
| list of rigid obstacles
Protected Attributes inherited from chrono::vehicle::ChVehicleCosimTerrainNode
double | m_dimX
| patch length (X direction)
double | m_dimY
| patch width (Y direction)
bool | m_wheeled
| comm node (true: TIRE nodes, false: tracked MBS node)
InterfaceType | m_interface_type
| communication interface (body or mesh)
int | m_num_objects
| number of interacting objects
std::vector< ChAABB > | m_aabb
| AABB of collision models for interacting objects.
std::vector< ChVehicleGeometry > | m_geometry
| contact geometry and materials for interacting objects
std::vector< double > | m_load_mass
| vertical load on interacting objects
std::vector< int > | m_obj_map
| mapping from interacting object to shape
std::vector< MeshState > | m_mesh_state
| mesh state (used for MESH communication)
std::vector< BodyState > | m_rigid_state
| rigid state (used for BODY communication interface)
std::vector< MeshContact > | m_mesh_contact
| mesh contact forces (used for MESH communication interface)
std::vector< TerrainForce > | m_rigid_contact
| rigid contact force (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
bool | m_renderRT
| if true, perform run-time rendering
bool | m_renderRT_all
| if true, render all frames
double | m_renderRT_step
| time step between rendered frames
bool | m_writeRT
| if true, write images to file
bool | m_renderPP
| if true, save data for post-processing
bool | m_renderPP_all
| if true, save data at all frames
double | m_renderPP_step
| time step between post-processing save frames
bool | m_track
| track objects
ChVector3d | m_cam_pos
| camera location
ChVector3d | m_cam_target
| camera target (lookat) point
unsigned int | m_num_wheeled_mbs_nodes
unsigned int | m_num_tracked_mbs_nodes
unsigned int | m_num_terrain_nodes
unsigned int | m_num_tire_nodes
ChTimer | m_timer
| timer for integration cost
double | m_cum_sim_time
| cumulative integration cost
bool | m_verbose
| verbose messages during simulation?

## Additional Inherited Members
Static Protected Attributes inherited from chrono::vehicle::ChVehicleCosimBaseNode
static const double | m_gacc = -9.81

## Member Enumeration Documentation

## ◆ Type

enum class chrono::vehicle::ChVehicleCosimTerrainNodeChrono::Type
| strong

Type of Chrono terrain.

Enumerator
RIGID | rigid terrain
SCM | Soil Contact Model.
GRANULAR_OMP | granular terrain (Chrono::Multicore)
GRANULAR_GPU | granular terrain (Chrono::Gpu)
GRANULAR_SPH | continuous representation of granular terrain (Chrono::FSI)
UNKNOWN | unknown terrain type

## Constructor & Destructor Documentation

## ◆ ChVehicleCosimTerrainNodeChrono()

chrono::vehicle::ChVehicleCosimTerrainNodeChrono::ChVehicleCosimTerrainNodeChrono | ( | Type | type,
|  | double | length,
|  | double | width,
|  | ChContactMethod | method )
| protected

Construct a base class terrain node.

Parameters

  type | terrain type
  length | terrain patch length
  width | terain patch width
  method | contact method (SMC or NSC)

## Member Function Documentation

## ◆ CreateMeshProxy()

virtual void chrono::vehicle::ChVehicleCosimTerrainNodeChrono::CreateMeshProxy | ( | unsigned int | i | ) |
| inlineprotectedvirtual

Create the i-th proxy mesh.

Use information in the m_geometry struct (collision geometry expressed in local frame).

## ◆ CreateRigidProxy()

virtual void chrono::vehicle::ChVehicleCosimTerrainNodeChrono::CreateRigidProxy | ( | unsigned int | i | ) |
| protectedpure virtual

Create the i-th proxy rigid.

Use information in the m_geometry struct (collision geometry expressed in local frame).

## ◆ GetInitHeight()

virtual double chrono::vehicle::ChVehicleCosimTerrainNodeChrono::GetInitHeight | ( |  | ) | const
| inlinefinaloverridevirtual

Return the terrain initial height.

Implements chrono::vehicle::ChVehicleCosimTerrainNode.

## ◆ GetSystem()

virtual ChSystem * chrono::vehicle::ChVehicleCosimTerrainNodeChrono::GetSystem | ( |  | ) |
| protectedpure virtual

Return a pointer to the underlying Chrono system.

Implemented in chrono::vehicle::ChVehicleCosimTerrainNodeGranularGPU, chrono::vehicle::ChVehicleCosimTerrainNodeGranularOMP, chrono::vehicle::ChVehicleCosimTerrainNodeGranularSPH, chrono::vehicle::ChVehicleCosimTerrainNodeRigid, and chrono::vehicle::ChVehicleCosimTerrainNodeSCM.

## ◆ OnAdvance()

void chrono::vehicle::ChVehicleCosimTerrainNodeChrono::OnAdvance | ( | double | step_size | ) |
| overrideprotectedvirtual

Advance simulation.

This function is called after a synchronization to allow the node to advance its state by the specified time step. A node is allowed to take as many internal integration steps as required, but no inter-node communication should occur.

Implements chrono::vehicle::ChVehicleCosimTerrainNode.

## ◆ OnInitialize()

void chrono::vehicle::ChVehicleCosimTerrainNodeChrono::OnInitialize | ( | unsigned int | num_objects | ) |
| overrideprotectedvirtual

Initialize this Chrono terrain node.

Construct the terrain system and the proxy bodies.

Implements chrono::vehicle::ChVehicleCosimTerrainNode.

Reimplemented in chrono::vehicle::ChVehicleCosimTerrainNodeGranularGPU, chrono::vehicle::ChVehicleCosimTerrainNodeGranularOMP, chrono::vehicle::ChVehicleCosimTerrainNodeGranularSPH, chrono::vehicle::ChVehicleCosimTerrainNodeRigid, and chrono::vehicle::ChVehicleCosimTerrainNodeSCM.

The documentation for this class was generated from the following files:

- D:/W/B/src/chrono-9.0.1/src/chrono_vehicle/cosim/terrain/ChVehicleCosimTerrainNodeChrono.h
- D:/W/B/src/chrono-9.0.1/src/chrono_vehicle/cosim/terrain/ChVehicleCosimTerrainNodeChrono.cpp