Marine systems simulation
CBasicBottom.h
1#ifndef C_BASIC_BOTTOM_H
2#define C_BASIC_BOTTOM_H
3
4#include "IBasicBottom.h"
5//#include "CBottomForceBeam.h"
6//#include "CBottomForceSphere.h"
7//#include "CBottomForceCylinder.h"
8#ifdef FH_VISUALIZATION
9# pragma warning(push)
10# pragma warning(disable : 4251)
11# pragma warning(disable : 4267)
12# include <Ogre.h>
13# pragma warning(pop)
14# include "sfh/ogre/NMeshGenerators.h"
15#endif
16
17//const int k_iWorldOriginParamIndex = 1;
18//const int k_iBottomSpecParamIndex = 2;
19
21{
22 public:
23 CBasicBottom(IBottomDepth* pBottomDepth);
24 void SetDampingHor(double dDampingHor);
25 void SetDampingVert(double dDampingVert);
26 void SetHardness(double dHardness);
27 void SetDensity(double dDensity);
28 void SetCableDampingTangential(double dCableDampingTangential);
29 void SetCableDampingNormal(double dCableDampingNormal);
30 double GetDampingHor();
31 double GetDampingVert();
32 double GetHardness();
33 double GetDensity();
34 double GetCableDampingTangential();
35 double GetCableDampingNormal();
36
37 // Sphere
38 virtual void CalcBottomForceSphere(double dDiameter, const double adPos[3], const double adVel[3], double adForce[3]);
39
40 //Beam
41 virtual void CalcBottomForceBeam(double adTangent[3], double dBeamWidth, double dBeamLength, double dBeamHeigth, const double adEndAPos_ned[3], const double adEndBPos_ned[3], const double adEndAVel_ned[3], const double adEndBVel_ned[3], double adForceA[3], double adForceB[3]);
42 virtual void CalcBottomForceBeam(double dBeamWidth, double dBeamHeigth, const double adEndAPos_ned[3], const double adEndBPos_ned[3], const double adEndAVel_ned[3], const double adEndBVel_ned[3], double adForceA[3], double adForceB[3]);
43
44
45 // Cylinder
46 virtual void AddBottomForceCylinder(const double dD, const double adEndAPos_ned[3], const double adEndBPos_ned[3],
47 const double adEndAVel_ned[3], const double adEndBVel_ned[3], double adForceA[3], double adForceB[3]);
48
49 private:
50 void CalcBottomForceBeam(double adTangent[3], double dBeamWidth, double dBeamLength, double dBeamHeigth,
51 double dSubmergenceA, double dSubmergenceB, const double adEndAVel_ned[3], const double adEndBVel_ned[3],
52 double adForcesA[3], double adForcesB[3]);
53 void AddBottomForceCylinderNode(const double dSubmergence, const double dD, const double dL,
54 const double adTangent[3], const double adEndPos_ned[3], const double adEndVel_ned[3], double adForce[3]);
55 void CalcBottomForceSphere(double dDiameter, double dSubmergence, const double adVel[3], double adForce[3]);
56
57 double m_dSeaFloorDampingHor;
58 double m_dSeaFloorDampingVert;
59 double m_dSeaFloorHardness;
60 double m_dSeaFloorDensity;
61 double m_dCableDampingTangential;
62 double m_dCableDampingNormal;
63};
64
65#endif
Definition: CBasicBottom.h:21
Interface for calculating the bottom force on various objects.
Definition: IBasicBottom.h:23
Definition: IBottomDepth.h:12