beam_calculation.envelope_3d.element_envelope3d_parameters_factory module

Create the solver parameters for Envelope3D.

class ElementEnvelope3DParametersFactory(method: Literal['RK4'], n_steps_per_cell: int, solver_id: str, flag_cython: bool = False, phi_s_definition: Literal['historical'] = 'historical')

Bases: ElementBeamCalculatorParametersFactory

Define a method to easily create the solver parameters.

__init__(method: Literal['RK4'], n_steps_per_cell: int, solver_id: str, flag_cython: bool = False, phi_s_definition: Literal['historical'] = 'historical') None

Prepare import of proper functions.

_abc_impl = <_abc._abc_data object>
_parameters_constructor(elt: ~core.elements.element.Element, default: type = <class 'beam_calculation.envelope_3d.element_envelope3d_parameters.DriftEnvelope3DParameters'>) type

Get the proper object constructor.

Examples

>>> self._parameters_constructor(Drift())
DriftEnvelope3DParameters
>>> self._parameters_constructor(Quad())
QuadEnvelope3DParameters

As DiagPosition is not in PARAMETERS_3D, we look for the mother class Diagnostic.

>>> self._parameters_constructor(DiagPosition())
DriftEnvelope3DParameters

To avoid wasting computation time, non-accelerating field maps are treated as drifts.

>>> self._parameters_constructor(FieldMap100(is_accelerating=False))
DriftEnvelope3DParameters
run(elt: Element) ElementEnvelope3DParameters

Create the proper subclass of solver parameters, instantiate it.

Parameters:

elt (Element) – Element under study.

Returns:

Proper instantiated subclass of ElementEnvelope3DParameters.

Return type:

ElementEnvelope3DParameters

PARAMETERS_3D = {<class 'core.elements.bend.Bend'>: <class 'beam_calculation.envelope_3d.element_envelope3d_parameters.BendEnvelope3DParameters'>, <class 'core.elements.diagnostic.Diagnostic'>: <class 'beam_calculation.envelope_3d.element_envelope3d_parameters.DriftEnvelope3DParameters'>, <class 'core.elements.drift.Drift'>: <class 'beam_calculation.envelope_3d.element_envelope3d_parameters.DriftEnvelope3DParameters'>, <class 'core.elements.field_maps.field_map.FieldMap'>: <class 'beam_calculation.envelope_3d.element_envelope3d_parameters.FieldMapEnvelope3DParameters'>, <class 'core.elements.quad.Quad'>: <class 'beam_calculation.envelope_3d.element_envelope3d_parameters.QuadEnvelope3DParameters'>, <class 'core.elements.solenoid.Solenoid'>: <class 'beam_calculation.envelope_3d.element_envelope3d_parameters.SolenoidEnvelope3DParameters'>}