{ "cells": [ { "cell_type": "markdown", "id": "intro", "metadata": {}, "source": [ "# Λ-Type Three-Level: Coherent Population Trapping (CPT)\n", "\n", "When two coherent fields simultaneously drive a three-level Λ system, the\n", "atoms can be optically pumped into a **dark state** — a coherent\n", "superposition of the two ground states that is completely decoupled from\n", "the excited state.\n", "\n", "## Level structure\n", "\n", "```\n", " |1⟩ ──────────────── (excited)\n", " / \\\n", " Ω_p / \\ Ω_c\n", " / \\ γ₁₀ = γ₁₂ = 1.0\n", " |0⟩ |2⟩ (ground states)\n", "```\n", "\n", "## Physics\n", "\n", "The Hamiltonian in the rotating frame has a zero-eigenvalue eigenstate —\n", "the **dark state** — when the two-photon resonance condition holds\n", "($\\delta_p = \\delta_c$):\n", "\n", "$$\n", "|D\\rangle = \\frac{\\Omega_c\\,|0\\rangle - \\Omega_p\\,|2\\rangle}\n", " {\\sqrt{\\Omega_p^2 + \\Omega_c^2}}\n", "$$\n", "\n", "Atoms pumped into $|D\\rangle$ stop scattering photons entirely. The probe\n", "absorption spectrum then shows a **narrow transparency window** centred on\n", "$\\delta_p = \\delta_c$: the CPT (or EIT) dip.\n", "\n", "The width of the dip is set by the ground-state decoherence rate $\\gamma_g$,\n", "which can be much narrower than the excited-state linewidth $\\gamma_{10}$.\n", "This makes CPT-based dark resonances extremely sharp — the basis for\n", "CPT atomic clocks and all-optical magnetometry." ] }, { "cell_type": "code", "execution_count": null, "id": "imports", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from maxwellbloch import mb_solve, plot" ] }, { "cell_type": "markdown", "id": "no-coupling-section", "metadata": {}, "source": [ "## Without coupling: Doppler-broadened absorption\n", "\n", "First we solve for the probe alone (coupling Rabi frequency = 0, i.e.\n", "no coupling field). The probe sees a Doppler-broadened Lorentzian — the\n", "baseline against which the CPT dip will be compared.\n", "\n", "A thermal velocity distribution is included\n", "(`thermal_std = 10 γ`) to reproduce realistic lineshape broadening." ] }, { "cell_type": "code", "execution_count": null, "id": "solve-no-coupling", "metadata": {}, "outputs": [], "source": [ "mb_solve_json_no_coupling = \"\"\"\n", "{\n", " \"atom\": {\n", " \"num_states\": 3,\n", " \"decays\": [\n", " {\"channels\": [[0, 1]], \"rate\": 1.0},\n", " {\"channels\": [[1, 2]], \"rate\": 1.0}\n", " ],\n", " \"fields\": [\n", " {\n", " \"label\": \"probe\",\n", " \"coupled_levels\": [[0, 1]],\n", " \"detuning\": 0.0,\n", " \"detuning_positive\": true,\n", " \"rabi_freq\": 1.0e-3,\n", " \"rabi_freq_t_func\": \"gaussian\",\n", " \"rabi_freq_t_args\": {\"ampl\": 1.0, \"centre\": 0.0, \"fwhm\": 1.5}\n", " },\n", " {\n", " \"label\": \"coupling\",\n", " \"coupled_levels\": [[1, 2]],\n", " \"detuning\": 0.0,\n", " \"detuning_positive\": false,\n", " \"rabi_freq\": 0.0,\n", " \"rabi_freq_t_func\": \"ramp_onoff\",\n", " \"rabi_freq_t_args\": {\"ampl\": 1.0, \"fwhm\": 0.2, \"on\": -2.0, \"off\": 8.0}\n", " }\n", " ]\n", " },\n", " \"t_min\": -2.0,\n", " \"t_max\": 8.0,\n", " \"t_steps\": 200,\n", " \"z_min\": 0.0,\n", " \"z_max\": 1.0,\n", " \"z_steps\": 10,\n", " \"z_steps_inner\": 2,\n", " \"interaction_strengths\": [2.0, 0.0],\n", " \"velocity_classes\": {\n", " \"thermal_width\": 10.0,\n", " \"thermal_delta_min\": -30.0,\n", " \"thermal_delta_max\": 30.0,\n", " \"thermal_delta_steps\": 12,\n", " \"thermal_delta_inner_min\": -3.0,\n", " \"thermal_delta_inner_max\": 3.0,\n", " \"thermal_delta_inner_steps\": 6\n", " },\n", " \"savefile\": \"mbs-lambda-cpt-no-coupling\"\n", "}\n", "\"\"\"\n", "\n", "mbs_no_c = mb_solve.MBSolve().from_json_str(mb_solve_json_no_coupling)\n", "mbs_no_c.mbsolve(recalc=False)\n", "print(\"Done\")" ] }, { "cell_type": "markdown", "id": "coupling-section", "metadata": {}, "source": [ "## With coupling: CPT dark resonance\n", "\n", "Now we add a strong CW coupling field ($\\Omega_c = 5\\gamma$) that is\n", "switched on before the probe pulse arrives. The two-photon resonance\n", "condition ($\\delta_p = \\delta_c = 0$) is satisfied on resonance, so a\n", "sharp transparency window opens at $\\delta_p = 0$." ] }, { "cell_type": "code", "execution_count": null, "id": "solve-coupling", "metadata": {}, "outputs": [], "source": [ "mb_solve_json_coupling = \"\"\"\n", "{\n", " \"atom\": {\n", " \"num_states\": 3,\n", " \"decays\": [\n", " {\"channels\": [[0, 1]], \"rate\": 1.0},\n", " {\"channels\": [[1, 2]], \"rate\": 1.0}\n", " ],\n", " \"fields\": [\n", " {\n", " \"label\": \"probe\",\n", " \"coupled_levels\": [[0, 1]],\n", " \"detuning\": 0.0,\n", " \"detuning_positive\": true,\n", " \"rabi_freq\": 1.0e-3,\n", " \"rabi_freq_t_func\": \"gaussian\",\n", " \"rabi_freq_t_args\": {\"ampl\": 1.0, \"centre\": 0.0, \"fwhm\": 1.5}\n", " },\n", " {\n", " \"label\": \"coupling\",\n", " \"coupled_levels\": [[1, 2]],\n", " \"detuning\": 0.0,\n", " \"detuning_positive\": false,\n", " \"rabi_freq\": 5.0,\n", " \"rabi_freq_t_func\": \"ramp_onoff\",\n", " \"rabi_freq_t_args\": {\"ampl\": 1.0, \"fwhm\": 0.2, \"on\": -2.0, \"off\": 8.0}\n", " }\n", " ]\n", " },\n", " \"t_min\": -2.0,\n", " \"t_max\": 8.0,\n", " \"t_steps\": 200,\n", " \"z_min\": 0.0,\n", " \"z_max\": 1.0,\n", " \"z_steps\": 10,\n", " \"z_steps_inner\": 2,\n", " \"interaction_strengths\": [2.0, 0.0],\n", " \"velocity_classes\": {\n", " \"thermal_width\": 10.0,\n", " \"thermal_delta_min\": -30.0,\n", " \"thermal_delta_max\": 30.0,\n", " \"thermal_delta_steps\": 12,\n", " \"thermal_delta_inner_min\": -3.0,\n", " \"thermal_delta_inner_max\": 3.0,\n", " \"thermal_delta_inner_steps\": 6\n", " },\n", " \"savefile\": \"mbs-lambda-cpt-coupling\"\n", "}\n", "\"\"\"\n", "\n", "mbs_c = mb_solve.MBSolve().from_json_str(mb_solve_json_coupling)\n", "mbs_c.mbsolve(recalc=False)\n", "print(\"Done\")" ] }, { "cell_type": "markdown", "id": "spectrum-section", "metadata": {}, "source": [ "## Absorption spectra: the CPT dip\n", "\n", "The two traces are overlaid below. The broad Doppler-broadened background\n", "is the same in both cases. With the coupling field on, a narrow\n", "transparency window — the dark resonance — appears at $\\delta_p = 0$." ] }, { "cell_type": "code", "execution_count": null, "id": "plot-spectra", "metadata": {}, "outputs": [], "source": "fig = plot.spectrum_overlay(\n [mbs_no_c, mbs_c],\n field_idx=0,\n labels=[\"coupling off\", \"coupling on (Ω_c = 5γ)\"],\n freq_range=8,\n)\nfig.update_layout(title=\"CPT dark resonance in a Λ system: probe absorption\")\nfig.show(renderer='notebook_connected')" }, { "cell_type": "markdown", "id": "spacetime-section", "metadata": {}, "source": [ "## Probe propagation with coupling\n", "\n", "The space-time plot of the probe shows that the medium becomes\n", "transparent for the resonant frequency component: the probe pulse\n", "propagates with much less attenuation than in the bare two-level case." ] }, { "cell_type": "code", "execution_count": null, "id": "plot-spacetime", "metadata": {}, "outputs": [], "source": [ "fig = plot.field_spacetime(mbs_c, field_idx=0)\n", "fig.update_layout(title=\"Probe |Ω_p(z, t)| — CPT (Ω_c = 5γ)\")\n", "fig.show(renderer='notebook_connected')" ] }, { "cell_type": "markdown", "id": "dark-state-section", "metadata": {}, "source": [ "## Dark-state population\n", "\n", "Once the atoms are in the dark state they accumulate in the two ground\n", "states. The plot below shows $\\rho_{00}$ and $\\rho_{22}$ at the input\n", "face, illustrating the coherent redistribution of population driven by\n", "the coupling field." ] }, { "cell_type": "code", "execution_count": null, "id": "plot-population", "metadata": {}, "outputs": [], "source": [ "fig = plot.population(mbs_c, state_indices=[0, 1, 2], z_idx=0)\n", "fig.update_layout(title=\"Ground/excited populations at z = z_min (CPT, Ω_c = 5γ)\")\n", "fig.show(renderer='notebook_connected')" ] }, { "cell_type": "markdown", "id": "summary", "metadata": {}, "source": [ "## Summary\n", "\n", "- Without coupling: Doppler-broadened Lorentzian absorption of width\n", " $\\sim 2\\gamma \\sqrt{1 + (\\sigma_D/\\gamma)^2}$.\n", "- With coupling: a narrow CPT dip of width $\\sim \\gamma_g \\ll \\gamma$\n", " appears at the two-photon resonance. The dip depth approaches unity\n", " as the coupling strength increases.\n", "- Atoms accumulate in the dark state: $\\rho_{11} \\to 0$, population is\n", " distributed between $|0\\rangle$ and $|2\\rangle$ with ratio set by\n", " $\\Omega_p^2 : \\Omega_c^2$.\n", "\n", "## References\n", "\n", "1. E. Arimondo and G. Orriols, *Non-absorbing atomic coherences by\n", " coherent two-photon transitions in a three-level optical pumping*,\n", " Lett. Nuovo Cimento **17**, 333 (1976). First observation of CPT.\n", "2. G. Alzetta, A. Gozzini, L. Moi, G. Orriols, *An experimental method\n", " for the observation of r.f. transitions and laser beat resonances in\n", " oriented Na vapour*, Nuovo Cimento B **36**, 5 (1976).\n", "3. E. Arimondo, *Coherent Population Trapping in Laser Spectroscopy*,\n", " Prog. Opt. **35**, 257 (1996). Comprehensive review." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.14.0" } }, "nbformat": 4, "nbformat_minor": 5 }