# MS1101 global layer-grid protocol v3

Registered before any v3 meshing or solver execution on 27 September 2026. Protocol v2 produced a rejected N=28 case with maximum skewness 4.737525193 and four highly skew faces, despite 96.02% face-count extrusion. No quality threshold or mesh control is relaxed in v3.

## Question and fixed source

Test whether a predeclared family can produce at least three acceptable global layered meshes and, only then, support a common solver comparison. Generate every candidate fresh from `/home/peakadmin/.cache/ms1101-gridwake/blade-wake-medium`, whose source hashes are captured in each provenance file. Keep geometry, 0.84 m domain, rotor/wake/surface refinement levels 5/3/2, mesher/shrinker, mesh-quality controls, physical conditions, wall treatment, solver equations, discretization schemes, and acceptance gates fixed.

## Candidate family

Run N=30, 32, 36, and 44 cells per axis. The nominal base spacing is h=0.84/N, with actual unequal refinement ratios recorded for any later analysis. Request eight layers, expansion ratio 1.2, first height `50 µm × 32/N`, minimum thickness equal to 10% of first height, and `displacementMotionSolver`. Do not copy old meshes or solved fields. Preserve all candidate logs, successful or failed, plus input and mesh hashes.

## Predeclared construction gate

A candidate passes only if `checkMesh` ends with `Mesh OK.`, the final cell count is at most 3,000,000, and at least 95% of requested blade faces receive some extrusion. Preserve and report face-count coverage, the mean/requested layers and reported thickness. Do not change controls or thresholds in response to a failed case. Run all four candidates as the registered family. If fewer than three pass, stop and register another protocol before further candidates.

## Solver and convergence gate

All four construction candidates pass, so solve all four from their original uniform time-zero fields with OpenFOAM 2512 `simpleFoam`, steady SIMPLE, 8 Open MPI 4.1.6 ranks, Scotch decomposition, and a fixed `endTime=6000` (steady SIMPLE iteration index, not physical seconds). The physical model, wall conditions, schemes, relaxation and linear solver settings are inherited unchanged from the same medium source case. Write force/moment histories every iteration and y+ every 50 iterations. Allow up to 5,400 wall-clock seconds per candidate; no early stopping. Record hashes for prepared inputs, execution, mesh checks, iteration history, residual-window result, thrust and torque plateau/range, and y+ from the final field.

Each solver candidate qualifies for grid comparison only if the run reaches `End` at iteration 6000, the mesh gate still passes, every one of the final 100 SIMPLE iterations has initial residual <1e-5 for Ux, Uy, Uz, p, k, and omega, and the final 100-iteration total-thrust and resisting-torque histories both have half-window mean change <1% and peak-to-peak range <2%. y+ must be from iteration 6000. Keep failed and interrupted cases but exclude them from any grid-convergence fit. If any candidate fails convergence, do not compare it; investigate and register a common revised solver protocol before repeating comparable cases.

Three passing solves do not automatically qualify for Richardson extrapolation or GCI. Examine thrust and torque separately for a monotonic sequence and evidence that the asymptotic range is credible; account for the unequal h ratios. If those assumptions are not supported, publish grid sensitivity only and withhold GCI. This work does not establish physical validation against the ENOLA experiment.

## References

- [NASA NPARC: Examining Spatial (Grid) Convergence](https://www.grc.nasa.gov/www/wind/valid/tutorial/spatconv.html)
- [Celik et al. (2008), Procedure for Estimation and Reporting of Uncertainty Due to Discretization in CFD Applications](https://doi.org/10.1115/1.2960953)
- [OpenCFD: Layer addition in snappyHexMesh](https://doc.openfoam.com/2212/tools/pre-processing/mesh/generation/snappyhexmesh/layers/)
