FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
TestDynamicWaves.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#endif
9
10#include <fhsim/simobject/SimObject.h>
11#include <fhsim_environment/EnvironmentProvider.h>
12#include <memory>
13#include <string>
14#include <vector>
15
16namespace environment
17{
18class EnvironmentProvider;
19}
20
21namespace testmodels
22{
25{
27 int id;
29 double time;
31 std::shared_ptr<marenv::wave::WaveField> waveField;
33 bool applied = false;
34};
35
51class TestDynamicWaves : public SimObject
52{
53public:
59 TestDynamicWaves(std::string SimObjectName, ISimObjectCreator* Creator);
60
62 void FinalSetup(const double T, const double* const X, ISimObjectCreator* const Creator);
63
65 void OdeFcn(const double T, const double* const X, double* const XDot) const override;
66
68 void AcceptedStep(const double T, const double* const X) override;
69
70#ifdef FH_VISUALIZATION
72 virtual void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
73
75 virtual void RenderUpdate(const double T, const double* const X);
76#endif
77
78private:
80 ISimObjectCreator* m_creator;
82 environment::EnvironmentProvider* m_environment;
84 double m_transitionTime;
86 int m_randomSeed;
88 std::vector<SeaState> m_seaStates;
90 size_t m_currentStateIndex;
91};
92
93} // namespace testmodels
Definition TestDynamicWaves.h:52
TestDynamicWaves(std::string SimObjectName, ISimObjectCreator *Creator)
void AcceptedStep(const double T, const double *const X) override
Post-accept callback - apply sea state transitions.
void OdeFcn(const double T, const double *const X, double *const XDot) const override
ODE function - derivative callback (no continuous states).
void FinalSetup(const double T, const double *const X, ISimObjectCreator *const Creator)
Final setup - retrieve environment provider.
SimObjects for testing environment functionality.
Definition TestBuoy1.h:16
Describes a wave field to be activated at a specified simulation time.
Definition TestDynamicWaves.h:25
int id
Unique identifier for this sea state.
Definition TestDynamicWaves.h:27
bool applied
Whether this state has been applied.
Definition TestDynamicWaves.h:33
double time
Time when this sea state becomes active.
Definition TestDynamicWaves.h:29
std::shared_ptr< marenv::wave::WaveField > waveField
Wave field for this sea state.
Definition TestDynamicWaves.h:31