{"id": "rans_adjoint", "title": "Adjoint gradients with the Spalart-Allmaras model", "description": "Total derivatives of the drag coefficient of the turbulent flat plate (NASA TMR conditions, M = 0.2, Re = 5e6, coarse mesh of 150 elements, p = 1, 3000 unknowns, cd = 6.284664e-03) from one discrete-adjoint solve of the coupled RANS-SA system, against central differences of re-converged solutions. Inputs: Mach number, Reynolds number, angle of the inflow, free-stream nu_tilde / nu, and a wall-normal bump of the plate surface (a shape derivative, which includes the sensitivity of the wall distance).", "passed": true, "checks": [{"name": "dcd/dmach: adjoint vs central difference (rel.)", "value": 5.408444070075502e-09, "expected": "< 1e-5", "passed": true}, {"name": "dcd/dre: adjoint vs central difference (rel.)", "value": 4.0069154627352945e-09, "expected": "< 1e-5", "passed": true}, {"name": "dcd/dalpha: adjoint vs central difference (rel.)", "value": 6.546052067464026e-11, "expected": "< 1e-5", "passed": true}, {"name": "dcd/dchi_inf: adjoint vs central difference (rel., best of 3 steps)", "value": 3.1754403559815636e-08, "expected": "< 1e-5", "passed": true}, {"name": "dcd/dshape (wall bump, directional): adjoint vs central difference (rel.)", "value": 1.7933861676566133e-08, "expected": "< 1e-5", "passed": true}, {"name": "adjoint linear solve reached its tolerance (residual reduction)", "value": 9.207352885195549e-11, "expected": "< 1e-10", "passed": true}], "charts": [], "tables": [{"id": "totals", "title": "Adjoint and finite-difference derivatives", "columns": ["derivative", "adjoint", "central difference", "step", "relative difference"], "rows": [["dcd/dmach", -0.05664371487633679, -0.05664371518269116, 1e-05, 5.408444070075502e-09], ["dcd/dre", -2.490040881822312e-10, -2.4900408718449287e-10, 50.0, 4.0069154627352945e-09], ["dcd/dalpha", -83.21685285243846, -83.21685284699105, 1e-05, 6.546052067464026e-11], ["dcd/dchi_inf", 7.279130646340398e-06, 7.279130877484857e-06, 0.001, 3.1754403559815636e-08], ["dcd/dshape (wall bump, directional)", 0.007575659101020285, 0.007575658965159465, 1e-06, 1.7933861676566133e-08]]}, {"id": "linear", "title": "Solver statistics", "columns": ["quantity", "value"], "rows": [["Newton steps of the baseline solve", 37], ["Krylov iterations of the baseline solve", 971], ["Krylov iterations of the adjoint solve", 149.0], ["residual reduction of the adjoint solve", 9.207352885195549e-11], ["multigrid levels (polynomial degrees)", "1, 0"]]}], "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:43:02-0500"}, "wall_time": 119.0, "notes": "The mesh is wall resolved, with element aspect ratios of the order of 1000 at the wall. Element-block Jacobi does not see that anisotropy: as the only preconditioner it left the adjoint solve short of its tolerance (see the comment in the study); the piecewise-constant coarse level of the p-multigrid hierarchy is what makes it converge. There is no line-implicit or incomplete-factorisation preconditioner.", "level": "quick"}