Marine systems simulation
Loading...
Searching...
No Matches
TestParticleField.h
1#pragma once
2
3#include <SimObject.h>
4
5#ifdef FH_VISUALIZATION
6# include <sfh/ogre/C3DArrow.h>
7#endif
8
9#include <fhsim_environment/EnvironmentProvider.h>
10
11namespace testmodels {
12
31class TestParticleField : public SimObject
32{
33
34public:
40 TestParticleField(std::string SimObjectName, ISimObjectCreator* Creator);
41
43 void OdeFcn(const double T, const double* const X, double* const XDot, const bool MajorTimeStep);
44
46 void FinalSetup(const double T, const double* const X, ISimObjectCreator* const Creator);
47
54 const double* Position(const double T, const double* const X);
55
62 const double* Velocity(const double T, const double* const X);
63
64private:
66 void CalcParticleForces(double t, const double pos[3], const double vel[3], double sumForces[3]);
67
69 int m_PosIdx;
71 int m_VelIdx;
73 int m_numParticles;
75 int m_numParticlesPerDimension[3];
77 double m_particleSpacingPerDimension[3];
79 double m_diameter;
81 double m_mass;
83 double m_dragCoeff;
85 double m_rho_water;
87 double m_rho_sphere;
89 double m_gravityForce;
91 double m_buoyancy;
93 double m_netWeightWhenSubmerged;
95 double R;
97 environment::EnvironmentProvider* m_environment;
98#ifdef FH_VISUALIZATION
99public:
109 void extracted(Ogre::SceneManager* sceneMgr, int& i);
110
112 virtual void RenderInit(Ogre::Root* const pOgreRoot, ISimObjectCreator* const pCreator);
113
115 virtual void RenderUpdate(const double dT, const double* const adX);
116
117private:
119 std::vector<Ogre::SceneNode*> m_Node;
121 Ogre::SceneNode* m_lineEndNode;
123 Ogre::String m_Material;
125 std::string m_SphereMesh;
127 C3DArrow* m_surfaceNormalArrow;
129 std::vector<C3DArrow*> m_waterVelocityArrows;
131 std::vector<C3DArrow*> m_objectVelocityArrows;
132#endif
133};
134
135} // namespace testmodels
Definition TestParticleField.h:32
TestParticleField(std::string SimObjectName, ISimObjectCreator *Creator)
void OdeFcn(const double T, const double *const X, double *const XDot, const bool MajorTimeStep)
ODE function - integrate particle dynamics.
void FinalSetup(const double T, const double *const X, ISimObjectCreator *const Creator)
Final setup - register state indices.
const double * Position(const double T, const double *const X)
const double * Velocity(const double T, const double *const X)
SimObjects for testing environment functionality.
Definition TestBuoy1.h:8