This package is still in an early development stage
This package provides routines for calculating parameter-dependent normal forms of nonlinear Hamiltonian (and nearly Hamiltonian) maps expressed as truncated power series in the variables, using Lie algebraic methods. Basically, given some map, it computes the canonical transformation of the variables to coordinates where the nonlinear motion lies on circles in phase space. This allows calculation of invariants of the motion, and when leaving one resonance in the map, a single-resonance normal form. This package may be of particular interest to those in accelerator physics, electron microscopy, and astronomy.
For simplicity, we define an operator using the Poisson bracket as
where
This has the solution (for some time
The transfer map
Because the problem is now linear, the transformation of the monomial coefficients could be expressed using a (truncated) matrix, however this is notoriously slow and inconvenient to work with. This package implements the full Lie algebraic formulation using Lie operators.
While using the time-integral of the Hamiltonian as a generator of the time evolution (canonical transformation) in this way is useful, it is not always practical. In a particle tracking code for example, the motion may not always be exactly symplectic, e.g. when there is some small dissipation due to synchrotron radiation emission. In this case, a Hamiltonian cannot be obtained from an integrator, however the force field
To use this package, in the Julia REPL run:
import Pkg; Pkg.add(path="https://github.com/bmad-sim/NonlinearNormalForm.jl")
This package imports and reexports GTPSA.jl
, a library for computing real and complex truncated power series to arbitrary orders in the variables and parameters. Before using NonlinearNormalForm.jl
, you should have some familiarity with GTPSA.jl
.