Reuses the pinned Re100 runner and helpers unchanged; sets only the lattice viscosity for Re 20. Reports Cd, Cl and p_diff (dp * 0.04 for U = 0.2 m/s), a steady rule frozen before any run (window ranges at most a tenth of each official interval width) and no interval verdict when not steady. Declares the pressure-NEQ outlet and Zou-He inlet deviations. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
44 lines
2.1 KiB
Markdown
44 lines
2.1 KiB
Markdown
# DFG 2D-1 (Re 20) against the official reference intervals
|
|
|
|
`tests/validation/run_dfg_re20.py` runs the steady DFG 2D-1 case on the refined
|
|
channel root (D40 root, D80 wide fine patch) and on the uniform D80 grid. Geometry,
|
|
inflow, initial state, layout and observation are those of the pinned Re100 runner
|
|
(`run_refined_dfg.py`, `re100_helpers.py`, both unchanged); only the lattice
|
|
viscosity is set for Re 20 (root tau 0.56, fine 0.62, uniform 0.62, lattice speed 0.01).
|
|
|
|
This is a comparison with the official intervals, not a full benchmark
|
|
certification: the outlet is pressure-NEQ (`neq_extrap`), not do-nothing, and the
|
|
inlet is local Zou-He.
|
|
|
|
## Quantities
|
|
|
|
- Cd = 2 Fx / (rho U^2 D), Cl = 2 Fy / (rho U^2 D), interval means over each sample.
|
|
- p_diff = p(0.15, 0.2) - p(0.25, 0.2), linear extrapolation to the exact surface
|
|
points (`re100_helpers.pressure_probes`). The helper returns dp / (rho U^2) in
|
|
scaled units; p_diff = dp * 0.04 for U = 0.2 m/s, rho = 1. Both are reported.
|
|
- Official intervals (Schaefer & Turek 1996): Cd [5.57, 5.59], Cl [0.0104, 0.0110],
|
|
p_diff [0.1172, 0.1176].
|
|
|
|
## Bounds and steady rule (frozen before any run)
|
|
|
|
- End time t* = 60 (30 s physical): 240,000 refined root steps, 480,000 uniform steps.
|
|
- One sample every t* = 0.5; trailing window t* = 10 (5 s, 20 samples).
|
|
- Steady: in the window, max - min of each of Cd, Cl, p_diff is at most one tenth of
|
|
its official interval width (0.002, 0.00006, 0.00004). Absolute ranges, so the
|
|
small Cl is never used as a divisor.
|
|
- Not steady at t* = 60: status `NOT_STEADY`, no interval verdict. Health limits
|
|
(Mach <= 0.2, rho in [0.5, 1.5]) stop the run with `UNHEALTHY`.
|
|
- Steady: `WITHIN_INTERVALS` or `OUTSIDE_INTERVALS`, with the per-quantity verdict.
|
|
|
|
## Run
|
|
|
|
```
|
|
python tests/validation/run_dfg_re20.py --output <new-dir> --plan
|
|
CUDA_VISIBLE_DEVICES=<n> python tests/validation/run_dfg_re20.py --case both \
|
|
--collision SRT --output <new-dir> --max-wall-seconds <cap>
|
|
```
|
|
|
|
`--plan` writes `plan.json` only. A GPU run writes `plan.json` and `result.json`
|
|
(per case: lattice parameters, every sample, window ranges, status, verdict).
|
|
Host contract tests: `tests/unit/test_dfg_re20.py`.
|