8#include <fhsim/simobject/SimObject.h>
9#include <fhsim_environment/BodyWake.h>
10#include <fhsim_environment/hydrodynamics/SphereHydro.h>
11#include <fhsim_environment/WakeSourceSet.h>
18class EnvironmentProvider;
80class TestWakeCluster :
public SimObject,
public environment::wake::IndexedWakeCastingObject
102 void FinalSetup(
double T,
const double* X, ISimObjectCreator* Creator)
override;
112 void OdeFcn(
double T,
const double* X,
double* XDot)
const override;
119 const double*
Force(
double T,
const double* X);
122 const environment::wake::BodyWake*
Wake()
const {
return m_wake.get(); }
124 int NumBodies()
const override {
return m_numBodies; }
125 environment::wake::WakeCastState Body(
const double* X,
int body)
const override;
126 double BodyRadius(
int )
const override {
return 0.5 * m_sphere.diameter; }
127 environment::wake::SourceLoad BodyLoad(
const double* X,
int body,
const double bodyVel[3],
const double waterVel[3])
const override;
130 int m_positionIndex = 0;
132 environment::sphere_hydro::Sphere m_sphere;
133 double m_towVelocity[3] = {0.0, 0.0, 0.0};
134 std::unique_ptr<environment::wake::SourceSetBodyWake> m_wake;
135 std::vector<double> m_waterVelocity;
136 std::vector<double> m_force;
Definition TestWakeCluster.h:81
void OdeFcn(double T, const double *X, double *XDot) const override
The positions move at TowVelocity.
const double * Position(double T, const double *X)
Output port Position [m], NED.
TestWakeCluster(std::string SimObjectName, ISimObjectCreator *Creator)
const double * WaterVelocity(double T, const double *X)
Output port WaterVelocity [m/s], NED.
const double * Force(double T, const double *X)
Output port Force [N], NED.
void FinalSetup(double T, const double *X, ISimObjectCreator *Creator) override
const environment::wake::BodyWake * Wake() const
The wakes cast and received; never null.
Definition TestWakeCluster.h:122
void PreOdeFcn(double T, const double *X) override
SimObjects for testing environment functionality.
Definition TestBuoy1.h:17