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:
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

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

Give the element parameters necessary to compute transfer matrix.

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.

kwargs can be cavity_settings rf_field

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 0x73df43378400>
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:
_abc_impl = <_abc._abc_data object at 0x73df43378300>
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:
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\).

Returns:

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

Return type:

dict[str, Any]

_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 0x73df43378280>
_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:
transfer_matrix_kw(w_kin, cavity_settings, *args, **kwargs)[source]

Give the element parameters necessary to compute transfer matrix.

Parameters:
Return type:

dict[str, Any]

_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 0x73df43378c40>
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)

_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.

Return type:

dict[str, Any]

_abc_impl = <_abc._abc_data object at 0x73df433788c0>
_add_cavities_phases(solver_id, w_kin_in, cavities_settings, rf_parameters_as_dict)[source]

Set reference phase and function to compute \(\phi_s\).

Parameters:
Return type:

None