CelerisLab/tests/specs/Kan99b_validation.md

6.9 KiB

Rotating cylinder validation against [Kan99b]

Goal

This validation should stay small, direct, and defensible.

The main design rules are:

  • use the paper's direct numeric anchor at Re = 100, alpha = 1.0 as the main hard benchmark
  • use a low-rotation case to test the lift trend
  • use suppression cases to test flow classification, not exact threshold fitting
  • do not treat values read from figures near alpha_L as tight amplitude targets

This keeps the matrix representative without overfitting to sensitive threshold points.

Strong numeric anchors from [Kan99b]

The strongest exact benchmark in the paper is the convergence case at Re = 100, alpha = 1.0.

Quantity Reference value
St 0.1655
mean C_L -2.4881
mean C_D 1.1040
C'_L 0.3631
C'_D 0.0993

For low rotation at Re = 100, the paper also gives the mean lift trend


\overline{C_L} \approx -2.48\alpha

which is a good secondary benchmark for small alpha.

The suppression thresholds are given as trends:

Reynolds number Expected alpha_L
60 about 1.4
100 about 1.8
160 about 1.9

These threshold values should be used as regime guides, not as tight one-point numeric targets. In the suppression curve from [Kan99b] shown above, the boundary is exactly the kind of place where a small solver difference can change the observed state.

Fixed solver setup

Item Setting
Dimension 2D
Lattice D2Q9
Streaming double buffer
Curved boundary current Bouzidi moving wall implementation
Inlet profile uniform
Top and bottom boundaries free slip
Outlet neq extrapolation
LES off
Precision FP32
Cylinder diameter D = 30 lattice units
Cylinder radius R = 15 lattice units
Rotation input update body omega only

The baseline domain remains the current medium far field unless a later boundary sensitivity check shows otherwise.

Inlet recommendation by collision model

Kan99b is an open-flow validation, not a confined-channel benchmark.

Collision Recommended inlet Secondary choice Avoid as primary
SRT equilibrium regularized zou_he_local
TRT regularized equilibrium zou_he_local until the anchor is stable
MRT regularized or zou_he_local equilibrium channel_stabilized

Keep one inlet family per collision model across the primary matrix.

Lattice-unit mapping

Use


U_\infty = 0.03

With D = 30,


\nu = \frac{U_\infty D}{Re} = \frac{0.9}{Re}
Re nu SRT equivalent omega
60 0.015000 1.83486
100 0.009000 1.89753
160 0.005625 1.93470

The body rotation rate is


\omega_{body} = \frac{2 \alpha U_\infty}{D} = 0.002\alpha
alpha body omega
0.5 0.0010
1.0 0.0020
1.6 0.0032
2.0 0.0040

Primary matrix

This is the recommended main validation set.

Case Re alpha Role
K1 100 0.5 low-rotation lift trend check
K2 100 1.0 strongest hard anchor
K3 60 1.6 low-Re suppression classification
K4 100 2.0 mid-Re suppression classification
K5 160 2.0 high-Re suppression classification

Optional baseline if needed for debugging or plots:

Case Re alpha Status
K0 100 0.0 optional

This matrix covers:

  • one periodic low-rotation trend point
  • one exact hard anchor with full force data
  • suppression behavior at low, medium, and high Reynolds number

How to judge each case

K1

Use K1 to check the low-rotation lift law.

Target:


\overline{C_L} \approx -2.48 \times 0.5 \approx -1.24

This is a trend check, not a strict fluctuation-amplitude benchmark.

K2

Use K2 as the hard benchmark case.

Preferred agreement band:

Quantity Preferred band
St within 3 percent
mean C_L within 4 percent
mean C_D within 5 percent
C'_L within 8 percent
C'_D within 10 percent

K3 to K5

Use K3 to K5 as suppression classification cases.

Primary success signature:

  • C'_L collapses toward zero in the final window
  • no sustained alternating wake remains
  • flow classification agrees with the expected suppressed regime

These are not exact threshold-fitting cases. Do not over-interpret a small residual fluctuation if the wake is otherwise clearly in the suppressed class.

Optional threshold bracket check

If later you want a more explicit threshold study, use pairs around alpha_L rather than a single point on the boundary.

Recommended pairs:

Re Lower point Upper point
60 1.3 1.5
100 1.7 1.9
160 1.8 2.0

These should still be treated as regime-location checks, not hard force targets.

Run policy

Case type Total steps Warmup Statistics
K1 and K2 180000 to 220000 first 40 percent last 60 percent
K3 to K5 220000 to 280000 first 50 percent last 50 percent

The final statistics window should contain at least 20 shedding periods whenever the case remains periodic.

TRT re-entry rule

Bring TRT back in this order:

  1. K2 only
  2. if K2 is stable and credible, run K1
  3. only then run K3 to K5

This prevents TRT from expanding the matrix before the hard anchor is trustworthy.

Deliverables

For each collision model, deliver:

  • one table of run settings including collision, inlet scheme, wall type, Re, alpha, nu, and body omega
  • one CSV per run with force history
  • selected field images for wake classification
  • one summary table with mean C_D, mean C_L, C'_D, C'_L, and St
  • one short note stating whether suppression behavior matches [Kan99b]
Collision Wall Inlet Status
SRT free slip equilibrium primary
TRT free slip regularized primary if K2 is stable
MRT free slip regularized or zou_he_local primary

MRT-only runner mapping

The current executable entrypoint is tests/run_kan99b_rotating_cylinder.py, and this round uses MRT-only scheduling:

  • primary matrix is K1-K5 with MRT + regularized inlet
  • one extra control run is added at K2 with MRT + zou_he_local
  • all runs keep uniform inlet profile, free_slip y-wall, neq_extrap outlet
  • output rows include case_id, variant, collision, inlet_scheme, grid, steps, burn_in, St, St_error_pct (for K2), and force metrics
  • K2 gate uses this document's per-metric tolerances for St, mean C_L, mean C_D, C'_L, C'_D

Example commands:

conda run -n pycuda_3_10 python tests/run_kan99b_rotating_cylinder.py \
  --json-out tests/output/kan99b_validation/summary_runs.json

conda run -n pycuda_3_10 python tests/run_kan99b_rotating_cylinder.py \
  --case K2 --save-vorticity

Reference

[Kan99b] S. Kang, H. Choi, and S. Lee, “Laminar flow past a rotating circular cylinder,” 1999.