finesse.knm.bayerhelms.make_bayerhelms_matrix

finesse.knm.bayerhelms.make_bayerhelms_matrix(qx1, qx2, qy1, qy2, double xgamma, double ygamma, double nr=1.0, double wavelength=1064e-9, bool reverse_gouy=False, bool parallel=True, **mode_selection_kwargs)

Constructs and computes a coupling coefficient scattering matrix using the Bayer-Helms [1] analytic formalism.

See the function make_modes() for the arguments which should be passed via mode_selection_kwargs.

Parameters

qx1 : BeamParam or complex

Input beam parameter in the tangential plane.

qx2 : BeamParam or complex

Output beam parameter in the tangential plane.

qy1 : BeamParam or complex

Input beam parameter in the sagittal plane.

qy2 : BeamParam or complex

Output beam parameter in the sagittal plane.

xgamma : float

Misalignment angle in the tangential plane (in radians).

ygamma : float

Misalignment angle in the sagittal plane (in radians).

nr : float, optional; default: 1.0

Refractive index of the associated medium.

wavelength : float, optional; default: 1064 nm

Wavelength of the beam (in metres).

parallel : bool, optional; default: True

Whether to enable multi-threaded execution via OpenMP. The number of threads used scales with the number of modes; bounded by the maximum thread count as given by omp_get_max_threads.

mode_selection_kwargs : keyword arguments

Returns

kmat : KnmMatrix

The resulting scattering matrix as a KnmMatrix object.

Examples

See Computing arbitrary scattering matrices.