5#include <marenv/WaterVelocity.h>
6#include <marenv/wake/JetField.h>
7#include <marenv/wake/WakeField.h>
8#include <marenv/wake/WakeSampleParts.h>
9#include <marenv/wake/WakeTypes.h>
52using OwnTagsAt = std::function<std::span<const int>(std::size_t point)>;
80 std::size_t
NumPoints()
const {
return m_compositions.size(); }
83 int NumFields()
const {
return static_cast<int>(m_numFields); }
86 int NumJets()
const {
return static_cast<int>(m_numJets); }
94 std::size_t m_numFields = 0;
95 std::size_t m_numJets = 0;
96 bool m_hasOwn =
false;
97 bool m_blending =
false;
98 std::vector<WakeSampleParts> m_parts;
99 std::vector<JetSampleParts> m_jetParts;
100 mutable std::vector<WakeComposition> m_compositions;
129 void ComposeMany(
double t, std::span<
const std::array<double, 3>> positions, std::span<WakeComposition> out)
const;
138 HeldWakes Hold(
double t, std::span<
const std::array<double, 3>> positions,
const OwnTagsAt& ownTags = {})
const;
141 int NumFields()
const {
return static_cast<int>(m_fields.size()); }
144 int NumJets()
const {
return static_cast<int>(m_jets.size()); }
151 std::vector<std::shared_ptr<const WakeField>> m_owned;
152 std::vector<std::shared_ptr<const JetField>> m_ownedJets;
153 std::vector<const WakeField*> m_fields;
154 std::vector<const JetField*> m_jets;
Definition WakeSelection.h:62
std::size_t NumPoints() const
Number of points held.
Definition WakeSelection.h:80
const WakeComposition & At(std::size_t point, double t) const
WakeComposition At(std::size_t point, double t, const WakeSample &own) const
int NumJets() const
Number of registered jets held at each point. Equals WakeSelection::NumJets().
Definition WakeSelection.h:86
int NumFields() const
Number of registered wake fields held at each point; the own field is not counted....
Definition WakeSelection.h:83
Definition JetField.h:134
Definition WakeField.h:56
Definition WakeRegistry.h:47
Definition WakeSelection.h:119
HeldWakes Hold(double t, std::span< const std::array< double, 3 > > positions, const OwnTagsAt &ownTags={}) const
int NumFields() const
Number of registered wake fields selected.
Definition WakeSelection.h:141
int NumJets() const
Number of registered jets selected.
Definition WakeSelection.h:144
void ComposeMany(double t, std::span< const std::array< double, 3 > > positions, std::span< WakeComposition > out) const
WakeComposition Compose(double t, const double pos[3]) const
The composition at a point of the region at time t.
WakeQueryRegion EnclosingRegion(std::span< const std::array< double, 3 > > positions, double time, double cutoff=0.0)
Definition WaterVelocity.h:33
Definition WakeTypes.h:138
Definition WakeField.h:23
Definition WakeSelection.h:33
const WakeField * exclude
A registered field to skip; null skips none.
Definition WakeSelection.h:34
const JetField * excludeJet
A registered jet to skip; null skips none.
Definition WakeSelection.h:36
std::span< const int > ownExcludedTags
The tags of own's sources to leave out at this point (WakeField::SampleExcluding(),...
Definition WakeSelection.h:37
const WakeField * own
An unregistered field to compose in as well; null adds none.
Definition WakeSelection.h:35
Definition WakeTypes.h:21