16#include <ISimObjectCreator.h>
17#include "CMembraneStructure.h"
20#ifdef FH_VISUALIZATION
32 CMembraneCage(
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);
48 const virtual double * NodeForce(
const double dT,
const double *
const adX,
int iExtNode);
49 virtual void FinalSetup(
const double dT,
const double *
const adX, ISimObjectCreator *
const pCreator);
55 virtual void OdeFcn(
const double dT,
const double*
const adX,
double*
const adXDot,
const bool bIsMajorTimeStep);
57 void GetNodePositionIndices( std::vector<int> &NodePositions);
58 void GetNodeVelocityIndices( std::vector<int> &NodeVelocities);
60#ifdef FH_VISUALIZATION
63 virtual void RenderUpdate(
const double T,
const double*
const X);
69 void DecomposeDragForcesInCurrentDirection(
double*
const DragForcesProjected,
const double T,
const double*
const X);
71 void SetExternalPos(
const double dT,
const double *
const adX);
72 void SetExternalVel(
const double dT,
const double *
const adX);
74 virtual void CreateDataStructures();
75 virtual void AddInputPorts(ISimObjectCreator *pCreator);
76 virtual void CreateOutputPorts(ISimObjectCreator *pCreator);
77 virtual void CalcStateDerivatives(
const double *
const adX,
double *
const adXDot);
78 virtual double AddNodeBottomForce(
const double *
const adX,
int iNode,
double dDiam,
double adForceInOut[3]);
79 virtual void AddNetForces(
const double dT,
const double *
const adX);
80 virtual void AddCableForces(
const double dT,
const double *
const adX);
82 void GetUniformCurrentDragData();
85 ISignalPort **m_InExternalPos;
86 ISignalPort **m_InExternalVel;
88 double* m_NodeExternalPos;
89 double* m_NodeExternalVel;
91 double m_adNodeSumForce[3];
92 double m_adSumHydDynForce[3];
93 double m_dNodeSumDragForceAbs;
94 double m_dNodeSumDragDirection;
95 double m_dNodeSumLiftForce;
97 double* m_pressCoeffAngle;
100 double* m_adNodeHydDynForce;
102 double* m_NodeInternalForces;
104 int(* m_hasPosAndVelStates)[2];
106 int m_NumNodesInputPosAndVel;
107 int m_NumNodesOutputForce;
109 VSPairStrInt m_VsNodesInputPosAndVel;
110 VSPairStrInt m_VsNodesOutputForce;
112#ifdef FH_VISUALIZATION
Definition: CMembraneCage.h:29
CMembraneCage(const string &simobjectname, ISimObjectCreator *const creator)
The constructor sets the pointer to the output object and the parser object.
~CMembraneCage()
The destructor cleans up.
const double * outSumHydDynForce(const double T, const double *const X)
Calculates the state derivatives.
Definition: CMembraneStructure.h:42
Class modelling a Net cage.
Definition: CBottomRing.h:35