97#include <fhsim/simobject/SimObject.h>
98#ifdef FH_VISUALIZATION
99# include "sfh/ogre/C3DLine.h"
107 Ring(
const std::string& simObjectName, ISimObjectCreator*
const creator);
109 void OdeFcn(
const double T,
const double*
const X,
double*
const XDot)
const;
110 void InitialConditionSetup(
const double T,
const double*
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
118 void calculations(
const double T,
const double*
const X);
119 void calculationsCommon(
const double T,
const double*
const X)
const;
121 virtual const double* outConnectorPos(
const double T,
const double*
const X,
const int index);
122 virtual const double* outConnectorVel(
const double T,
const double*
const X,
const int index);
124#ifdef FH_VISUALIZATION
125 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
126 void RenderUpdate(
const double T,
const double*
const X);
130 typedef Eigen::Matrix<double, 3, 3> mat3;
131 typedef Eigen::Matrix<double, 3, 1> vec3;
134 double m_totalLength;
141 double m_C_isAddMassHack;
142 double m_AddMassHack;
158 double m_surfacePosZ;
174 double m_bending_epsilon[3];
195 ICommonComputation* m_calcDynamics;
196 Eigen::Matrix<double, Eigen::Dynamic, 1> m_lambda;
197 Eigen::Matrix<double, Eigen::Dynamic, 1> m_F_MDotV;
203#ifdef FH_VISUALIZATION
205 Ogre::SceneNode** m_ManualObjectNodes;
int m_ElementsPerConnector
number of elements between connectors
Definition Ring.h:168
double m_extlForce[3]
Array for holding current value of external force at a given node.
Definition Ring.h:170
int m_numInputsPerConnector
number of force inputs per connector position (used for multiple attachments at same point)
Definition Ring.h:167
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:154
double ** m_aadConnectorVel
Local array for storing output velocities.
Definition Ring.h:172
double ** m_aadConnectorPos
Local array for storing output positions.
Definition Ring.h:171
ISignalPort ** m_iIForce
Array of indices to connector forces in input vector.
Definition Ring.h:169
int m_numConnectors
number of additional connectors, if any
Definition Ring.h:166
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:165