FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
SingleBodySource.h
1#pragma once
2
78#include <fhsim_environment/WakeSourceSet.h> // WakeCastState, WakeCastingObject, WakeSourceSet
79#include <marenv/wake/WakeTypes.h> // WakeFrame
80
82{
83
89bool IsFiniteReference(const WakeCastState& reference);
90
101class SingleBodySource final : public WakeSourceSet
102{
103public:
109 SingleBodySource(const WakeCastingObject& object, const WakeCastState& reference, double T);
110
112 int NumCarriers() const override { return 1; }
114 void CarrierPosition(const double* X, int carrier, double pos[3]) const override;
116 void CarrierVelocity(const double* X, int carrier, double vel[3]) const override;
118 int NumSources() const override { return 1; }
120 int SourceCarriers(int source, int carriers[3]) const override;
122 double SourceArea(const double* /*X*/, int /*source*/) const override { return 0.0; }
124 SourceLoad EvaluateSource(const double* X, int source, const double sourceVel[3], const double waterVel[3]) const override;
126 double FrontalExtent(const double* X, const marenv::wake::WakeFrame& frame, double rearCentre[3]) const override;
127
128private:
129 const WakeCastingObject& m_object;
130 WakeCastState m_reference;
131 double m_time;
132 mutable double m_frontalArea = 0.0;
133 mutable double m_rearCentre[3] = {0.0, 0.0, 0.0};
134};
135
136} // namespace environment::wake::detail
Definition SingleBodySource.h:102
int NumSources() const override
One source.
Definition SingleBodySource.h:118
double FrontalExtent(const double *X, const marenv::wake::WakeFrame &frame, double rearCentre[3]) const override
The frontal area [m²] and rear centre of the last EvaluateSource.
void CarrierVelocity(const double *X, int carrier, double vel[3]) const override
The reference velocity [m/s], NED.
void CarrierPosition(const double *X, int carrier, double pos[3]) const override
The reference position [m], NED.
SingleBodySource(const WakeCastingObject &object, const WakeCastState &reference, double T)
double SourceArea(const double *, int) const override
0: the one source weighs 1 in the frame means whatever its area, which CurrentLoad gives only later i...
Definition SingleBodySource.h:122
int SourceCarriers(int source, int carriers[3]) const override
The source sits on carrier 0.
SourceLoad EvaluateSource(const double *X, int source, const double sourceVel[3], const double waterVel[3]) const override
The force only (WakeCastingObject::CurrentLoad along ê_U): there is no private source.
int NumCarriers() const override
One carrier.
Definition SingleBodySource.h:112
The casters behind BodyWake; internal, not for SimObjects (ENV-0102).
Definition CasterStep.h:19
bool IsFiniteReference(const WakeCastState &reference)
Definition WakeTypes.h:70