OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
MultipoleTBase Class Referenceabstract

#include <MultipoleTBase.h>

Inheritance diagram for MultipoleTBase:
Collaboration diagram for MultipoleTBase:

Public Member Functions

 MultipoleTBase (MultipoleT *element)
virtual ~MultipoleTBase ()=default
virtual void initialise ()=0
virtual BGeometryBasegetGeometry ()=0
virtual const BGeometryBasegetGeometry () const =0
virtual void transformCoords (Vector_t &R)=0
virtual void transformBField (Vector_t &B, const Vector_t &R)=0
virtual double getScaleFactor (double x, double s)=0
virtual double getBx (const Vector_t &R)
double getBz (const Vector_t &R)
virtual double getBs (const Vector_t &R)
virtual double getFn (size_t n, double x, double s)=0
virtual void setMaxOrder (size_t, size_t)
virtual Vector_t localCartesianToOpalCartesian (const Vector_t &r)=0
virtual double localCartesianRotation ()

Protected Attributes

MultipoleTelement_m

Detailed Description

Definition at line 84 of file MultipoleTBase.h.

Constructor & Destructor Documentation

◆ MultipoleTBase()

MultipoleTBase::MultipoleTBase ( MultipoleT * element)
explicit

◆ ~MultipoleTBase()

virtual MultipoleTBase::~MultipoleTBase ( )
virtualdefault

Destructor

Member Function Documentation

◆ getBs()

double MultipoleTBase::getBs ( const Vector_t & R)
virtual

Returns the component of the field along the central axis
Returns zero far outside fringe field \( Bs = sum_n z^(2n+1) / (2n+1)! \partial_s f_n / h_s \)

Reimplemented in MultipoleTStraight.

Definition at line 60 of file MultipoleTBase.cpp.

References element_m, and getScaleFactor().

Here is the call graph for this function:

◆ getBx()

double MultipoleTBase::getBx ( const Vector_t & R)
virtual

Returns the radial component of the field
Returns zero far outside fringe field \( Bx = sum_n z^(2n+1) / (2n+1)! * \partial_x f_n \)

Reimplemented in MultipoleTStraight.

Definition at line 48 of file MultipoleTBase.cpp.

References element_m.

◆ getBz()

double MultipoleTBase::getBz ( const Vector_t & R)

Returns the vertical field component
Returns zero far outside fringe field \( Bz = sum_n f_n * z^(2n) / (2n)! \)

Definition at line 37 of file MultipoleTBase.cpp.

References element_m, and getFn().

Here is the call graph for this function:

◆ getFn()

virtual double MultipoleTBase::getFn ( size_t n,
double x,
double s )
pure virtual

Calculate fn(x, s) by expanding the differential operator (from Laplacian and scalar potential) in terms of polynomials

Parameters
n-> nth derivative
x-> Coordinate x
s-> Coordinate s

Implemented in MultipoleTCurvedConstRadius, MultipoleTCurvedVarRadius, and MultipoleTStraight.

Referenced by getBz().

◆ getGeometry() [1/2]

virtual const BGeometryBase & MultipoleTBase::getGeometry ( ) const
pure virtual

Return the cell geometry

Implemented in MultipoleTCurvedConstRadius, MultipoleTCurvedVarRadius, and MultipoleTStraight.

◆ getGeometry() [2/2]

virtual BGeometryBase & MultipoleTBase::getGeometry ( )
pure virtual

Return the cell geometry

Implemented in MultipoleTCurvedConstRadius, MultipoleTCurvedVarRadius, and MultipoleTStraight.

◆ getScaleFactor()

virtual double MultipoleTBase::getScaleFactor ( double x,
double s )
pure virtual

Returns the scale factor \( h_s = 1 + x / \rho(s) \)

Parameters
x-> Coordinate x
s-> Coordinate s

Implemented in MultipoleTCurvedConstRadius, MultipoleTCurvedVarRadius, and MultipoleTStraight.

Referenced by getBs().

◆ initialise()

virtual void MultipoleTBase::initialise ( )
pure virtual

Initialise the element

Implemented in MultipoleTCurvedConstRadius, MultipoleTCurvedVarRadius, and MultipoleTStraight.

◆ localCartesianRotation()

virtual double MultipoleTBase::localCartesianRotation ( )
inlinevirtual

Reimplemented in MultipoleTCurvedVarRadius.

Definition at line 136 of file MultipoleTBase.h.

◆ localCartesianToOpalCartesian()

virtual Vector_t MultipoleTBase::localCartesianToOpalCartesian ( const Vector_t & r)
pure virtual

◆ setMaxOrder()

virtual void MultipoleTBase::setMaxOrder ( size_t ,
size_t  )
inlinevirtual

Set the number of terms used in calculation of field components

Parameters
orderZ-> Number of terms in expansion in z
orderX-> Number of terms in expansion in x

Reimplemented in MultipoleTCurvedConstRadius, and MultipoleTCurvedVarRadius.

Definition at line 134 of file MultipoleTBase.h.

◆ transformBField()

virtual void MultipoleTBase::transformBField ( Vector_t & B,
const Vector_t & R )
pure virtual

Transform B-field from Frenet-Serret coordinates to lab coordinates

Implemented in MultipoleTCurvedConstRadius, MultipoleTCurvedVarRadius, and MultipoleTStraight.

◆ transformCoords()

virtual void MultipoleTBase::transformCoords ( Vector_t & R)
pure virtual

Transform to Frenet-Serret coordinates for sector magnets

Implemented in MultipoleTCurvedConstRadius, MultipoleTCurvedVarRadius, and MultipoleTStraight.

Member Data Documentation

◆ element_m


The documentation for this class was generated from the following files: