|
OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
|
#include <AsymmetricEnge.h>


Public Member Functions | |
| AsymmetricEnge () | |
| AsymmetricEnge (const std::vector< double > aStart, double x0Start, double lambdaStart, const std::vector< double > aEnd, double x0End, double lambdaEnd) | |
| AsymmetricEnge * | clone () 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< Enge > | getEngeStart () const |
| void | setEngeStart (std::shared_ptr< Enge > eStart) |
| std::shared_ptr< Enge > | getEngeEnd () 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< Enge > | engeStart_m |
| std::shared_ptr< Enge > | engeEnd_m |
Additional Inherited Members | |
Static Public Member Functions inherited from endfieldmodel::EndFieldModel | |
| static std::shared_ptr< EndFieldModel > | getEndFieldModel (std::string name) |
| static void | setEndFieldModel (std::string name, std::shared_ptr< EndFieldModel > efm) |
| static std::string | getName (std::shared_ptr< EndFieldModel > efm) |
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.
| endfieldmodel::AsymmetricEnge::AsymmetricEnge | ( | ) |
| 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.
|
private |
Definition at line 9 of file AsymmetricEnge.cpp.
|
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().

|
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.
|
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.
|
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.
|
inline |
Get the enge function for the magnet exit
Definition at line 128 of file AsymmetricEnge.h.
References engeEnd_m.
|
inline |
Get the enge function for the magnet entrance
Definition at line 125 of file AsymmetricEnge.h.
References engeStart_m.
|
inlinevirtual |
Start offset is x0start
Implements endfieldmodel::EndFieldModel.
Definition at line 166 of file AsymmetricEnge.h.
References engeStart_m.
|
inline |
Return x0End, offset of the end Enge
Definition at line 142 of file AsymmetricEnge.h.
References engeEnd_m.
|
inline |
Return x0Start, offset of the start Enge
Definition at line 138 of file AsymmetricEnge.h.
References engeStart_m.
|
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.
|
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.
|
inline |
Set the enge function for the magnet exit
Definition at line 134 of file AsymmetricEnge.h.
References engeEnd_m.
|
inline |
Set the enge function for the magnet entrance
Definition at line 131 of file AsymmetricEnge.h.
References engeStart_m.
|
inlinevirtual |
Setup the Enge recursion for derivatives
Implements endfieldmodel::EndFieldModel.
Definition at line 158 of file AsymmetricEnge.h.
References endfieldmodel::Enge::setEngeDiffIndices().

|
inline |
Set x0End, offset of the end Enge
Definition at line 150 of file AsymmetricEnge.h.
References engeEnd_m.
|
inline |
Set x0Start, offset of the start Enge
Definition at line 146 of file AsymmetricEnge.h.
References engeStart_m.
|
private |
Definition at line 122 of file AsymmetricEnge.h.
Referenced by AsymmetricEnge(), function(), getCentreLength(), getEndLength(), getEngeEnd(), getX0End(), rescale(), setEngeEnd(), and setX0End().
|
private |
Definition at line 121 of file AsymmetricEnge.h.
Referenced by AsymmetricEnge(), function(), getCentreLength(), getEndLength(), getEngeStart(), getStartOffset(), getX0Start(), print(), rescale(), setEngeStart(), and setX0Start().