{ "cells": [ { "cell_type": "markdown", "id": "550ccdf1", "metadata": {}, "source": [ "# `godunov` — Lebacque's (1996) Godunov scheme + the Greenshields FD\n", "\n", "**What.** `godunov` runs `ctm`'s cell update UNCHANGED on a GENERAL concave\n", "fundamental diagram — here the smooth Greenshields (1935) parabola `Q(k) = vf *\n", "k * (1 - k/kappa)` built from a link's `(vf, kappa)` — instead of the triangular\n", "FD. `CTMLink`'s cell scheme was never triangular-specific: the Lebacque\n", "`min(demand, supply)` flux is defined for any concave `Q`, so `GodunovLink`\n", "substitutes a `GreenshieldsFD` for the link's default `TriangularFD` and reuses\n", "the verified cell update as-is. It is the first non-triangular FD in the\n", "benchmark, so it is the first to produce genuine RAREFACTION FANS (smooth\n", "acceleration waves) — impossible on a piecewise-linear `Q`.\n", "\n", "**Why it is in the benchmark.** At a transonic interface (`k_L > k_c > k_R`)\n", "the Godunov flux `min(demand(k_L), supply(k_R))` returns the sonic-point\n", "capacity `q_max` — the entropy-correct rarefaction value, not a shock value a\n", "naive scheme could get wrong. See the\n", "[model compendium](../../docs/MODELS.md) (Lebacque 1996) and\n", "[docs/design/adr-018-godunov.md](../../docs/design/adr-018-godunov.md) (P1).\n", "\n", "**Scope.** This notebook loads the built-in\n", "`greenshields_bottleneck_dynamic_scenario` through `GodunovLink`, certifies it,\n", "and recomputes the entropy-correct transonic flux directly from\n", "`GreenshieldsFD` — the physics `ctm`'s triangular FD cannot produce.\n", "\n", "**Canon.** `[lebacque1996godunov]`, [docs/REFERENCES.md](../../docs/REFERENCES.md) / [docs/references.bib](../../docs/references.bib)." ] }, { "cell_type": "markdown", "id": "6a0c4810", "metadata": {}, "source": [ "## How this notebook is graded\n", "\n", "**A notebook never claims a number it does not compute in that cell.** Every\n", "scored quantity below is recomputed live by the P1 `DNLEvaluator` from the\n", "cumulative link curves the loader emitted, in the cell where it is claimed.\n", "Godunov has no self-report to diff — like `ctm`/`ltm`, `NetworkLoader.run()` is\n", "a deterministic, one-shot forward simulation\n", "([README](../../README.md), *Certified, not self-reported*)." ] }, { "cell_type": "code", "execution_count": 1, "id": "281eb26a", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:48:30.750451Z", "iopub.status.busy": "2026-07-21T13:48:30.750207Z", "iopub.status.idle": "2026-07-21T13:48:32.799029Z", "shell.execute_reply": "2026-07-21T13:48:32.797675Z" } }, "outputs": [], "source": [ "# Setup. `godunov` is a core DNL link model: a plain `pip install -e .` suffices\n", "# — no optional extra, so no guard cell. The inline backend is Agg-based\n", "# (headless CI renders into the notebook); NEVER matplotlib.use(\"Agg\") in-kernel\n", "# — it silently suppresses inline figure capture.\n", "%matplotlib inline\n", "import numpy as np\n", "from scipy.optimize import brentq\n", "\n", "from tabench import (\n", " DNLEvaluator,\n", " GodunovLink,\n", " GreenshieldsFD,\n", " NetworkLoader,\n", " greenshields_bottleneck_dynamic_scenario,\n", " viz,\n", ")" ] }, { "cell_type": "markdown", "id": "3bcfb8bb", "metadata": {}, "source": [ "## The scenario\n", "\n", "The built-in `greenshields_bottleneck_dynamic_scenario`: a two-link corridor,\n", "Greenshields-consistent on every link (`wave_speed = free_speed`,\n", "`capacity = vf*kappa/4` — the constraint `GodunovLink` gates on). Upstream\n", "`vf=1, kappa=8` (capacity 2) feeds a `vf=1, kappa=2` (capacity 0.5) bottleneck at\n", "arrival rate 1.5: uncongested inflow above the bottleneck's capacity, so a queue\n", "builds on the upstream link's PARABOLIC branch (distinct from `ctm`'s linear\n", "one)." ] }, { "cell_type": "code", "execution_count": 2, "id": "11140791", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:48:32.804097Z", "iopub.status.busy": "2026-07-21T13:48:32.803719Z", "iopub.status.idle": "2026-07-21T13:48:32.811094Z", "shell.execute_reply": "2026-07-21T13:48:32.810160Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "scenario : dnl-greenshields-bottleneck\n", "content hash : 03afa86128008021…\n", "links : 2 (tail→head: 1->3, 3->2)\n", "link 0 (up) : vf=1.0, kappa=8.0, capacity=2.0 (vf*kappa/4 = 2.0)\n", "link 1 (sink) : vf=1.0, kappa=2.0, capacity=0.5 (vf*kappa/4 = 0.5)\n", "grid : dt=1.0, n_steps=20\n" ] } ], "source": [ "scenario = greenshields_bottleneck_dynamic_scenario()\n", "net = scenario.network\n", "dyn = scenario.dynamics\n", "edges = scenario.grid.edges\n", "print(f\"scenario : {scenario.name}\")\n", "print(f\"content hash : {scenario.content_hash()[:16]}…\")\n", "print(f\"links : {net.n_links} (tail→head: \"\n", " + \", \".join(f\"{i}->{j}\" for i, j in zip(net.init_node, net.term_node)) + \")\")\n", "print(f\"link 0 (up) : vf={dyn.free_speed[0]}, kappa={dyn.jam_density[0]}, \"\n", " f\"capacity={dyn.capacity[0]} (vf*kappa/4 = {dyn.free_speed[0]*dyn.jam_density[0]/4})\")\n", "print(f\"link 1 (sink) : vf={dyn.free_speed[1]}, kappa={dyn.jam_density[1]}, \"\n", " f\"capacity={dyn.capacity[1]} (vf*kappa/4 = {dyn.free_speed[1]*dyn.jam_density[1]/4})\")\n", "print(f\"grid : dt={scenario.grid.dt}, n_steps={scenario.grid.n_steps}\")" ] }, { "cell_type": "markdown", "id": "5db0a623", "metadata": {}, "source": [ "## Load the network\n", "\n", "`GodunovLink` rebuilds a `GreenshieldsFD(vf, kappa)` from each link's declared\n", "`(vf, kappa)` and runs `ctm`'s cell update on it unchanged; internally it is a\n", "`CTMLink` subclass, so the SAME `NetworkLoader` contract applies." ] }, { "cell_type": "code", "execution_count": 3, "id": "09bea2a6", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:48:32.815187Z", "iopub.status.busy": "2026-07-21T13:48:32.814729Z", "iopub.status.idle": "2026-07-21T13:48:32.824206Z", "shell.execute_reply": "2026-07-21T13:48:32.823202Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "link model : GodunovLink\n", "link 0 FD is Greenshields : True\n", "cells (link 0) : 4\n", "storage at t=20 : 22.000\n" ] } ], "source": [ "loader = NetworkLoader(scenario, GodunovLink)\n", "out = loader.run()\n", "print(f\"link model : {GodunovLink.__name__}\")\n", "print(f\"link 0 FD is Greenshields : {isinstance(loader.links[0].fd, GreenshieldsFD)}\")\n", "print(f\"cells (link 0) : {loader.links[0].n_cells}\")\n", "print(f\"storage at t={edges[-1]:.0f} : {out.n_in[0, -1] - out.n_out[0, -1]:.3f}\")" ] }, { "cell_type": "markdown", "id": "e289b205", "metadata": {}, "source": [ "## Certify (P1) — feasibility, conservation, and the parabola's own roots\n", "\n", "Beyond the structural gate (feasible, conservation, storage), the DISTINCTIVE\n", "Godunov result: the upstream link's near-origin cell settles at the FREE branch\n", "root of `Q(k) = 1.5` (the arrival rate), and its near-bottleneck cell settles at\n", "the CONGESTED branch root of `supply(k) = 0.5` (the bottleneck capacity) — both\n", "found here with `brentq` directly on `GreenshieldsFD`, the actual production FD,\n", "not a hand-derived quadratic formula." ] }, { "cell_type": "code", "execution_count": 4, "id": "18ae8723", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:48:32.827840Z", "iopub.status.busy": "2026-07-21T13:48:32.827418Z", "iopub.status.idle": "2026-07-21T13:48:32.835676Z", "shell.execute_reply": "2026-07-21T13:48:32.834786Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dnl_feasible : 1\n", "conservation_residual : 0.000e+00\n", "storage_residual : 0.000e+00\n", "free-branch root Q(k)=1.5 : k_free = 2.000000\n", "congested-branch root supply=0.5: k_cong = 7.464102\n", "cell densities (upstream link) : [2. 5.0725 7.4634 7.4641]\n" ] } ], "source": [ "metrics = DNLEvaluator(scenario).evaluate(out)\n", "print(f\"dnl_feasible : {metrics['dnl_feasible']:.0f}\")\n", "print(f\"conservation_residual : {metrics['conservation_residual']:.3e}\")\n", "print(f\"storage_residual : {metrics['storage_residual']:.3e}\")\n", "assert metrics[\"dnl_feasible\"] == 1.0\n", "assert metrics[\"conservation_residual\"] <= 1e-9\n", "assert metrics[\"storage_residual\"] <= 1e-9\n", "\n", "fd0 = GreenshieldsFD(vf=float(dyn.free_speed[0]), kappa=float(dyn.jam_density[0]))\n", "k_free = brentq(lambda k: float(fd0.flow_at(np.array([k]))[0]) - 1.5, 0.0, fd0.critical_density)\n", "k_cong = brentq(\n", " lambda k: float(fd0.supply_at(np.array([k]))[0]) - 0.5, fd0.critical_density, fd0.jam_density\n", ")\n", "print(f\"free-branch root Q(k)=1.5 : k_free = {k_free:.6f}\")\n", "print(f\"congested-branch root supply=0.5: k_cong = {k_cong:.6f}\")\n", "\n", "dx = fd0.free_speed * scenario.grid.dt\n", "density = loader.links[0].occupancy / dx\n", "print(f\"cell densities (upstream link) : {np.round(density, 4)}\")\n", "# The far (origin-side) cell is still on the free branch; the near (bottleneck-\n", "# side) cell has settled on the congested branch — both tight, no coarse-grid\n", "# diffusion on these two constant-state cells.\n", "assert abs(density[0] - k_free) < 1e-3\n", "assert abs(density[-1] - k_cong) < 1e-3" ] }, { "cell_type": "markdown", "id": "bf3bac53", "metadata": {}, "source": [ "## The distinctive physics: an entropy-correct rarefaction flux\n", "\n", "A triangular FD's flux is piecewise LINEAR — it cannot produce a rarefaction\n", "fan. The Greenshields parabola can: at a transonic interface (`k_L` above\n", "critical, `k_R` below) the Godunov flux `min(demand(k_L), supply(k_R))` returns\n", "the sonic-point capacity `q_max` — the entropy-correct value a naive\n", "shock-speed formula would get wrong. Recomputed here directly from the FD, not\n", "quoted." ] }, { "cell_type": "code", "execution_count": 5, "id": "51d62e10", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:48:32.839226Z", "iopub.status.busy": "2026-07-21T13:48:32.838980Z", "iopub.status.idle": "2026-07-21T13:48:32.844104Z", "shell.execute_reply": "2026-07-21T13:48:32.843185Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fd: vf=2.0, kappa=4.0, k_c=2.0, q_max=2.0\n", "transonic flux at (k_L=3.5, k_R=0.5) : 2.000000 (== q_max, not the shock value)\n" ] } ], "source": [ "fd = GreenshieldsFD(vf=2.0, kappa=4.0) # q_max = 2, k_c = 2\n", "k_l, k_r = 3.5, 0.5 # k_l > k_c > k_r: a transonic pair\n", "flux = min(float(fd.demand_at(np.array([k_l]))[0]), float(fd.supply_at(np.array([k_r]))[0]))\n", "print(f\"fd: vf={fd.free_speed}, kappa={fd.jam_density}, k_c={fd.critical_density}, \"\n", " f\"q_max={fd.capacity}\")\n", "print(f\"transonic flux at (k_L={k_l}, k_R={k_r}) : {flux:.6f} (== q_max, not the shock value)\")\n", "assert abs(flux - fd.capacity) < 1e-9" ] }, { "cell_type": "markdown", "id": "40b96bb7", "metadata": {}, "source": [ "## Visualize\n", "\n", "Both figures come from `tabench.viz`, the house visualizer. Left/top: the\n", "certified network coloured by each link's time-averaged flow. Right/bottom: the\n", "loaded average flow against the two analytic roots recomputed above, expressed\n", "as an average flow anchor (`fd0.flow_at` at each recomputed root)." ] }, { "cell_type": "code", "execution_count": 6, "id": "8144f34b", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:48:32.847510Z", "iopub.status.busy": "2026-07-21T13:48:32.847230Z", "iopub.status.idle": "2026-07-21T13:48:33.107928Z", "shell.execute_reply": "2026-07-21T13:48:33.106871Z" } }, "outputs": [ { "data": { "image/png": "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ttmzZ9usVoutU6dOtpdeeinf8wsXLrDVqVPH/jg0NNT27LPP2B+fOXPaFhoaavvii//arFaLrVevnrbhw4cV2va845sz5z37up9/3m4LDQ217djxi81qtdjmzZub71iK26aPP15hs1otttmzZ9uuuOIKW2rqOfvzM2fOzPe6XqyNhS1r1ybYQkNDbUuWLCnw/i5dutRmtVpsAwcOtHXp0iXfduPGjbM1adIk3/v/+uuv5Svzz+MtrGxx3ruJE5+3VapUyXbq1J/59t+6dWub1WqxpaWl2ipVqmTbsGF9vjpGjBhhGzBggM1qtdgmTJhgu+aaa2wZGemFvg5Dhw6xxcX1tq1YsdxWpUqVfK+H1WqxHTx4wHb99dfbNm3aWORrOXHi87ZmzZoWqDPvcYcOd9huu+22fNvExsbannzyyXzv97Jly2wDBw603XjjjbaDBw9c9P3btm2rLTQ01LZ3769FtqNu3bq2KVOmFNjv6NGjbVarxfbjjz/YwsLCbEePHrEdP37cFhkZaXvxxRds/fv3t1mtFtuLL75oa9eunc1qtdi++26LLTQ01JaSsrfYf2MsLGYtnLO+iH379ikrK0s33dTEvq5ChUjVrVu3QNlrr73w6d8wDFWpUlknThwvtN6mTZvpt99+kyQ1b95c8fHLtGfPHnXt2iVfuSZNbtSXX36Rb90VV1yhihUr2h///PPPSk1NVa1atfOVy8jI0L59++xlNm3apFdeudBTz87OVmZmptLT0xUSElLgGEJDQxUeHq7jx3OPYfDgwerf/z79+OOPatu2nbp06aymTZsW+RpUqZJ7DvH48eOqV69egdeguG3Ks3v3Ll177bUKCgqyr7vllpvzlblYG3v27KX//e9/9tdw06aNhdaT9/7u3r1LkrRr1y517twp336aNWuqGTNmKDs7W76+vgWOrbiK895JUs2aNVWuXDn74+joKvb3JSUlRenp6erWrXu+OrKysnTddddJkrZv364WLZrL39+/yLZ8991WffHFl/rgg3nq0iX/32G1atX03XdbHDvIv7n22mvzPY6OrlLgv5Hx48crICBAa9asLtaoyMWcPXtWR44cUbNm+f9OmzVrqu3bc4fWr7nmGkVGRiopab0CAvx13XXXqUOHDpo9+11J0vr16+2zyxs1aqTWrVurRYuWateundq1a6f/+7//U2Rkeafa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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "T = float(edges[-1])\n", "avg_flow = out.n_out[:, -1] / T\n", "ref_avg_flow = np.array([\n", " float(fd0.flow_at(np.array([k_cong]))[0]), # upstream exit throttled to the bottleneck rate\n", " float(fd0.flow_at(np.array([k_cong]))[0]), # sink link exits at the same steady rate\n", "])\n", "\n", "display(viz.plot_network_flows(net, avg_flow))\n", "display(viz.plot_flow_scatter((\"recomputed parabola anchor\", ref_avg_flow), {\"godunov\": avg_flow}))" ] }, { "cell_type": "markdown", "id": "234b2481", "metadata": {}, "source": [ "## Takeaways & pointers\n", "\n", "- **Certified, not self-reported.** DNL link models have nothing to self-report\n", " — the boundary curves above ARE the emitted output, recertified from scratch\n", " by `DNLEvaluator`.\n", "- **The Greenshields signature is the point.** `ctm`'s triangular envelope\n", " still majorizes it (so its certificates stay sound), but only a smooth,\n", " strictly concave FD produces the entropy-correct rarefaction flux certified\n", " above.\n", "- **Where next.** the triangular baseline it reuses the cell scheme from\n", " [`ctm`](01-ctm.ipynb); the cumulative-curve alternative [`ltm`](02-ltm.ipynb);\n", " merges/diverges [`node-model`](04-node-model.ipynb); the lineage in the\n", " [model compendium](../../docs/MODELS.md)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" }, "tabench": { "covers": [], "requires_extra": null, "track": "dnl", "unit": "godunov" } }, "nbformat": 4, "nbformat_minor": 5 }