Bow-tie OPO (PPKTP, 532 nm pump → 1064 nm squeezed vacuum) + balanced homodyne detection · 1200 × 900 mm table
In short: Light always carries a tiny, unavoidable flicker called quantum noise. This bench shows how a special crystal inside a ring of mirrors "squeezes" that noise below its normal floor in one property of the light, and how a sensitive detector reads it out. The same trick makes the LIGO gravitational-wave detectors more sensitive.
Pump alignment: knobs on PM1/PM2. Misaligning the pump lowers its overlap with the OPO mode, which acts like lower pump power.
Model: below-threshold OPO, V±(f) = 1 ± η·4x / ((1 ∓ x)² + (f/γ)²), with LO phase jitter and detector dark noise. Parameters marked ASSUMED in the README (nonlinearity, crystal temperature bandwidth) are typical values.
Pump power sets the squeezing strength and bandwidth. OC transmission and loss set the escape efficiency, the main limit. LS position and the LO mirrors set the homodyne overlap; the loss scales as visibility². LO phase picks which quadrature you measure. Phase jitter mixes anti-squeezing in near threshold.
Answers "what must be on the table to make and measure squeezed light, and how good can it be?" It joins an exact Gaussian-beam layout (bow-tie OPO, pump delivery, homodyne overlap) with the standard below-threshold OPO noise formulas, so alignment, mode matching and losses show up directly as dB of squeezing.
1. Bow-tie cavity eigenmode. The stable mode satisfies the round-trip ABCD condition q = (Aq + B)/(Cq + D); stability needs |A + D|/2 < 1. Handled: the engine traces a general astigmatic Gaussian (Arnaud X/Θ form) once round the real ring: crystal faces (PPKTP n_z = 1.8302 at 1064 nm), M4 and M3 concave R = 100 mm, flat M1 and M2, on a 120 × 50 mm rectangle with crossing diagonals. The round-trip matrices give tangential and sagittal waists 53.7 × 55.1 µm, optical round trip 508.4 mm, FSR = c/L = 589.6 MHz, angle of incidence 11.3°.
2. Gaussian-beam propagation through real optics. Handled: exact 3D chief ray plus astigmatic q-parameter through each surface (refraction at spherical and plane surfaces, reflection at tilted mirrors). Includes M3's concave face as a weak lens for the pump, the 6.35 mm N-BK7 output coupler at 11.3° (≈ 0.43 mm lateral shift), the 3 mm BS plate, and plano-convex lenses LP (R = 51.5 mm, f ≈ 100 mm) and LS (R = 103 mm, f ≈ 200 mm). Mirror knob tilts change the chief ray.
3. Mode overlap. Power coupling η = |∫E₁E₂ dA|² / (∫|E₁|² dA · ∫|E₂|² dA). Handled:* numerically on a 72 × 72 grid spanning ±4.5 w plus offset, including offset, tilt (phase ramp) and astigmatism. Used twice: pump vs the OPO's 532 nm mode (w/√2 at the crystal centre, same Rayleigh range) and LO vs squeezed beam at PD A. Defaults: pump 99.1 %, homodyne 99.4 % (visibility 99.7 %).
4. Threshold and phase matching. P_th = (T + L)² / (4 E_NL · s²), with s = sinc(2.7832 · ΔT / 1.0 °C), so the conversion efficiency s² has a 1.0 °C FWHM. Handled: E_NL = 0.017 W⁻¹ (ASSUMED). Pump parameter x = √(η_pump · P / P_th). Default P_th = 153 mW, x = 0.805 at 100 mW.
5. Linewidth. FWHM = FSR · (T + L) / (2π), half-width γ = FWHM/2. Handled: closed form (low-loss ring approximation); default 9.57 MHz FWHM, γ = 4.79 MHz.
6. Squeezing spectra. V∓(f) = 1 ∓ η · 4x / ((1 ± x)² + (f/γ)²), relative to shot noise (1 = vacuum). Handled: closed form, x capped at 0.999. Total efficiency η = η_esc · (1 − L_prop) · QE · η_hd, with η_esc = T/(T + L). Default η = 0.980 × 0.97 × 0.95 × 0.994 = 0.898.
7. LO phase, jitter and dark noise. V(θ) = V₋⟨cos²θ⟩ + V₊⟨sin²θ⟩ with ⟨cos²θ⟩ = (1 + cos 2θ · e^(−2σ²))/2 for Gaussian jitter σ. Dark noise: V_meas = (V + N_e)/(1 + N_e), N_e = 10^(−clearance/10). Handled: closed form; σ = 10 mrad, clearance 15 dB. Result at 1 MHz: −8.12 dB squeezing, +15.48 dB anti-squeezing.
8. Phase-space picture. Handled: the noise ellipse is drawn with semi-axes √V₊ and √V₋ against the vacuum circle; the LO phase is a line through it (display only).
engine.js (shared): vector maths, Sellmeier N-BK7, surface hits, astigmatic Gaussian-beam trace, beam ellipses; instantiated separately at 1064 nm and 532 nm.sq_model.js: table layout, bow-tie eigenmode (opoMode), optical paths for pump, squeezed beam and LO (system), overlap integral, OPO physics (evaluate), spectra and measured noise.sq_design.js (Node): solves nominal positions by scanning: pump lateral offset and LP position for best pump overlap, LS for smallest beam at PD A, LO offset and LO waist/distance to match the squeezed beam; prints the DES values.sq_app.js: three.js scene, knob dragging, sliders, plots (noise vs θ, spectra, ellipse), readouts; kit.js/clamps.js draw mounts, re-solve clamp forks and build the parts table.evaluate (trace + overlaps + threshold) → spectra → measured → plots and readouts; beams redrawn from traced segments.node sq_design.js (optional, re-solves positions), then python build.py and open squeezed_light_bench.html.| Parameter | Value | Source |
|---|---|---|
| Wavelengths | 1064 nm (squeezed, LO), 532 nm (pump) | design choice |
| Cavity geometry | 120 × 50 mm bow-tie, R = 100 mm curved mirrors | Chua et al. 2011 (style); design choice |
| Optical round trip / FSR | 508.4 mm / 589.6 MHz | computed |
| Waist in crystal | 53.7 × 55.1 µm | computed |
| PPKTP length, n_z | 10 mm; 1.8302 (1064), 1.8887 (532) | datasheet (approximate) |
| E_NL | 0.017 W⁻¹ | ASSUMED |
| Phase-matching width | 1.0 °C FWHM (of sinc²) | ASSUMED |
| OC transmission T | 10 % | design choice |
| Intracavity loss L | 0.2 % | ASSUMED |
| Pump power | 100 mW | design choice |
| Detector QE | 95 % | ASSUMED |
| Propagation loss | 3 % | ASSUMED |
| LO phase jitter | 10 mrad rms | ASSUMED |
| Dark-noise clearance | 15 dB | ASSUMED |
| Analysis frequency | 1 MHz | design choice |
Every interactive page loads three shared files. engine.js is the optics math, kit.js is the three.js scene, stand-in hardware, beam drawing and parts table, and clamps.js places the posts and forks. Units are mm in a table frame (x, y, z up). Each experiment's physics lives in its own model file. The engine only does the optics that a model explicitly asks for.
make(λ).cloneB) at a beamsplitter and traces each branch with its own surface list. Surfaces have no apertures, so the model must handle clipping.The kit's photodiode and camera objects are bodies on posts and compute nothing. Photodiode voltages, quadrant read-outs, spectra and noise are all computed in each model file. These calculations are often analytic and use no engine at all, as in the Faraday, EOM and direction-finder pages. Labels are CSS2D text set by the app.
Each stand-in part and post stack registers a row: reference, category, part number, description. A stack registers a TR post, a PH40 or PH50 holder (chosen for the beam height), a BE1/M base, and a CF125C/M fork unless the post sits directly on a hole. partsTable() groups and counts identical rows, sorts them by category, and writes the HTML table and the CSV.
Each fork's M6 screw must land on a 25 mm-grid hole 26.4–49.6 mm from the post. Forks perpendicular to the beam are preferred. A sliding part keeps its hole while that hole still fits, then re-clamps. Forks may not overlap other forks, pedestals or registered footprints ("obstacles"). Conflicts turn red, and a guard stops posts from colliding. All of this is mechanical layout only; it has no optical effect.
Thorlabs-style suggestions; verify part numbers before ordering. "custom" means a coating or crystal vendor.
A standard continuous-wave squeezer: a below-threshold degenerate OPO in a bow-tie cavity, read out by balanced homodyne detection. The bow-tie geometry follows the gravitational-wave squeezer designs (Chua et al.); the noise spectra follow Collett & Gardiner.