OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
Public Member Functions | Private Member Functions | Private Attributes | List of all members
endfieldmodel::AsymmetricEnge Class Reference

#include <AsymmetricEnge.h>

Inheritance diagram for endfieldmodel::AsymmetricEnge:
Inheritance graph
[legend]
Collaboration diagram for endfieldmodel::AsymmetricEnge:
Collaboration graph
[legend]

Public Member Functions

 AsymmetricEnge ()
 
 AsymmetricEnge (const std::vector< double > aStart, double x0Start, double lambdaStart, const std::vector< double > aEnd, double x0End, double lambdaEnd)
 
AsymmetricEngeclone () const
 
std::ostream & print (std::ostream &out) const
 
double function (double x, int n) const
 
double getStartOffset () const
 
double getCentreLength () const
 
double getEndLength () const
 
std::shared_ptr< EngegetEngeStart () const
 
void setEngeStart (std::shared_ptr< Enge > eStart)
 
std::shared_ptr< EngegetEngeEnd () const
 
void setEngeEnd (std::shared_ptr< Enge > eEnd)
 
double getX0Start () const
 
void setX0Start (double x0)
 
double getX0End () const
 
void setX0End (double x0)
 
void setMaximumDerivative (size_t n)
 
void rescale (double scaleFactor)
 
- Public Member Functions inherited from endfieldmodel::EndFieldModel
virtual ~EndFieldModel ()
 

Private Member Functions

 AsymmetricEnge (const AsymmetricEnge &rhs)
 

Private Attributes

std::shared_ptr< EngeengeStart_m
 
std::shared_ptr< EngeengeEnd_m
 

Additional Inherited Members

- Static Public Member Functions inherited from endfieldmodel::EndFieldModel
static std::shared_ptr< EndFieldModelgetEndFieldModel (std::string name)
 
static void setEndFieldModel (std::string name, std::shared_ptr< EndFieldModel > efm)
 
static std::string getName (std::shared_ptr< EndFieldModel > efm)
 

Detailed Description

Calculate the AsymmetricEnge function (e.g. for multipole end fields).

AsymmetricEnge function is similar to the Enge function but user can specify enge parameters independently for start and end. So function is given by
\(f(x) = 1/(1+exp(h_s(x-x_s)))+1/(1+exp(h_e(-x-x_e)))-1\).

where h is a polynomial in \(x/\lambda\) with polynomial coefficients a and the subscript s refers to the start, e refers to the end.

The algorithm can also return the analytically calculated derivative to user-specified precision. n^th derivative is given by

\(f^{(n)}(x) = E^{(n)}(x-x_s)+(-1)^n E^{(n)}(-x-x_e)\)

for Enge function having n^th derivative \(E^{(n)}(x)\)

Definition at line 57 of file AsymmetricEnge.h.

Constructor & Destructor Documentation

◆ AsymmetricEnge() [1/3]

endfieldmodel::AsymmetricEnge::AsymmetricEnge ( )

Default constructor

Definition at line 5 of file AsymmetricEnge.cpp.

Referenced by clone().

◆ AsymmetricEnge() [2/3]

endfieldmodel::AsymmetricEnge::AsymmetricEnge ( const std::vector< double >  aStart,
double  x0Start,
double  lambdaStart,
const std::vector< double >  aEnd,
double  x0End,
double  lambdaEnd 
)

Constructor taking enge parameters

Definition at line 13 of file AsymmetricEnge.cpp.

References engeEnd_m, and engeStart_m.

◆ AsymmetricEnge() [3/3]

endfieldmodel::AsymmetricEnge::AsymmetricEnge ( const AsymmetricEnge rhs)
private

Definition at line 9 of file AsymmetricEnge.cpp.

Member Function Documentation

◆ clone()

AsymmetricEnge * endfieldmodel::AsymmetricEnge::clone ( ) const
inlinevirtual

Inheritable copy constructor. We take a deep copy of the engeStart and engeEnd

Implements endfieldmodel::EndFieldModel.

Definition at line 154 of file AsymmetricEnge.h.

References AsymmetricEnge().

Here is the call graph for this function:

◆ function()

double endfieldmodel::AsymmetricEnge::function ( double  x,
int  n 
) const
virtual

Return the value of enge at some point x

Implements endfieldmodel::EndFieldModel.

Definition at line 43 of file AsymmetricEnge.cpp.

References engeEnd_m, and engeStart_m.

◆ getCentreLength()

double endfieldmodel::AsymmetricEnge::getCentreLength ( ) const
inlinevirtual

Centre length is the average of x0End and x0Start

Implements endfieldmodel::EndFieldModel.

Definition at line 162 of file AsymmetricEnge.h.

References engeEnd_m, and engeStart_m.

◆ getEndLength()

double endfieldmodel::AsymmetricEnge::getEndLength ( ) const
inlinevirtual

End length is the average of lambdaEnd and lambdaStart

Implements endfieldmodel::EndFieldModel.

Definition at line 170 of file AsymmetricEnge.h.

References engeEnd_m, and engeStart_m.

◆ getEngeEnd()

std::shared_ptr< Enge > endfieldmodel::AsymmetricEnge::getEngeEnd ( ) const
inline

Get the enge function for the magnet exit

Definition at line 128 of file AsymmetricEnge.h.

References engeEnd_m.

◆ getEngeStart()

std::shared_ptr< Enge > endfieldmodel::AsymmetricEnge::getEngeStart ( ) const
inline

Get the enge function for the magnet entrance

Definition at line 125 of file AsymmetricEnge.h.

References engeStart_m.

◆ getStartOffset()

double endfieldmodel::AsymmetricEnge::getStartOffset ( ) const
inlinevirtual

Start offset is x0start

Implements endfieldmodel::EndFieldModel.

Definition at line 166 of file AsymmetricEnge.h.

References engeStart_m.

◆ getX0End()

double endfieldmodel::AsymmetricEnge::getX0End ( ) const
inline

Return x0End, offset of the end Enge

Definition at line 142 of file AsymmetricEnge.h.

References engeEnd_m.

◆ getX0Start()

double endfieldmodel::AsymmetricEnge::getX0Start ( ) const
inline

Return x0Start, offset of the start Enge

Definition at line 138 of file AsymmetricEnge.h.

References engeStart_m.

◆ print()

std::ostream & endfieldmodel::AsymmetricEnge::print ( std::ostream &  out) const
virtual

Print a human-readable description of the end field model

Implements endfieldmodel::EndFieldModel.

Definition at line 34 of file AsymmetricEnge.cpp.

References engeStart_m.

◆ rescale()

void endfieldmodel::AsymmetricEnge::rescale ( double  scaleFactor)
virtual

Rescale the Enge to a new length scale

Implements endfieldmodel::EndFieldModel.

Definition at line 29 of file AsymmetricEnge.cpp.

References engeEnd_m, and engeStart_m.

◆ setEngeEnd()

void endfieldmodel::AsymmetricEnge::setEngeEnd ( std::shared_ptr< Enge eEnd)
inline

Set the enge function for the magnet exit

Definition at line 134 of file AsymmetricEnge.h.

References engeEnd_m.

◆ setEngeStart()

void endfieldmodel::AsymmetricEnge::setEngeStart ( std::shared_ptr< Enge eStart)
inline

Set the enge function for the magnet entrance

Definition at line 131 of file AsymmetricEnge.h.

References engeStart_m.

◆ setMaximumDerivative()

void endfieldmodel::AsymmetricEnge::setMaximumDerivative ( size_t  n)
inlinevirtual

Setup the Enge recursion for derivatives

Implements endfieldmodel::EndFieldModel.

Definition at line 158 of file AsymmetricEnge.h.

References endfieldmodel::Enge::setEngeDiffIndices().

Here is the call graph for this function:

◆ setX0End()

void endfieldmodel::AsymmetricEnge::setX0End ( double  x0)
inline

Set x0End, offset of the end Enge

Definition at line 150 of file AsymmetricEnge.h.

References engeEnd_m.

◆ setX0Start()

void endfieldmodel::AsymmetricEnge::setX0Start ( double  x0)
inline

Set x0Start, offset of the start Enge

Definition at line 146 of file AsymmetricEnge.h.

References engeStart_m.

Member Data Documentation

◆ engeEnd_m

std::shared_ptr<Enge> endfieldmodel::AsymmetricEnge::engeEnd_m
private

◆ engeStart_m

std::shared_ptr<Enge> endfieldmodel::AsymmetricEnge::engeStart_m
private

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