envelope_1d module
Define class to compute beam propagation in envelope, 1D, no space-charge.
This solver is fast, but should not be used at low energies.
- class Envelope1D(*, reference_phase_policy, out_folder, default_field_map_folder, beam_kwargs, export_phase, phi_s_definition='historical', n_steps_per_cell, method, **kwargs)[source]
Bases:
BeamCalculatorThe fastest beam calculator, adapted to high energies.
The following elements are explicitly supported. Note that, by default, an element that is implemented but not explicitly supported is replaced by a
DRIFT. In 1D, this is perfectly acceptable for most non-implemented elements that act on the transverse dynamics, such asTHIN_LENS.- Parameters:
reference_phase_policy (
Literal['phi_0_abs','phi_0_rel','phi_s'] |Literal['as_in_original_dat'])beam_kwargs (
BeamKwargs)export_phase (
Literal['phi_0_abs','phi_0_rel','phi_s'] |Literal['as_in_original_dat'] |Literal['as_in_settings'])phi_s_definition (
Literal['historical','lagniel'], default:'historical')n_steps_per_cell (
int)method (
Literal['RK4','leapfrog'])
- flag_cython = False
- __init__(*, reference_phase_policy, out_folder, default_field_map_folder, beam_kwargs, export_phase, phi_s_definition='historical', n_steps_per_cell, method, **kwargs)[source]
Set the proper motion integration function, according to inputs.
- Parameters:
reference_phase_policy (
Literal['phi_0_abs','phi_0_rel','phi_s'] |Literal['as_in_original_dat'])beam_kwargs (
BeamKwargs)export_phase (
Literal['phi_0_abs','phi_0_rel','phi_s'] |Literal['as_in_original_dat'] |Literal['as_in_settings'])phi_s_definition (
Literal['historical','lagniel'], default:'historical')n_steps_per_cell (
int)method (
Literal['RK4','leapfrog'])
- Return type:
None
- _set_up_specific_factories()[source]
Set up the factories specific to the
BeamCalculator.This method is called in the
BeamCalculator.__init__(), hence it appears only in the baseBeamCalculator.Todo
default_field_map_folderhas a wrong default value. Should take path to the.datfile, that is not known at this point. Maybe handle this directly in theInstructionsFactoryor whatever.- Return type:
- alternative_run(elts, update_reference_phase=False, **kwargs)[source]
Compute beam propagation in 1D, envelope calculation.
This is the same as run, but without type hints in the docstring. Also without printing the default value in the docstring. Should have the same appearance as the classic
run().- Parameters:
elts (
ListOfElements) – List of elements in which the beam must be propagated.update_reference_phase (
bool, default:False) – To change the reference phase of cavities when it is different from the one asked in theTOML. To use after the first calculation, ifBeamCalculator.reference_phase_policydoes not align withCavitySettings.reference.
- Return type:
- Returns:
Holds energy, phase, transfer matrices (among others) packed into a single object.
- run(elts, update_reference_phase=False, **kwargs)[source]
Compute beam propagation in 1D, envelope calculation.
- Parameters:
elts (
ListOfElements) – List of elements in which the beam must be propagated.update_reference_phase (
bool, default:False) – To change the reference phase of cavities when it is different from the one asked in theTOML. To use after the first calculation, ifBeamCalculator.reference_phase_policydoes not align withCavitySettings.reference.
- Return type:
- Returns:
Holds energy, phase, transfer matrices (among others) packed into a single object.
- run_with_this(set_of_cavity_settings, elts, use_a_copy_for_nominal_settings=True)[source]
Use solver on
elts, including theset_of_cavity_settings.- Parameters:
set_of_cavity_settings (
SetOfCavitySettings|None) – The new cavity settings to try. If it is None, then the cavity settings are taken from theFieldMapobjects.elts (
ListOfElements) – List of elements in which the beam must be propagated.use_a_copy_for_nominal_settings (
bool, default:True) – To copy the nominalCavitySettingsand avoid altering their nominal counterpart. Set it to True during optimisation, to False when you want to keep the current settings. The default is True.
- Return type:
- Returns:
Holds energy, phase, transfer matrices (among others) packed into a single object.
- post_optimisation_run_with_this(optimized_cavity_settings, full_elts, **specific_kwargs)[source]
Run
Envelope1Dwith optimized cavity settings.With this solver, we have nothing to do, nothing to update. Just call the regular
run_with_this()method.- Parameters:
optimized_cavity_settings (
SetOfCavitySettings)full_elts (
ListOfElements)
- Return type:
- init_solver_parameters(accelerator)[source]
Create the number of steps, meshing, transfer functions for elts.
The solver parameters are stored in the
beam_calc_paramattribute ofElement.:param Object which
ListOfElementsmust be initialized.:- Parameters:
accelerator (
Accelerator)- Return type:
- _post_treat_cavity_settings(cavity_settings, results, length_m)[source]
Compute synchronous phase, accelerating field and acceptances.
Also store these quantities in
cavity_settings.Todo
Integrate this to
CavitySettings.- Parameters:
cavity_settings (
CavitySettings)results (
dict)length_m (
float)
- Return type:
- _abc_impl = <_abc._abc_data object at 0x76a868492d40>
- _store_entry_phase_in_settings(phi_bunch_abs, cavity_settings)[source]
Set entry phase.
- Parameters:
phi_bunch_abs (
float)cavity_settings (
CavitySettings|Collection[CavitySettings] |None)
- Return type: