{ "cells": [ { "cell_type": "markdown", "id": "sit-title", "metadata": {}, "source": [ "# Self-Induced Transparency: Area Theorem and Solitons\n", "\n", "The **McCall–Hahn area theorem** governs how the pulse area $\\mathcal{A} = \\int_{-\\infty}^\\infty \\Omega(t)\\,dt$ evolves as a pulse propagates through a resonant absorbing medium:\n", "\n", "$$\\frac{d\\mathcal{A}}{dz} = -\\frac{\\alpha}{2}\\sin\\mathcal{A}$$\n", "\n", "This has the same form as the equation of motion for a pendulum, and its fixed points tell us everything about what happens to any pulse entering the medium:\n", "\n", "| Fixed point | Stability | Outcome |\n", "|:-----------:|:---------:|--------|\n", "| 0 | stable | weak pulses absorbed |\n", "| π | unstable | pulses tip toward 0 or 2π |\n", "| 2π | stable | **SIT soliton** propagates without loss |\n", "| 3π | unstable | one 2π soliton emitted |\n", "| 4π | stable | two 2π solitons |\n", "| … | | |\n", "\n", "Even multiples of π are stable: a pulse with area near $2n\\pi$ reshapes toward exactly $2n\\pi$, splitting into $n$ **solitons** that propagate without attenuation. This is **self-induced transparency** (SIT). Odd multiples are unstable saddle points.\n", "\n", "The area theorem is also **shape-independent**: only the integrated area matters, not the pulse envelope. A Gaussian with area $1.8\\pi$ reshapes toward $2\\pi$ just as a sech pulse does.\n", "\n", "This notebook demonstrates the full picture, starting from the fundamental SIT soliton and then exploring what the area theorem predicts for other input areas." ] }, { "cell_type": "code", "execution_count": 1, "id": "sit-setup", "metadata": { "execution": { "iopub.execute_input": "2026-05-05T15:14:02.104177Z", "iopub.status.busy": "2026-05-05T15:14:02.103979Z", "iopub.status.idle": "2026-05-05T15:14:02.757305Z", "shell.execute_reply": "2026-05-05T15:14:02.756707Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "t_width=0.001, t_min=-0.0100, t_max=0.0400, interaction_strength=5000.0\n" ] } ], "source": [ "import numpy as np\n", "from maxwellbloch import mb_solve, plot\n", "\n", "from maxwellbloch.utility import SECH_FWHM_CONV\n", "t_width = 0.001\n", "t_min = -t_width * 10\n", "t_max = t_width * 40\n", "interaction_strength = 5 / t_width\n", "gauss_fwhm = t_width / SECH_FWHM_CONV\n", "print(f\"t_width={t_width}, t_min={t_min:.4f}, t_max={t_max:.4f}, interaction_strength={interaction_strength:.1f}\")" ] }, { "cell_type": "markdown", "id": "sit-2pi-intro", "metadata": {}, "source": [ "## The 2π SIT soliton\n", "\n", "A sech pulse with area exactly $2\\pi$ is the **central object of self-induced transparency**. It is an exact analytical solution of the Maxwell-Bloch equations: it propagates through the resonant medium without any attenuation, slowed relative to vacuum by a delay proportional to the optical depth. The medium absorbs energy from the leading edge and re-emits it coherently into the trailing edge — the two processes cancel exactly.\n", "\n", "This is the stable fixed point at $\\mathcal{A} = 2\\pi$. All other inputs are understood in relation to it." ] }, { "cell_type": "code", "execution_count": 2, "id": "sit-2pi-json", "metadata": { "execution": { "iopub.execute_input": "2026-05-05T15:14:02.759107Z", "iopub.status.busy": "2026-05-05T15:14:02.758948Z", "iopub.status.idle": "2026-05-05T15:14:02.766397Z", "shell.execute_reply": "2026-05-05T15:14:02.765964Z" } }, "outputs": [], "source": [ "mbs_2pi = mb_solve.MBSolve().from_json_str(f\"\"\"\n", "{{\n", " \"atom\": {{\n", " \"fields\": [{{\"coupled_levels\": [[0, 1]], \"rabi_freq_t_func\": \"sech\",\n", " \"rabi_freq_t_args\": {{\"n_pi\": 2.0, \"centre\": 0.0, \"width\": {t_width}}}}}],\n", " \"num_states\": 2,\n", " \"decays\": [{{\"channels\": [[0, 1]], \"rate\": 1.0}}]\n", " }},\n", " \"t_min\": {t_min}, \"t_max\": {t_max}, \"t_steps\": 500,\n", " \"z_min\": -0.5, \"z_max\": 1.5, \"z_steps\": 200,\n", " \"interaction_strengths\": [{interaction_strength}], \"savefile\": \"mbs-sit-2pi\"\n", "}}\n", "\"\"\"\n", ")\n", "mbs_2pi.mbsolve(recalc=False);" ] }, { "cell_type": "code", "execution_count": 3, "id": "sit-2pi-spacetime", "metadata": { "execution": { "iopub.execute_input": "2026-05-05T15:14:02.767829Z", "iopub.status.busy": "2026-05-05T15:14:02.767748Z", "iopub.status.idle": "2026-05-05T15:14:03.388435Z", "shell.execute_reply": "2026-05-05T15:14:03.387616Z" } }, "outputs": [ { "data": { "text/html": [ " \n", " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "