Transonic aerofoil
In one minuteA flow with shocks — NACA 0012 at Mach 0.8 — computed with sensor-based shock capturing, converged to machine precision, with adjoint derivatives taken through the shock.
Fields: mach [0.07793, 1.388], pressure [0.5431, 1.693], density [0.5982, 1.347], entropy [1.113, 1.139]. Raw sample (JSON)
gyre 0.4.0 · 39979fcf90 · · gpu · NVIDIA GeForce RTX 3060 Ti · example_transonic/field.jsonSame code as this build
NACA 0012 at Mach 0.8 and 1.25 degrees (64 x 16 curved elements, p = 2). A modal smoothness sensor switches on a Laplacian artificial viscosity in the few elements that contain the shocks; the term is part of the differentiated residual, so Newton convergence and adjoint derivatives remain exact. Grid-converged Euler values in the literature are about cl = 0.356 and cd = 0.0226 (Vassberg & Jameson 2010).
- converged ten orders (final / reference residual)3.91e-12expected <= 1e-10pass
- lift coefficient0.3505expected 0.33 … 0.37pass
- drag coefficient (wave drag)0.02266expected 0.020 … 0.026pass
- upper-surface shock position x/c0.6351expected 0.55 … 0.70pass
- fraction of elements with artificial viscosity0.01367expected < 0.05pass
- dcl/dalpha: adjoint vs finite difference (rel.)1.46e-06expected < 1e-4pass
- dcd/dalpha: adjoint vs finite difference (rel.)9.92e-07expected < 1e-4pass
- dcl/dmach: adjoint vs finite difference (rel.)9.94e-06expected < 1e-4pass
- dcd/dmach: adjoint vs finite difference (rel.)3.75e-06expected < 1e-4pass
gyre 0.4.0 · 39979fcf90 · · gpu · NVIDIA GeForce RTX 3060 Ti · quick suite · record (JSON)Same code as this build
gyre run naca0012_transonic --gradients --of cl,cd --wrt alpha,mach
| cl | cd | cm | shock x/c (upper) | elements with viscosity | elements | Newton steps | field |
|---|---|---|---|---|---|---|---|
| 0.350505 | 0.0226564 | -0.0391713 | 0.635144 | 14 | 1024 | 241 | example_transonic/field.json |
gyre 0.4.0 · 39979fcf90 · · gpu · NVIDIA GeForce RTX 3060 Ti · quick suite · record (JSON)Same code as this build
The steepest pressure rise on the upper surface, taken as the shock position, is at x/c = 0.635; artificial viscosity is active in 14 of 1024 elements.
Data table
| series | x / c | −cp |
|---|---|---|
| upper surface | 0 | -1.14242 |
| upper surface | 0 | -1.13927 |
| upper surface | 4.6025e-04 | -1.00218 |
| upper surface | 0.00184019 | -0.743683 |
| upper surface | 0.00184019 | -0.74744 |
| upper surface | 0.00413742 | -0.472504 |
| upper surface | 0.00734795 | -0.211989 |
| upper surface | 0.00734795 | -0.213274 |
| upper surface | 0.0114662 | -0.0154692 |
| upper surface | 0.016485 | 0.142596 |
| upper surface | 0.016485 | 0.142536 |
| upper surface | 0.0223955 | 0.262353 |
| upper surface | 0.0291876 | 0.360334 |
| upper surface | 0.0291876 | 0.362525 |
| upper surface | 0.0368494 | 0.444786 |
| upper surface | 0.0453675 | 0.509734 |
| upper surface | 0.0453675 | 0.514657 |
| upper surface | 0.0547272 | 0.575018 |
| upper surface | 0.064912 | 0.61994 |
| upper surface | 0.064912 | 0.620288 |
| upper surface | 0.0759044 | 0.671547 |
| upper surface | 0.0876852 | 0.707748 |
| upper surface | 0.0876852 | 0.710442 |
| upper surface | 0.100234 | 0.749155 |
| upper surface | 0.113528 | 0.782848 |
| upper surface | 0.113528 | 0.781682 |
| upper surface | 0.127546 | 0.812912 |
| upper surface | 0.142262 | 0.842223 |
| upper surface | 0.142262 | 0.843128 |
| upper surface | 0.157651 | 0.868708 |
| upper surface | 0.173686 | 0.892855 |
| upper surface | 0.173686 | 0.892836 |
| upper surface | 0.190339 | 0.91646 |
| upper surface | 0.207581 | 0.937747 |
| upper surface | 0.207581 | 0.937682 |
| upper surface | 0.225383 | 0.957094 |
| upper surface | 0.243712 | 0.975768 |
| upper surface | 0.243712 | 0.975984 |
| upper surface | 0.262538 | 0.992678 |
| upper surface | 0.281828 | 1.00856 |
| upper surface | 0.281828 | 1.00852 |
| upper surface | 0.301547 | 1.02275 |
| upper surface | 0.321662 | 1.03671 |
| upper surface | 0.321662 | 1.03662 |
| upper surface | 0.342138 | 1.04855 |
| upper surface | 0.362938 | 1.06017 |
| upper surface | 0.362938 | 1.06018 |
| upper surface | 0.384027 | 1.06999 |
| upper surface | 0.405369 | 1.07978 |
| upper surface | 0.405369 | 1.0798 |
| upper surface | 0.426925 | 1.08768 |
| upper surface | 0.448658 | 1.09565 |
| upper surface | 0.448658 | 1.09564 |
| upper surface | 0.470531 | 1.10189 |
| upper surface | 0.492506 | 1.10836 |
| upper surface | 0.492506 | 1.10834 |
| upper surface | 0.514544 | 1.11325 |
| upper surface | 0.536606 | 1.11643 |
| upper surface | 0.536606 | 1.11845 |
| upper surface | 0.558655 | 1.12358 |
| upper surface | 0.580652 | 1.12144 |
| upper surface | 0.580652 | 1.0896 |
| upper surface | 0.602559 | 1.13782 |
| upper surface | 0.624338 | 0.964188 |
| upper surface | 0.624338 | 1.00437 |
| upper surface | 0.64595 | 0.348197 |
| upper surface | 0.667358 | 0.0374079 |
| upper surface | 0.667358 | 0.0225913 |
| upper surface | 0.688525 | -0.00161975 |
| upper surface | 0.709415 | 0.00248815 |
| upper surface | 0.709415 | 0.0145202 |
| upper surface | 0.729989 | -0.00438986 |
| upper surface | 0.750214 | -0.0109104 |
| upper surface | 0.750214 | -0.0113633 |
| upper surface | 0.770053 | -0.0198993 |
| upper surface | 0.789473 | -0.0298945 |
| upper surface | 0.789473 | -0.0301384 |
| upper surface | 0.808438 | -0.0419645 |
| upper surface | 0.826917 | -0.0552989 |
| upper surface | 0.826917 | -0.0550638 |
| upper surface | 0.844878 | -0.0701114 |
| upper surface | 0.862287 | -0.0861075 |
| upper surface | 0.862287 | -0.0863482 |
| upper surface | 0.879117 | -0.104118 |
| upper surface | 0.895337 | -0.123219 |
| upper surface | 0.895337 | -0.123489 |
| upper surface | 0.910918 | -0.144664 |
| upper surface | 0.925835 | -0.167773 |
| upper surface | 0.925835 | -0.16815 |
| upper surface | 0.940061 | -0.194131 |
| upper surface | 0.95357 | -0.222816 |
| upper surface | 0.95357 | -0.224022 |
| upper surface | 0.966341 | -0.260581 |
| upper surface | 0.978349 | -0.282237 |
| upper surface | 0.978349 | -0.304111 |
| upper surface | 0.989576 | -0.394981 |
| upper surface | 1 | -0.382057 |
| upper surface | 1 | -0.369955 |
| lower surface | 4.6025e-04 | -1.14422 |
| lower surface | 0.00184019 | -1.03021 |
| lower surface | 0.00184019 | -1.02871 |
| lower surface | 0.00413742 | -0.853082 |
| lower surface | 0.00734795 | -0.648158 |
| lower surface | 0.00734795 | -0.643626 |
| lower surface | 0.0114662 | -0.464575 |
| lower surface | 0.016485 | -0.308144 |
| lower surface | 0.016485 | -0.308101 |
| lower surface | 0.0223955 | -0.181712 |
| lower surface | 0.0291876 | -0.0757346 |
| lower surface | 0.0291876 | -0.0749143 |
| lower surface | 0.0368494 | 0.0163357 |
| lower surface | 0.0453675 | 0.0942746 |
| lower surface | 0.0453675 | 0.0923074 |
| lower surface | 0.0547272 | 0.162935 |
| lower surface | 0.064912 | 0.220438 |
| lower surface | 0.064912 | 0.222682 |
| lower surface | 0.0759044 | 0.27616 |
| lower surface | 0.0876852 | 0.321465 |
| lower surface | 0.0876852 | 0.32379 |
| lower surface | 0.100234 | 0.366744 |
| lower surface | 0.113528 | 0.403296 |
| lower surface | 0.113528 | 0.405532 |
| lower surface | 0.127546 | 0.440823 |
| lower surface | 0.142262 | 0.472138 |
| lower surface | 0.142262 | 0.470314 |
| lower surface | 0.157651 | 0.501959 |
| lower surface | 0.173686 | 0.525186 |
| lower surface | 0.173686 | 0.525322 |
| lower surface | 0.190339 | 0.550865 |
| lower surface | 0.207581 | 0.570657 |
| lower surface | 0.207581 | 0.569745 |
| lower surface | 0.225383 | 0.588866 |
| lower surface | 0.243712 | 0.603522 |
| lower surface | 0.243712 | 0.602144 |
| lower surface | 0.262538 | 0.614721 |
| lower surface | 0.281828 | 0.623746 |
| lower surface | 0.281828 | 0.62297 |
| lower surface | 0.301547 | 0.623416 |
| lower surface | 0.321662 | 0.620774 |
| lower surface | 0.321662 | 0.710491 |
| lower surface | 0.342138 | 0.483028 |
| lower surface | 0.362938 | 0.275011 |
| lower surface | 0.362938 | 0.397557 |
| lower surface | 0.384027 | 0.412834 |
| lower surface | 0.405369 | 0.377224 |
| lower surface | 0.405369 | 0.387281 |
| lower surface | 0.426925 | 0.368834 |
| lower surface | 0.448658 | 0.344814 |
| lower surface | 0.448658 | 0.345063 |
| lower surface | 0.470531 | 0.322778 |
| lower surface | 0.492506 | 0.301512 |
| lower surface | 0.492506 | 0.300384 |
| lower surface | 0.514544 | 0.278683 |
| lower surface | 0.536606 | 0.258265 |
| lower surface | 0.536606 | 0.257268 |
| lower surface | 0.558655 | 0.236503 |
| lower surface | 0.580652 | 0.216059 |
| lower surface | 0.580652 | 0.216862 |
| lower surface | 0.602559 | 0.196161 |
| lower surface | 0.624338 | 0.177214 |
| lower surface | 0.624338 | 0.176565 |
| lower surface | 0.64595 | 0.157367 |
| lower surface | 0.667358 | 0.13893 |
| lower surface | 0.667358 | 0.138402 |
| lower surface | 0.688525 | 0.119671 |
| lower surface | 0.709415 | 0.1015 |
| lower surface | 0.709415 | 0.101066 |
| lower surface | 0.729989 | 0.0825124 |
| lower surface | 0.750214 | 0.0639475 |
| lower surface | 0.750214 | 0.064313 |
| lower surface | 0.770053 | 0.0452341 |
| lower surface | 0.789473 | 0.0266585 |
| lower surface | 0.789473 | 0.0263387 |
| lower surface | 0.808438 | 0.00706865 |
| lower surface | 0.826917 | -0.012303 |
| lower surface | 0.826917 | -0.012596 |
| lower surface | 0.844878 | -0.0329059 |
| lower surface | 0.862287 | -0.0536138 |
| lower surface | 0.862287 | -0.0538947 |
| lower surface | 0.879117 | -0.0758855 |
| lower surface | 0.895337 | -0.099004 |
| lower surface | 0.895337 | -0.0987065 |
| lower surface | 0.910918 | -0.123621 |
| lower surface | 0.925835 | -0.149886 |
| lower surface | 0.925835 | -0.150305 |
| lower surface | 0.940061 | -0.179302 |
| lower surface | 0.95357 | -0.212216 |
| lower surface | 0.95357 | -0.2111 |
| lower surface | 0.966341 | -0.251921 |
| lower surface | 0.978349 | -0.299553 |
| lower surface | 0.978349 | -0.278848 |
| lower surface | 0.989576 | -0.394024 |
gyre 0.4.0 · 39979fcf90 · · gpu · NVIDIA GeForce RTX 3060 Ti · quick suite · record (JSON)Same code as this build
- The flow accelerates to supersonic speed over the upper surface and returns to subsonic through a shock; a weaker shock sits on the lower surface.
- The drag is no longer discretization error: it is wave drag, the entropy produced at the shocks.
- Artificial viscosity is active in a handful of elements only (table), all of them at the shocks.
Data table
| nonlinear iteration | Newton–Krylov with shock capturing |
|---|---|
| 0 | 0.110587 |
| 1 | 0.0890237 |
| 2 | 0.0813721 |
| 3 | 0.092591 |
| 4 | 0.105478 |
| 5 | 0.0803532 |
| 6 | 0.0782326 |
| 7 | 0.0689902 |
| 8 | 0.0490661 |
| 9 | 0.0454177 |
| 10 | 0.040828 |
| 11 | 0.0401599 |
| 12 | 0.0328538 |
| 13 | 0.0276924 |
| 14 | 0.0232838 |
| 15 | 0.0188651 |
| 16 | 0.0148211 |
| 17 | 0.0136987 |
| 18 | 0.0134052 |
| 19 | 0.0129874 |
| 20 | 0.0125655 |
| 21 | 0.0123842 |
| 22 | 0.0122759 |
| 23 | 0.0122759 |
| 24 | 0.0154024 |
| 25 | 0.0139276 |
| 26 | 0.0152893 |
| 27 | 0.0136262 |
| 28 | 0.0126549 |
| 29 | 0.0117029 |
| 30 | 0.0109534 |
| 31 | 0.0120913 |
| 32 | 0.0121889 |
| 33 | 0.0126419 |
| 34 | 0.0125416 |
| 35 | 0.0124695 |
| 36 | 0.0126256 |
| 37 | 0.0135144 |
| 38 | 0.013355 |
| 39 | 0.0124981 |
| 40 | 0.0121946 |
| 41 | 0.0110878 |
| 42 | 0.0104739 |
| 43 | 0.010384 |
| 44 | 0.00920111 |
| 45 | 0.00920111 |
| 46 | 0.00883254 |
| 47 | 0.00920063 |
| 48 | 0.00863557 |
| 49 | 0.00870549 |
| 50 | 0.00866848 |
| 51 | 0.010819 |
| 52 | 0.010663 |
| 53 | 0.0117457 |
| 54 | 0.0104575 |
| 55 | 0.0104438 |
| 56 | 0.0102718 |
| 57 | 0.00850319 |
| 58 | 0.00784117 |
| 59 | 0.0079276 |
| 60 | 0.00758647 |
| 61 | 0.00710062 |
| 62 | 0.00683413 |
| 63 | 0.00703958 |
| 64 | 0.00649415 |
| 65 | 0.0064452 |
| 66 | 0.0062825 |
| 67 | 0.00587653 |
| 68 | 0.00580637 |
| 69 | 0.00561788 |
| 70 | 0.00561383 |
| 71 | 0.00536749 |
| 72 | 0.00537158 |
| 73 | 0.00553277 |
| 74 | 0.00585036 |
| 75 | 0.00562912 |
| 76 | 0.00556387 |
| 77 | 0.00478094 |
| 78 | 0.00459435 |
| 79 | 0.00436704 |
| 80 | 0.00409114 |
| 81 | 0.00418673 |
| 82 | 0.00444569 |
| 83 | 0.00421266 |
| 84 | 0.0039887 |
| 85 | 0.00409591 |
| 86 | 0.0036014 |
| 87 | 0.00355465 |
| 88 | 0.00355465 |
| 89 | 0.00356821 |
| 90 | 0.00356821 |
| 91 | 0.0033036 |
| 92 | 0.0031954 |
| 93 | 0.00316502 |
| 94 | 0.00310558 |
| 95 | 0.00307805 |
| 96 | 0.00314347 |
| 97 | 0.00284761 |
| 98 | 0.0026144 |
| 99 | 0.00256673 |
| 100 | 0.00335049 |
| 101 | 0.00262688 |
| 102 | 0.00261189 |
| 103 | 0.00288863 |
| 104 | 0.00205057 |
| 105 | 0.00186011 |
| 106 | 0.0017337 |
| 107 | 0.00168776 |
| 108 | 0.00155837 |
| 109 | 0.00154127 |
| 110 | 0.00144354 |
| 111 | 0.00134174 |
| 112 | 0.00132074 |
| 113 | 0.00130244 |
| 114 | 0.00118278 |
| 115 | 0.00102349 |
| 116 | 0.00105492 |
| 117 | 0.00105492 |
| 118 | 6.2973e-04 |
| 119 | 6.1938e-04 |
| 120 | 6.2034e-04 |
| 121 | 6.3992e-04 |
| 122 | 6.3179e-04 |
| 123 | 7.2951e-04 |
| 124 | 7.5382e-04 |
| 125 | 7.1353e-04 |
| 126 | 7.2752e-04 |
| 127 | 8.2668e-04 |
| 128 | 7.2619e-04 |
| 129 | 7.1026e-04 |
| 130 | 7.2259e-04 |
| 131 | 6.4097e-04 |
| 132 | 7.5387e-04 |
| 133 | 6.9364e-04 |
| 134 | 6.8865e-04 |
| 135 | 7.4152e-04 |
| 136 | 7.4152e-04 |
| 137 | 5.3823e-04 |
| 138 | 5.3001e-04 |
| 139 | 7.3525e-04 |
| 140 | 4.8061e-04 |
| 141 | 3.8772e-04 |
| 142 | 3.6271e-04 |
| 143 | 3.5082e-04 |
| 144 | 4.2199e-04 |
| 145 | 4.2199e-04 |
| 146 | 4.7502e-04 |
| 147 | 6.6432e-04 |
| 148 | 7.7544e-04 |
| 149 | 7.6439e-04 |
| 150 | 8.0676e-04 |
| 151 | 8.0676e-04 |
| 152 | 6.4301e-04 |
| 153 | 6.5238e-04 |
| 154 | 6.8383e-04 |
| 155 | 7.5970e-04 |
| 156 | 8.5673e-04 |
| 157 | 9.1132e-04 |
| 158 | 8.9144e-04 |
| 159 | 9.1969e-04 |
| 160 | 0.00100478 |
| 161 | 0.00109327 |
| 162 | 9.6745e-04 |
| 163 | 7.8414e-04 |
| 164 | 8.2272e-04 |
| 165 | 8.5105e-04 |
| 166 | 8.5352e-04 |
| 167 | 8.5704e-04 |
| 168 | 8.6035e-04 |
| 169 | 8.6174e-04 |
| 170 | 8.6019e-04 |
| 171 | 8.9958e-04 |
| 172 | 9.1786e-04 |
| 173 | 9.2623e-04 |
| 174 | 9.3299e-04 |
| 175 | 9.4148e-04 |
| 176 | 9.5196e-04 |
| 177 | 9.6407e-04 |
| 178 | 9.7865e-04 |
| 179 | 9.9906e-04 |
| 180 | 0.00102956 |
| 181 | 0.00101489 |
| 182 | 0.00100204 |
| 183 | 9.9070e-04 |
| 184 | 9.8040e-04 |
| 185 | 9.7061e-04 |
| 186 | 9.6081e-04 |
| 187 | 9.5055e-04 |
| 188 | 9.3950e-04 |
| 189 | 9.7379e-04 |
| 190 | 9.8907e-04 |
| 191 | 9.8655e-04 |
| 192 | 9.6961e-04 |
| 193 | 9.4404e-04 |
| 194 | 9.6155e-04 |
| 195 | 9.8801e-04 |
| 196 | 9.3551e-04 |
| 197 | 9.0139e-04 |
| 198 | 8.9220e-04 |
| 199 | 8.4012e-04 |
First 200 of 242 rows; the study JSON holds all of them.
gyre 0.4.0 · 39979fcf90 · · gpu · NVIDIA GeForce RTX 3060 Ti · quick suite · record (JSON)Same code as this build
The residual first wanders while the shock finds its position — the line search shortens many steps — then falls step by step to ten orders below its reference, which the study checks. The solver is an inexact Newton iteration with a fixed linear tolerance, so that last phase is linear, not quadratic. It is possible because the sensor and the viscosity are part of the Jacobian (shock capturing).
Derivatives through the shock#
| derivative | adjoint | finite difference | relative difference |
|---|---|---|---|
| dcl/dalpha | 17.6219 | 17.6219 | 1.4558e-06 |
| dcd/dalpha | 1.31459 | 1.31459 | 9.9160e-07 |
| dcl/dmach | 4.46992 | 4.46988 | 9.9365e-06 |
| dcd/dmach | 0.688727 | 0.688725 | 3.7501e-06 |
gyre 0.4.0 · 39979fcf90 · · gpu · NVIDIA GeForce RTX 3060 Ti · quick suite · record (JSON)Same code as this build
Shock position moves with angle of attack and Mach number, and wave drag depends on it strongly; a gradient that ignores the dependence of the shock-capturing term on the solution is wrong exactly where a transonic optimizer needs it. The table compares the adjoint derivatives with central differences of fully re-converged flows.