OPAL (Object Oriented Parallel Accelerator Library)
2.2.0
OPAL
|
A Lie algebraic map, factored according to Dragt and Finn. More...
#include <DragtFinnMap.h>
Public Member Functions | |
DragtFinnMap (const DragtFinnMap &) | |
~DragtFinnMap () | |
const DragtFinnMap & | operator= (const DragtFinnMap &) |
DragtFinnMap () | |
Construct identity map. More... | |
DragtFinnMap (int) | |
Construct identity map with space for given order. More... | |
DragtFinnMap (const FVps< double, 2 *N > &map) | |
Build factored representation from a Taylor series map. More... | |
DragtFinnMap (const FTps< double, 2 *N > &map) | |
Build factored representation from a pseudo-Hamiltonian. More... | |
DragtFinnMap (const LinearMap< double, 2 *N > &map) | |
Build factored representation from a linear map. More... | |
operator FVps< double, 2 *N > () const | |
Convert to Taylor series map. More... | |
operator LinearMap< double, 2 *N > () const | |
Convert to Taylor series map. More... | |
void | assign (const FMatrix< double, 2 *N, 2 *N > &) |
Assign the matrix representing the linear transform. More... | |
void | assign (const FTps< double, 2 *N > &) |
Assign the complete set of generators. More... | |
void | assign (const FLieGenerator< double, N > &) |
Assign the generator for a selected order. More... | |
const FMatrix< double, 2 *N, 2 *N > & | getMatrix () const |
Return the matrix representing the linear transform. More... | |
FMatrix< double, 2 *N, 2 *N > & | getMatrix () |
Return the matrix representing the linear transform. More... | |
const FTps< double, 2 *N > & | getGenerators () const |
Return the complete set of generators. More... | |
FTps< double, 2 *N > & | getGenerators () |
Return the complete set of generators. More... | |
const FLieGenerator< double, N > | getGenerator (int) const |
Return the generator for a selected order. More... | |
int | getOrder () const |
Return the order of the generators. More... | |
DragtFinnMap | inverse () const |
Compute inverse map. More... | |
DragtFinnMap | reverse () const |
Compute inverse factorisation of map. More... | |
void | operator+= (const FTps< double, 2 *N > &) |
Add to set of generators. More... | |
void | operator-= (const FTps< double, 2 *N > &) |
Subtract from set of generators. More... | |
void | operator+= (const FLieGenerator< double, N > &) |
Add to generator of given order. More... | |
void | operator-= (const FLieGenerator< double, N > &) |
Subtract from generator of given order. More... | |
DragtFinnMap | catenate (const DragtFinnMap &) const |
Substitute (concatenate) with another map in beam order. More... | |
DragtFinnMap | conjugate (const DragtFinnMap &) const |
Conjugate with another map. More... | |
void | dynamicFixedPoint (FVector< double, 2 *N > &fp, DragtFinnMap &map) |
Compute dynamic fixed point. More... | |
void | staticFixedPoint (FVector< double, 2 *N > &fp, DragtFinnMap &map) |
Compute static fixed point. More... | |
void | removeDispersion (DragtFinnMap &dm, DragtFinnMap &map) |
Split map into dispersion map and non-dispersive part. More... | |
void | trackOrbit (FVector< double, 2 *N > &orbit, DragtFinnMap &map) |
Track an orbit through the map. More... | |
DragtFinnMap | transform (const FLieGenerator< double, N > &g, int topOrder) |
Build the terminating exponential series. More... | |
Static Public Member Functions | |
static DragtFinnMap | factorBerzForestIrwin (const FTps< double, 2 *N > &H) |
static DragtFinnMap | factorDouglas (const FTps< double, 2 *N > &H) |
static DragtFinnMap | factorSimple (const FTps< double, 2 *N > &H) |
Private Member Functions | |
const double * | begin (int) const |
double * | begin (int) |
const double * | end (int) const |
double * | end (int) |
DragtFinnMap | catenateZero (const DragtFinnMap &) const |
Static Private Member Functions | |
static FMatrix< double, 2 *N, 2 *N > | exponentiate (const FMatrix< double, 2 *N, 2 *N > &) |
static DragtFinnMap | factorize (const FTps< double, 2 *N > &H) |
static FMatrix< double, 2 *N, 2 *N > | makeMatrix (const FLieGenerator< double, N > &f_2) |
static void | move_g_1 (DragtFinnMap &f, DragtFinnMap &g) |
static int | orderModes (FMatrix< double, 2 *N, 2 *N > &, FVector< std::complex< double >, 2 *N > &) |
Private Attributes | |
FMatrix< double, 2 *N, 2 *N > | itsMatrix |
FTps< double, 2 *N > | itsGenerators |
A Lie algebraic map, factored according to Dragt and Finn.
Definition at line 43 of file DragtFinnMap.h.
DragtFinnMap< N >::DragtFinnMap | ( | const DragtFinnMap< N > & | rhs | ) |
Definition at line 250 of file DragtFinnMap.h.
DragtFinnMap< N >::~DragtFinnMap | ( | ) |
Definition at line 273 of file DragtFinnMap.h.
DragtFinnMap< N >::DragtFinnMap | ( | ) |
Construct identity map.
Definition at line 257 of file DragtFinnMap.h.
References DragtFinnMap< N >::itsMatrix.
|
explicit |
Construct identity map with space for given order.
Definition at line 265 of file DragtFinnMap.h.
References DragtFinnMap< N >::itsMatrix.
|
explicit |
Build factored representation from a Taylor series map.
Definition at line 288 of file DragtFinnMap.h.
References DragtFinnMap< N >::itsGenerators.
|
explicit |
Build factored representation from a pseudo-Hamiltonian.
Definition at line 352 of file DragtFinnMap.h.
References assign(), DragtFinnMap< N >::assign(), DragtFinnMap< N >::catenateZero(), FTps< T, N >::filter(), DragtFinnMap< N >::getGenerator(), DragtFinnMap< N >::getGenerators(), DragtFinnMap< N >::getMatrix(), FTps< T, N >::getMaxOrder(), FTps< T, N >::substitute(), and DragtFinnMap< N >::transform().
|
explicit |
Build factored representation from a linear map.
Definition at line 300 of file DragtFinnMap.h.
References DragtFinnMap< N >::itsGenerators.
void DragtFinnMap< N >::assign | ( | const FMatrix< double, 2 *N, 2 *N > & | mat | ) |
Assign the matrix representing the linear transform.
Definition at line 395 of file DragtFinnMap.h.
Referenced by LieMapper::applyTransform(), DragtFinnMap< N >::catenateZero(), DragtFinnMap< N >::DragtFinnMap(), DragtFinnNormalForm< N >::DragtFinnNormalForm(), DragtFinnMap< N >::factorBerzForestIrwin(), DragtFinnMap< N >::factorDouglas(), DragtFinnMap< N >::factorSimple(), DragtFinnMap< N >::inverse(), DragtFinnMap< N >::move_g_1(), DragtFinnMap< N >::removeDispersion(), DragtFinnMap< N >::reverse(), DragtFinnMap< N >::trackOrbit(), LieMapper::visitCorrector(), and LieMapper::visitSeparator().
void DragtFinnMap< N >::assign | ( | const FTps< double, 2 *N > & | gen | ) |
Assign the complete set of generators.
Definition at line 402 of file DragtFinnMap.h.
void DragtFinnMap< N >::assign | ( | const FLieGenerator< double, N > & | gen | ) |
Assign the generator for a selected order.
Definition at line 409 of file DragtFinnMap.h.
References FLieGenerator< T, N >::begin(), FTps< T, N >::begin(), FLieGenerator< T, N >::end(), FLieGenerator< T, N >::getOrder(), and FTps< T, N >::unique().
|
inlineprivate |
Definition at line 1058 of file DragtFinnMap.h.
References FTpsData< N >::getSize().
|
inlineprivate |
Definition at line 1051 of file DragtFinnMap.h.
References FTpsData< N >::getSize().
DragtFinnMap< N > DragtFinnMap< N >::catenate | ( | const DragtFinnMap< N > & | rhs | ) | const |
Substitute (concatenate) with another map in beam order.
Definition at line 813 of file DragtFinnMap.h.
References DragtFinnMap< N >::catenateZero(), FTps< T, N >::filter(), and DragtFinnMap< N >::itsGenerators.
Referenced by LieMapper::applyDrift(), LieMapper::applyTransform(), DragtFinnMap< N >::conjugate(), LieMapper::visitCorrector(), LieMapper::visitMultipole(), LieMapper::visitRBend(), LieMapper::visitRFCavity(), LieMapper::visitSBend(), LieMapper::visitSeparator(), and LieMapper::visitSolenoid().
|
private |
Definition at line 1079 of file DragtFinnMap.h.
References DragtFinnMap< N >::assign(), FTps< T, N >::filter(), DragtFinnMap< N >::getGenerators(), DragtFinnMap< N >::getMatrix(), DragtFinnMap< N >::getOrder(), max(), and PoissonBracket().
Referenced by DragtFinnMap< N >::catenate(), DragtFinnMap< N >::DragtFinnMap(), and DragtFinnMap< N >::removeDispersion().
DragtFinnMap< N > DragtFinnMap< N >::conjugate | ( | const DragtFinnMap< N > & | rhs | ) | const |
Conjugate with another map.
Definition at line 828 of file DragtFinnMap.h.
References DragtFinnMap< N >::catenate(), and DragtFinnMap< N >::inverse().
Referenced by DragtFinnMap< N >::factorBerzForestIrwin(), and DragtFinnMap< N >::removeDispersion().
void DragtFinnMap< N >::dynamicFixedPoint | ( | FVector< double, 2 *N > & | fp, |
DragtFinnMap< N > & | map | ||
) |
Compute dynamic fixed point.
Definition at line 835 of file DragtFinnMap.h.
References FLUMatrix< T, N >::backSubstitute(), euclidean_norm(), fp1(), and DragtFinnMap< N >::getMatrix().
Referenced by Dynamic::execute().
|
inlineprivate |
Definition at line 1072 of file DragtFinnMap.h.
References FTpsData< N >::getSize().
|
inlineprivate |
Definition at line 1065 of file DragtFinnMap.h.
References FTpsData< N >::getSize().
|
staticprivate |
Definition at line 1146 of file DragtFinnMap.h.
References FLUMatrix< T, N >::backSubstitute().
|
static |
Definition at line 426 of file DragtFinnMap.h.
References abs(), DragtFinnMap< N >::assign(), Physics::c, DragtFinnMap< N >::conjugate(), cos(), cosh(), FDoubleEigen< N >::eigenValues(), FTps< T, N >::filter(), FTpsData< N >::getExponents(), DragtFinnMap< N >::getGenerators(), FTps< T, N >::getMaxOrder(), imag(), FLUMatrix< T, N >::inverse(), FDoubleEigen< N >::packedEigenVectors(), pi, pow(), real(), FLieGenerator< T, N >::scale(), sin(), sinh(), FTps< T, N >::substitute(), FLieGenerator< T, N >::transform(), and DragtFinnMap< N >::transform().
|
static |
Definition at line 555 of file DragtFinnMap.h.
References DragtFinnMap< N >::assign(), FTps< T, N >::getMaxOrder(), PoissonBracket(), and Taylor< T >::sum().
|
staticprivate |
Definition at line 1130 of file DragtFinnMap.h.
References FLieGenerator< T, N >::derivative(), and FLieGenerator< T, N >::isZero().
|
static |
Definition at line 652 of file DragtFinnMap.h.
References DragtFinnMap< N >::assign(), FTps< T, N >::filter(), FTps< T, N >::getMaxOrder(), FLieGenerator< T, N >::isZero(), and FLieGenerator< T, N >::transform().
Referenced by LieMapper::applyDrift(), LieMapper::visitMultipole(), LieMapper::visitRBend(), LieMapper::visitRFCavity(), LieMapper::visitSBend(), and LieMapper::visitSolenoid().
const FLieGenerator< double, N > DragtFinnMap< N >::getGenerator | ( | int | order | ) | const |
Return the generator for a selected order.
Definition at line 699 of file DragtFinnMap.h.
References FLieGenerator< T, N >::begin(), and FLieGenerator< T, N >::end().
Referenced by DragtFinnMap< N >::DragtFinnMap(), DragtFinnNormalForm< N >::DragtFinnNormalForm(), and DragtFinnMap< N >::move_g_1().
const FTps< double, 2 *N > & DragtFinnMap< N >::getGenerators | ( | ) | const |
Return the complete set of generators.
Definition at line 685 of file DragtFinnMap.h.
Referenced by DragtFinnMap< N >::catenateZero(), DragtFinnMap< N >::DragtFinnMap(), DragtFinnNormalForm< N >::DragtFinnNormalForm(), DragtFinnMap< N >::factorBerzForestIrwin(), DragtFinnMap< N >::inverse(), DragtFinnMap< N >::move_g_1(), DragtFinnMap< N >::removeDispersion(), and DragtFinnMap< N >::trackOrbit().
FTps< double, 2 *N > & DragtFinnMap< N >::getGenerators | ( | ) |
Return the complete set of generators.
Definition at line 692 of file DragtFinnMap.h.
const FMatrix< double, 2 *N, 2 *N > & DragtFinnMap< N >::getMatrix | ( | ) | const |
Return the matrix representing the linear transform.
Definition at line 671 of file DragtFinnMap.h.
Referenced by DragtFinnMap< N >::catenateZero(), DragtFinnMap< N >::DragtFinnMap(), DragtFinnNormalForm< N >::DragtFinnNormalForm(), DragtFinnMap< N >::dynamicFixedPoint(), DragtFinnMap< N >::move_g_1(), DragtFinnMap< N >::removeDispersion(), DragtFinnMap< N >::staticFixedPoint(), LieMapper::visitCorrector(), and LieMapper::visitSeparator().
FMatrix< double, 2 *N, 2 *N > & DragtFinnMap< N >::getMatrix | ( | ) |
Return the matrix representing the linear transform.
Definition at line 678 of file DragtFinnMap.h.
int DragtFinnMap< N >::getOrder | ( | ) | const |
Return the order of the generators.
Definition at line 714 of file DragtFinnMap.h.
Referenced by DragtFinnMap< N >::catenateZero(), DragtFinnNormalForm< N >::DragtFinnNormalForm(), and DragtFinnMap< N >::move_g_1().
DragtFinnMap< N > DragtFinnMap< N >::inverse | ( | ) | const |
Compute inverse map.
Definition at line 721 of file DragtFinnMap.h.
References DragtFinnMap< N >::assign(), DragtFinnMap< N >::getGenerators(), and FLUMatrix< T, N >::inverse().
Referenced by DragtFinnMap< N >::conjugate().
|
staticprivate |
Definition at line 1167 of file DragtFinnMap.h.
|
staticprivate |
Definition at line 1196 of file DragtFinnMap.h.
References DragtFinnMap< N >::assign(), FTps< T, N >::filter(), DragtFinnMap< N >::getGenerator(), DragtFinnMap< N >::getGenerators(), DragtFinnMap< N >::getMatrix(), DragtFinnMap< N >::getOrder(), PoissonBracket(), and FLieGenerator< T, N >::transform().
DragtFinnMap< N >::operator FVps< double, 2 *N > | ( | ) | const |
Convert to Taylor series map.
Definition at line 311 of file DragtFinnMap.h.
References ExpMap(), FVps< T, N >::filter(), FTps< T, N >::filter(), and FVps< T, N >::substitute().
DragtFinnMap< N >::operator LinearMap< double, 2 *N > | ( | ) | const |
Convert to Taylor series map.
Definition at line 336 of file DragtFinnMap.h.
References FLieGenerator< T, N >::transform().
void DragtFinnMap< N >::operator+= | ( | const FTps< double, 2 *N > & | gen | ) |
Add to set of generators.
Definition at line 759 of file DragtFinnMap.h.
void DragtFinnMap< N >::operator+= | ( | const FLieGenerator< double, N > & | gen | ) |
Add to generator of given order.
Definition at line 773 of file DragtFinnMap.h.
References FLieGenerator< T, N >::begin(), FTps< T, N >::begin(), FLieGenerator< T, N >::getOrder(), and FTps< T, N >::unique().
void DragtFinnMap< N >::operator-= | ( | const FTps< double, 2 *N > & | gen | ) |
Subtract from set of generators.
Definition at line 766 of file DragtFinnMap.h.
void DragtFinnMap< N >::operator-= | ( | const FLieGenerator< double, N > & | gen | ) |
Subtract from generator of given order.
Definition at line 793 of file DragtFinnMap.h.
References FLieGenerator< T, N >::begin(), FTps< T, N >::begin(), FLieGenerator< T, N >::getOrder(), and FTps< T, N >::unique().
const DragtFinnMap< N > & DragtFinnMap< N >::operator= | ( | const DragtFinnMap< N > & | rhs | ) |
Definition at line 279 of file DragtFinnMap.h.
References DragtFinnMap< N >::itsGenerators, and DragtFinnMap< N >::itsMatrix.
|
staticprivate |
Definition at line 1359 of file DragtFinnMap.h.
References abs(), Physics::c, imag(), real(), sqrt(), and FArray2D< T, M, N >::swapColumns().
void DragtFinnMap< N >::removeDispersion | ( | DragtFinnMap< N > & | dm, |
DragtFinnMap< N > & | map | ||
) |
Split map into dispersion map and non-dispersive part.
Definition at line 892 of file DragtFinnMap.h.
References DragtFinnMap< N >::assign(), DragtFinnMap< N >::catenateZero(), DragtFinnMap< N >::conjugate(), DragtFinnMap< N >::getGenerators(), DragtFinnMap< N >::getMatrix(), and T.
Referenced by Static::execute().
DragtFinnMap< N > DragtFinnMap< N >::reverse | ( | ) | const |
Compute inverse factorisation of map.
Definition at line 733 of file DragtFinnMap.h.
References DragtFinnMap< N >::assign(), PoissonBracket(), and FTps< T, N >::substitute().
void DragtFinnMap< N >::staticFixedPoint | ( | FVector< double, 2 *N > & | fp, |
DragtFinnMap< N > & | map | ||
) |
Compute static fixed point.
Definition at line 858 of file DragtFinnMap.h.
References euclidean_norm(), fp1(), DragtFinnMap< N >::getMatrix(), and X.
Referenced by Static::execute().
void DragtFinnMap< N >::trackOrbit | ( | FVector< double, 2 *N > & | orbit, |
DragtFinnMap< N > & | map | ||
) |
Track an orbit through the map.
Definition at line 966 of file DragtFinnMap.h.
References DragtFinnMap< N >::assign(), FTps< T, N >::filter(), DragtFinnMap< N >::getGenerators(), PoissonBracket(), and FLieGenerator< T, N >::transform().
DragtFinnMap< N > DragtFinnMap< N >::transform | ( | const FLieGenerator< double, N > & | g, |
int | topOrder | ||
) |
Build the terminating exponential series.
Definition at line 1029 of file DragtFinnMap.h.
References FLieGenerator< T, N >::getOrder(), and PoissonBracket().
Referenced by DragtFinnMap< N >::DragtFinnMap(), DragtFinnNormalForm< N >::DragtFinnNormalForm(), and DragtFinnMap< N >::factorBerzForestIrwin().
|
private |
Definition at line 222 of file DragtFinnMap.h.
Referenced by DragtFinnMap< N >::catenate(), DragtFinnMap< N >::DragtFinnMap(), and DragtFinnMap< N >::operator=().
|
private |
Definition at line 219 of file DragtFinnMap.h.
Referenced by DragtFinnMap< N >::DragtFinnMap(), and DragtFinnMap< N >::operator=().