15#include "ISimObjectCreator.h"
18#include <net/CNetStructure.h>
20#ifdef FH_VISUALIZATION
26const double g_PI = 3.1415926;
32 CNetCage(
const string& simobjectname, ISimObjectCreator*
const creator);
42 const double* outNodeSumForce(
const double T,
const double*
const X);
43 const double* outNodeSumDragForceAbs(
const double T,
const double*
const X);
44 const double* outNodeSumDragForceDirection(
const double T,
const double*
const X);
45 const double* outNodeSumLiftForce(
const double T,
const double*
const X);
46 const double* outBottomPosition(
const double T,
const double*
const X);
47 const double* outSteadyStateEst_Tau(
const double T,
const double*
const X);
48 const double* outSteadyStateEst_K(
const double T,
const double*
const X);
49 const double* LowerMembranePosition(
const double dT,
const double*
const adX);
51 const virtual double * InternalNodeForce(
const double dT,
const double *
const adX,
int iExtNode);
52 const virtual double * NodeForce(
const double T,
const double *
const X,
int iNode);
53 virtual void FinalSetup(
const double dT,
const double *
const adX, ISimObjectCreator *
const pCreator);
59 virtual void OdeFcn(
const double dT,
const double*
const adX,
double*
const adXDot,
const bool bIsMajorTimeStep);
61 void GetNodePositionIndices( std::vector<int> &NodePositions);
62 void GetNodeVelocityIndices( std::vector<int> &NodeVelocities);
64#ifdef FH_VISUALIZATION
67 void RenderInit(Ogre::Root*
const pOgreRoot, ISimObjectCreator*
const pCreator);
68 virtual void RenderUpdate(
const double T,
const double*
const X);
73 void DecomposeDragForcesInCurrentDirection(
double*
const DragForcesProjected,
const double T,
const double*
const X);
74 void SteadyStateEstimator(
const double T,
const double*
const X);
76 void SetExternalPos(
const double dT,
const double *
const adX);
77 void SetExternalVel(
const double dT,
const double *
const adX);
79 virtual void CreateDataStructures();
80 virtual void AddInputPorts(ISimObjectCreator *pCreator);
81 virtual void CreateOutputPorts(ISimObjectCreator *pCreator);
82 virtual void CalcStateDerivatives(
const double *
const adX,
double *
const adXDot);
83 virtual double AddNodeBottomForce(
const double *
const adX,
int iNode,
double dDiam,
double adForceInOut[3]);
84 virtual void AddNetForces(
const double dT,
const double *
const adX);
85 virtual void AddCableForces(
const double dT,
const double *
const adX);
88 ISignalPort **m_InExternalPos;
89 ISignalPort **m_InExternalVel;
90 ISignalPort *m_MembraneDepth;
92 double* m_NodeExternalPos;
93 double* m_NodeExternalVel;
95 double m_adNodeSumForce[3];
96 double m_adSumHydDynForce[3];
97 double m_dNodeSumDragForceAbs;
98 double m_dNodeSumDragDirection;
99 double m_dNodeSumLiftForce;
101 double* m_adNodeHydDynForce;
103 double* m_NodeInternalForces;
105 int(* m_hasPosAndVelStates)[2];
107 int m_NumNodesInputPosAndVel;
108 int m_NumNodesOutputForce;
110 VSPairStrInt m_VsNodesInputPosAndVel;
111 VSPairStrInt m_VsNodesOutputForce;
113 Eigen::MatrixXd m_SSPhi;
114 Eigen::MatrixXd m_SSY;
120 int m_MembraneIsInSystem;
121 double m_LowerMembraneDepth;
122 std::string m_simobjectname;
124#ifdef FH_VISUALIZATION
Definition: CNetStructure.h:203
Definition: CNetCage.h:29
CNetCage(const string &simobjectname, ISimObjectCreator *const creator)
The constructor sets the pointer to the output object and the parser object.
~CNetCage()
The destructor cleans up.
const double * outSumHydDynForce(const double T, const double *const X)
Calculates the state derivatives.
Class modelling a Net cage.
Definition: CBottomRing.h:35