Hamiltonian

Generic single particle accelerator Hamiltonian factory

elementary.hamiltonian.autonomize(hamiltonian: Callable[[...], jax.Array]) Callable[[...], jax.Array][source]

Autonomize hamiltonian

Parameters:

hamiltonian (Callable[..., Array]) – input hamiltonian

Return type:

Callable[…, Array]

elementary.hamiltonian.hamiltonian_factory(vector: Callable[[...], tuple[jax.Array, jax.Array, jax.Array]], scalar: Callable[[...], jax.Array] | None = None, *, curvature: Callable[[...], jax.Array] | None = None, torsion: Callable[[...], jax.Array] | None = None, beta: float | None = None, gamma: float | None = None) Callable[[...], jax.Array][source]

Generic single particle Hamiltonian factory

Parameters:
  • vector (Callable[..., tuple[Array, Array, Array]]) – normalized vector potential

  • scalar (Optional[Callable[..., Array]]) – normalized scalar potential

  • curvature (Optional[Callable[..., Array]]) – curvature

  • torsion (Optional[Callable[..., Array]]) – torsion

  • beta (Optional[float]) – beta

  • gamma (Optional[float]) – gamma

Return type:

Callable[…, Array]

Note

Vector and scalar potentials are assumed to have (qs, *args) signatures Curvature and torsion are functions of independent parameter The resulting hamiltonian has (qs, ps, s, *args) signature