A growing curve becomes convincing when different checks explain the same saved field: mesh refinement tests the spatial derivative, time-step refinement tests the advance in time, and stress supplies the energy that the field gains. Open the companion linear-channel-replay-public.zip beside this guide. We will follow its returned cases and field frames, read the saved eleven-case result, and identify exactly what its forty-five checks establish.
The archive has SHA256 680ce195877487db5520cde1b4233fea89e91e46589daca562045feff24c4ef9. The preceding chapters define the local axes, velocity-unit magnetic disturbances, four channel equations, and centred spatial derivative. Here the density and box length are one in the saved units; the rotating cases use Ω=1/T0. We inspect existing records and analytic limits. No new evolution is needed to follow the examples.
Begin with the saved fields and the original result
The archive's manifest.json identifies the other 299 members by byte count and SHA256. A matching fingerprint tells you that a file is the saved file; it does not by itself tell you that the physics is right. The saved records/receipt.json.gz contains eleven cases, forty-five predeclared checks, the original limits, actual values and status. Two of those checks bound resources. Read the actual numerical errors; the final status records which comparisons met their stated limits.
Inside each named case, numbered compressed JSON files contain the time, all four field arrays, energy and stress diagnostics, accumulated shear work, and four fundamental projections. case-returned.json.gz contains the returned case result before its comparisons. The recorded author interpreter was Python 3.14.3. The archive also provides a standard-library reader, source/inspect_saved.py, that verifies the existing members and recomputes energy and stress from all 277 field frames. That is an inspection, not a fresh simulation or a promise of bitwise equality on another computer.
The independent reader sums the actual arrays. This checks that the displayed diagnostics belong to their fields. It does not rerun the derivative or recover every intermediate time stage from the relatively sparse saved frames. Keep that distinction when following the work check below.
Separate spatial error from temporal error
First inspect spatial-64, spatial-128 and spatial-256. They use the same continuum growing seed, K=0.6/T0, final time 3T0, and step 0.0025T0. Their projected vector errors shrink by factors 3.999838 and 3.999960 when the spacing halves. That is the spatial comparison developed in the preceding chapter.
Now change the question: how accurately does the time integrator advance the already differenced spatial equations? Hold the mesh at32 samples. Its fundamental wave has
The three temporal cases use the eigenvector and exact exponential of this grid equation as their reference. Comparing instead with the original continuum rate would leave a spatial error even as the time step approached zero. That remaining error could hide the time integrator's order. The returned referenceKind is semidiscrete-eigenmode for the three temporal cases and continuum for the other eight. expectedReferenceProjection holds the selected reference vector. Read those fields together; the setup in source/qualify.py specifies the initial vector and exponential.
Time step divided by the time unit
Steps to the common final time
Actual projected vector error
0.02
150
5.00868381×10−10
0.01
300
3.14769716×10−11
0.005
600
1.97255936×10−12
Dividing each coarse error by the next fine error gives 15.912216 and 15.957427. In a fourth-order range, halving the step predicts a factor 24=16. The observed ratios support that interpretation. The smallest error is already close enough to floating-point effects that further refinement needs a fresh comparison; endless division by sixteen is not a measured result.
Both panels use the same three 32-sample temporal cases. The upper points compare saved projections with the exact grid-mode reference; the dashed line is a fourth-order reference anchored to the coarsest result. The lower points compare independently calculated endpoint energy with accumulated stage-stress work, normalized by initial energy. The dotted lower line is the original work-check limit. Both errors are dimensionless; their different definitions set their numerical scales.
Worked example: what fourth order predicts
For a pure growing grid eigenmode, one classical fourth-order Runge–Kutta step multiplies its amplitude by
R(z)=z=1+z+2z2+6z3+24z4,shΔt.
The exact multiplier is ez. Their first missing term is z5/120. Over a fixed duration, the number of steps grows as the inverse step size; the accumulated relative amplitude error is therefore of fourth order in the step size. The factor sixteen therefore follows from the method's expansion.
The coarsest measured error predicts about 3.1304×10−11 after one halving. The actual value is 3.1477×10−11. A leading-order prediction need not match all higher-order terms. It does predict the large reduction and its scale. The comparison uses an analytic multiplier and the existing spatial records, with zero new evolution steps.
Follow the work independently of endpoint energy
Define the total outward stress of a saved field as Th=TRe,h+TMax,h. The continuous-time grid equations obey
dtdEh=qΩTh.
The stored work was accumulated from the stress of the four Runge–Kutta stage fields, not assigned from the final energy difference. If Y1,…,Y4 are those full arrays in one step, its contribution is
Energy per volume is read separately from the squared actual field samples. The comparison is independent of an endpoint subtraction used to define work, though both quantities use the same numerical field history. The original residual is
rW=Eh(0)∣Eh(tf)−Eh(0)−W(tf)∣.
For the coarse temporal case, the saved dimensionless energy and work are approximately
The hat means division by the reference energy density ρ0L02/T02, with ρ0 the chosen reference density. The unrounded saved numbers give rW=3.28304×10−8, below the predeclared 10−7 limit. Do not subtract the displayed rounded values and expect to recover the last digits of such a small residual. The fine temporal case gives 1.29096×10−10. These results test finite-step work consistency; they are not exact energy conservation to round-off.
Rigid rotation provides a different check. Its late saved stress is nonzero, but q=0, so shear power and accumulated shear work vanish. The ordinary perturbation energy stays constant. The zero-field Keplerian test instead checks the epicyclic invariant ux2+4uy2, not constant ordinary kinetic energy. Keeping those two limits separate helps expose a wrong rotational source term. Stone and Gardiner discuss artificial epicyclic growth in Section III of their pinned paper; their conserving time scheme is different from this channel's Runge–Kutta method.
Read zero divergence in the geometry actually tested
At uniform density, conversion from velocity units to physical magnetic units multiplies every component by a constant, so a zero divergence is unchanged. Magnetic divergence sums derivatives of matching components,
∇⋅Bphys=∂xBphys,x+∂yBphys,y+∂zBphys,z.
Here the horizontal components vary only with height, the horizontal directions are homogeneous, and the vertical background field is constant. Each derivative in that expression vanishes. A vertical variation of the radial field does not enter as a radial derivative. The audit copies this same channel into a periodic 3×3×N array and differences the represented field. The maximum is exactly zero in every tested case.
That result checks the representation of these assumptions and periodic indices. It does not exercise a general multidimensional induction equation or qualify constrained transport. Athena's treatment of shearing radial boundaries and magnetic flux is a separate problem described in Stone and Gardiner's Sections IV–V and the official manual. No such boundary remapping is tested by a horizontally homogeneous vertical channel.
Questions to carry to the next calculation
1. A finer time step stops reducing the error against the continuum wave. What should you test? Hold the mesh fixed and compare with its own exact grid-mode solution. A spatial error can remain after the temporal error becomes small. Then refine the mesh separately while holding the physical initial seed fixed.
2. Someone stores work by setting it equal to final energy minus initial energy. What would a tiny work residual demonstrate? Only the assignment itself. An informative comparison needs a separately accumulated source, here the stage stresses, and an independently evaluated energy from field samples.
3. A divergence check is zero for every saved channel. May it certify arbitrary three-dimensional MHD? No. Ask which derivatives were nonzero in the test. This construction has no horizontal gradients and no varying vertical magnetic component; it does not challenge the cancellations a general induction solver must preserve.
4. What does the complete original result let you reuse? Eleven specified linear periodic cases, their actual arrays, fixed comparisons and declared tolerances. To evaluate another calculation, record its units and geometry, identify its reference, vary space and time separately, compare transport with energy gain, and choose limits that remove the mechanism. Nonlinear saturation and a global accretion rate require additional models and evidence.
Sources
The primary local equations and linear growth relation are in Balbus and Hawley 1991, ApJ 376, 214–222, printed 216–218, equations 2.2, 2.5–2.9 and 2.13–2.14b. Primary scan. Stone and Gardiner, arXiv:1006.0139v1, Sections II–III, especially equations 11–18 and Section III.2, discuss local source terms, epicyclic energy and work; Sections IV–V treat the additional boundary and magnetic-flux problems. Pinned primary source. The official Athena++ shearing-box manual distinguishes radial shearing-periodic, orbital periodic and independently chosen vertical boundaries.
All numerical values here are observations of the pinned linear-channel-replay-public.zip, its original returned cases and 277 field frames. The checks described here reread saved fields and evaluate analytic expressions. They run no Athena calculation, add no evolution step and make no nonlinear-MHD acceptance claim.