Laser Cavity Stability and the Fundamental Gaussian Mode#
This tutorial builds a two-mirror optical resonator with
physicskit.optics.ray, checks its stability against the standard
\(g\)-parameter criterion, and then finds its self-consistent
fundamental Gaussian mode with physicskit.optics.gaussian.
Building the cavity round trip#
A resonator formed by two spherical mirrors of radius \(R_1, R_2\)
separated by length \(L\) is described, one round trip at a time, by
cascading a reflection off each mirror with a free-space propagation
between them. cavity_round_trip_matrix()
multiplies the element list in order (rightmost element applied first),
so listing [M1, d1, M2, d2] traces a ray starting just after mirror 1,
to mirror 2, and back to mirror 1:
import numpy as np
from physicskit.optics.ray import (
OpticalElement, spherical_mirror, free_space,
cavity_round_trip_matrix, cavity_stability,
)
R1, R2, L = 2.0, 2.0, 1.0
elements = [
OpticalElement(spherical_mirror(R1), name="M1"),
OpticalElement(free_space(L), name="d1", length=L),
OpticalElement(spherical_mirror(R2), name="M2"),
OpticalElement(free_space(L), name="d2", length=L),
]
M = cavity_round_trip_matrix(elements)
print(M)
# [[-1. 1.]
# [-1. 0.]]
The stability criterion#
A resonator is stable – rays stay bounded after arbitrarily many round
trips – exactly when \(|A+D| \le 2\), checked directly by
cavity_stability():
print(cavity_stability(M)) # True
This is the same condition usually written in terms of the dimensionless \(g\)-parameters \(g_i = 1 - L/R_i\), stable when \(0 \le g_1 g_2 \le 1\):
g1, g2 = 1 - L / R1, 1 - L / R2
print(g1 * g2) # 0.25 -- inside [0, 1], confirming the same conclusion
Scanning the mirror separation L from just above 0 out past the
symmetric cavity’s confocal-adjacent limit \(L = 2R\) shows exactly
where the resonator stops being stable:
def is_stable(L):
els = [
OpticalElement(spherical_mirror(R1)),
OpticalElement(free_space(L), length=L),
OpticalElement(spherical_mirror(R2)),
OpticalElement(free_space(L), length=L),
]
return cavity_stability(cavity_round_trip_matrix(els))
print(is_stable(3.5), is_stable(4.5)) # True False
For this symmetric cavity \(g_1g_2 = (1-L/R)^2\) crosses 1 exactly at \(L = 2R = 4.0\), matching the True/False boundary found above.
The self-consistent Gaussian mode#
The fundamental mode of a stable cavity is the Gaussian beam whose complex
parameter \(q\) reproduces itself after one round trip,
\(q = (Aq+B)/(Cq+D)\), i.e. the fixed point of
propagate_q(). Solving the resulting
quadratic \(Cq^2 + (D-A)q - B = 0\) and keeping the root with
\(\operatorname{Im}(q) > 0\) (a physical beam, not its mirror image)
gives the mode at the reference plane just after mirror 1:
from physicskit.optics.gaussian import q_to_beam_params
A, B, C, D = M[0, 0], M[0, 1], M[1, 0], M[1, 1]
roots = np.roots([C, D - A, -B])
q = roots[roots.imag > 0][0]
print(q) # (0.5+0.866...j)
wavelength = 1.064e-3 # Nd:YAG, same length units as R1, R2, L
w, R = q_to_beam_params(q, wavelength)
print(w, R) # ~0.0198 2.0
The recovered radius of curvature, \(R \approx 2.0\), exactly matches mirror 1’s own radius – exactly what “self-consistent” means: the wavefront leaving mirror 1 has the same curvature as mirror 1 itself, so it retraces its path on reflection.
See Also#
Breakthroughs in Optics for Kogelnik and Li’s 1966 paper that introduced this ABCD/\(q\)-parameter treatment of laser resonators.