element_envelope1d_parameters module

Define a class to hold solver parameters for Envelope1D.

This module holds ElementEnvelope1DParameters, that inherits from the Abstract Base Class ElementBeamCalculatorParameters. It holds the transfer matrix function that is used, according to the solver (Runge-Kutta or leapfrog) and their version (Python or Cython), as well as the meshing in accelerating elements.

The Element objects with a transfer matrix are DRIFT, SOLENOID, QUAD, FIELD_MAP, BEND.

class ElementEnvelope1DParameters(length_m, n_steps, beam_kwargs, transf_mat_function=None, **kwargs)[source]

Bases: ElementBeamCalculatorParameters

Hold the parameters to compute beam propagation in an Element.

has and get method inherited from ElementBeamCalculatorParameters parent class.

Parameters:
__init__(length_m, n_steps, beam_kwargs, transf_mat_function=None, **kwargs)[source]

Set the actually useful parameters.

Parameters:
Return type:

None

set_absolute_meshes(pos_in, s_in)[source]

Set the absolute indexes and arrays, depending on previous elem.

Parameters:
Return type:

tuple[float, int]

re_set_for_broken_cavity()[source]

Change solver parameters for efficiency purposes.

Return type:

None

abstractmethod transfer_matrix_kw(*args, **kwargs)[source]

Give the element parameters necessary to compute transfer matrix.

The only missing argument is gamma_in, as it does not convern the element directly.

Return type:

dict[str, Any]

transf_mat_function_wrapper(w_kin, phi_0_rel=None, cavity_settings=None, **kwargs)[source]

Calculate beam propagation in the Element.

Parameters:
  • w_kin (float)

  • phi_0_rel (float | None, default: None)

  • cavity_settings (Any, default: None)

Return type:

dict

_transfer_matrix_results_to_dict(r_zz, gamma_phi, integrated_field)[source]

Convert the results given by the transf_mat function to dict.

Parameters:
Return type:

dict

_proper_transfer_matrix_func(element_nature, method=None)[source]

Get the proper transfer matrix function.

Parameters:
  • element_nature (str)

  • method (Literal['RK4', 'leapfrog'] | None, default: None)

Return type:

Callable

_abc_impl = <_abc._abc_data object at 0x7318fb2b9900>
class DriftEnvelope1DParameters(elt, beam_kwargs, n_steps=1, **kwargs)[source]

Bases: ElementEnvelope1DParameters

Hold the properties to compute transfer matrix of a Drift.

As this is 1D, it is also used for Solenoid, Quad, broken FieldMap.

Parameters:
__init__(elt, beam_kwargs, n_steps=1, **kwargs)[source]

Create the specific parameters for a drift.

Parameters:
Return type:

None

transfer_matrix_kw(*args, **kwargs)[source]

Give the element parameters necessary to compute transfer matrix.

The only missing argument is gamma_in, as it does not convern the element directly.

Return type:

dict[str, Any]

_abc_impl = <_abc._abc_data object at 0x7318fb2fe300>
class FieldMapEnvelope1DParameters(elt, method, n_steps_per_cell, solver_id, beam_kwargs, phi_s_model='historical', **kwargs)[source]

Bases: ElementEnvelope1DParameters

Hold the properties to compute transfer matrix of a FieldMap.

Non-accelerating cavities will use DriftEnvelope1DParameters instead.

Parameters:
__init__(elt, method, n_steps_per_cell, solver_id, beam_kwargs, phi_s_model='historical', **kwargs)[source]

Create the specific parameters for a field map.

Parameters:
Return type:

None

transfer_matrix_kw(w_kin, cavity_settings, *args, phi_0_rel=None, **kwargs)[source]

Give the element parameters necessary to compute transfer matrix.

Parameters:
  • w_kin (float) – Kinetic energy at the entrance of cavity in \(\mathrm{MeV}\).

  • cavity_settings (CavitySettings) – Object holding the cavity parameters that can be changed.

  • phi_0_rel (float | None, default: None) – Relative entry phase of the cavity. When provided, it means that we are trying to find the \(\phi_{0,\,\mathrm{rel}}\) matching a given \(\phi_s\).

Return type:

dict[str, Any]

Returns:

Keyword arguments that will be passed to the 1D transfer matrix function defined in envelope_1d.transfer_matrices.

_transfer_matrix_results_to_dict(r_zz, gamma_phi, integrated_field)[source]

Convert the results given by the transf_mat function to a dict.

Overrides the default method defined in the ABC.

Parameters:
Return type:

dict

re_set_for_broken_cavity()[source]

Make beam calculator call Drift func instead of FieldMap.

Return type:

Callable

_broken_transfer_matrix_results_to_dict(r_zz, gamma_phi, integrated_field)[source]

Convert the results given by the transf_mat function to a dict.

Parameters:
Return type:

dict

_broken_transfer_matrix_kw(*args, **kwargs)[source]

Give the element parameters necessary to compute transfer matrix.

Return type:

dict[str, Any]

_abc_impl = <_abc._abc_data object at 0x7318faa67f00>
_get_phi_0_rel(cavity_settings)[source]

Get the phase from the object.

Parameters:

cavity_settings (CavitySettings)

Return type:

float

class SuperposedFieldMapEnvelope1DParameters(elt, method, n_steps_per_cell, solver_id, beam_kwargs, phi_s_model='historical', **kwargs)[source]

Bases: ElementEnvelope1DParameters

Hold properties to compute transfer matrix of SuperposedFieldMap.

Parameters:
__init__(elt, method, n_steps_per_cell, solver_id, beam_kwargs, phi_s_model='historical', **kwargs)[source]

Create the specific parameters for a field map.

Parameters:
Return type:

None

transfer_matrix_kw(w_kin, *args, **kwargs)[source]

Give the element parameters necessary to compute transfer matrix.

The only missing argument is gamma_in, as it does not convern the element directly.

Parameters:

w_kin (float)

Return type:

dict[str, Any]

_set_field_functions()[source]

Set the functions to compute electric fields.

Return type:

tuple[Callable[[float | tuple[float, float] | tuple[float, float, float], float], complex], Callable[[float | tuple[float, float] | tuple[float, float, float], float], float]]

_transfer_matrix_results_to_dict(r_zz, gamma_phi, integrated_field)[source]

Convert the results given by the transf_mat function to a dict.

Overrides the default method defined in the ABC.

Parameters:
Return type:

dict

re_set_for_broken_cavity()[source]

Make beam calculator call Drift func instead of FieldMap.

Return type:

None

_abc_impl = <_abc._abc_data object at 0x7318fc057c40>
class BendEnvelope1DParameters(elt, beam_kwargs, n_steps=1, **kwargs)[source]

Bases: ElementEnvelope1DParameters

Hold the specific parameters to compute Bend transfer matrix.

In particular, we define factor_1, factor_2 and factor_3 to speed-up calculations.

Parameters:
__init__(elt, beam_kwargs, n_steps=1, **kwargs)[source]

Instantiate object and pre-compute some parameters for speed.

Parameters:
  • elt (Bend) – BEND element.

  • beam_kwargs (BeamKwargs) – Configuration dict holding all initial beam properties.

  • n_steps (int, default: 1) – Number of integration steps.

  • kwargs (str | int)

Return type:

None

_pre_compute_factors_for_transfer_matrix(length_m, h_squared, k_x, index_is_lower_than_unity)[source]

Compute factors to speed up the transfer matrix calculation.

factor_1 is:

\[\frac{-h^2\Delta s}{k_x^2}\]

factor_2 is:

\[\frac{h^2 \sin{(k_x\Delta s)}}{k_x^3}\]

if \(n \leq 1\). Else:

\[\frac{h^2 \sinh{(k_x\Delta s)}}{k_x^3}\]

factor_3 is:

\[\Delta s \left(1 - \frac{h^2}{k_x^2}\right)\]
Parameters:
Return type:

tuple[float, float, float]

transfer_matrix_kw(*args, **kwargs)[source]

Give the element parameters necessary to compute transfer matrix.

The only missing argument is gamma_in, as it does not convern the element directly.

Return type:

dict[str, Any]

_abc_impl = <_abc._abc_data object at 0x7318fb487c40>
class DummyEnvelope1DParameters(elt, beam_kwargs, n_steps=1, **kwargs)[source]

Bases: ElementEnvelope1DParameters

Create dummy arguments for dummy element.

Parameters:
__init__(elt, beam_kwargs, n_steps=1, **kwargs)[source]

Create no specific parameters.

Parameters:
Return type:

None

transfer_matrix_kw(*args, **kwargs)[source]

Give the element parameters necessary to compute transfer matrix.

The only missing argument is gamma_in, as it does not convern the element directly.

Return type:

dict[str, Any]

_abc_impl = <_abc._abc_data object at 0x7318fb2ff840>