Draft: Coupling coefficient calculations for transversal shift
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
anddelta_factor
fields toknm_bh_workspace
, representing the transversal shift and a factor applying to it similarly to thebeta
andbeta_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 viaset_knm_info
. - Added
dx
,dy
,dx_factor
,dy_factor
anddx_is_changing
,dy_is_changing
fields toKnmInfo
, again similarly to the tilt DoFs. - Corresponding added support for specifying
dx
,dy
and associated factors toset_knm_info
. - Implemented tunable
dx
,dy
float_parameters forMirror
andBeamsplitter
. Using these in the case ofMirror
to allow transversal shift coupling coefficients to be computed. Support still needs to be finished forBeamsplitter
, as coordinate system bit more complicated sod[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 of1 + K*
. - Minor re-factor of
k_mm
function inbayerhelms.pyx
for clarity.
Task list
-
Add delta
,delta_factor
fields toknm_bh_workspace
and implement corresponding lateral shift calculations inknm_bh_ws_recompute_misalignment
. -
Handle lateral shift parameters and scaling factors in KnmConnectorWorkspace
. -
Add dx
,dy
float_parameters toMirror
andBeamsplitter
classes. -
Use dx
,dy
(including factors for coordinate system considerations) inset_knm_info
for mirrors --- effectively allowing for DC lateral shift calculations at mirrors. -
Use dx
,dy
(including factors for coordinate system considerations) inset_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 eachd[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
ofbayerhelms.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