{"id": "example_flat_plate", "title": "Example: turbulent flat plate (Spalart-Allmaras)", "description": "The preset flat_plate_sa: zero-pressure-gradient flat plate at M = 0.2 and Re = 5e6 per unit length with the negative Spalart-Allmaras model, 150 elements of degree 2 (6750 unknowns), solved from the uniform free stream. Skin friction along the plate against the NASA Turbulence Modeling Resource reference (CFL3D and FUN3D, 545 x 385 grid), and the boundary-layer profile at x = 0.97 in wall units with the eddy viscosity across the layer.", "passed": true, "checks": [{"name": "converged from the free stream", "value": true, "expected": "true", "passed": true}, {"name": "cf at x = 0.97 against the TMR reference (relative difference)", "value": 0.001656488140430401, "expected": "< 0.02", "passed": true}, {"name": "first solution node off the wall, y+", "value": 4.59367047343884, "expected": "< 10", "passed": true}, {"name": "logarithmic layer, 40 <= y+ <= 200: largest relative difference of u+ to ln(y+) / 0.41 + 5.0", "value": 0.002599635575805559, "expected": "< 0.08 (a bound observed with margin on this mesh, not a property of the model)", "passed": true}, {"name": "eddy viscosity over molecular viscosity, largest value on the profile", "value": 194.403389679732, "expected": "> 50 (the layer is turbulent)", "passed": true}], "charts": [{"id": "cf", "type": "line", "title": "Skin friction along the plate", "xlabel": "x", "ylabel": "cf", "xscale": "linear", "yscale": "linear", "series": [{"name": "Gyre, p = 2", "x": [0.020000000000000007, 0.020000000000000007, 0.033470969148610336, 0.04694193829722067, 0.04694193829722067, 0.0650886392775018, 0.08323534025778292, 0.08323534025778292, 0.10768070516322531, 0.1321260700686677, 0.1321260700686677, 0.1650563457154413, 0.19798662136221493, 0.19798662136221493, 0.24234689409150706, 0.2867071668207992, 0.2867071668207992, 0.34646475335682264, 0.40622233989284606, 0.40622233989284606, 0.48672160035506445, 0.5672208608172828, 0.5672208608172828, 0.675661166234532, 0.7841014716517811, 0.7841014716517811, 0.9301810725259454, 1.0762606734001097, 1.0762606734001097, 1.2730440530618274, 1.4698274327235454, 1.4698274327235454, 1.7349137163617727, 2.0], "y": [0.0045236202076417925, 0.0045728154738977345, 0.004294051556712991, 0.004104782502898212, 0.004106667788455472, 0.0038572455124852426, 0.0036719305109318896, 0.0036690996073102367, 0.0035935774844831846, 0.0035258417781989216, 0.0035244499001149373, 0.0034763713140167005, 0.0033919554937261328, 0.0033956791040893382, 0.0032745722213417443, 0.003165699164073966, 0.0031628002650710657, 0.003097340386673097, 0.003037151445916332, 0.0030369201796558083, 0.0029973705024262647, 0.002947543708016708, 0.0029470184354574453, 0.002889626632796605, 0.0028059345661869957, 0.0028098028905565045, 0.002720649796262073, 0.0026587250685539206, 0.002655454233995593, 0.0026152789805026274, 0.002574467084020404, 0.002574040007920259, 0.0025430582388163603, 0.0025022579590636353]}, {"name": "TMR reference (CFL3D / FUN3D mean)", "x": [0.100572534, 0.199971035, 0.299841315, 0.501510203, 0.747280836, 0.970084071, 1.24822676, 1.49523795, 1.75298882, 1.90334344], "y": [0.003790091175, 0.0034171950535, 0.0032139607145, 0.002976590246, 0.0028083489024999997, 0.002705513128, 0.002611203244, 0.0025466942295, 0.002492215551, 0.002465200936]}]}, {"id": "law_of_the_wall", "type": "line", "title": "Velocity profile at x = 0.97 in wall units", "xlabel": "y+", "ylabel": "u+", "xscale": "log", "yscale": "linear", "series": [{"name": "Gyre, p = 2 (solution nodes)", "x": [4.59367047343884, 9.18734094687768, 9.18734094687768, 22.349904823339667, 35.51246869980165, 35.51246869980165, 73.2280795177113, 110.94369033562093, 110.94369033562093, 219.01285624574865, 327.0820221558763, 327.0820221558763, 636.7401283680877, 946.398234580299, 946.398234580299, 1833.6831685889092, 2720.9681025975196, 2720.9681025975196, 5263.3674079111615], "y": [4.653818263255417, 8.536306963323723, 8.811741571954025, 12.25124708529655, 13.582856042553955, 13.703247459887775, 15.444262733048287, 16.442565322558956, 16.488497116463694, 18.200409909262948, 19.264576290430917, 19.303376637060012, 21.307579391626568, 22.673124849170858, 22.685891365221803, 25.622880801134453, 26.99924836901028, 27.17278446487599, 27.17715371234015]}, {"name": "u+ = y+", "x": [0.31622776601683794, 0.3981071705534972, 0.5011872336272722, 0.6309573444801932, 0.7943282347242815, 0.9999999999999999, 1.258925411794167, 1.5848931924611134, 1.9952623149688793, 2.5118864315095797, 3.1622776601683786, 3.9810717055349714, 5.011872336272722, 6.30957344480193, 7.943282347242813, 9.999999999999995], "y": [0.31622776601683794, 0.3981071705534972, 0.5011872336272722, 0.6309573444801932, 0.7943282347242815, 0.9999999999999999, 1.258925411794167, 1.5848931924611134, 1.9952623149688793, 2.5118864315095797, 3.1622776601683786, 3.9810717055349714, 5.011872336272722, 6.30957344480193, 7.943282347242813, 9.999999999999995]}, {"name": "u+ = ln(y+) / 0.41 + 5.0", "x": [12.589254117941667, 15.848931924611133, 19.952623149688787, 25.118864315095795, 31.62277660168378, 39.81071705534969, 50.118723362727195, 63.0957344480193, 79.43282347242814, 100.0, 125.89254117941663, 158.48931924611125, 199.52623149688787, 251.18864315095797, 316.2277660168376, 398.1071705534969, 501.18723362727195, 630.957344480193, 794.3282347242813, 999.999999999999, 1258.9254117941662, 1584.8931924611124, 1995.2623149688789, 2511.88643150958], "y": [11.177667322666952, 11.739273442909402, 12.300879563151852, 12.862485683394302, 13.424091803636752, 13.985697923879203, 14.547304044121653, 15.108910164364103, 15.670516284606553, 16.232122404849004, 16.793728525091453, 17.355334645333905, 17.916940765576353, 18.478546885818805, 19.040153006061253, 19.601759126303705, 20.163365246546153, 20.724971366788605, 21.286577487031057, 21.848183607273505, 22.409789727515953, 22.971395847758405, 23.533001968000857, 24.094608088243305]}], "note": "u_tau from the computed skin friction; first node at y+ = 4.59."}, {"id": "eddy_viscosity", "type": "line", "title": "Eddy viscosity across the layer at x = 0.97", "xlabel": "y+", "ylabel": "mu_t / mu", "xscale": "log", "yscale": "linear", "series": [{"name": "mu_t / mu", "x": [4.59367047343884, 9.18734094687768, 9.18734094687768, 22.349904823339667, 35.51246869980165, 35.51246869980165, 73.2280795177113, 110.94369033562093, 110.94369033562093, 219.01285624574865, 327.0820221558763, 327.0820221558763, 636.7401283680877, 946.398234580299, 946.398234580299, 1833.6831685889092, 2720.9681025975196, 2720.9681025975196, 5263.3674079111615], "y": [0.02634113141135582, 0.2794845115870117, 0.22376734535498413, 6.011929532623373, 12.037470964472357, 12.368795508798318, 28.891378523541615, 42.49660613028334, 42.67424463095068, 79.73337462493541, 108.36555076544336, 108.71958296563068, 167.2426801262832, 191.6775868287872, 194.403389679732, 168.42125258781775, 66.4779502956715, 18.464497487324593, 0.222824936578565]}, {"name": "nu_tilde / nu", "x": [4.59367047343884, 9.18734094687768, 9.18734094687768, 22.349904823339667, 35.51246869980165, 35.51246869980165, 73.2280795177113, 110.94369033562093, 110.94369033562093, 219.01285624574865, 327.0820221558763, 327.0820221558763, 636.7401283680877, 946.398234580299, 946.398234580299, 1833.6831685889092, 2720.9681025975196, 2720.9681025975196, 5263.3674079111615], "y": [1.758898007358121, 3.2347756937728933, 3.0490779059235638, 8.981667073453504, 13.709504611791896, 13.986710497163605, 29.302372044808255, 42.692079395983974, 42.86812657932225, 79.78955402263182, 108.39600351267534, 108.74983795248191, 167.25547338398889, 191.68732699067507, 194.41285867545915, 168.43386748388517, 66.5586439291841, 19.373359086692947, 3.0456756038958663]}], "note": "nu_tilde / nu below zero at the edge of the layer is the undershoot the negative branch of the model handles; there the eddy viscosity is zero."}], "tables": [{"id": "outputs", "title": "Outputs", "columns": ["cd (one side, reference length 1)", "cf at x = 0.97", "difference to TMR [%]", "y+ of the first node", "largest mu_t / mu", "smallest nu_tilde / nu", "largest u+ difference in the log layer [%]", "largest u+ / y+ - 1 for y+ <= 3 [%]", "Newton steps", "DOF"], "rows": [[0.005753647480878753, 0.002701031477573606, -0.1656488140430401, 4.59367047343884, 194.403389679732, 0.001092405070231881, 0.2599635575805559, null, 34, 6750]]}], "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:48:33-0500"}, "wall_time": 119.87, "level": "quick"}