---
title: Transonic aerofoil
summary: A 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.
section: examples
order: 2
level: 2
study: example_transonic
keywords: [transonic, shock capturing, NACA 0012, wave drag, adjoint, example]
---
<!-- gyre docs: expanded Markdown of examples/transonic.md (generated tables, verification numbers and chart data are written out). Base level of this page: L2 Practice; passages at another level are bracketed by 'begin level N' / 'end level N' comments and start with [LN Name]. Built from revision ceb1f4b0be. -->

**Flow field: Mach number: supersonic pocket and shock on the upper surface.** Interactive viewer in the HTML page (initially showing `mach`). Part of the domain: window x ∈ [-1, 2.5], y ∈ [-1.5, 1.5] · the 608 mesh elements that reach into it · 6×6 points each. Sampled solution (coordinates and fields, base64 float32): [field.json](../data/fields/example_transonic/field.json).

| Field | Minimum in the sample | Maximum in the sample |
|---|---|---|
| mach | 0.0779274 | 1.38842 |
| pressure | 0.54311 | 1.69328 |
| density | 0.598235 | 1.34674 |
| entropy | 1.11258 | 1.13887 |

Provenance: gyre 0.4.0; revision `39979fcf90` (commit `39979fcf902ad6116eb550b881b4278d4599c8e2`); 2026-11-12T11:37:02-0500; device gpu · NVIDIA GeForce RTX 3060 Ti; source `example_transonic/field.json`. **Revision check: Same code as this build.** Produced by 39979fcf902ad6116eb550b881b4278d4599c8e2. Every commit between it and the commit this site was built from (ceb1f4b0bed41de53e586df10858079f5a2bcdd8) changes only documentation text, evidence records or bookkeeping: the code is the same.

**Verification status: Example: transonic aerofoil with shock capturing** (study `example_transonic`): **PASSED**, 9 of 9 checks passed, 151.8 s.

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).

| Check | Value | Expected | Result |
|---|---|---|---|
| converged ten orders (final / reference residual) | 3.9106e-12 | <= 1e-10 | pass |
| lift coefficient | 0.350505 | 0.33 … 0.37 | pass |
| drag coefficient (wave drag) | 0.0226564 | 0.020 … 0.026 | pass |
| upper-surface shock position x/c | 0.635144 | 0.55 … 0.70 | pass |
| fraction of elements with artificial viscosity | 0.0136719 | < 0.05 | pass |
| dcl/dalpha: adjoint vs finite difference (rel.) | 1.4558e-06 | < 1e-4 | pass |
| dcd/dalpha: adjoint vs finite difference (rel.) | 9.9160e-07 | < 1e-4 | pass |
| dcl/dmach: adjoint vs finite difference (rel.) | 9.9365e-06 | < 1e-4 | pass |
| dcd/dmach: adjoint vs finite difference (rel.) | 3.7501e-06 | < 1e-4 | pass |

Provenance: gyre 0.4.0; revision `39979fcf90` (commit `39979fcf902ad6116eb550b881b4278d4599c8e2`); 2026-11-12T11:37:50-0500; device gpu · NVIDIA GeForce RTX 3060 Ti; quick suite. **Revision check: Same code as this build.** Produced by 39979fcf902ad6116eb550b881b4278d4599c8e2. Every commit between it and the commit this site was built from (ceb1f4b0bed41de53e586df10858079f5a2bcdd8) changes only documentation text, evidence records or bookkeeping: the code is the same. Full record: [example_transonic.json](../data/verification/example_transonic.json).

```bash
gyre run naca0012_transonic --gradients --of cl,cd --wrt alpha,mach
```

**Table: Outputs** (Example: transonic aerofoil with shock capturing)

| 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 |

Provenance: gyre 0.4.0; revision `39979fcf90` (commit `39979fcf902ad6116eb550b881b4278d4599c8e2`); 2026-11-12T11:37:50-0500; device gpu · NVIDIA GeForce RTX 3060 Ti; quick suite. **Revision check: Same code as this build.** Produced by 39979fcf902ad6116eb550b881b4278d4599c8e2. Every commit between it and the commit this site was built from (ceb1f4b0bed41de53e586df10858079f5a2bcdd8) changes only documentation text, evidence records or bookkeeping: the code is the same. Full record: [example_transonic.json](../data/verification/example_transonic.json).

**Chart: Surface pressure coefficient** (Example: transonic aerofoil with shock capturing). Line chart of −cp against x / c; 2 series. The table holds the plotted data. 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.

| 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 |

Provenance: gyre 0.4.0; revision `39979fcf90` (commit `39979fcf902ad6116eb550b881b4278d4599c8e2`); 2026-11-12T11:37:50-0500; device gpu · NVIDIA GeForce RTX 3060 Ti; quick suite. **Revision check: Same code as this build.** Produced by 39979fcf902ad6116eb550b881b4278d4599c8e2. Every commit between it and the commit this site was built from (ceb1f4b0bed41de53e586df10858079f5a2bcdd8) changes only documentation text, evidence records or bookkeeping: the code is the same. Full record: [example_transonic.json](../data/verification/example_transonic.json).

<!-- begin level 2 (Practice) -->
**[L2 Practice] What to look for**

* 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.

<!-- end level 2 -->

**Chart: Residual history** (Example: transonic aerofoil with shock capturing). History chart of |Rw| against nonlinear iteration, y axis log; 1 series. The table holds the plotted data.

| 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 full record holds all of them.

Provenance: gyre 0.4.0; revision `39979fcf90` (commit `39979fcf902ad6116eb550b881b4278d4599c8e2`); 2026-11-12T11:37:50-0500; device gpu · NVIDIA GeForce RTX 3060 Ti; quick suite. **Revision check: Same code as this build.** Produced by 39979fcf902ad6116eb550b881b4278d4599c8e2. Every commit between it and the commit this site was built from (ceb1f4b0bed41de53e586df10858079f5a2bcdd8) changes only documentation text, evidence records or bookkeeping: the code is the same. Full record: [example_transonic.json](../data/verification/example_transonic.json).

<!-- begin level 3 (Mechanics) -->
**[L3 Mechanics] Convergence with a shock**

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](../theory/shock-capturing.md)).

<!-- end level 3 -->

## Derivatives through the shock

**Table: Adjoint derivatives through the shock** (Example: transonic aerofoil with shock capturing)

| 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 |

Provenance: gyre 0.4.0; revision `39979fcf90` (commit `39979fcf902ad6116eb550b881b4278d4599c8e2`); 2026-11-12T11:37:50-0500; device gpu · NVIDIA GeForce RTX 3060 Ti; quick suite. **Revision check: Same code as this build.** Produced by 39979fcf902ad6116eb550b881b4278d4599c8e2. Every commit between it and the commit this site was built from (ceb1f4b0bed41de53e586df10858079f5a2bcdd8) changes only documentation text, evidence records or bookkeeping: the code is the same. Full record: [example_transonic.json](../data/verification/example_transonic.json).

<!-- begin level 3 (Mechanics) -->
**[L3 Mechanics] Why this is the hard case**

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.

<!-- end level 3 -->
