26 std::array<double, 3>
min{};
27 std::array<double, 3>
max{};
28 std::array<std::uint32_t, 3>
n{};
31 [[nodiscard]] std::size_t
size()
const;
33 [[nodiscard]] std::size_t
index(std::size_t i, std::size_t j, std::size_t k)
const {
34 return (i *
n[1] + j) *
n[2] + k;
37 [[nodiscard]]
double node(std::size_t axis, std::size_t i)
const;
46 std::array<std::int8_t, 9>
parity{1, 1, 1, 1, 1, 1, 1, 1, 1};
70 std::vector<float>
bx;
71 std::vector<float>
by;
72 std::vector<float>
bz;
88 std::array<double, 3>
min{};
89 std::array<double, 3>
max{};
93 [[nodiscard]]
bool contains(
double x,
double y,
double z)
const;
98[[nodiscard]] FieldBox
extent(FieldMap
const& map);
104[[nodiscard]] std::shared_ptr<IFieldEvaluator>
translated(std::shared_ptr<IFieldEvaluator> inner,
105 std::array<double, 3>
const& offset);
111[[nodiscard]] std::shared_ptr<IFieldEvaluator>
zeroOutside(std::shared_ptr<IFieldEvaluator> inner,
112 FieldBox
const& box);
Definition ActsFieldAdapter.h:25
std::shared_ptr< IFieldEvaluator > zeroOutside(std::shared_ptr< IFieldEvaluator > inner, FieldBox const &box)
Evaluator that returns inner's field inside box, given in inner's frame, and 0 outside it,...
Definition FieldMap.cpp:159
void validate(FieldMap const &map)
Throw std::invalid_argument unless map is well formed: non-empty name, at least two nodes and a posit...
Definition FieldMap.cpp:50
std::string resolveFieldMapPath(std::string const &path)
Canonical path of a map file.
Definition FieldMap.cpp:20
std::shared_ptr< IFieldEvaluator > makeFieldEvaluator(FieldMap const &map)
Build a thread-safe evaluator for map: trilinear interpolation, clamped to the boundary value outside...
Definition CovfieFieldSource.cpp:78
std::shared_ptr< IFieldEvaluator > translated(std::shared_ptr< IFieldEvaluator > inner, std::array< double, 3 > const &offset)
Evaluator for inner placed with its origin at offset (mm): the field at p is inner's field at p - off...
Definition FieldMap.cpp:143
FieldBox extent(FieldMap const &map)
Region map covers in its local frame.
Definition FieldMap.cpp:92
Axis-aligned box, lengths in mm.
Definition FieldMap.h:87
bool contains(double x, double y, double z) const
True if (x, y, z) mm lies inside the box or on its boundary; false if any coordinate is NaN.
Definition FieldMap.cpp:87
std::array< double, 3 > max
Definition FieldMap.h:89
std::array< double, 3 > min
Definition FieldMap.h:88
Equidistant Cartesian grid in the map's local frame.
Definition FieldMap.h:25
std::array< double, 3 > max
Definition FieldMap.h:27
double node(std::size_t axis, std::size_t i) const
Position (mm) of node i on axis axis.
Definition FieldMap.cpp:37
std::array< double, 3 > min
Definition FieldMap.h:26
std::size_t index(std::size_t i, std::size_t j, std::size_t k) const
Flat index of node (i, j, k): x-major, z fastest.
Definition FieldMap.h:33
std::size_t size() const
Number of nodes, n[0] * n[1] * n[2].
Definition FieldMap.cpp:33
std::array< std::uint32_t, 3 > n
Definition FieldMap.h:28
Where a map came from. Informational only; never affects evaluation.
Definition FieldMap.h:57
std::string comment
Free text.
Definition FieldMap.h:59
std::string producer
Writing tool and version.
Definition FieldMap.h:60
std::string created_utc
ISO 8601 timestamp.
Definition FieldMap.h:61
std::string source
Origin file or generator.
Definition FieldMap.h:58
Reflection symmetry.
Definition FieldMap.h:44
std::array< std::int8_t, 9 > parity
Definition FieldMap.h:46
std::array< bool, 3 > mirror
Definition FieldMap.h:45
static FieldMapSymmetry quadrantDipole()
FairShip's quadrant-symmetric dipole (ShipBFieldMap with isSymmetric): mirrored in x and y; Bx flips ...
Definition FieldMap.cpp:42
bool any() const
Definition FieldMap.h:48
One field map: grid, symmetry, and per-node field components in Tesla, stored in FieldMapGrid::index ...
Definition FieldMap.h:66
FieldMapProvenance provenance
Definition FieldMap.h:73
std::vector< float > bz
Definition FieldMap.h:72
FieldMapSymmetry symmetry
Definition FieldMap.h:69
std::string name
Definition FieldMap.h:67
FieldMapGrid grid
Definition FieldMap.h:68
std::vector< float > by
Definition FieldMap.h:71
std::vector< float > bx
Definition FieldMap.h:70