{"id": "output_error", "title": "Output error estimation", "description": "Inviscid subsonic flow over a smooth Gaussian bump. The exact flow is isentropic, so the entropy error measures solution accuracy directly. For the drag coefficient the adjoint-weighted residual predicts the change of the output between degree p and p + 1 from a single linear solve; effectivity compares that prediction with the actually converged p + 1 solution.", "passed": true, "checks": [{"name": "p = 1: effectivity on finest mesh", "value": 0.9330397870860576, "expected": "0.7 \u2026 1.3", "passed": true}, {"name": "p = 1: error remaining after correction (finest mesh)", "value": 0.04869383122903544, "expected": "< 0.25", "passed": true}, {"name": "p = 2: effectivity on finest mesh", "value": 0.9666761305181306, "expected": "0.7 \u2026 1.3", "passed": true}, {"name": "p = 2: error remaining after correction (finest mesh)", "value": 0.02161636319743115, "expected": "< 0.25", "passed": true}, {"name": "p = 2: entropy-error order", "value": 3.8033566612672045, "expected": ">= 2.5 (design rate p + 1 = 3, tolerance 0.5)", "passed": true}], "charts": [{"id": "entropy_vs_h", "type": "convergence", "title": "Entropy error", "xlabel": "h (1 / nx)", "ylabel": "L2 entropy error", "xscale": "log", "yscale": "log", "series": [{"name": "p = 1", "x": [0.08333333333333333, 0.041666666666666664], "y": [0.001996092448127193, 0.0018803792645080426]}, {"name": "p = 2", "x": [0.08333333333333333, 0.041666666666666664], "y": [0.0011528001314591466, 8.257138668143776e-05]}], "reference_slopes": [{"slope": 2, "label": "h^2"}, {"slope": 3, "label": "h^3"}]}, {"id": "output_vs_h", "type": "convergence", "title": "Drag error: raw and adjoint-corrected", "xlabel": "h (1 / nx)", "ylabel": "|cd \u2212 reference|", "xscale": "log", "yscale": "log", "series": [{"name": "p = 1: cd", "x": [0.08333333333333333, 0.041666666666666664], "y": [0.017727141764172633, 0.012232684938227212]}, {"name": "p = 2: cd", "x": [0.08333333333333333, 0.041666666666666664], "y": [0.005694428728246555, 0.00034407919780643503]}, {"name": "p = 1: corrected", "x": [0.08333333333333333, 0.041666666666666664], "y": [0.006341676972597899, 0.0009229809592790263]}, {"name": "p = 2: corrected", "x": [0.08333333333333333, 0.041666666666666664], "y": [0.0005057681625353656, 2.104256938189212e-05]}], "note": "Reference: finest mesh at degree 4, a solution used by no plotted point and no estimate. It differs from the degree-3 output on the same mesh by 1.4e-05; the reference is itself a computed value, and differences of that size or below are not resolved. Corrected outputs are the injected p + 1 output plus the adjoint estimate."}], "tables": [{"id": "effectivity", "title": "Adjoint-weighted-residual estimate versus the p + 1 solution", "columns": ["mesh", "p", "cd (p)", "estimate \u03b4", "corrected", "cd (p + 1, converged)", "effectivity", "remaining / original error"], "rows": [["12x4", 1, 0.017727490587180223, -0.008570078488801331, 0.006342025795605489, 0.005694777551254145, 0.9297791796808791, 0.05379071556172368], ["24x8", 1, 0.012233033761234802, -0.008066557030849334, 0.0009233297822866162, 0.0003444280208140249, 0.9330397870860576, 0.04869383122903544], ["12x4", 2, 0.005694777551254145, -0.0026343965221646464, 0.0005061169855429554, 0.00014076855225062077, 0.8782068346751574, 0.06578103012758602], ["24x8", 2, 0.0003444280208140249, -0.0002070383448667485, 2.139139238948199e-05, 1.4254235937316562e-05, 0.9666761305181306, 0.02161636319743115]]}], "provenance": {"version": "0.4.0", "commit": "39979fcf902ad6116eb550b881b4278d4599c8e2", "dirty": false, "describe": "39979fcf90", "device": {"platform": "cpu", "device": "cpu:0", "device_kind": "cpu", "jax": "0.11.2", "x64": true}, "timestamp": "2026-11-12T11:33:17-0500"}, "wall_time": 367.66, "notes": "With p = 1 the wall is piecewise linear, and the entropy-error order is reported, not required: it was 0.09 on these meshes, against a design rate of 2. Spurious entropy generated at the kinks of a polygonal wall need not decay at the design rate, the classical argument for curved elements. The effectivity checks do apply at p = 1: the p = 2 space that the estimate targets has a curved wall.", "level": "quick"}