Base class for all tire nodes.

#include <ChVehicleCosimTireNode.h>

Inheritance diagram for chrono::vehicle::ChVehicleCosimTireNode:
Collaboration diagram for chrono::vehicle::ChVehicleCosimTireNode:

Public Types

enum  TireType { TireType::RIGID, TireType::FLEXIBLE, TireType::BYPASS, TireType::UNKNOWN }
 Tire type. 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...

Public Member Functions

virtual NodeType GetNodeType () const override final
 Return the node type as NodeType::TIRE.
virtual TireType GetTireType () const =0
 Return the tire type.
void SetTireFromSpecfile (const std::string &filename)
 Specify the tire JSON specification file name.
void EnableTirePressure (bool val)
 Enable/disable tire pressure (default: true).
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. 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 OutputData (int frame) override final
 Output logging and debugging 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. 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.
virtual void Advance (double step_size)=0
 Advance simulation. More...
virtual void OutputVisualizationData (int frame)=0
 Output post-processing visualization data. More...
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 GetTireTypeAsString (TireType type)
 Return a string describing the tire type.
static TireType GetTireTypeFromString (const std::string &type)
 Infer the tire type from the given string.
static bool ReadSpecfile (const std::string &specfile, rapidjson::Document &d)
 Read a JSON specification file for a tire.
static TireType GetTireTypeFromSpecfile (const std::string &specfile)
 Get the tire type 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 Member Functions

 ChVehicleCosimTireNode (int index)
virtual InterfaceType GetInterfaceType () const =0
 Specify the type of communication interface (BODY or MESH) required by this the tire node. More...
virtual void ConstructTire ()=0
 Construct the tire. More...
virtual double GetTireMass () const =0
 Return the tire mass.
virtual double GetTireRadius () const =0
 Return the tire radius.
virtual double GetTireWidth () const =0
 Return the tire width.
virtual void InitializeTire (std::shared_ptr< ChWheel >)=0
 Initialize the tire by attaching it to the provided ChWheel. More...
virtual void ApplySpindleState (const BodyState &spindle_state)
 Apply the spindle state. More...
virtual void LoadSpindleForce (TerrainForce &spindle_force)
 Load current spindle force. More...
virtual void ApplySpindleForce (const TerrainForce &spindle_force)
 Apply the spindle force (BODY communication interface). More...
virtual void LoadMeshState (MeshState &mesh_state)
 Load current tire mesh state. More...
virtual void ApplyMeshForces (const MeshContact &mesh_contact)
 Apply the mesh contact forces. More...
virtual void OnOutputData (int frame)
 Perform additional output at the specified frame (called once per integration step).
- Protected Member Functions inherited from chrono::vehicle::ChVehicleCosimBaseNode
 ChVehicleCosimBaseNode (const std::string &name)

Protected Attributes

 containing system
ChTimestepper::Type m_int_type
 integrator type
ChSolver::Type m_slv_type
 solver type
std::shared_ptr< ChTimestepperHHTm_integrator
 HHT integrator object.
std::string m_tire_json
 name of tire JSON specification file
bool m_tire_pressure
 tire pressure enabled?
int m_index
 index of the tire
std::shared_ptr< ChBodym_spindle
 spindle body
std::shared_ptr< ChWheelm_wheel
 wheel subsystem (to which a tire is attached)
std::shared_ptr< ChMaterialSurfaceSMCm_contact_mat
 tire contact material
MeshData m_mesh_data
 tire mesh data
- 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?

Additional Inherited Members

- Static Protected Attributes inherited from chrono::vehicle::ChVehicleCosimBaseNode
static const double m_gacc = -9.81

Member Enumeration Documentation

◆ TireType

Tire type.


rigid tire


flexible tire


bypass (dummy) tire


unknown tire type

Member Function Documentation

◆ ApplyMeshForces()

virtual void chrono::vehicle::ChVehicleCosimTireNode::ApplyMeshForces ( const MeshContact mesh_contact)

Apply the mesh contact forces.

A derived class which implements the MESH communication interface must override this function and must use the MeshContact struct received from the TERRAIN node.

◆ ApplySpindleForce()

virtual void chrono::vehicle::ChVehicleCosimTireNode::ApplySpindleForce ( const TerrainForce spindle_force)

Apply the spindle force (BODY communication interface).

The TerrainForce struct contains the terrain forces applied to the spindle as received from the TERRAIN node.

◆ ApplySpindleState()

virtual void chrono::vehicle::ChVehicleCosimTireNode::ApplySpindleState ( const BodyState spindle_state)

Apply the spindle state.

The BodyState struct contains the spindle body state as received from the MBS node.

◆ ConstructTire()

virtual void chrono::vehicle::ChVehicleCosimTireNode::ConstructTire ( )
protectedpure virtual

Construct the tire.

The tire radius and mass must be available after this function is called.

◆ GetInterfaceType()

virtual InterfaceType chrono::vehicle::ChVehicleCosimTireNode::GetInterfaceType ( ) const
protectedpure virtual

Specify the type of communication interface (BODY or MESH) required by this the tire node.

See ChVehicleCosimBaseNode::InterfaceType.

◆ Initialize()

void chrono::vehicle::ChVehicleCosimTireNode::Initialize ( )

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.

◆ InitializeTire()

virtual void chrono::vehicle::ChVehicleCosimTireNode::InitializeTire ( std::shared_ptr< ChWheel )
protectedpure virtual

Initialize the tire by attaching it to the provided ChWheel.

A derived class must load m_contact_mat and m_mesh_data.

◆ LoadMeshState()

virtual void chrono::vehicle::ChVehicleCosimTireNode::LoadMeshState ( MeshState mesh_state)

Load current tire mesh state.

A derived class which implements the MESH communication interface must override this function and must load the provided MeshState struct to be sent to the TERRAIN node.

◆ LoadSpindleForce()

virtual void chrono::vehicle::ChVehicleCosimTireNode::LoadSpindleForce ( TerrainForce spindle_force)

Load current spindle force.

A derived class which implements the MESH communication interface must override this function and must load the provided TerrainForce struct to be sent to the MBS node.

◆ SetIntegratorType()

void chrono::vehicle::ChVehicleCosimTireNode::SetIntegratorType ( ChTimestepper::Type  int_type,
ChSolver::Type  slv_type 

Set integrator and solver types.

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

int_typeintegrator type (default: HHT)
slv_typesolver type (default:: MKL)

◆ Synchronize()

void chrono::vehicle::ChVehicleCosimTireNode::Synchronize ( int  step_number,
double  time 

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:
  • /builds/uwsbel/chrono/src/chrono_vehicle/cosim/ChVehicleCosimTireNode.h
  • /builds/uwsbel/chrono/src/chrono_vehicle/cosim/ChVehicleCosimTireNode.cpp