wofryimpl.propagator.propagators2D.integral

Integral2D — 2-D Kirchhoff-Fresnel integral propagator (direct numerical integration; slow).

Classes

Integral2D()

class wofryimpl.propagator.propagators2D.integral.Integral2D[source]
HANDLER_NAME = 'INTEGRAL_2D'
do_specific_progation(wavefront, propagation_distance, parameters, element_index=None)[source]

Propagate a 2-D wavefront by numerical evaluation of the Kirchhoff-Fresnel integral.

This propagator is experimental and far slower than the FFT-based methods; use it only for validation purposes.

Parameters:
  • wavefront (GenericWavefront2D) – Input wavefront.

  • propagation_distance (float) – Propagation distance [m].

  • parameters (PropagationParameters) –

    Propagation parameter container. Recognised keys:

    • shuffle_interval (float, default 0) — randomly perturb source coordinates by this amount to suppress replica diffraction spots (a value of ~1e5 is typical; introduces noise).

    • calculate_grid_only (bool, default True) — compute only the horizontal and vertical cross-sections and set all other pixels to zero (much faster for large arrays).

    • magnification_x, magnification_y (float, default 1.0).

  • element_index (int, optional) – Index of the beamline element being propagated through.

Returns:

Propagated wavefront.

Return type:

GenericWavefront2D

do_specific_progation_after(wavefront, propagation_distance, parameters, element_index=None)[source]
do_specific_progation_before(wavefront, propagation_distance, parameters, element_index=None)[source]
get_handler_name()[source]
classmethod propagate_complex_amplitude_from_arrays(amplitude_flatten, X_flatten, Y_flatten, det_X_flatten=None, det_Y_flatten=None, wavelength=1e-10, propagation_distance=100)[source]
classmethod propagate_wavefront(wavefront, propagation_distance, shuffle_interval=False, magnification_x=1.0, magnification_y=1.0)[source]
classmethod propagate_wavefront_calculate_grid_only(wavefront, propagation_distance, magnification_x=1.0, magnification_y=1.0)[source]