FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
NetStructureOCL.h
1
9
10#ifndef CNetStructureOCL_H
11#define CNetStructureOCL_H
12
13//#define CNetStructureOCL_DO_PROFILE
14// Includes
15#include <string>
16#include <fhsim/simobject/SimObject.h>
17#include "NetElement3N.h"
18#include "NetCableElementSpec.h"
19#include "NetCableElement.h"
20#include "NetElementDef.h"
21#include "environment/IBasicBottom.h"
22#include "NetBottomContactFilter.h"
23#include "environment/ICurrentVel.h"
24#include "sfh/timers/ProfilerWallclock.h"
25#include "NetStructureSpec.h"
26#include "cl.hpp" // Fix?
27#include "NetPanelForcesOcl.h"
28
29#ifdef FH_VISUALIZATION
30# include "NMeshGenerators.h"
31#endif
32
33//Class definition
34class NetStructureOCL : public SimObject
35{
36public:
38 NetStructureOCL(std::string simObjectName, ISimObjectCreator *creator);
41 virtual void OdeFcn(const double dT, const double *const adX, double *const adXDot) const;
42 virtual void InitialConditionSetup(const double dT, const double *const adCurrentIC, double *const adUpdatedIC, ISimObjectCreator *const creator);
43 virtual void FinalSetup(const double dT, const double *const adX, ISimObjectCreator *const creator);
44#ifdef FH_VISUALIZATION
46 virtual void RenderInit(Ogre::Root *const ogreRoot, ISimObjectCreator *const creator);
48 virtual void RenderUpdate(const double dT, const double *const adX);
49#endif
50 const virtual double *const NodePos(const double dT, const double *const adX, int extNode);
51 const virtual double *const NodeVel(const double dT, const double *const adX, int extNode);
52 const virtual double *const BottomContact(const double dT, const double *const adX);
53 void SetAddedDragPerMPS(double AddedDragPerMPS);
54protected:
55 virtual void CalcStateDerivatives(const double *const adX, double *const adXDot);
56 virtual void AddExternalForces(const double dT, const double *const adX);
57 virtual void AddNetForces(const double dT, const double *const adX);
58 virtual void AddCableForces(const double dT, const double *const adX);
59 virtual double AddNodeBottomForce(const double *const adX, int node, double diam, double adForceInOut[3]);
60 virtual void AddBottomForces(const double *const adX);
61 virtual void AddInputPorts(ISimObjectCreator *creator);
62 virtual void CreateNetPanels(std::vector<const NetElementDef*> VNetElementDefs, ISimObjectCreator *creator);
63 virtual void CreateNetCables(std::vector<const NetCableElementSpec*> VCableElements, ISimObjectCreator *creator);
64 virtual void CreateDataStructures();
65 virtual void CreateOutputPorts(ISimObjectCreator *creator);
66 VSPairStrInt CreateExternalNodeMap( std::string tag, int* piUsed, NetStructureSpec & NetSpec, ISimObjectCreator *creator);
67 void PRINTALLNODEFORCES(std::string spec, double dT);
68
70
71 ISignalPort **m_inExternalForces;
72 int *m_iStatePos;
73 int *m_iStateVel;
75
77
79 int m_numNodesOutputPosAndVel;
80 int m_numPanelsCalc;
81 int m_numCablesCalc;
82 int m_numNodesOriginal;
83 int m_numNodesCalc;
84 int m_numNodeOutputs;
86
88
90 double m_bottomContact[6];
91 IBasicBottom** m_bottom;
92 ICurrentVel** m_currentVel;
93 float* m_elementWaterVel;
95
97
98 std::vector<NetCableElement*> m_VpCableElements;
99 std::vector<NetElement3N*> m_VpNetElements;
100 float* m_inertia;
101 int* m_netConn;
102 int** m_aaiCableConn;
103 SAdaptationSpec_t m_SAdaptations;
105
106
108
110 VSPairStrInt m_VsNodesInputForce;
111 bool m_useTagForExternalNodes;
113
114 double* m_nodeForce;
115 sfh::timers::StopWatch m_OdeTimer;
116#ifdef CNetStructureOCL_DO_PROFILE
117 sfh::timers::ProfilerWallclock m_Profiler;
118#endif
119 // OpenCL
120 NetPanelForcesOcl* netPanelForcesOcl;
121#ifdef FH_VISUALIZATION
122 Ogre::Entity* thisEntity;
123 Ogre::SceneNode* thisSceneNode;
124 Ogre::MeshPtr msh;
125 Ogre::HardwareVertexBufferSharedPtr m_VertexBuffer;
126 Ogre::HardwareVertexBufferSharedPtr m_NormalsBuffer;
127 Ogre::SceneManager* m_sceneMgr;
128 Ogre::Entity** m_renderSphere;
129 Ogre::SceneNode** m_renderNodeSphere;
130
131
132#endif
133};
134
135
136#endif
Definition NetBottomContactFilter.h:7
Definition NetPanelForcesOcl.h:10
Class containing a net object.
Definition NetStructureOCL.h:35
NetBottomContactFilter m_BottomContactFilter
Environment.
Definition NetStructureOCL.h:89
std::vector< NetCableElement * > m_VpCableElements
Element properties.
Definition NetStructureOCL.h:98
NetStructureOCL(std::string simObjectName, ISimObjectCreator *creator)
The constructor sets the pointer to the output object and the parser object.
virtual ~NetStructureOCL()
The destructor deletes dynamically allocated memory.
int m_numNodesInputForce
Node counts.
Definition NetStructureOCL.h:78
VSPairStrInt m_VsNodesOutputPosAndVel
Nodes reachable directly through input or output ports.
Definition NetStructureOCL.h:109
ISignalPort ** m_inExternalForces
Interface member variables.
Definition NetStructureOCL.h:71
Definition NetStructureSpec.h:38
Class containing the specification for a net object.
Definition NetStructureSpec.h:22