at.collective.haissinski#

Classes

Haissinski(wake_object, ring[, m, kmax, ...])

Class to find the longitudinal distribution in the presence of a short range wakefield.

class Haissinski(wake_object, ring, m=12, kmax=1, current=0.0001, numIters=10, eps=1e-10)[source]#

Bases: object

Class to find the longitudinal distribution in the presence of a short range wakefield.

Parameters:
  • wake_object (Wake) – class initialized with Wake that contains a longitudinal wake Z and equivalent srange.

  • ring (Lattice) – a lattice object that is used to extract machine parameters

Keyword Arguments:
  • m (int) – the number of points in the full distribution

  • kmax – the min and max of the range of the distribution. See equation 27. In units of [\(\sigma_z0\)]

  • current – bunch current.

  • numIters (int) – the number of iterations

  • eps – the convergence criteria.

This class is a direct implementation of the following paper: “Numerical solution of the Haïssinski equation for the equilibrium state of a stored electron beam”, R. Warnock, K.Bane, Phys. Rev. Acc. and Beams 21, 124401 (2018)

The reader is referred to this paper for a description of the methods. The equation number of key formula are written next to the relevant function.

The functions solve or solve_steps can be used after initialisation An example usage can be found in:

at/pyat/examples/Collective/LongDistribution.py

Future developments of this class:

Adding LR wake or harmonic cavity as done at SOLEIL. Needs to be added WITH this class which is just for short range wake.

Fi()[source]#

Equation 28

compute_Smat()[source]#

The sampling of the integrated wake potential S is only made at certain places. So all possibilities are loaded into a matrix for speed.

compute_new_phi()[source]#
convergence()[source]#

Equation 32

dFi_dphij()[source]#

Equation 30

dFi_ij(i, j)[source]#
initial_phi()[source]#

Simply a gaussian but using the normalised units. Page 5 top right, in the text.

precompute_S()[source]#

Equation 16

set_I(current)[source]#

Equation 11

set_output()[source]#
set_weights()[source]#

Page 7 second paragraph, in the text

solve()[source]#
solve_steps(currents)[source]#
INPUT:
currents an array of currents to solve. If 0 is given,

a current of 10uA is used to prevent failure.

update()[source]#