FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
TestParticleField.h
1#pragma once
2
3#ifdef FH_VISUALIZATION
4# pragma warning(push)
5# pragma warning(disable : 4251)
6# include <Ogre.h>
7# pragma warning(pop)
8# include <sfh/ogre/C3DArrow.h>
9#endif
10
11#include <fhsim/simobject/SimObject.h>
12#include <fhsim_environment/EnvironmentProvider.h>
13#include <string>
14#include <vector>
15
16namespace testmodels
17{
18
37class TestParticleField : public SimObject
38{
39
40public:
46 TestParticleField(std::string SimObjectName, ISimObjectCreator* Creator);
47
49 void OdeFcn(const double T, const double* const X, double* const XDot) const override;
50
52 void FinalSetup(const double T, const double* const X, ISimObjectCreator* const Creator);
53
60 const double* Position(const double T, const double* const X);
61
68 const double* Velocity(const double T, const double* const X);
69
70private:
72 void CalcParticleForces(double t, const double pos[3], const double vel[3], double sumForces[3]) const;
73
75 int m_PosIdx;
77 int m_VelIdx;
79 int m_numParticles;
81 int m_numParticlesPerDimension[3];
83 double m_particleSpacingPerDimension[3];
85 double m_diameter;
87 double m_mass;
89 double m_dragCoeff;
91 double m_rho_water;
93 double m_rho_sphere;
95 double m_gravityForce;
97 double m_buoyancy;
99 double m_netWeightWhenSubmerged;
101 double R;
103 environment::EnvironmentProvider* m_environment;
104#ifdef FH_VISUALIZATION
105public:
115 void extracted(Ogre::SceneManager* sceneMgr, int& i);
116
118 void RenderInit(Ogre::Root* const pOgreRoot, ISimObjectCreator* const pCreator);
119
121 void RenderUpdate(const double dT, const double* const adX);
122
123private:
125 std::vector<Ogre::SceneNode*> m_Node;
127 Ogre::SceneNode* m_lineEndNode;
129 Ogre::String m_Material;
131 std::string m_SphereMesh;
133 C3DArrow* m_surfaceNormalArrow;
135 std::vector<C3DArrow*> m_waterVelocityArrows;
137 std::vector<C3DArrow*> m_objectVelocityArrows;
138#endif
139};
140
141} // namespace testmodels
Definition TestParticleField.h:38
TestParticleField(std::string SimObjectName, ISimObjectCreator *Creator)
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)
void OdeFcn(const double T, const double *const X, double *const XDot) const override
ODE function - integrate particle dynamics.
const double * Velocity(const double T, const double *const X)
SimObjects for testing environment functionality.
Definition TestBuoy1.h:17