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:
108 SingleBodySource(const WakeCastingObject& object, const WakeCastState& reference);
109
111 int NumCarriers() const override { return 1; }
113 void CarrierPosition(const double* X, int carrier, double pos[3]) const override;
115 void CarrierVelocity(const double* X, int carrier, double vel[3]) const override;
117 int NumSources() const override { return 1; }
119 int SourceCarriers(int source, int carriers[3]) const override;
121 double SourceArea(const double* /*X*/, int /*source*/) const override { return 0.0; }
123 SourceLoad EvaluateSource(const double* X, int source, const double sourceVel[3], const double waterVel[3]) const override;
125 double FrontalExtent(const double* X, const marenv::wake::WakeFrame& frame, double rearCentre[3]) const override;
126
127private:
128 const WakeCastingObject& m_object;
129 WakeCastState m_reference;
130 mutable double m_frontalArea = 0.0;
131 mutable double m_rearCentre[3] = {0.0, 0.0, 0.0};
132};
133
134} // namespace environment::wake::detail
Definition SingleBodySource.h:102
int NumSources() const override
One source.
Definition SingleBodySource.h:117
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 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:121
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:111
The casters behind BodyWake; internal, not for SimObjects (ENV-0102).
Definition CasterStep.h:19
bool IsFiniteReference(const WakeCastState &reference)
Definition WakeTypes.h:70