44 CNetCageScreen(
const string& simobjectname, ISimObjectCreator*
const creator);
47 virtual void OdeFcn(
const double dT,
const double*
const adX,
double*
const adXDot,
const bool bIsMajorTimeStep);
48 virtual void InitialConditionSetup(
const double dT,
const double *
const adCurrentIC,
double *
const adUpdatedIC, ISimObjectCreator *
const pCreator);
49 virtual void FinalSetup(
const double dT,
const double *
const adX, ISimObjectCreator *
const pCreator);
50 const double * outExternalNodeForce(
const double dT,
const double *
const adX,
int iExtNode);
54#ifdef FH_VISUALIZATION
56 virtual void RenderInit(Ogre::Root*
const pOgreRoot, ISimObjectCreator*
const pCreator);
57 virtual void RenderUpdate(
const double T,
const double*
const X);
58 void CreateCapsule( Ogre::ManualObject *capsule_manual);
64 virtual const double *
NodePos(
const double dT,
const double *
const adX,
int iExtNode);
65 virtual const double * NodeVel(
const double dT,
const double *
const adX,
int iExtNode);
66 virtual const double * BottomContact(
const double dT,
const double *
const adX);
67 void SetAddedDragPerMPS(
double AddedDragPerMPS);
73 const double* outNodeSumForce(
const double T,
const double*
const X);
74 const double* outNodeSumDragForceAbs(
const double T,
const double*
const X);
75 const double* outNodeSumDragForceDirection(
const double T,
const double*
const X);
76 const double* outNodeSumLiftForce(
const double T,
const double*
const X);
77 const double* outBottomPosition(
const double T,
const double*
const X);
78 const double* outSteadyStateEst_Tau(
const double T,
const double*
const X);
79 const double* outSteadyStateEst_K(
const double T,
const double*
const X);
80 const double* LowerMembranePosition(
const double dT,
const double*
const adX);
81 const double* outMiddleCurrentVelocity(
const double dT,
const double*
const adX);
83 const double * InternalNodeForce(
const double dT,
const double *
const adX,
int iExtNode);
84 const double * NodeForce(
const double T,
const double *
const X,
int iNode);
92 void GetNodePositionIndices( std::vector<int> &NodePositions);
93 void GetNodeVelocityIndices( std::vector<int> &NodeVelocities);
94 vector<CScreenElement3N*> getNetElements();
95 void getNetElementConnections(vector<int*> &ElementConnections);
96 void setTraversedElements(vector<bool> TraversedElements);
102 void DecomposeDragForcesInCurrentDirection(
double*
const DragForcesProjected,
const double T,
const double*
const X);
103 bool SteadyStateEstimator(
const double T,
const double*
const X);
104 void AddDeadFishWeightForce(
const double T,
const double*
const X);
106 void SetExternalPos(
const double dT,
const double *
const adX);
107 void SetExternalVel(
const double dT,
const double *
const adX);
109 virtual void CreateDataStructures();
110 virtual void AddInputPorts(ISimObjectCreator *pCreator);
111 virtual void CreateOutputPorts(ISimObjectCreator *pCreator);
112 virtual void CalcStateDerivatives(
const double *
const adX,
double *
const adXDot);
113 virtual double AddNodeBottomForce(
const double *
const adX,
int iNode,
double dDiam,
double adForceInOut[3]);
114 virtual void AddNetForces(
const double dT,
const double *
const adX);
115 virtual void AddCableForces(
const double dT,
const double *
const adX);
118 ISignalPort **m_InExternalPos;
119 ISignalPort **m_InExternalVel;
120 ISignalPort *m_MembraneDepth;
122 double* m_NodeExternalPos;
123 double* m_NodeExternalVel;
125 double m_adNodeSumForce[3];
126 double m_adSumHydDynForce[3];
127 double m_dNodeSumDragForceAbs;
128 double m_dNodeSumDragDirection;
129 double m_dNodeSumLiftForce;
130 double m_MiddleCurrentVelocity[3];
132 double* m_adNodeHydDynForce;
134 double* m_NodeInternalForces;
136 int(* m_hasPosAndVelStates)[2];
138 int m_NumNodesInputPosAndVel;
139 int m_NumNodesOutputForce;
141 VSPairStrInt m_VsNodesInputPosAndVel;
142 VSPairStrInt m_VsNodesOutputForce;
144 Eigen::MatrixXd m_SSPhi;
145 Eigen::MatrixXd m_SSY;
148 sfh::timers::StopWatch m_SSCalcIntervalWatch;
151 int m_MembraneIsInSystem;
152 double m_LowerMembraneDepth;
153 std::string m_simobjectname;
154 bool m_TerminateAtSteadyState;
159 std::string m_CageShape;
164 double* m_CageCentre;
166 int m_BottomNodeIndex;
167 double m_DeadFishInertia[3];
168 double m_DeadFishWeigthForce;
170 sfh::timers::StopWatch m_RealTimeWatch;
174 virtual void CreateNetPanels(std::vector<const CScreenElementDef*> VNetElementDefs, ISimObjectCreator *pCreator);
175 virtual void CreateNetCables(std::vector<const CNetCableElementSpec*> VCableElements, ISimObjectCreator *pCreator);
176 void AddExternalForces(
const double dT,
const double *
const adX);
177 void AddBottomForces(
const double *
const adX);
178 VSPairStrInt CreateExternalNodeMap( std::string sTag,
int* piUsed,
CScreenStructureSpec & ScreenSpec, ISimObjectCreator *pCreator);
179 void PRINTALLNODEFORCES(std::string spec,
double dT);
181 int m_iNumNodeOutputs;
182 int** m_aaiCableConn;
185 bool m_useReynoldsDependentDragCoefficients;
188 double* m_adNodeForce;
189 double* m_NodeExternalForces;
190 double m_adBottomContact[6];
193 int m_iNumNodesOriginal;
194 int m_iNumNodesOutputPosAndVel;
195 int m_iNumPanelsCalc;
196 int m_iNumCablesCalc;
197 int m_iNumNodesInputForce;
200 bool m_bUseTagForExternalNodes;
201 bool m_InternalElementWakeEffectsActive;
202 bool m_bFoldingPointRefinementUsed;
203 bool m_ExternalElementWakeEffectsActive;
212 environment::EnvironmentProvider* m_pEnvironment;
213 environment::SeafloorForcesInterface* m_seafloor;
214 VSPairStrInt m_VsNodesOutputPosAndVel;
215 VSPairStrInt m_VsNodesInputForce;
217 std::vector<CNetCableElement*> m_VpCableElements;
218 sfh::timers::StopWatch m_OdeTimer;
220 std::vector<CScreenElement3N*> m_VpScreenElements;
223#ifdef FH_VISUALIZATION
231#ifdef CNetStructureWakeEffect_DO_PROFILE
232 sfh::timers::ProfilerWallclock m_Profiler;
ISignalPort ** m_apInExternalForces
Harmonic coeffisients in drag and lift force calculations (a3,a5,b4,b6) for CD/cd=a1*cos(Theta)+a3*co...
Definition CNetCageScreen.h:208