5#include <marenv/wake/JetField.h>
6#include <marenv/wake/WakeField.h>
7#include <marenv/wake/WakeSampleParts.h>
8#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(); }
88 std::size_t m_numFields = 0;
89 std::size_t m_numJets = 0;
90 bool m_hasOwn =
false;
91 bool m_blending =
false;
92 std::vector<WakeSampleParts> m_parts;
93 std::vector<JetSampleParts> m_jetParts;
94 mutable std::vector<WakeComposition> m_compositions;
120 void ComposeMany(
double t, std::span<
const std::array<double, 3>> positions, std::span<WakeComposition> out)
const;
129 HeldWakes Hold(
double t, std::span<
const std::array<double, 3>> positions,
const OwnTagsAt& ownTags = {})
const;
132 int NumFields()
const {
return static_cast<int>(m_fields.size()); }
135 int NumJets()
const {
return static_cast<int>(m_jets.size()); }
140 WakeSelection(std::vector<std::shared_ptr<const WakeField>> fields, std::vector<std::shared_ptr<const JetField>> jets,
const WakeQuery& query);
142 std::vector<std::shared_ptr<const WakeField>> m_owned;
143 std::vector<std::shared_ptr<const JetField>> m_ownedJets;
144 std::vector<const WakeField*> m_fields;
145 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
Definition JetField.h:134
Definition WakeField.h:56
Definition WakeRegistry.h:47
Definition WakeSelection.h:113
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:132
int NumJets() const
Number of registered jets selected.
Definition WakeSelection.h:135
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 WakeTypes.h:138
Definition WakeField.h:23
Definition WakeSelection.h:31
const WakeField * exclude
A registered field to skip; null skips none.
Definition WakeSelection.h:32
const JetField * excludeJet
A registered jet to skip; null skips none.
Definition WakeSelection.h:34
bool withWakes
Compose the wake fields, own included; false samples none of them and leaves the deficit 0.
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:35
bool withJets
Compose the jets; false samples none of them.
Definition WakeSelection.h:37
const WakeField * own
An unregistered field to compose in as well; null adds none.
Definition WakeSelection.h:33
Definition WakeTypes.h:21