A compact, physics-first simulator for an ideal vertical light-pulse atom interferometer used for inertial and gravity sensing.
The model implements the standard three-pulse Raman/Mach-Zehnder sequence (π/2 – π – π/2) and focuses on
[ \Phi = k_{\mathrm{eff}} g T^2 + \phi_0. ]
- ideal interferometer phase
k_eff g T² + phi0 - output-state probability and fringe calculation
- phase scanning
- recovery of
gfrom measured phase - simple vertical trajectory under gravity
- pulse timing for the
0, T, 2Tsequence - unit tests and GitHub Actions CI
from atom_interferometer import InterferometerConfig, interferometer_phase, output_probability
cfg = InterferometerConfig(
effective_wavevector=4 * 3.141592653589793 / 780e-9,
pulse_separation=0.10,
)
phase = interferometer_phase(cfg, g=9.81)
probability = output_probability(phase)
print(phase)
print(probability)For an ideal uniform gravitational field,
[ \Phi_g = k_{\mathrm{eff}} g T^2. ]
The normalized population in one output port is
[ P = \frac{1}{2}\left[1 + C\cos(\Phi)\right]. ]
Selected public simulation results from a separate atom-interferometry / cold-atom gravimetry analysis are shown below. They are not generated by atom_interferometer.py.
| Three-pulse sensitivity function | Phase-noise weighting |
|---|---|
| Finite-pulse sensitivity function. | Frequency-domain phase-noise weighting. |
This figure compares a baseline vibration model with an elevated vibration-noise case. It is simulated, not measured data.
See the visual results index and research-results notes.
- finite pulse duration and Rabi dynamics
- launch versus drop trajectories
- Doppler detuning and Raman chirp
- vibration and laser phase noise
- Monte Carlo atomic ensembles
- sensitivity versus interrogation time
- gravity-gradient and rotation terms
- systematic shifts
- fringe fitting and Allan-deviation analysis
This repository consolidates and updates related work for easier maintenance and reference.
The educational simulator and selected research figures are kept separate.