mbtrack2.impedance.resistive_wall module

Define resistive wall elements based on the WakeField class.

skin_depth(frequency, rho: float, mu_r: int = 1, epsilon_r: int = 1) float[source]

General formula for the skin depth.

Parameters

frequencyarray of float

Frequency points in [Hz].

rhofloat

Resistivity in [ohm.m].

mu_rfloat, optional

Relative magnetic permeability.

epsilon_rfloat, optional

Relative electric permittivity.

Returns

deltaarray of float

Skin depth in [m].

class CircularResistiveWall(time: ndarray[tuple[int, ...], dtype[_ScalarType_co]], frequency: ndarray[tuple[int, ...], dtype[_ScalarType_co]], length: float, rho: float, radius: float, exact: bool = True)[source]

Bases: WakeField

Resistive wall WakeField element for a circular beam pipe.

Impedance from approximated formulas from Eq. (2.77) of Chao book [1]. Wake function formulas from [2, 3] and the fundamental theorem of beam loading from [4].

Parameters

timearray of float

Time points where the wake function will be evaluated in [s].

frequencyarray of float

Frequency points where the impedance will be evaluated in [Hz].

lengthfloat

Beam pipe length in [m].

rhofloat

Resistivity in [ohm.m].

radiusfloat

Beam pipe radius in [m].

exactbool, optional

If False, approxmiated formulas are used for the wake function computations. The default is True.

References

[1] : Chao, A. W. (1993). Physics of collective beam instabilities in high energy accelerators. Wiley. [2] : Ivanyan, Mikayel I., and Vasili M. Tsakanov. “Analytical treatment of resistive wake potentials in round pipes.” Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment 522, no. 3 (2004): 223-229. [3] : Skripka, Galina, et al. “Simultaneous computation of intrabunch and interbunch collective beam motions in storage rings.” Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment 806 (2016): 221-230. [4] : Zotter, Bruno W., and Semyon A. Kheifets (1998). Impedances and wakes in high-energy particle accelerators. World Scientific.

__init__(time: ndarray[tuple[int, ...], dtype[_ScalarType_co]], frequency: ndarray[tuple[int, ...], dtype[_ScalarType_co]], length: float, rho: float, radius: float, exact: bool = True)[source]
LongitudinalWakeFunction(time: ndarray[tuple[int, ...], dtype[_ScalarType_co]], exact: bool = True) ndarray[tuple[int, ...], dtype[_ScalarType_co]][source]

Compute the longitudinal wake function of a circular resistive wall using Eq. (11), of [1], or approxmiated expression Eq. (24), of [2]. The approxmiated expression is valid if the time is large compared to the characteristic time t0.

Eq. (11) in [1] is completely identical to Eq. (22) in [2].

The real parts of the last two terms of Eq. (11) in [1] are the same, and the imaginary parts have the same magnitude but opposite signs. Therefore, the former term was doubled, the latter term was eliminated, and only the real part was taken to speed up the calculation.

The fundamental theorem of beam loading [3] is applied for the exact expression of the longitudinal wake function: Wl(0) = Wl(0+)/2.

Parameters

timearray of float

Time points where the wake function is evaluated in [s].

exactbool, optional

If True, the exact expression is used. The default is True.

Returns

wlarray of float

Longitudinal wake function in [V/C].

References

[1] : Ivanyan, Mikayel I., and Vasili M. Tsakanov. “Analytical treatment of resistive wake potentials in round pipes.” Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment 522, no. 3 (2004): 223-229. [2] : Skripka, Galina, et al. “Simultaneous computation of intrabunch and interbunch collective beam motions in storage rings.” Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment 806 (2016): 221-230. [3] : Zotter, Bruno W., and Semyon A. Kheifets (1998). Impedances and wakes in high-energy particle accelerators. World Scientific.

TransverseWakeFunction(time: ndarray[tuple[int, ...], dtype[_ScalarType_co]], exact: bool = True) ndarray[tuple[int, ...], dtype[_ScalarType_co]][source]

Compute the transverse wake function of a circular resistive wall using Eq. (11), of [1], or approxmiated expression Eq. (26), of [2]. The approxmiated expression is valid if the time is large compared to the characteristic time t0.

Eq. (11) in [1] is completely identical to Eq. (25) in [2].

There are typos in both Eq. (11) in [1] and Eq. (25) in [2]. Corrected the typos in the last two terms of exact expression for transverse wake function in Eq. (11), of [1]. It is necessary to multiply Eq. (25) in [2] by c*t0.

The real parts of the last two terms of Eq. (11) in [1] are the same, and the imaginary parts have the same magnitude but opposite signs. Therefore, the former term was doubled, the latter term was eliminated, and only the real part was taken to speed up the calculation.

Parameters

timearray of float

Time points where the wake function is evaluated in [s].

exactbool, optional

If True, the exact expression is used. The default is True.

Returns

wtarray of float

Transverse wake function in [V/C/m].

References

[1] : Ivanyan, Mikayel I., and Vasili M. Tsakanov. “Analytical treatment of resistive wake potentials in round pipes.” Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment 522, no. 3 (2004): 223-229. [2] : Skripka, Galina, et al. “Simultaneous computation of intrabunch and interbunch collective beam motions in storage rings.” Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment 806 (2016): 221-230.

__LongWakeExact(t: ndarray[tuple[int, ...], dtype[_ScalarType_co]], factor: float) ndarray[tuple[int, ...], dtype[_ScalarType_co]]
__TransWakeExact(t: ndarray[tuple[int, ...], dtype[_ScalarType_co]], factor: float) ndarray[tuple[int, ...], dtype[_ScalarType_co]]
__LongWakeApprox(t: ndarray[tuple[int, ...], dtype[_ScalarType_co]]) ndarray[tuple[int, ...], dtype[_ScalarType_co]]
__TransWakeApprox(t: ndarray[tuple[int, ...], dtype[_ScalarType_co]]) ndarray[tuple[int, ...], dtype[_ScalarType_co]]
class Coating(frequency: ndarray[tuple[int, ...], dtype[_ScalarType_co]], length: float, rho1: float, rho2: float, radius: float, thickness: float, approx: bool = False)[source]

Bases: WakeField

WakeField element for a coated circular beam pipe.

The longitudinal and tranverse impedances are computed using formulas from [1].

Parameters

farray of float

Frequency points where the impedance is evaluated in [Hz].

lengthfloat

Length of the beam pipe to consider in [m].

rho1float

Resistivity of the coating in [ohm.m].

rho2float

Resistivity of the bulk material in [ohm.m].

radiusfloat

Radius of the beam pipe to consier in [m].

thicknessfloat

Thickness of the coating in [m].

approxbool, optional

If True, used approxmiated formula. The default is False.

References

[1] : Migliorati, M., E. Belli, and M. Zobov. “Impact of the resistive wall impedance on beam dynamics in the Future Circular e+ e− Collider.” Physical Review Accelerators and Beams 21.4 (2018): 041001.

__init__(frequency: ndarray[tuple[int, ...], dtype[_ScalarType_co]], length: float, rho1: float, rho2: float, radius: float, thickness: float, approx: bool = False)[source]
LongitudinalImpedance(f: ndarray[tuple[int, ...], dtype[_ScalarType_co]] | float, approx: bool) ndarray[tuple[int, ...], dtype[_ScalarType_co]][source]

Compute the longitudinal impedance of a coating using Eq. (5), or approxmiated expression Eq. (8), of [1]. The approxmiated expression is valid if the skin depth of the coating is large compared to the coating thickness.

Parameters

farray of float

Frequency points where the impedance is evaluated in [Hz].

approxbool

If True, used approxmiated formula.

Returns

Zlarray

Longitudinal impedance values in [ohm].

References

[1] : Migliorati, M., E. Belli, and M. Zobov. “Impact of the resistive wall impedance on beam dynamics in the Future Circular e+ e− Collider.” Physical Review Accelerators and Beams 21.4 (2018): 041001.

TransverseImpedance(f: ndarray[tuple[int, ...], dtype[_ScalarType_co]] | float, approx: bool) ndarray[tuple[int, ...], dtype[_ScalarType_co]][source]

Compute the transverse impedance of a coating using Eq. (6), or approxmiated expression Eq. (9), of [1]. The approxmiated expression is valid if the skin depth of the coating is large compared to the coating thickness.

Parameters

farray of float

Frequency points where the impedance is evaluated in [Hz].

approxbool

If True, used approxmiated formula.

Returns

Ztarray

Transverse impedance values in [ohm].

References

[1] : Migliorati, M., E. Belli, and M. Zobov. “Impact of the resistive wall impedance on beam dynamics in the Future Circular e+ e− Collider.” Physical Review Accelerators and Beams 21.4 (2018): 041001.