{"id": "adjoint_3d", "title": "Adjoint derivatives of 3-D outputs", "description": "An ellipsoid with three different semi-axes (0.5, 0.35, 0.6) at 4 degrees angle of attack and 3 degrees sideslip, M = 0.3, on a mixed-orientation cubed-sphere mesh: nothing is symmetric, so all six wind-axis force and moment coefficients (drag, lift, side force, roll, yaw, pitch about an offset reference point) and all their derivatives are non-zero. Total derivatives from one adjoint solve per output are compared with central finite differences of re-converged solves with respect to the angle of attack, the sideslip angle, the Mach number (and the Reynolds number for the viscous case), and, as a directional derivative, with respect to a smooth three-dimensional displacement of the surface nodes (the shape input x_surface, propagated into the volume by the mesh deformation). The finite differences are accurate to about 1e-7 in absolute terms (step 1e-5, solves converged 12 orders), so errors are relative to the reference value or, for a derivative that is small through cancellation, to 1 % of the largest derivative with respect to the same input (and at least 1e-3).", "passed": true, "checks": [{"name": "adjoint vs central differences, d/dalpha: largest relative error", "value": 3.279324679076838e-06, "expected": "< 1e-5", "passed": true}, {"name": "adjoint vs central differences, d/dbeta: largest relative error", "value": 1.4591712364101236e-06, "expected": "< 1e-5", "passed": true}, {"name": "adjoint vs central differences, d/dmach: largest relative error", "value": 2.3325962472719462e-06, "expected": "< 1e-5", "passed": true}, {"name": "adjoint vs central differences, d/dx_surface: largest relative error", "value": 1.9694140920025763e-06, "expected": "< 1e-4", "passed": true}, {"name": "adjoint linear solves reached their tolerance (largest reduction)", "value": 9.985797380668559e-11, "expected": "< 1e-9", "passed": true}, {"name": "the flow responds to the sideslip angle (free stream turned by beta)", "value": true, "expected": "true", "passed": true}], "charts": [], "tables": [{"id": "derivatives", "title": "Adjoint totals against central differences", "columns": ["case", "output", "input", "adjoint", "finite difference", "relative error"], "rows": [["inviscid ellipsoid, p = 2", "cd", "alpha", 0.4336095616014664, 0.4336098816871969, 7.381882747480352e-07], ["inviscid ellipsoid, p = 2", "cl", "alpha", 2.335252590027492, 2.3352534079222607, 3.502381223494717e-07], ["inviscid ellipsoid, p = 2", "cs", "alpha", -0.17326456988897473, -0.17326496644411157, 2.2887208243965363e-06], ["inviscid ellipsoid, p = 2", "cmx", "alpha", -0.007960378179395287, -0.007960301598853962, 3.279324679076838e-06], ["inviscid ellipsoid, p = 2", "cmy", "alpha", 0.042986522756365, 0.042986585737682374, 1.465138863574191e-06], ["inviscid ellipsoid, p = 2", "cmz", "alpha", 0.5096095147824149, 0.5096095374697296, 4.451901509970822e-08], ["inviscid ellipsoid, p = 2", "cd", "beta", 0.05103398999403491, 0.05103404481718309, 1.0742465814199925e-06], ["inviscid ellipsoid, p = 2", "cl", "beta", -0.47157708319795405, -0.47157697843080987, 2.2216339849943364e-07], ["inviscid ellipsoid, p = 2", "cs", "beta", -0.5393887760169338, -0.5393890180602212, 4.48736031525613e-07], ["inviscid ellipsoid, p = 2", "cmx", "beta", 0.045592669802551576, 0.04559273633016102, 1.4591712364101236e-06], ["inviscid ellipsoid, p = 2", "cmy", "beta", 0.19675642639795818, 0.1967564649280745, 1.9582643108473013e-07], ["inviscid ellipsoid, p = 2", "cmz", "beta", -0.017206643468737876, -0.017206644828057782, 7.899970739320054e-08], ["inviscid ellipsoid, p = 2", "cd", "mach", -0.016709773168524535, -0.016709734191461267, 2.3325962472719462e-06], ["inviscid ellipsoid, p = 2", "cl", "mach", -0.7142923263993045, -0.7142921611719143, 2.3131625852242516e-07], ["inviscid ellipsoid, p = 2", "cs", "mach", -0.265749882689189, -0.2657498771811706, 2.072632519404169e-08], ["inviscid ellipsoid, p = 2", "cmx", "mach", 0.019040704811207232, 0.019040710035967204, 2.7439942953911446e-07], ["inviscid ellipsoid, p = 2", "cmy", "mach", 0.033535908636150205, 0.03353591146743745, 8.442553437284296e-08], ["inviscid ellipsoid, p = 2", "cmz", "mach", -0.01455465053531756, -0.014554644012926275, 4.481312823083932e-07], ["inviscid ellipsoid, p = 2", "cd", "x_surface (directional)", -0.002110583277161151, -0.0021105874337817854, 1.9694140920025763e-06], ["inviscid ellipsoid, p = 2", "cl", "x_surface (directional)", -0.06171612529073042, -0.061716134534470224, 1.497783338361226e-07], ["inviscid ellipsoid, p = 2", "cs", "x_surface (directional)", -0.043804517048648815, -0.04380451282544329, 9.641028414517589e-08], ["inviscid ellipsoid, p = 2", "cmx", "x_surface (directional)", 0.0029632599858734465, 0.0029632602972849524, 1.0509083735994281e-07], ["inviscid ellipsoid, p = 2", "cmy", "x_surface (directional)", 0.016395673206668692, 0.01639567294566685, 1.591894657401586e-08], ["inviscid ellipsoid, p = 2", "cmz", "x_surface (directional)", -0.0009458342155942824, -0.0009458341793458502, 3.624843220723095e-08]]}], "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:38:18-0500"}, "wall_time": 297.74, "level": "quick"}