6#include <ISimObjectCreator.h>
9#include <net/CNetStructureWakeEffect.h>
10#include <environment/DeepSeaGravityWaves.h>
12#ifdef FH_VISUALIZATION
114 virtual void FinalSetup(
const double dT,
const double *
const adX, ISimObjectCreator *
const pCreator);
128 virtual void OdeFcn(
const double T,
const double*
const X,
double*
const XDot,
const bool IsMajorTimeStep);
190 const double* outSteadyStateEst_Tau(
const double T,
const double*
const X);
191 const double* outSteadyStateEst_K(
const double T,
const double*
const X);
192 const double* LowerMembranePosition(
const double dT,
const double*
const adX);
193 const double* outMiddleCurrentVelocity(
const double dT,
const double*
const adX);
194 const double* outNetPosition(
const double T,
const double*
const X,
int iNode);
217 const virtual double *
NodeForce(
const double T,
const double *
const X,
int iNode);
259#ifdef FH_VISUALIZATION
269 void RenderInit(Ogre::Root*
const pOgreRoot, ISimObjectCreator*
const pCreator);
278 virtual void RenderUpdate(
const double T,
const double*
const X);
283 void DecomposeDragForcesInCurrentDirection(
double*
const DragForcesProjected,
const double T,
const double*
const X);
284 bool SteadyStateEstimator(
const double T,
const double*
const X);
285 void AddDeadFishWeightForce(
const double T,
const double*
const X);
287 void SetExternalPos(
const double dT,
const double *
const adX);
288 void SetExternalVel(
const double dT,
const double *
const adX);
290 virtual void CreateDataStructures();
291 virtual void AddInputPorts(ISimObjectCreator *pCreator);
292 virtual void CreateOutputPorts(ISimObjectCreator *pCreator);
294 virtual double AddNodeBottomForce(
const double *
const adX,
int iNode,
double dDiam,
double adForceInOut[3]);
295 virtual void AddNetForces(
const double dT,
const double *
const adX);
296 virtual void AddCableForces(
const double dT,
const double *
const adX);
299 ISignalPort **m_InExternalPos;
300 ISignalPort **m_InExternalVel;
301 ISignalPort *m_MembraneDepth;
303 double* m_NodeExternalPos;
304 double* m_NodeExternalVel;
306 double m_adNodeSumForce[3];
307 double m_adSumHydDynForce[3];
308 double m_dNodeSumDragForceAbs;
309 double m_dNodeSumDragDirection;
310 double m_dNodeSumLiftForce;
311 double m_MiddleCurrentVelocity[3];
313 double* m_adNodeHydDynForce;
315 double* m_NodeInternalForces;
317 int(* m_hasPosAndVelStates)[2];
319 int m_NumNodesInputPosAndVel;
320 int m_NumNodesOutputForce;
322 VSPairStrInt m_VsNodesInputPosAndVel;
323 VSPairStrInt m_VsNodesOutputForce;
325 Eigen::MatrixXd m_SSPhi;
326 Eigen::MatrixXd m_SSY;
329 sfh::timers::StopWatch m_SSCalcIntervalWatch;
332 int m_MembraneIsInSystem;
333 double m_LowerMembraneDepth;
334 std::string m_simobjectname;
335 bool m_TerminateAtSteadyState;
343 int* m_outNetPosIndex;
346 std::string m_CageShape;
353 double* m_CageCentre;
355 int m_BottomNodeIndex;
356 double m_DeadFishInertia[3];
357 double m_DeadFishWeigthForce;
359 sfh::timers::StopWatch m_RealTimeWatch;
360 ICommonComputation* m_calcDynamics;
361#ifdef FH_VISUALIZATION
Definition: CNetStructureWakeEffect.h:204
Definition: CNetCageWakeEffect.h:99
CNetCageWakeEffect(const string &simObjectName, ISimObjectCreator *const creator)
Reads parameters, registers states, input/output ports and shared resources.
void getNetElementConnections(vector< int * > &ElementConnections)
Returns list of all node connections of all net elements.
const double * outNodeSumForce(const double T, const double *const X)
Output port. Returns the sum of forces acting on net structure.
virtual const double * NodeForce(const double T, const double *const X, int iNode)
Output port. Returns the forces acting on the node identified by the index iExtNode.
virtual void OdeFcn(const double T, const double *const X, double *const XDot, const bool IsMajorTimeStep)
Computes object derivatives as a function of time, states and input ports.
void calculations(const double T, const double *const X)
Performs a series of computations within the cable object.
virtual void CalcStateDerivatives(const double *const adX, double *const adXDot)
For screen model. Checking calculated total net force.
const double * outBottomPosition(const double T, const double *const X)
Output port. Returns the position of the bottom node in the net structure.
const double * outSumHydDynForce(const double T, const double *const X)
Output port. Returns the sum of hydrodynamic forces acting on net structure.
void setTraversedElements(vector< bool > TraversedElements)
Returns list that describes which net elements in structure have been traversed by ROV.
void GetNodeVelocityIndices(std::vector< int > &NodeVelocities)
Returns indices for memory locations of the velocities of all nodes in structure.
vector< CNetElement3NWakeEffect * > getNetElements()
Returns list of all net elements in structure.
void GetNodePositionIndices(std::vector< int > &NodePositions)
Returns indices for memory locations of the positions of all nodes in structure.
const double * outNodeSumDragForceDirection(const double T, const double *const X)
Output port. Returns the direction of the summed drag forces acting on net structure.
const double * outNodeSumDragForceAbs(const double T, const double *const X)
Output port. Returns the absolute value of the summed drag forces acting on net structure.
virtual const double * InternalNodeForce(const double T, const double *const X, int iExtNode)
Output port. Returns the internally computed forces acting on the node identified by the index iExtNo...
const double * outNodeSumLiftForce(const double T, const double *const X)
Output port. Returns the sum of lift forces acting on net structure.
Class modelling a Net cage.
Definition: CBottomRing.h:35