Project Chrono: chrono::vehicle::ChVehicleCosimWheeledMBSNode Class Reference

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
chrono::vehicle::ChVehicleCosimWheeledMBSNode Class Referenceabstract
VEHICLE module » Co-simulation

## Description

Base class for all MBS nodes with wheels.

`#include <ChVehicleCosimWheeledMBSNode.h>`

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

## Public Member Functions
virtual NodeType | GetNodeType () const override
| Return the node type as NodeType::MBS_WHEELED.
void | SetNumThreads (int num_threads)
| Set the number of OpenMP threads used in Chrono simulation (default: 1).
void | SetIntegratorType (ChTimestepper::Type int_type, ChSolver::Type slv_type)
| Set integrator and solver types.
void | SetChassisFixed (bool val)
| Fix the chassis to ground (default: false).
void | AttachDrawbarPullRig (std::shared_ptr< ChVehicleCosimDBPRig > rig)
| Attach a drawbar pull rig to the MBS system.
std::shared_ptr< ChVehicleCosimDBPRig > | GetDrawbarPullRig () const
| Return the drawbar-pull rig, if one is attached.
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 final
| Output post-processing visualization data.
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).

## Protected Member Functions
| ChVehicleCosimWheeledMBSNode ()
| Construct a base class wheeled MBS node.
virtual void | InitializeMBS (const ChVector2d &terrain_size, double terrain_height)=0
| Initialize the underlying MBS.
virtual void | ApplyTireInfo (const std::vector< ChVector3d > &tire_info)=0
| Apply tire info (after InitializeMBS).
virtual void | PreAdvance (double step_size)
| Perform any required operations before advancing the state of the MBS.
virtual void | PostAdvance (double step_size)
| Perform any required operations after advancing the state of the MBS.
virtual void | OnOutputData (int frame)
| Perform additional output at the specified frame (called from within OutputData).
virtual void | ApplySpindleForce (unsigned int i, const TerrainForce &spindle_force)=0
| Apply the provided force to the i-th spindle body.
virtual unsigned int | GetNumSpindles () const =0
| Get the number of spindles/wheels defined by the underlying MBS.
virtual std::shared_ptr< ChBody > | GetSpindleBody (unsigned int i) const =0
| Get the spindle body to which the i-th wheel/tire is attached.
virtual double | GetSpindleLoad (unsigned int i) const =0
| Get the load weight on the i-th wheel/tire.
virtual BodyState | GetSpindleState (unsigned int i) const =0
| Get the body state of the spindle body to which the i-th wheel/tire is attached.
virtual std::shared_ptr< ChBody > | GetChassisBody () const =0
| Get the "chassis" body.
virtual void | OnInitializeDBPRig (std::shared_ptr< ChFunction > func)=0
| Impose spindle angular speed function.
Protected Member Functions inherited from chrono::vehicle::ChVehicleCosimBaseNode
| ChVehicleCosimBaseNode (const std::string &name)
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
ChSystemSMC * | m_system
| containing system
ChTimestepper::Type | m_int_type
| integrator type
ChSolver::Type | m_slv_type
| solver type
std::shared_ptr< ChTimestepperHHT > | m_integrator
| HHT integrator object.
std::shared_ptr< ChVehicleCosimDBPRig > | m_DBP_rig
| DBP rig.
std::ofstream | m_DBP_outf
| DBP output file stream.
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
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...
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.
Static Protected Attributes inherited from chrono::vehicle::ChVehicleCosimBaseNode
static const double | m_gacc = -9.81

## Member Function Documentation

## ◆ Advance()

void chrono::vehicle::ChVehicleCosimWheeledMBSNode::Advance | ( | double | step_size | ) |
| finaloverridevirtual

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::ChVehicleCosimBaseNode.

## ◆ ApplySpindleForce()

virtual void chrono::vehicle::ChVehicleCosimWheeledMBSNode::ApplySpindleForce | ( | unsigned int | i,
|  | const TerrainForce & | spindle_force )
| protectedpure virtual

Apply the provided force to the i-th spindle body.

This function is called during synchronization when the force is received from the corresponding tire node.

## ◆ ApplyTireInfo()

virtual void chrono::vehicle::ChVehicleCosimWheeledMBSNode::ApplyTireInfo | ( | const std::vector< ChVector3d > & | tire_info | ) |
| protectedpure virtual

Apply tire info (after InitializeMBS).

This includes mass, radius, and width for each tire.

## ◆ GetChassisBody()

virtual std::shared_ptr< ChBody > chrono::vehicle::ChVehicleCosimWheeledMBSNode::GetChassisBody | ( |  | ) | const
| protectedpure virtual

Get the "chassis" body.

Only used is a drawbar-pull rig is attached.

## ◆ GetNodeType()

virtual NodeType chrono::vehicle::ChVehicleCosimWheeledMBSNode::GetNodeType | ( |  | ) | const
| inlineoverridevirtual

Return the node type as NodeType::MBS_WHEELED.

Implements chrono::vehicle::ChVehicleCosimBaseNode.

## ◆ GetNumSpindles()

virtual unsigned int chrono::vehicle::ChVehicleCosimWheeledMBSNode::GetNumSpindles | ( |  | ) | const
| protectedpure virtual

Get the number of spindles/wheels defined by the underlying MBS.

A co-simulation must have a matching number of TIRE nodes.

## ◆ GetSpindleLoad()

virtual double chrono::vehicle::ChVehicleCosimWheeledMBSNode::GetSpindleLoad | ( | unsigned int | i | ) | const
| protectedpure virtual

Get the load weight on the i-th wheel/tire.

Note: this must also include the mass of the tire itself.

## ◆ Initialize()

void chrono::vehicle::ChVehicleCosimWheeledMBSNode::Initialize | ( |  | ) |
| finaloverridevirtual

Initialize this node.

This function allows the node to initialize itself and, optionally, perform an initial data exchange with any other node.

Reimplemented from chrono::vehicle::ChVehicleCosimBaseNode.

## ◆ InitializeMBS()

virtual void chrono::vehicle::ChVehicleCosimWheeledMBSNode::InitializeMBS | ( | const ChVector2d & | terrain_size,
|  | double | terrain_height )
| protectedpure virtual

Initialize the underlying MBS.

Parameters

  terrain_size | terrain length x width
  terrain_height | initial terrain height

## ◆ OnInitializeDBPRig()

virtual void chrono::vehicle::ChVehicleCosimWheeledMBSNode::OnInitializeDBPRig | ( | std::shared_ptr< ChFunction > | func | ) |
| protectedpure virtual

Impose spindle angular speed function.

This function is called (during initialization, after the call to InitializeMBS) only if a drawbar-pull rig is attached. A derived class must enforce the specified angular speed on all spindles and, if appropriate, disconnect any other power transmission mechanism (such as a powertrain/driveline).

## ◆ OnOutputData()

virtual void chrono::vehicle::ChVehicleCosimWheeledMBSNode::OnOutputData | ( | int | frame | ) |
| inlineprotectedvirtual

Perform additional output at the specified frame (called from within OutputData).

For example, output mechanism-specific data for post-procesing.

## ◆ OutputData()

void chrono::vehicle::ChVehicleCosimWheeledMBSNode::OutputData | ( | int | frame | ) |
| finaloverridevirtual

Output logging and debugging data.

Implements chrono::vehicle::ChVehicleCosimBaseNode.

## ◆ OutputVisualizationData()

void chrono::vehicle::ChVehicleCosimWheeledMBSNode::OutputVisualizationData | ( | int | frame | ) |
| finaloverridevirtual

Output post-processing visualization data.

Implements chrono::vehicle::ChVehicleCosimBaseNode.

## ◆ PostAdvance()

virtual void chrono::vehicle::ChVehicleCosimWheeledMBSNode::PostAdvance | ( | double | step_size | ) |
| inlineprotectedvirtual

Perform any required operations after advancing the state of the MBS.

This function is called after every integration step.

## ◆ PreAdvance()

virtual void chrono::vehicle::ChVehicleCosimWheeledMBSNode::PreAdvance | ( | double | step_size | ) |
| inlineprotectedvirtual

Perform any required operations before advancing the state of the MBS.

This function is called before every integration step.

## ◆ SetIntegratorType()

void chrono::vehicle::ChVehicleCosimWheeledMBSNode::SetIntegratorType | ( | ChTimestepper::Type | int_type,
|  | ChSolver::Type | slv_type )

Set integrator and solver types.

For the MKL solver, use slv_type = ChSolver::Type::CUSTOM.

Parameters

  int_type | integrator type (default: HHT)
  slv_type | solver type (default:: MKL)

## ◆ Synchronize()

void chrono::vehicle::ChVehicleCosimWheeledMBSNode::Synchronize | ( | int | step_number,
|  | double | time )
| finaloverridevirtual

Synchronize this node.

This function is called at every co-simulation synchronization time to allow the node to exchange information with any other node.

Implements chrono::vehicle::ChVehicleCosimBaseNode.

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

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