diff --git a/README.md b/README.md index afdb874..1a2d2e2 100644 --- a/README.md +++ b/README.md @@ -6,52 +6,51 @@ ## Overview -_This package is still in development_ +_This package is still in development, and certain bugs/feature and syntax changes must be expected._ -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. Given a differential algebraic map, a symplectic transformation of the variables to coordinates where the nonlinear motion lies on circles in phase space is calculated. This allows for easy calculation of invariants of the motion, and when leaving one resonance in the map, a single-resonance normal form, from which resonance driving terms and effective resonance Hamiltonians can be calculated. This package may be of particular interest to those in accelerator physics, electron microscopy, and astronomy. +This package provides routines for doing canonical perturbation theory on nonlinear Hamiltonian (and nearly Hamiltonian) maps, including parameters, using Lie algebraic methods. Functions are provided which, given some dynamical map expressed as a truncated power series in the variables (and parameters), can be used for calculating and analyzing the canonical transformation of the variables to the _**normal form**_ - coordinates where the nonlinear motion lies on action-dependent circles in phase space. This allows for easy calculation of invariants and other (parameter-dependent) properties of the map. Optionally, one single resonance may be left in the map, leaving a single resonance normal form from which resonance driving terms and the positions of fixed points in phase space may calculated. This package may be of particular interest to those in accelerator physics, celestial mechanics, electron microscopy, geometrical optics, and plasma physics. - +julia> m_nonlinear = inv(m_lin) ∘ m; # remove the linear part - +julia> R_J = inv(c) ∘ R_z ∘ c; # Nonlinear amplitude-dependent rotation in phasors basis +julia> a_spin, a0, a1, a2 = factorize(a); # Spin part, nonlinear parameter-dependent fixed point, a1, a2 -## Setup +julia> Σ = equilibrium_moments(m, a); # Calculate equilibrium sigma matrix when fluctuation-dissipation -To use this package, in the Julia REPL run: - -```julia -import Pkg; Pkg.add(url="https://github.com/bmad-sim/NonlinearNormalForm.jl") +julia> a = normal(m, m=[0; 1], m_spin=[-1]); # Leaving in a Q_y - Q_spin resonance ``` -## Basic Usage - -This package imports and reexports [`GTPSA.jl`](https://github.com/bmad-sim/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`. - - +## Acknowledgements +Thanks to Etienne Forest for his significant time and patience in teaching the normal form methods and guiding the implementation of the tools in this package.