FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
PorousDiscWakeSource.h
1#pragma once
2
8#include <fhsim/ISimObjectLogger.h>
9#include <fhsim/simobject/SimObject.h>
10#include <marenv/wake/WakeTypes.h>
11#include <memory>
12#include <string>
13
14namespace marenv::wake
15{
16class SourceSetWake;
17} // namespace marenv::wake
18
19namespace environment
20{
21class EnvironmentProvider;
22} // namespace environment
23
24namespace environmentmodels
25{
26
85class PorousDiscWakeSource : public SimObject
86{
87public:
95 PorousDiscWakeSource(std::string SimObjectName, ISimObjectCreator* Creator);
96 ~PorousDiscWakeSource() override;
97
109 void FinalSetup(double T, const double* X, ISimObjectCreator* Creator) override;
110
121 void PreOdeFcn(double T, const double* X, IStateUpdater* updater) override;
122
124 void OdeFcn(double T, const double* X, double* XDot) const override;
125
126#ifdef FH_VISUALIZATION
128 void RenderInit(Ogre::Root* ogreRoot, ISimObjectCreator* creator) override { }
130 void RenderUpdate(double T, const double* X) override { }
131#endif
132
133private:
139 void WidenAboveMaxThrustCoefficient(ISimObjectCreator* creator, const std::string& strengthName);
140
145 void FollowRelativeFlow(double T);
146
148 void PublishFixedAxis();
149
151 void UpdateSeabedImage();
152
153 environment::EnvironmentProvider* m_pEnvironment = nullptr;
154 std::shared_ptr<marenv::wake::SourceSetWake> m_pWake;
155
157 double m_sourceVelocity[3] {};
158 marenv::wake::KernelParams m_kernelParams;
159 double m_setupTime = 0.0;
160 double m_seabedDepth = 0.0;
161 bool m_followFlow = true;
162 bool m_seabedChecked = false;
163 ISimObjectLogger* m_logger = nullptr;
164};
165
166} // namespace environmentmodels
Definition PorousDiscWakeSource.h:86
void OdeFcn(double T, const double *X, double *XDot) const override
No state: nothing to integrate.
void FinalSetup(double T, const double *X, ISimObjectCreator *Creator) override
PorousDiscWakeSource(std::string SimObjectName, ISimObjectCreator *Creator)
void PreOdeFcn(double T, const double *X, IStateUpdater *updater) override
Environment SimObjects.
Definition Environment.h:25
Definition WakeTypes.h:33
Definition WakeTypes.h:98