|
OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
|
#include <MultipoleTBase.h>


Public Member Functions | |
| MultipoleTBase (MultipoleT *element) | |
| virtual | ~MultipoleTBase ()=default |
| virtual void | initialise ()=0 |
| virtual BGeometryBase * | getGeometry ()=0 |
| virtual void | getField (Kokkos::View< Vector_t< double, 3 > * >, Kokkos::View< Vector_t< double, 3 > * >, Kokkos::View< Vector_t< double, 3 > * >, double, size_t)=0 |
| virtual bool | getField (const Vector_t< double, 3 > &, Vector_t< double, 3 > &, Vector_t< double, 3 > &, double)=0 |
| void | generateTanhCoefficients (unsigned int numDerivatives) |
Static Public Member Functions | |
| static KOKKOS_INLINE_FUNCTION double | factorial (unsigned int n) |
| static KOKKOS_INLINE_FUNCTION double | powerInteger (double x, unsigned int n) |
| static KOKKOS_INLINE_FUNCTION void | calcTransverseDerivatives (const Kokkos::Array< double, MultipoleTConfig::NumPoles > &poles, unsigned int numDerivatives, double x, Kokkos::Array< double, MaxDerivatives > &derivatives) |
| template<class ViewType > | |
| static KOKKOS_INLINE_FUNCTION void | calcFringeDerivatives (const double &s0, const double &lambdaLeft, const double &lambdaRight, double s, const ViewType &tanhCoefficients, Kokkos::Array< double, MaxDerivatives > &derivatives) |
| static KOKKOS_INLINE_FUNCTION Vector_t< double, 3 > | rotateFrame (const Vector_t< double, 3 > &R, const MultipoleTConfig &config) |
| static KOKKOS_INLINE_FUNCTION void | calcPowers (double value, unsigned int maxPower, Kokkos::Array< double, MaxPowerInteger > &powers) |
Static Public Attributes | |
| static constexpr size_t | MaxFactorial = 20 |
| static constexpr size_t | MaxPowerInteger = 20 |
| static constexpr unsigned int | MaxDerivatives = 20 |
Protected Attributes | |
| MultipoleT * | element_m |
| Kokkos::View< double ** > | tanhCoefficientsGpu_m |
| Kokkos::View< double ** >::host_mirror_type | tanhCoefficientsHost_m |
Definition at line 73 of file MultipoleTBase.h.
|
explicit |
Constructor
Definition at line 21 of file MultipoleTBase.cpp.
|
virtualdefault |
Destructor
|
static |
Definition at line 186 of file MultipoleTBase.h.
Referenced by MultipoleTCurvedConstRadius::computeBField(), and MultipoleTStraight::computeBField().
|
static |
Definition at line 235 of file MultipoleTBase.h.
Referenced by MultipoleTCurvedConstRadius::computeBField().
|
static |
Helper function that calculates transverse derivatives for multipole fields
Definition at line 166 of file MultipoleTBase.h.
References MultipoleTConfig::NumPoles, and powerInteger().
Referenced by MultipoleTCurvedConstRadius::computeBField(), and MultipoleTStraight::computeBField().

|
static |
Helper function that returns factorial of n for n<=20 on both host and GPU
Definition at line 126 of file MultipoleTBase.h.
References MaxFactorial.
Referenced by MultipoleTCurvedConstRadius::computeBField(), and MultipoleTStraight::computeBField().
| void MultipoleTBase::generateTanhCoefficients | ( | unsigned int | numDerivatives | ) |
Definition at line 23 of file MultipoleTBase.cpp.
References tanhCoefficientsGpu_m, and tanhCoefficientsHost_m.
Referenced by MultipoleTCurvedConstRadius::initialise(), and MultipoleTStraight::initialise().
|
pure virtual |
Return the field for a single point
Implemented in MultipoleTBaseTest, MultipoleTCurvedConstRadius, and MultipoleTStraight.
|
pure virtual |
Return the field for an array of points
Implemented in MultipoleTCurvedConstRadius, and MultipoleTStraight.
|
pure virtual |
Return the cell geometry
Implemented in MultipoleTCurvedConstRadius, MultipoleTStraight, and MultipoleTBaseTest.
|
pure virtual |
Initialise the element
Implemented in MultipoleTCurvedConstRadius, MultipoleTStraight, and MultipoleTBaseTest.
|
static |
Helper function that returns x^n for 0<=n<=20 on both host and GPU
Definition at line 153 of file MultipoleTBase.h.
Referenced by calcTransverseDerivatives(), MultipoleTCurvedConstRadius::computeBField(), and MultipoleTStraight::computeBField().
|
static |
Apply two 2D rotation matrices to coordinate vector Rotate around central axis => skew fields Rotate azimuthally => entrance angle
Definition at line 217 of file MultipoleTBase.h.
References MultipoleTConfig::entranceAngle_m, and MultipoleTConfig::rotation_m.
Referenced by MultipoleTCurvedConstRadius::toMagnetCoords(), and MultipoleTStraight::toMagnetCoords().
|
protected |
Definition at line 81 of file MultipoleTBase.h.
Referenced by MultipoleTCurvedConstRadius::getField(), MultipoleTStraight::getField(), MultipoleTCurvedConstRadius::initialise(), and MultipoleTStraight::initialise().
|
staticconstexpr |
Definition at line 103 of file MultipoleTBase.h.
Referenced by MultipoleT::validateConfiguration().
|
staticconstexpr |
Definition at line 101 of file MultipoleTBase.h.
Referenced by factorial().
|
staticconstexpr |
Definition at line 102 of file MultipoleTBase.h.
|
protected |
Definition at line 82 of file MultipoleTBase.h.
Referenced by generateTanhCoefficients().
|
protected |
Definition at line 83 of file MultipoleTBase.h.
Referenced by generateTanhCoefficients(), MultipoleTCurvedConstRadius::getField(), MultipoleTStraight::getField(), and MultipoleTBaseTest::tanhCoefficients().