107#include <Eigen/Eigen>
109#include <fhsim/PrintDuringExec.h>
110#include <fhsim/simobject/SimObject.h>
111#include <fhsim_environment/EnvironmentProvider.h>
112#include <fhsim_environment/ElementFlowInteraction.h>
114#include "cable/GaussPointDrag.h"
116#ifdef FH_VISUALIZATION
117# include "sfh/ogre/C3DLine.h"
125 Cable6Dof(
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;
130 void PreOdeFcn(
const double T,
const double*
const X)
override;
132 const double* forceA(
const double T,
const double*
const X);
133 const double* forceB(
const double T,
const double*
const X);
137 void calculations(
const double T,
const double*
const X);
141 void calculationsCommon(
const double T,
const double*
const X)
const;
143#ifdef FH_VISUALIZATION
144 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
145 void RenderUpdate(
const double T,
const double*
const X);
146 Ogre::ColourValue tensionColor(
double N);
150 typedef Eigen::Matrix<double, 3, 3> mat3;
151 typedef Eigen::Matrix<double, 3, 1> vec3;
156 double m_totalLength;
165 environment::wake::ElementFlowInteraction
m_flow;
196 ICommonComputation* m_calcDynamics;
197 Eigen::Matrix<double, Eigen::Dynamic, 1> m_lambda;
198 Eigen::Matrix<double, Eigen::Dynamic, 1> m_F;
204#ifdef FH_VISUALIZATION
205 Ogre::ManualObject* m_ManualObject;
208 Ogre::SceneNode* m_ManualObjectNode;
Definition Cable6Dof.h:123
environment::wake::ElementFlowInteraction m_flow
The flow at the element centres, the other objects' wakes taken per step (MARE-0223); the Environment...
Definition Cable6Dof.h:165
void BuildJoints(const double *const X)
Finds the joints of the chain of elements from the state; the axis of an element is its quaternion's,...
void FinalSetup(const double T, const double *const X, ISimObjectCreator *const creator) override
Takes the Environment (MARE-0315).
PrintDuringExec * m_print
The shared printer for run errors; null if the creator has none, as in a unit test.
Definition Cable6Dof.h:164
void PreOdeFcn(const double T, const double *const X) override
Takes the other objects' wakes at the element centres, or with the Gauss-point drag at the joints,...
wet_cylinder_water::ChainJoints m_joints
The joints of the chain of elements, and the water at them; buffers kept from call to call.
Definition Cable6Dof.h:167
bool m_gaussPointDrag
Gauss-point drag with the water at the joints (MARE-0396).
Definition Cable6Dof.h:166
Cable6Dof(const std::string &simObjectName, ISimObjectCreator *const creator)
reads parameters, registers states, output and intput ports.
Definition GaussPointDrag.h:58
Definition Cable6Dof.h:178
mat3 MiT
The inverse of the translational inertia with the added mass normal to the axis, global frame (MARE-0...
Definition Cable6Dof.h:182