45 static_assert((std::is_same<T, short>::value ||
46 std::is_same<T, double>::value),
47 "Type for the BField Mesh must be one of short or double");
92 double scaleFactor = 1.0)
const;
98 double min(
size_t axis)
const;
100 double max(
size_t axis)
const;
130 std::array<std::vector<double>, 3>
m_mesh{};
138 std::array<std::vector<int>, 3>
m_LUT{};
Scalar phi() const
phi method
BFieldMesh & operator=(BFieldMesh &&)=default
void getB(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT B, double *ATH_RESTRICT deriv=nullptr) const
get the bfield given a point in xyz
void setBscale(double bscale)
set B scale
int memSize() const
memory size
unsigned nfield() const
field entries in mesh
double rmax() const
maximum in r
void appendField(const BFieldVector< T > &field)
append a filed vector
unsigned nmesh(size_t axis) const
number of cells along each axis = 0 (z), 1 (r), 2 (phi)
std::array< double, 3 > m_invUnit
void scaleBscale(double factor)
scale B scale by a factor
double min(size_t axis) const
minimum for a particular axis = 0 (z), 1 (r), 2 (phi)
BFieldMesh(BFieldMesh &&)=default
std::vector< BFieldVector< T > > m_field
std::array< double, 3 > m_max
void buildLUT()
build Look Up Table
double zmax() const
maximum in z
const BFieldVector< T > & field(size_t index) const
field vector at cell corner at index
BFieldMesh & operator=(const BFieldMesh &)=default
std::array< double, 3 > m_min
std::array< std::vector< int >, 3 > m_LUT
void getCache(double z, double r, double phi, BFieldCache &cache, double scaleFactor=1.0) const
double phimax() const
maximum in phi
std::array< std::vector< double >, 3 > m_mesh
void reserve(int nz, int nr, int nphi)
allocate space to vectors
void appendMesh(int axis, double value)
add a position for a cell corner for an axis
double mesh(size_t axis, size_t index) const
coordinate along axis (0 (z), 1 (r), 2 (phi)) of the cell at index (0 to nmesh-1)
double zmin() const
minimum in z
bool inside(double z, double r, double phi) const
double rmin() const
minimun in r
double bscale() const
scale
double phimin() const
minimun in phi
void reserve(int nz, int nr, int nphi, int nfield)
allocate space to vectors
double max(size_t axis) const
maximum or a particular axis = 0 (z), 1 (r), 2 (phi)
BFieldMesh(double zmin, double zmax, double rmin, double rmax, double phimin, double phimax, double bscale)
constructor with mesh dimensions and scale
void setRange(double zmin, double zmax, double rmin, double rmax, double phimin, double phimax)
set mesh range/dimensions
BFieldMesh(const BFieldMesh &)=default
Macro wrapping the nonstandard restrict keyword.