112#include <Eigen/Eigen>
114#include <fhsim/simobject/SimObject.h>
115#include <fhsim_environment/EnvironmentProvider.h>
116#ifdef FH_VISUALIZATION
117# include "sfh/ogre/C3DLine.h"
125 Ring(
const std::string& simObjectName, ISimObjectCreator*
const creator);
127 void OdeFcn(
const double T,
const double*
const X,
double*
const XDot)
const;
128 void InitialConditionSetup(
const double T,
const double*
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
129 void FinalSetup(
const double T,
const double*
const X, ISimObjectCreator*
const creator)
override;
137 void calculations(
const double T,
const double*
const X);
138 void calculationsCommon(
const double T,
const double*
const X)
const;
140 virtual const double* outConnectorPos(
const double T,
const double*
const X,
const int index);
141 virtual const double* outConnectorVel(
const double T,
const double*
const X,
const int index);
143#ifdef FH_VISUALIZATION
144 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
145 void RenderUpdate(
const double T,
const double*
const X);
149 typedef Eigen::Matrix<double, 3, 3> mat3;
150 typedef Eigen::Matrix<double, 3, 1> vec3;
153 double m_totalLength;
160 double m_C_isAddMassHack;
161 double m_AddMassHack;
192 double m_bending_epsilon[3];
213 ICommonComputation* m_calcDynamics;
214 Eigen::Matrix<double, Eigen::Dynamic, 1> m_lambda;
215 Eigen::Matrix<double, Eigen::Dynamic, 1> m_F_MDotV;
221#ifdef FH_VISUALIZATION
223 Ogre::SceneNode** m_ManualObjectNodes =
nullptr;
int m_ElementsPerConnector
number of elements between connectors
Definition Ring.h:186
double m_extlForce[3]
Array for holding current value of external force at a given node.
Definition Ring.h:188
Ring(const std::string &simObjectName, ISimObjectCreator *const creator)
reads parameters, registers states, output and intput ports.
double m_centrePosInit[3]
Parameter for describing the initial position of the centre of the ring (not an IC since there is no ...
Definition Ring.h:173
double ** m_aadConnectorVel
Local array for storing output velocities.
Definition Ring.h:190
double ** m_aadConnectorPos
Local array for storing output positions.
Definition Ring.h:189
ISignalPort ** m_iIForce
Array of indices to connector forces in input vector.
Definition Ring.h:187
int m_numConnectors
number of additional connectors, if any
Definition Ring.h:185
void FinalSetup(const double T, const double *const X, ISimObjectCreator *const creator) override
Takes the Environment (MARE-0315).
environment::EnvironmentProvider * m_environment
The shared resource Environment, set in FinalSetup.
Definition Ring.h:178
virtual void GetExternalForces(const double T, const double *const X, double *m_extlForce, int index)
get the external forces at element 'index'. Should be overridden by inheriting classes to get forces ...
bool m_additionalConnectors
flag for additional connectors along cable
Definition Ring.h:184