FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
SourceSetWake.h
1#pragma once
3
4#include <marenv/marenv.h>
5#include <marenv/wake/Kernel.h>
6#include <marenv/wake/LineKernel.h>
7#include <marenv/wake/WakeBlend.h>
8#include <marenv/wake/WakeField.h>
9#include <marenv/wake/WakeTypes.h>
10
11#include <memory>
12#include <vector>
13
14namespace marenv::wake
15{
56{
57public:
59 SourceSetWake() = default;
60
63 explicit SourceSetWake(const KernelParams& params);
64
65 ~SourceSetWake() override = default;
66
87 void Publish(SourceSet sources, const double velocity[3], double t0, double blendTime, double seabedDepth);
88
97 Status Sample(double t, const double pos[3], WakeSample& out) const override;
98
114 bool MayReach(const WakeQueryRegion& region) const override;
115
121 WakeSampleParts SampleParts(double t, const double pos[3]) const override;
122
123private:
125 struct Snapshot
126 {
127 std::vector<ElementarySource> sources;
128 double velocity[3];
129 KernelParams params;
130 double t0;
131 ImageSet images;
132 std::vector<KernelProfile> profiles;
133 std::vector<LineKernelProfile> lineProfiles;
134
136 bool Sample(double t, const double pos[3], WakeSample& out) const;
137
139 bool MayReach(const WakeQueryRegion& region) const;
140 };
141
143 static Status SampleState(const WakeBlend<Snapshot>::State* state, double t, const double pos[3], WakeSample& out);
144
146 static std::shared_ptr<const Snapshot> MakeSnapshot(SourceSet sources, const double velocity[3], const KernelParams& params, double t0);
147
148 KernelParams m_params;
149 WakeBlend<Snapshot> m_blend;
150};
151} // namespace marenv::wake
Definition SourceSetWake.h:56
Status Sample(double t, const double pos[3], WakeSample &out) const override
bool MayReach(const WakeQueryRegion &region) const override
WakeSampleParts SampleParts(double t, const double pos[3]) const override
SourceSetWake(const KernelParams &params)
void Publish(SourceSet sources, const double velocity[3], double t0, double blendTime, double seabedDepth)
SourceSetWake()=default
A field whose sources compose with the default KernelParams.
Definition WakeBlend.h:54
Definition WakeField.h:50
Status
Definition marenv.h:40
Definition Kernel.h:114
Definition WakeTypes.h:98
Definition WakeTypes.h:113
One immutable step of the blend chain.
Definition WakeBlend.h:58
Definition WakeField.h:17
Definition WakeSampleParts.h:111
Definition WakeTypes.h:21