{"id": "rans_mms", "title": "Manufactured solutions: RANS with the Spalart-Allmaras model", "description": "Steady manufactured solution of the compressible RANS equations coupled to the negative Spalart-Allmaras model on the unit box (M = 0.5, Re = 1000, nu_tilde / nu = 8 (1 + 0.4 sin), a smooth positive manufactured wall distance between 0.1 and 0.8), Dirichlet data from the exact state on all sides. The forcing is generated by automatic differentiation of the same flux and source kernels the solver uses (turbulence.manufactured_source). Errors: L2 norm of the mean-flow conserved variables, and of rho nu_tilde scaled by Re. The solve starts from the nodal values of the exact solution and removes the truncation-error residual with p-multigrid Newton-Krylov. The eddy viscosity of the manufactured state is 4.7 times the molecular one, so the mean flow sees an effective Reynolds number of about 175: between the diffusion- and the convection-dominated regimes of the laminar manufactured solutions, where the state converges at a rate between p and p + 1. The laminar manufactured solution with the same mean state is therefore solved at that Reynolds number on the same meshes, and the checks require the guaranteed rate p of both equations and that the model changes neither the order nor the size of the mean-flow error.", "passed": true, "checks": [{"name": "p = 1: order of the mean-flow state (finest pair)", "value": 1.9143564502916057, "expected": ">= 0.75 (guaranteed rate p = 1, tolerance 0.25; design rate 2)", "passed": true}, {"name": "p = 1: order of nu_tilde (finest pair)", "value": 2.2022124595901897, "expected": ">= 0.75 (guaranteed rate p = 1, tolerance 0.25; design rate 2)", "passed": true}, {"name": "p = 1: mean-flow order with the model minus the laminar order at the effective Reynolds number", "value": 0.006865689021341881, "expected": "> -0.15", "passed": true}, {"name": "p = 1: mean-flow error with the model over the laminar error at the effective Reynolds number (finest mesh)", "value": 1.0243879574127353, "expected": "0.5 .. 1.5", "passed": true}, {"name": "p = 2: order of the mean-flow state (finest pair)", "value": 2.4767647561178103, "expected": ">= 1.75 (guaranteed rate p = 2, tolerance 0.25; design rate 3)", "passed": true}, {"name": "p = 2: order of nu_tilde (finest pair)", "value": 2.611629440804549, "expected": ">= 1.75 (guaranteed rate p = 2, tolerance 0.25; design rate 3)", "passed": true}, {"name": "p = 2: mean-flow order with the model minus the laminar order at the effective Reynolds number", "value": -0.07205632576796273, "expected": "> -0.15", "passed": true}, {"name": "p = 2: mean-flow error with the model over the laminar error at the effective Reynolds number (finest mesh)", "value": 1.1480589613175287, "expected": "0.5 .. 1.5", "passed": true}, {"name": "every model term is active at the domain centre (smallest |term| Re)", "value": 0.0016896392860126105, "expected": "> 1e-3", "passed": true}], "charts": [{"id": "error_vs_h", "type": "convergence", "title": "RANS-SA manufactured solution", "xlabel": "h", "ylabel": "L2 error", "xscale": "log", "yscale": "log", "series": [{"name": "mean flow, p = 1", "x": [0.25, 0.125, 0.0625], "y": [0.07840610692365756, 0.022343669610281794, 0.005927557656850629]}, {"name": "nu_tilde Re, p = 1", "x": [0.25, 0.125, 0.0625], "y": [0.4885794494688244, 0.10630441119293337, 0.023100388249164997]}, {"name": "laminar at the effective Re, p = 1", "x": [0.25, 0.125, 0.0625], "y": [0.07669576892256387, 0.021708172216983013, 0.005786438247303958]}, {"name": "mean flow, p = 2", "x": [0.25, 0.125, 0.0625], "y": [0.005083493234199321, 0.0008674620072493976, 0.0001558367846918758]}, {"name": "nu_tilde Re, p = 2", "x": [0.25, 0.125, 0.0625], "y": [0.03635207687430029, 0.004247424395728687, 0.000694939276715937]}, {"name": "laminar at the effective Re, p = 2", "x": [0.25, 0.125, 0.0625], "y": [0.004939459692619756, 0.000794286873491835, 0.00013573935655102184]}], "reference_slopes": [{"slope": 2, "label": "h^2"}, {"slope": 3, "label": "h^3"}]}], "tables": [{"id": "orders", "title": "Errors on the finest mesh and observed orders (finest pair)", "columns": ["p", "mean-flow error", "order", "nu_tilde error x Re", "order", "laminar error at the effective Re", "order"], "rows": [[1, 0.005927557656850629, 1.9143564502916057, 0.023100388249164997, 2.2022124595901897, 0.005786438247303958, 1.9074907612702638], [2, 0.0001558367846918758, 2.4767647561178103, 0.000694939276715937, 2.611629440804549, 0.00013573935655102184, 2.548821081885773]]}, {"id": "terms", "title": "Model terms of the manufactured state at (0.5, 0.5), times Re", "columns": ["term", "value"], "rows": [["production", 0.0016896392860126105], ["destruction", 2.2225147593730195], ["cb2", 0.0839335405633532], ["density_gradient", -0.0667242867612747], ["eddy viscosity / molecular viscosity", 7.207039850947928]]}], "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:19-0500"}, "wall_time": 455.83, "level": "quick"}