Wind Tunnel Wall Corrections (aerodynamics/wind-tunnel/windtunnel-wall-corrections)
Use when the task is correcting measured aerodynamic coefficients for the
presence of the walls of a closed solid-wall (slotted or solid) test
section, the classical low-speed correction set of Barlow, Rae and Pope
(Low-Speed Wind Tunnel Testing, boundary corrections chapter, method set
paraphrased here): solid blockage, wake blockage, horizontal buoyancy
drag, and the lift interference and streamline curvature corrections.
The input is a set of coefficients already reduced from raw balance
readings at the measured dynamic pressure; the output is the
wall-corrected polar an operator would compare with free-air or CFD
data. Raw-run data reduction, tare subtraction, Reynolds and Mach
corrections and uncertainty estimation belong to
aerodynamics/wind-tunnel/windtunnel-data-reduction, not to this leaf.
Domain quick reference
Closed rectangular test section of cross-sectional area C (m^2) and
height h, model of planform area S_model, volume V_model and span b.
All corrections below are first order in the small blockage factors.
- Solid blockage: eps_sb = K1 * V_model / C^1.5, with C^1.5 the cubic
scale of the section (volume units) and K1 = 0.52 for a closed
rectangular section (classical Barlow value, allow override with the
tunnel-specific calibration).
- Wake blockage: eps_wb = (S_model / (4 * C)) * CDu, with CDu the
uncorrected drag coefficient at the uncorrected dynamic pressure.
- Total blockage: eps = eps_sb + eps_wb.
- Dynamic pressure and speed: q_c = q_u * (1 + eps)^2 and
V_c = V_u * (1 + eps). Blockage always raises q and V.
- Buoyancy drag: dCD_buoy = -(dP/dx) * V_model / (q * S_ref), with dP/dx
the streamwise static pressure gradient of the empty section in Pa/m.
Sign convention: in a closed solid-wall section the core flow
accelerates downstream, dP/dx is negative and the increment is
positive, drag added; a positive gradient subtracts drag. The
buoyancy increment is added to the corrected drag coefficient.
- Lift interference: delta_alpha = delta * (S_model / C) * CLu in
radians, delta = pi / 48 for the closed wall (classical value, allow
override); corrected alpha = alpha_u + delta_alpha.
- Lift factor: sigma = (pi^2 / 48) * (b / h)^2 for the closed wall
(classical value, allow override), valid while b < h.
- Corrected coefficients (first-order form, re-referencing is already
inside the factors):
CLc = CLu * (1 - sigma - 2 * eps_sb)
CDc = CDu * (1 - 3 * eps_sb - 2 * eps_wb) + dCD_buoy
- K1, delta and the sigma coefficient are classical approximations for a
closed rectangular section; replace them with the tunnel-specific
calibration when one is available (see Compliance).
Workflow
- Gather the uncorrected measured coefficients CLu, CDu and alpha_u per
point, the model planform area S_ref, model volume and span, and the
test section area C, height h and uncorrected dynamic pressure q_u.
- Optionally record the empty-section streamwise pressure gradient
dP/dx for the buoyancy term.
- Compute eps_sb with solid_blockage, eps_wb with wake_blockage and
eps with total_blockage (module
scripts/windtunnel_wall_corrections_logic.py).
- Compute sigma with sigma_lift_factor and the angle increment with
lift_interference_delta_alpha to get alpha_corrected.
- Compute CLc with corrected_lift_coefficient and CDc with
corrected_drag_coefficient, adding the buoyancy increment from
buoyancy_drag_increment when dP/dx is available.
- Correct the dynamic pressure and speed with
corrected_dynamic_pressure and corrected_velocity.
- For a single point call apply_wall_corrections once; for a whole
polar call correct_measured_polar, which returns every corrected
point with its correction ledger.
- Sanity check the fit constraints: model volume below C^1.5, planform
area below C, span below h; violations raise ValueError.
Worked example
Model with S_model = 0.16 m^2, volume 0.004 m^3, CDu = 0.03, CLu = 0.5
at alpha_u = 4 deg, span 0.9 m, in a closed test section 1.4 m by 1.0 m
(C = 1.4 m^2, h = 1.0 m), q_u = 500 Pa.
- Solid blockage: eps_sb = 0.52 * 0.004 / 1.4^1.5 = 0.0012557.
- Wake blockage: eps_wb = (0.16 / (4 * 1.4)) * 0.03 = 0.0008571.
- Total blockage: eps = 0.0021128.
- Dynamic pressure: q_c = 500 * 1.0021128^2 = 502.12 Pa; velocity ratio
V_c / V_u = 1.00211.
- Lift factor: sigma = (pi^2 / 48) * (0.9 / 1.0)^2 = 0.166550.
- Angle increment: delta_alpha = (pi / 48) * (0.16 / 1.4) * 0.5 rad =
0.003740 rad = 0.2143 deg, so alpha_c = 4.2143 deg.
- Corrected lift: CLc = 0.5 * (1 - 0.166550 - 2 * 0.0012557) = 0.41547,
below the uncorrected 0.5 as expected for positive blockage.
- Corrected drag: CDc = 0.03 * (1 - 3 * 0.0012557 - 2 * 0.0008571) =
0.0298356, below the uncorrected 0.03.
- Buoyancy with dP/dx = -0.25 Pa/m: dCD_buoy = 0.25 * 0.004 / (500 *
0.16) = 1.25e-5, so CDc = 0.0298356 + 0.0000125 = 0.0298481.
Verification
- eps_sb, eps_wb and eps are non-negative for physical inputs, and every
correction shrinks as the model-to-tunnel size ratio shrinks (smaller
model volume, planform area or span).
- q_c and V_c exceed their uncorrected values for eps above zero, and
collapse to the identity at eps = 0.
- Corrected CL stays below the uncorrected value at positive lift with
positive blockage; corrected CD stays below CDu when no buoyancy
gradient is applied, and the negative streamwise gradient of a closed
section adds drag on top.
- The worked example above reproduces the reference values within 1%
(asserted in the contract test).
- ValueError is raised on non-positive inputs and on any model larger
than the test section: model volume at or above C^1.5, planform area
at or above C, or span at or above the section height.
Related leaves
- aerodynamics/wind-tunnel/windtunnel-data-reduction: reduces raw
balance runs (tare, tare shift, Reynolds, Mach, uncertainty) into the
uncorrected coefficients this leaf takes as input.
- aerodynamics/drag-polars/drag-polar: the parabolic polar model to
compare the corrected points against.
- aerodynamics/drag-polars/lift-curve-slope: the predicted lift slope to
check corrected CL against corrected alpha.
- aerodynamics/cfd/cfd-validation: validation culture; wall-corrected
wind tunnel data is the experimental anchor for CFD validation, so
this correction chain and its constants belong in the validation
report next to the error metrics.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 skills/aerodynamics/wind-tunnel/windtunnel-wall-corrections/scripts/test_windtunnel_wall_corrections.py
The test covers the worked example within 1%, internal consistency
(monotone shrinkage with model-to-tunnel size, eps non-negative,
corrected CL below uncorrected), the q and V identity at zero blockage,
the buoyancy sign convention, zero-correction round trips, the full
single-point pipeline against the individual calls, a three-point polar
against per-point corrections, and ValueError rejection of non-positive
inputs and models larger than the test section.
Pitfalls
- Feed uncorrected coefficients: applying this set to coefficients that
already carry corrections double-counts the wall effects.
- Do not re-divide the forces by the corrected q: the first-order
coefficient factors already contain the dynamic pressure
re-referencing.
- Compute the wake blockage from the uncorrected CDu at the uncorrected
dynamic pressure, not from an iterated value.
- Take dP/dx from the empty test section, not from a pressure field
measured with the model installed.
- Watch the units: dP/dx in Pa/m, q in Pa, volumes in m^3.
- Treat K1 = 0.52, delta = pi/48 and the sigma coefficient pi^2/48 as
classical closed-rectangular approximations, not as universal
constants; prefer the tunnel-specific calibration when available, and
never trust the first-order forms when the model nearly fills the
section (span approaching the height, or blockage above a few
percent).
Compliance
- STANDARDS-REF, gated: false. NACA Report 824 (public domain) is named
as the reference-only anchor for the measured data culture; standard
engineering methodology is summarized, not reproduced.
- Honesty note: K1 = 0.52, delta = pi/48 and the sigma coefficient
pi^2/48 are classical approximations for a closed rectangular test
section as documented in the Barlow, Rae and Pope method set. The
operator should replace them with the tunnel-specific calibration when
available; the logic functions accept k1, delta and sigma_coefficient
overrides for exactly that purpose.
1---2name: windtunnel-wall-corrections3description: Use when you must apply closed-wall wind tunnel corrections to measured lift and drag coefficients: compute solid blockage from model volume over the test-section volume scale with K1 = 0.52, wake blockage from the uncorrected drag coefficient, total blockage, buoyancy drag increment from the streamwise pressure gradient, lift interference and streamline curvature alpha increment, sigma factor from span over section height, and first-order corrected lift and drag coefficients with corrected q and velocity. Produces corrected coefficients, alpha, q and V for free-air comparison. Trigger: wall corrections, solid blockage, wake blockage, wind tunnel boundary interference, lift interference, buoyancy drag, test section constraint, corrected drag coefficient.4license: Apache-2.05---67# Wind Tunnel Wall Corrections (aerodynamics/wind-tunnel/windtunnel-wall-corrections)89Use when the task is correcting measured aerodynamic coefficients for the10presence of the walls of a closed solid-wall (slotted or solid) test11section, the classical low-speed correction set of Barlow, Rae and Pope12(Low-Speed Wind Tunnel Testing, boundary corrections chapter, method set13paraphrased here): solid blockage, wake blockage, horizontal buoyancy14drag, and the lift interference and streamline curvature corrections.15The input is a set of coefficients already reduced from raw balance16readings at the measured dynamic pressure; the output is the17wall-corrected polar an operator would compare with free-air or CFD18data. Raw-run data reduction, tare subtraction, Reynolds and Mach19corrections and uncertainty estimation belong to20aerodynamics/wind-tunnel/windtunnel-data-reduction, not to this leaf.2122## Domain quick reference2324Closed rectangular test section of cross-sectional area C (m^2) and25height h, model of planform area S_model, volume V_model and span b.26All corrections below are first order in the small blockage factors.2728- Solid blockage: eps_sb = K1 * V_model / C^1.5, with C^1.5 the cubic29 scale of the section (volume units) and K1 = 0.52 for a closed30 rectangular section (classical Barlow value, allow override with the31 tunnel-specific calibration).32- Wake blockage: eps_wb = (S_model / (4 * C)) * CDu, with CDu the33 uncorrected drag coefficient at the uncorrected dynamic pressure.34- Total blockage: eps = eps_sb + eps_wb.35- Dynamic pressure and speed: q_c = q_u * (1 + eps)^2 and36 V_c = V_u * (1 + eps). Blockage always raises q and V.37- Buoyancy drag: dCD_buoy = -(dP/dx) * V_model / (q * S_ref), with dP/dx38 the streamwise static pressure gradient of the empty section in Pa/m.39 Sign convention: in a closed solid-wall section the core flow40 accelerates downstream, dP/dx is negative and the increment is41 positive, drag added; a positive gradient subtracts drag. The42 buoyancy increment is added to the corrected drag coefficient.43- Lift interference: delta_alpha = delta * (S_model / C) * CLu in44 radians, delta = pi / 48 for the closed wall (classical value, allow45 override); corrected alpha = alpha_u + delta_alpha.46- Lift factor: sigma = (pi^2 / 48) * (b / h)^2 for the closed wall47 (classical value, allow override), valid while b < h.48- Corrected coefficients (first-order form, re-referencing is already49 inside the factors):50 CLc = CLu * (1 - sigma - 2 * eps_sb)51 CDc = CDu * (1 - 3 * eps_sb - 2 * eps_wb) + dCD_buoy52- K1, delta and the sigma coefficient are classical approximations for a53 closed rectangular section; replace them with the tunnel-specific54 calibration when one is available (see Compliance).5556## Workflow57581. Gather the uncorrected measured coefficients CLu, CDu and alpha_u per59 point, the model planform area S_ref, model volume and span, and the60 test section area C, height h and uncorrected dynamic pressure q_u.612. Optionally record the empty-section streamwise pressure gradient62 dP/dx for the buoyancy term.633. Compute eps_sb with solid_blockage, eps_wb with wake_blockage and64 eps with total_blockage (module65 scripts/windtunnel_wall_corrections_logic.py).664. Compute sigma with sigma_lift_factor and the angle increment with67 lift_interference_delta_alpha to get alpha_corrected.685. Compute CLc with corrected_lift_coefficient and CDc with69 corrected_drag_coefficient, adding the buoyancy increment from70 buoyancy_drag_increment when dP/dx is available.716. Correct the dynamic pressure and speed with72 corrected_dynamic_pressure and corrected_velocity.737. For a single point call apply_wall_corrections once; for a whole74 polar call correct_measured_polar, which returns every corrected75 point with its correction ledger.768. Sanity check the fit constraints: model volume below C^1.5, planform77 area below C, span below h; violations raise ValueError.7879## Worked example8081Model with S_model = 0.16 m^2, volume 0.004 m^3, CDu = 0.03, CLu = 0.582at alpha_u = 4 deg, span 0.9 m, in a closed test section 1.4 m by 1.0 m83(C = 1.4 m^2, h = 1.0 m), q_u = 500 Pa.8485- Solid blockage: eps_sb = 0.52 * 0.004 / 1.4^1.5 = 0.0012557.86- Wake blockage: eps_wb = (0.16 / (4 * 1.4)) * 0.03 = 0.0008571.87- Total blockage: eps = 0.0021128.88- Dynamic pressure: q_c = 500 * 1.0021128^2 = 502.12 Pa; velocity ratio89 V_c / V_u = 1.00211.90- Lift factor: sigma = (pi^2 / 48) * (0.9 / 1.0)^2 = 0.166550.91- Angle increment: delta_alpha = (pi / 48) * (0.16 / 1.4) * 0.5 rad =92 0.003740 rad = 0.2143 deg, so alpha_c = 4.2143 deg.93- Corrected lift: CLc = 0.5 * (1 - 0.166550 - 2 * 0.0012557) = 0.41547,94 below the uncorrected 0.5 as expected for positive blockage.95- Corrected drag: CDc = 0.03 * (1 - 3 * 0.0012557 - 2 * 0.0008571) =96 0.0298356, below the uncorrected 0.03.97- Buoyancy with dP/dx = -0.25 Pa/m: dCD_buoy = 0.25 * 0.004 / (500 *98 0.16) = 1.25e-5, so CDc = 0.0298356 + 0.0000125 = 0.0298481.99100## Verification101102- eps_sb, eps_wb and eps are non-negative for physical inputs, and every103 correction shrinks as the model-to-tunnel size ratio shrinks (smaller104 model volume, planform area or span).105- q_c and V_c exceed their uncorrected values for eps above zero, and106 collapse to the identity at eps = 0.107- Corrected CL stays below the uncorrected value at positive lift with108 positive blockage; corrected CD stays below CDu when no buoyancy109 gradient is applied, and the negative streamwise gradient of a closed110 section adds drag on top.111- The worked example above reproduces the reference values within 1%112 (asserted in the contract test).113- ValueError is raised on non-positive inputs and on any model larger114 than the test section: model volume at or above C^1.5, planform area115 at or above C, or span at or above the section height.116117## Related leaves118119- aerodynamics/wind-tunnel/windtunnel-data-reduction: reduces raw120 balance runs (tare, tare shift, Reynolds, Mach, uncertainty) into the121 uncorrected coefficients this leaf takes as input.122- aerodynamics/drag-polars/drag-polar: the parabolic polar model to123 compare the corrected points against.124- aerodynamics/drag-polars/lift-curve-slope: the predicted lift slope to125 check corrected CL against corrected alpha.126- aerodynamics/cfd/cfd-validation: validation culture; wall-corrected127 wind tunnel data is the experimental anchor for CFD validation, so128 this correction chain and its constants belong in the validation129 report next to the error metrics.130131## Behavior contract (gate 3)132133Run the deterministic contract test (stdlib unittest, offline):134135 python3 skills/aerodynamics/wind-tunnel/windtunnel-wall-corrections/scripts/test_windtunnel_wall_corrections.py136137The test covers the worked example within 1%, internal consistency138(monotone shrinkage with model-to-tunnel size, eps non-negative,139corrected CL below uncorrected), the q and V identity at zero blockage,140the buoyancy sign convention, zero-correction round trips, the full141single-point pipeline against the individual calls, a three-point polar142against per-point corrections, and ValueError rejection of non-positive143inputs and models larger than the test section.144145## Pitfalls146147- Feed uncorrected coefficients: applying this set to coefficients that148 already carry corrections double-counts the wall effects.149- Do not re-divide the forces by the corrected q: the first-order150 coefficient factors already contain the dynamic pressure151 re-referencing.152- Compute the wake blockage from the uncorrected CDu at the uncorrected153 dynamic pressure, not from an iterated value.154- Take dP/dx from the empty test section, not from a pressure field155 measured with the model installed.156- Watch the units: dP/dx in Pa/m, q in Pa, volumes in m^3.157- Treat K1 = 0.52, delta = pi/48 and the sigma coefficient pi^2/48 as158 classical closed-rectangular approximations, not as universal159 constants; prefer the tunnel-specific calibration when available, and160 never trust the first-order forms when the model nearly fills the161 section (span approaching the height, or blockage above a few162 percent).163164## Compliance165166- STANDARDS-REF, gated: false. NACA Report 824 (public domain) is named167 as the reference-only anchor for the measured data culture; standard168 engineering methodology is summarized, not reproduced.169- Honesty note: K1 = 0.52, delta = pi/48 and the sigma coefficient170 pi^2/48 are classical approximations for a closed rectangular test171 section as documented in the Barlow, Rae and Pope method set. The172 operator should replace them with the tunnel-specific calibration when173 available; the logic functions accept k1, delta and sigma_coefficient174 overrides for exactly that purpose.