44 virtual void OdeFcn(
const double dT,
const double *
const adX,
double *
const adXDot,
const bool bIsMajorTimeStep);
45 virtual void InitialConditionSetup(
const double dT,
const double *
const adCurrentIC,
double *
const adUpdatedIC, ISimObjectCreator *
const pCreator);
46 virtual void FinalSetup(
const double dT,
const double *
const adX, ISimObjectCreator *
const pCreator);
47 const double * outExternalNodeForce(
const double dT,
const double *
const adX,
int iExtNode);
49#ifdef FH_VISUALIZATION
51 virtual void RenderInit(Ogre::Root *
const pOgreRoot, ISimObjectCreator *
const pCreator);
53 virtual void RenderUpdate(
const double dT,
const double *
const adX);
55 void CreateCapsule( Ogre::ManualObject *capsule_manual);
58 const virtual double * NodePos(
const double dT,
const double *
const adX,
int iExtNode);
59 const virtual double * NodeVel(
const double dT,
const double *
const adX,
int iExtNode);
60 const virtual double * BottomContact(
const double dT,
const double *
const adX);
61 const virtual double * LowerMembranePosition(
const double dT,
const double *
const adX);
63 void SetAddedDragPerMPS(
double AddedDragPerMPS);
65 virtual void CalcStateDerivatives(
const double *
const adX,
double *
const adXDot);
66 virtual void AddExternalForces(
const double dT,
const double *
const adX);
67 virtual void AddNetForces(
const double dT,
const double *
const adX);
68 virtual void AddCableForces(
const double dT,
const double *
const adX);
69 virtual double AddNodeBottomForce(
const double *
const adX,
int iNode,
double dDiam,
double adForceInOut[3]);
70 virtual void AddBottomForces(
const double *
const adX);
71 virtual void AddInputPorts(ISimObjectCreator *pCreator);
72 virtual void CreateNetPanels(std::vector<const CNetElementDef*> VNetElementDefs, ISimObjectCreator *pCreator);
73 virtual void CreateNetCables(std::vector<const CNetCableElementSpec*> VCableElements, ISimObjectCreator *pCreator);
74 virtual void CreateDataStructures();
75 virtual void CreateOutputPorts(ISimObjectCreator *pCreator);
76 VSPairStrInt CreateExternalNodeMap( std::string sTag,
int* piUsed,
CNetStructureSpec & NetSpec, ISimObjectCreator *pCreator);
77 void PRINTALLNODEFORCES(std::string spec,
double dT);
85 double* m_NodeExternalForces;
89 int m_iNumNodesOutputPosAndVel;
92 int m_iNumNodesOriginal;
94 int m_iNumNodeOutputs;
100 double m_adBottomContact[6];
102 environment::EnvironmentProvider* m_pEnvironment;
103 environment::SeafloorForcesInterface* m_seafloor;
109 std::vector<CMembraneElement*> m_VpNetElements;
112 int** m_aaiCableConn;
114 bool m_bFoldingPointRefinementUsed;
121 VSPairStrInt m_VsNodesInputForce;
122 bool m_bUseTagForExternalNodes;
125 double* m_adNodeForce;
126 sfh::timers::StopWatch m_OdeTimer;
128 double m_LowerMembraneDepth;
130#ifdef CNetStructure_DO_PROFILE
131 sfh::timers::ProfilerWallclock m_Profiler;