Mirror
-
mirror
m
Mirror The mirror component represents a thin dielectric surface with associated properties such as reflectivity, tuning, and radius of curvature. Mirror components are nominally at normal incidence to the beams. It has two optical ports p1 and p2 which describes the two beams incident on either side of this surface. The surface normal points out of the mirror on the p1 side. A mirror also has a mechanical port mech which has nodes for longitudinal, yaw, and pitch motions. These mechanical nodes are purely for exciting small signal oscillations of the mirror. Static offsets in longitudinal displacements are set by the phi parameter (in units of degrees), yaw by the xbeta parameter, and pitch the ybeta parameter.
- Syntax:
m name R=none T=none L=none phi=0 Rc=inf xbeta=0 ybeta=0 misaligned=false imaginary_transmission=true
- Required:
name: Name of newly created mirror.- Optional:
R: Reflectivity of the mirror; defaults to 0.5.T: Transmittance of the mirror; defaults to 0.5.L: Loss of the mirror; defaults to 0.0.phi: Tuning of the mirror (in degrees); defaults to 0.0.Rc: The radius of curvature of the mirror (in metres); defaults to a flat mirror (Rc=np.inf). Astigmatic mirrors can also be set with Rc=(Rcx, Rcy). A positive value results in a concave mirror on the p1 side of the mirror.xbeta,ybeta: Misalignment of the mirror in yaw and pitch in units of radiansmisaligned: When True the mirror will be significantly misaligned and assumes any reflected beam is dumped. Transmissions will still occur.imaginary_transmission: Convention for the transmission and reflection reciprocity relations. ‘True’ uses imaginary transmission and equal real reflection from both sides ‘False’ uses real transmission, negative reflection from side 1, and positive reflection from side 2. defaults to True
Phase relationship
See Mirror and beamsplitter phase relationships for more details on the phase relationship to ensure energy conservation that is used in Finesse.
The transmission and reflection phase relationship can be changed per mirror
by setting the imaginary_transmission to either real or imaginary. By
default this is imaginary (True), so a \(\I\) phase on transmission. If set to
be the real convention then the phase is 0 on transmission and 180 degrees
on reflection on the port 1 side.
RTL relationship
Energy conservation dictates that the R, T and L parameters should always
sum up to 1. There are multiple ways to set these parameters:
Three numeric values
You can assign a numeric value to each parameter. They will be checked on construction of the mirror and any time you update any of the parameters:
from finesse.components import Mirror
# invalid construction
mirror = Mirror('m1', R=0.9, T=0.3, L=0.1)
InvalidRTLError: (use finesse.tb() to see the full traceback)
Expected R + T + L = 1 in 'm1' but got R + T + L = 1.3
R = 0.9
T = 0.3
L = 0.1
from finesse.components import Mirror
# correct construction
mirror = Mirror('m1', R=0.6, T=0.3, L=0.1)
# updating value breaks energy conservation
mirror.R = 0.9
InvalidRTLError: (use finesse.tb() to see the full traceback)
Expected R + T + L = 1 in 'm1' but got R + T + L = 1.3
R = 0.9
T = 0.3
L = 0.1
Since you didn’t specify how the other two parameters should respond to a change,
you can no longer update the values one at a time. Instead you should use the
finesse.components.surface.Surface.set_RTL() method to update all three
parameters at once:
mirror = Mirror('m1', R=0.6, T=0.3, L=0.1)
mirror.set_RTL(R=0.1, T=0.9, L=0.0)
Two numeric values
If you only specify two numeric values, for instance R and T, the third
parameter will automatically be set to a symbolic expression that
satisfies the energy conservation, for instance \(L=1-R-T\). This allows you to
change/sweep any of the parameters you set numerically and the third parameter will
update automatically:
mirror = Mirror('m1', R=0.2, T=0.3)
print(f"R={mirror.R.value}")
print(f"T={mirror.T.value}")
print(f"L={mirror.L.value}={mirror.L.value.eval()}")
mirror.R = 0.6
print(f"R={mirror.R.value}")
print(f"T={mirror.T.value}")
print(f"L={mirror.L.value}={mirror.L.value.eval()}")
R=0.2
T=0.3
L=(1-(m1.R+m1.T))=0.5
R=0.6
T=0.3
L=(1-(m1.R+m1.T))=0.10000000000000009
Custom symbolic expressions
You can also specify your own symbolic expressions. An advanced example could be to link the parameters of two mirrors together, such that any change in one mirror is propagated to the second mirror:
m1 = Mirror('m1', R=0.2, T=0.3)
m2 = Mirror('m2', R=m1.R.ref, T=m1.T.ref)
print(f"{m1.R.value=}")
print(f"{m2.R.value=}")
print(f"{m2.R.value.eval()=}")
m1.R = 0.6
print(f"{m1.R.value=}")
print(f"{m2.R.value=}")
print(f"{m2.R.value.eval()=}")
m1.R.value=0.2
m2.R.value=<Symbolic='m1.R' @ 0x7cbfc5f70d50>
m2.R.value.eval()=0.2
m1.R.value=0.6
m2.R.value=<Symbolic='m1.R' @ 0x7cbfc5f70d50>
m2.R.value.eval()=0.6
Parameters
Listed below are the parameters of the mirror component. Certain parameters can be
changed during a simulation and some cannot, which is highlighted in the can change
during simulation column. These changeable parameters can be used by actions such
as xaxis or change. Those that cannot must be changed before a simulation is
run.
| Name | Description | Units | Data type | Can change during simualation |
|---|---|---|---|---|
| R | Reflectivity | None | float | ✓ |
| T | Transmission | None | float | ✓ |
| L | Loss | None | float | ✓ |
| phi | Microscopic tuning (360 degrees = 1 default wavelength) | degrees | float | ✓ |
| Rcx | Radius of curvature (x) | m | float | ✓ |
| Rcy | Radius of curvature (y) | m | float | ✓ |
| xbeta | Yaw misalignment | radians | float | ✓ |
| ybeta | Pitch misalignment | radians | float | ✓ |
| misaligned | Misaligns mirror reflection (R=0 when True) | None | bool | ✓ |
Coordinate systems
There are various coordinate systems involved in modelling the mirror component.
Each mechanical and optical node has an associated coordinate system. Shown in the
figure below are the coordinate systems for the optical p1 (Port 1) and the
mechanical mode mech.
Fig. 9 Andreas and Daniel applying a left-handed coordiate system.
The optical nodes, as for all optical nodes for any component, are in a left-handed coordinate system, shown in blue. The incoming and output going nodes represent the beam in the incident plane. For a mirror the angle of incidence is fixed to zero, \(\alpha=0\). A beamsplitter component is exactly the same as a mirror component, except that the angle of incidence can be non-zero. The outgoing node is a reflection of the incoming in the z and x coordinates.
The mechanical node coordiante system is shown in black and is a right-handed coordinate system. A positive z motion is the surface normal of mirror surface going in the port 1 direction. Yaw and pitch are right-handed rotations around the y and x axes respectively.
Signals
Signals can be excited by injecting a signal into the relevant electrical or mechanical node at a component. The mirror component only has mechanical signals.
Longitudinal motions
Small longitudinal oscillations can be excited directly by using the
mirror.mech.z (whose units are meters) or by applying a force
mirror.mech.F_z (units of Newtons). If no suspension is attached to the mirror
then applying a force will not move the mirror.
When the longitudinal motion is driven any carrier light reflected from the mirror surface will be phase modulated. This creates upper and lower signal sidebands around each carrier. Mathematically, the amount of sideband generated, \(a_{\pm}\), is linearly proportional to induced motion, \(z\). The higher order mode vector for the upper or lower sideband generated at the outgoing node of port 1 will be
Where \(k_{\pm}\) is the sideband wavenumber, \(f_0\) is the reference
optical frequency which can be set using the lambda command and defaults to
\(f_0=1064\mathrm{nm}\), \(\hat{E}_{c}^{i}\) is a vector of carrier higher
order modes, \(r\) the mirror reflectivity, and \(\phi\) the mirror tuning
in radians. \(z^{\pm}\) is defined as \(z^+ \equiv z\) and \(z^- \equiv
z^\ast\). Sidebands generated from reflection on the port 2 side will
have a 180 degree phase shift relative to those generated on the port 1 side.
Yaw and pitch rotations
Small rotational oscillations can be excited by using the mirror.mech.yaw and
mirror.mech.pitch both in units of radians. Torques can also be applied by using
the mirror.mech.F_yaw or mirror.mech.F_pitch. If no suspension is attached
to the mirror then applying a force will not rotate the mirror.
When either yaw or pitch is driven any carrier light reflected from the surfaces has a linear phase shifted applied to its wavefront, thus tilting it.
The terms are the same as for the longitudinal equation except for \(\beta^\pm\) which is the misalignment equivalent of \(z^\pm\) for either pitch or yaw, and \(\mathbf{K}_{y/p}\) which is the mode scattering matrix for pitch or yaw for some linearised unit radian alignment change.
Ports and nodes overview
Ports
| Name | Type | Nodes |
|---|---|---|
| p1 | OPTICAL | i, o |
| p2 | OPTICAL | i, o |
| mech | MECHANICAL | z, F_z, yaw, F_yaw, pitch, F_pitch |
Nodes
| Name | Type | Unit |
|---|---|---|
| p1.i | optical | √(W) |
| p1.o | optical | √(W) |
| p2.i | optical | √(W) |
| p2.o | optical | √(W) |
| mech.z | mechanical | deg |
| mech.F_z | mechanical | N |
| mech.yaw | mechanical | deg |
| mech.F_yaw | mechanical | N |
| mech.pitch | mechanical | deg |
| mech.F_pitch | mechanical | N |
Couplings
| From | To | Units | Coupling Type |
|---|---|---|---|
| p1.i | p1.o | √(W) / √(W) | optical➡optical |
| p1.i | p2.o | √(W) / √(W) | optical➡optical |
| p2.i | p1.o | √(W) / √(W) | optical➡optical |
| p2.i | p2.o | √(W) / √(W) | optical➡optical |
| p1.i | mech.F_pitch | N / √(W) | optical➡mechanical |
| p1.i | mech.F_yaw | N / √(W) | optical➡mechanical |
| p1.i | mech.F_z | N / √(W) | optical➡mechanical |
| p1.o | mech.F_pitch | N / √(W) | optical➡mechanical |
| p1.o | mech.F_yaw | N / √(W) | optical➡mechanical |
| p1.o | mech.F_z | N / √(W) | optical➡mechanical |
| p2.i | mech.F_pitch | N / √(W) | optical➡mechanical |
| p2.i | mech.F_yaw | N / √(W) | optical➡mechanical |
| p2.i | mech.F_z | N / √(W) | optical➡mechanical |
| p2.o | mech.F_pitch | N / √(W) | optical➡mechanical |
| p2.o | mech.F_yaw | N / √(W) | optical➡mechanical |
| p2.o | mech.F_z | N / √(W) | optical➡mechanical |
| mech.z | p1.o | √(W) / deg | mechanical➡optical |
| mech.z | p2.o | √(W) / deg | mechanical➡optical |
| mech.pitch | p1.o | √(W) / deg | mechanical➡optical |
| mech.pitch | p2.o | √(W) / deg | mechanical➡optical |
| mech.yaw | p1.o | √(W) / deg | mechanical➡optical |
| mech.yaw | p2.o | √(W) / deg | mechanical➡optical |