The MINI cases¶
MINI is a hand-checkable ice sheet: an 11 × 11 grid of 600 km pixels, small enough that the whole state fits on a screen and a wrong answer is visibly wrong. It exists to catch mistakes that a full ice sheet would hide in its own noise.
cd manual-tests/MINI
python scalars_MINI.py --model MINI1 --exp exp0 # one case
python run_MINI.py # all four, with a summary
Both read their input from the committed test-data/ tree, so they run in a
fresh checkout with nothing else set up. Output goes to
manual-tests/MINI/output/.
The cases¶
Two grids and two experiments:
Grid |
Size |
Origin |
Notes |
|---|---|---|---|
MINI1 |
11 × 11 |
−3,040,000 m |
the primary test grid |
MINI0 |
12 × 12 |
−3,340,000 m |
offset by half a cell, for CDO remapping tests |
exp0ice loss that includes partially floating cells, so the grounding line falls inside a cell and the two grids resolve it differently.
expggrounded ice only. With no floating ice and no grounding-line migration the three sea-level methods are describing the same physics, so they must agree exactly – which makes this the sharpest check in the suite. Any disagreement is a bug in one of them.
The pair of grids is what makes remapping testable: the same ice on a grid
offset by half a cell must give the same total ice volume change, while VAF
may legitimately differ by a few per cent where the grounding line is
unresolved. tests/test_mini_smoke.py asserts both.
How MINI differs from the real processing¶
scalars_MINI.py is a separate, deliberately simpler script, not a mode of
ismip7-scalars:
the first timestep of the experiment is the reference; there is no separate historical run;
the standard densities from
slc.sl_constantsare used directly, with noparams.nc;area weighting is
dx²directly;it writes the volume diagnostics (
slc_Vtot,slc_Vgr,slc_Vfl) that the full processing does not.
It shares the ismip7_scalars.slc package with the real processing, which is
the part worth cross-checking; the rest is scaffolding around it.
Regenerating the input files¶
manual-tests/MINI/setup/ holds the scripts that built the committed inputs –
derive_exp0.py, check_masks.py, and the CDO/NCO shell scripts for
remapping and grounding. They need CDO and NCO on the path, which is why they
are not part of the test suite. The files they produce are committed under
test-data/, so nothing routine needs them.