OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
DragtFinnMap< N > Class Template Reference

A Lie algebraic map, factored according to Dragt and Finn. More...

#include <DragtFinnMap.h>

Collaboration diagram for DragtFinnMap< N >:
Collaboration graph
[legend]

Public Member Functions

 DragtFinnMap (const DragtFinnMap &)
 
 ~DragtFinnMap ()
 
const DragtFinnMapoperator= (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
 

Detailed Description

template<int N>
class DragtFinnMap< N >

A Lie algebraic map, factored according to Dragt and Finn.

Definition at line 43 of file DragtFinnMap.h.

Constructor & Destructor Documentation

template<int N>
DragtFinnMap< N >::DragtFinnMap ( const DragtFinnMap< N > &  rhs)

Definition at line 250 of file DragtFinnMap.h.

template<int N>
DragtFinnMap< N >::~DragtFinnMap ( )

Definition at line 273 of file DragtFinnMap.h.

template<int N>
DragtFinnMap< N >::DragtFinnMap ( )

Construct identity map.

Definition at line 257 of file DragtFinnMap.h.

References DragtFinnMap< N >::itsMatrix.

template<int N>
DragtFinnMap< N >::DragtFinnMap ( int  order)
explicit

Construct identity map with space for given order.

Definition at line 265 of file DragtFinnMap.h.

References DragtFinnMap< N >::itsMatrix.

template<int N>
DragtFinnMap< N >::DragtFinnMap ( const FVps< double, 2 *N > &  map)
explicit

Build factored representation from a Taylor series map.

Definition at line 288 of file DragtFinnMap.h.

References DragtFinnMap< N >::itsGenerators.

template<int N>
DragtFinnMap< N >::DragtFinnMap ( const FTps< double, 2 *N > &  map)
explicit
template<int N>
DragtFinnMap< N >::DragtFinnMap ( const LinearMap< double, 2 *N > &  map)
explicit

Build factored representation from a linear map.

Definition at line 300 of file DragtFinnMap.h.

References DragtFinnMap< N >::itsGenerators.

Member Function Documentation

template<int N>
void DragtFinnMap< N >::assign ( const FMatrix< double, 2 *N, 2 *N > &  mat)
template<int N>
void DragtFinnMap< N >::assign ( const FTps< double, 2 *N > &  gen)

Assign the complete set of generators.

Definition at line 402 of file DragtFinnMap.h.

template<int N>
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().

Here is the call graph for this function:

template<int N>
const double * DragtFinnMap< N >::begin ( int  order) const
inlineprivate

Definition at line 1058 of file DragtFinnMap.h.

References FTpsData< N >::getSize().

Here is the call graph for this function:

template<int N>
double * DragtFinnMap< N >::begin ( int  order)
inlineprivate

Definition at line 1051 of file DragtFinnMap.h.

References FTpsData< N >::getSize().

Here is the call graph for this function:

template<int N>
DragtFinnMap< N > DragtFinnMap< N >::catenate ( const DragtFinnMap< N > &  rhs) const
template<int N>
DragtFinnMap< N > DragtFinnMap< N >::catenateZero ( const DragtFinnMap< N > &  g) const
private
template<int N>
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().

Here is the call graph for this function:

template<int N>
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().

Here is the call graph for this function:

template<int N>
const double * DragtFinnMap< N >::end ( int  order) const
inlineprivate

Definition at line 1072 of file DragtFinnMap.h.

References FTpsData< N >::getSize().

Here is the call graph for this function:

template<int N>
double * DragtFinnMap< N >::end ( int  order)
inlineprivate

Definition at line 1065 of file DragtFinnMap.h.

References FTpsData< N >::getSize().

Here is the call graph for this function:

template<int N>
FMatrix< double, 2 *N, 2 *N > DragtFinnMap< N >::exponentiate ( const FMatrix< double, 2 *N, 2 *N > &  A)
staticprivate

Definition at line 1146 of file DragtFinnMap.h.

References FLUMatrix< T, N >::backSubstitute().

Here is the call graph for this function:

template<int N>
DragtFinnMap< N > DragtFinnMap< N >::factorBerzForestIrwin ( const FTps< double, 2 *N > &  H)
static
template<int N>
DragtFinnMap< N > DragtFinnMap< N >::factorDouglas ( const FTps< double, 2 *N > &  H)
static

Definition at line 555 of file DragtFinnMap.h.

References DragtFinnMap< N >::assign(), FTps< T, N >::getMaxOrder(), PoissonBracket(), and Taylor< T >::sum().

Here is the call graph for this function:

template<int N>
DragtFinnMap< N > DragtFinnMap< N >::factorize ( const FTps< double, 2 *N > &  H)
staticprivate

Definition at line 1130 of file DragtFinnMap.h.

References FLieGenerator< T, N >::derivative(), and FLieGenerator< T, N >::isZero().

Here is the call graph for this function:

template<int N>
DragtFinnMap< N > DragtFinnMap< N >::factorSimple ( const FTps< double, 2 *N > &  H)
static
template<int N>
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().

Here is the call graph for this function:

template<int N>
const FTps< double, 2 *N > & DragtFinnMap< N >::getGenerators ( ) const
template<int N>
FTps< double, 2 *N > & DragtFinnMap< N >::getGenerators ( )

Return the complete set of generators.

Definition at line 692 of file DragtFinnMap.h.

template<int N>
const FMatrix< double, 2 *N, 2 *N > & DragtFinnMap< N >::getMatrix ( ) const
template<int N>
FMatrix< double, 2 *N, 2 *N > & DragtFinnMap< N >::getMatrix ( )

Return the matrix representing the linear transform.

Definition at line 678 of file DragtFinnMap.h.

template<int N>
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().

template<int N>
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().

Here is the call graph for this function:

template<int N>
FMatrix< double, 2 *N, 2 *N > DragtFinnMap< N >::makeMatrix ( const FLieGenerator< double, N > &  f_2)
staticprivate

Definition at line 1167 of file DragtFinnMap.h.

template<int N>
void DragtFinnMap< N >::move_g_1 ( DragtFinnMap< N > &  f,
DragtFinnMap< N > &  g 
)
staticprivate
template<int N>
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().

Here is the call graph for this function:

template<int N>
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().

Here is the call graph for this function:

template<int N>
void DragtFinnMap< N >::operator+= ( const FTps< double, 2 *N > &  gen)

Add to set of generators.

Definition at line 759 of file DragtFinnMap.h.

template<int N>
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().

Here is the call graph for this function:

template<int N>
void DragtFinnMap< N >::operator-= ( const FTps< double, 2 *N > &  gen)

Subtract from set of generators.

Definition at line 766 of file DragtFinnMap.h.

template<int N>
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().

Here is the call graph for this function:

template<int N>
const DragtFinnMap< N > & DragtFinnMap< N >::operator= ( const DragtFinnMap< N > &  rhs)
template<int N>
int DragtFinnMap< N >::orderModes ( FMatrix< double, 2 *N, 2 *N > &  V,
FVector< std::complex< double >, 2 *N > &  mu 
)
staticprivate

Definition at line 1359 of file DragtFinnMap.h.

References abs(), Physics::c, imag(), real(), sqrt(), and FArray2D< T, M, N >::swapColumns().

Here is the call graph for this function:

template<int N>
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().

Here is the call graph for this function:

template<int N>
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().

Here is the call graph for this function:

template<int N>
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().

Here is the call graph for this function:

template<int N>
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().

Here is the call graph for this function:

template<int N>
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().

Here is the call graph for this function:

Member Data Documentation

template<int N>
FTps<double, 2 * N> DragtFinnMap< N >::itsGenerators
private
template<int N>
FMatrix<double, 2 * N, 2 * N> DragtFinnMap< N >::itsMatrix
private

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