44 virtual void OdeFcn(
const double dT,
const double*
const adX,
double*
const adXDot)
const;
45 virtual void InitialConditionSetup(
const double dT,
const double*
const adCurrentIC,
double*
const adUpdatedIC, ISimObjectCreator*
const creator);
46 virtual void FinalSetup(
const double dT,
const double*
const adX, ISimObjectCreator*
const creator);
47 const double*
const outExternalNodeForce(
const double dT,
const double*
const adX,
int extNode);
49#ifdef FH_VISUALIZATION
51 virtual void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
53 virtual void RenderUpdate(
const double dT,
const double*
const adX);
55 void CreateCapsule(Ogre::ManualObject* capsule_manual);
58 const virtual double*
const NodePos(
const double dT,
const double*
const adX,
int extNode);
59 const virtual double*
const NodeVel(
const double dT,
const double*
const adX,
int extNode);
60 const virtual double*
const BottomContact(
const double dT,
const double*
const adX);
61 void SetAddedDragPerMPS(
double AddedDragPerMPS);
62 const virtual double*
const NodeForce(
const double dT,
const double*
const adX,
int extNode)
const;
64 virtual void CalcStateDerivatives(
const double*
const adX,
double*
const adXDot)
const;
65 virtual void AddExternalForces(
const double dT,
const double*
const adX)
const;
66 virtual void AddNetForces(
const double dT,
const double*
const adX)
const;
67 virtual void AddCableForces(
const double dT,
const double*
const adX)
const;
68 virtual double AddNodeBottomForce(
const double*
const adX,
int node,
double diam,
double adForceInOut[3])
const;
69 virtual void AddBottomForces(
const double*
const adX)
const;
70 virtual void AddInputPorts(ISimObjectCreator* creator);
71 virtual void CreateNetPanels(std::vector<const NetElementDef*> VNetElementDefs, ISimObjectCreator* creator);
72 virtual void CreateNetCables(std::vector<const NetCableElementSpec*> VCableElements, ISimObjectCreator* creator);
73 virtual void CreateDataStructures();
74 virtual void CreateOutputPorts(ISimObjectCreator* creator);
75 VSPairStrInt CreateExternalNodeMap(std::string tag,
int* piUsed,
NetStructureSpec& NetSpec, ISimObjectCreator* creator);
76 void PRINTALLNODEFORCES(std::string spec,
double dT);
78 void SetExternalPos(
const double dT,
const double*
const adX)
const;
79 void SetExternalVel(
const double dT,
const double*
const adX)
const;
87 ISignalPort** m_InTopConstraintsVel;
91 double* m_NodeExternalForces;
92 double* m_NodeConstraintsPos;
93 double* m_NodeConstraintsVel;
97 int m_numNodesOutputPosAndVel;
100 int m_numNodesOriginal;
102 int m_numNodeOutputs;
105 double* m_NodeInternalForces;
107 int (*m_hasPosAndVelStates)[2];
109 int m_NumNodesInputPosAndVel;
110 int m_NumNodesOutputForce;
112 VSPairStrInt m_VsNodesInputPosAndVel;
113 VSPairStrInt m_VsNodesOutputForce;
120 double m_bottomContact[6];
122 environment::EnvironmentProvider* m_environment;
123 environment::SeafloorForcesInterface* m_seafloor;
129 std::vector<NetElement3NWithConstraints*> m_VpNetElements;
132 int** m_aaiCableConn;
134 bool m_foldingPointRefinementUsed;
141 VSPairStrInt m_VsNodesInputForce;
142 bool m_useTagForExternalNodes;
146 mutable sfh::timers::StopWatch m_OdeTimer;
148 bool m_CageWakeEffectsActive;
151 CoRiBoDynamics::ConstraintSolver* m_constraintSolver;
159 std::vector<states> m_stateVector;
160 CoRiBoDynamics::JointConstraint* m_jointConstr;
162 mutable double m_topPosition1[3];
163 mutable double m_topVelocity1[3];
164 double m_topOrientation1[4];
165 double m_topangularVel1[3];
166 mutable double m_topPosition2[3];
167 mutable double m_topVelocity2[3];
168 double m_topOrientation2[4];
170 double m_topangularVel2[3];
171 double* m_nodeWeight;
173 double m_YoungsModulus;
174 int m_numConstraintsElements;
175 double m_depthOfConstraintsCable;
176#ifdef FH_VISUALIZATION
177 Ogre::SceneNode** m_renderNodes;
181#ifdef NetStructureWithConstraints_DO_PROFILE
182 sfh::timers::ProfilerWallclock m_Profiler;