Skip to content

Draft: Coupling coefficient calculations for transversal shift

finesse importer requested to merge feature/surface_displacement into develop

Resolves #238

Got bored of job searching and such and felt like doing a bit of Finesse development, so this merge request starts implementing coupling coefficient computations for transversal displacements of surfaces.

This uses the equations from F. Bayer-Helms, "Coupling coefficients of an incident wave and the modes of a spherical optical resonator in the case of mismatching and misalignment"; specifically SIII.B, Eq. (19) and (21a). See the relevant changes in knm_bh_ws_recompute_misalignment of finesse/knm/bayerhelms.pyx, where the new calculations have been documented accordingly.

Summary of changes

  • Added delta and delta_factor fields to knm_bh_workspace, representing the transversal shift and a factor applying to it similarly to the beta and beta_factor attributes for tilts.
  • Calculations for transversal shift implemented in knm_bh_ws_recompute_misalignment --- so performed automatically if some transversal shift is specified when setting the scattering info via set_knm_info.
  • Added dx, dy, dx_factor, dy_factor and dx_is_changing, dy_is_changing fields to KnmInfo, again similarly to the tilt DoFs.
  • Corresponding added support for specifying dx, dy and associated factors to set_knm_info.
  • Implemented tunable dx, dy float_parameters for Mirror and Beamsplitter. Using these in the case of Mirror to allow transversal shift coupling coefficients to be computed. Support still needs to be finished for Beamsplitter, as coordinate system bit more complicated so d[x|y]_factor needs to be worked out for each coupling.
  • Another optimisation implemented in knm_bh_workspace (and corresponding functions) via the caching of inverse root powers of 1 + K*.
  • Minor re-factor of k_mm function in bayerhelms.pyx for clarity.

Task list

  • Add delta, delta_factor fields to knm_bh_workspace and implement corresponding lateral shift calculations in knm_bh_ws_recompute_misalignment.
  • Handle lateral shift parameters and scaling factors in KnmConnectorWorkspace.
  • Add dx, dy float_parameters to Mirror and Beamsplitter classes.
  • Use dx, dy (including factors for coordinate system considerations) in set_knm_info for mirrors --- effectively allowing for DC lateral shift calculations at mirrors.
  • Use dx, dy (including factors for coordinate system considerations) in set_knm_info for beamsplitters --- effectively allowing for DC lateral shift calculations at beamsplitters. This is more complicated than for mirrors, needs some well-documented reasoning for each d[x|y]_factor applied to each coupling.
  • Add corresponding mechanical degrees of freedom (sway? for x-axis shifts, heave? for y-axis shifts) to surfaces.
  • Implement signal calculations based on sway, heave mechanical DoFs.
  • Test mirror coordinate system for lateral shifts.
  • Test beamsplitter coordinate system for lateral shifts.
  • (Optional - can be done later) Implement optimised calculation in k_mm of bayerhelms.pyx for case where system is mode-matched (but misaligned). Bayer-Helms shows that this can be reduced to a single sum, see Eq. (26a) of paper. Shouldn't be much effort to implement this given the code already present here.
Edited by finesse importer

Merge request reports