Verification · 2026-09-11
This is a compiler/port check, not climate-model validation or convergence testing. No browser UI or physical iPhone test was performed. Timing below is from this Linux execution environment and must not be read as a promise of phone performance.
Original solver, display detail and cloud shell · 2026-09-11
Both display settings now use the original T21 64 × 32 climate solver and 30-minute steps. The T42 engine has been removed. High res doubles the rendered terrain, map, globe and cubemap face dimensions while physical fields retain 2,048 samples. Resolution changes still reset the run and replay.
Twenty-one application, cloud, terrain and world-generation checks passed. These include reset during loading, running, pause and replay; both display settings and complete physical exports; 5,000 seeded worlds plus 250 High-display draws; terrain-noise agreement and cubemap seams.
High-res cloud detail splits each original climate cell into four display cells. Thresholded RFL noise controls their appearance while their average coverage matches the model value within 1e-7. Zero coverage stays clear and full coverage stays opaque. The original climate fields are unchanged. Drift follows the displayed simulation time.
Pixel-array checks at both render sizes confirm a separate cloud shell extending to 1.14 times the ground radius, clear holes showing the background, and no cloud decoration on scientific layers. The two High-res globe depth buffers use 2 MiB, and the small cloud detail arrays use about 41 KiB. These are buffer sizes, not total device memory measurements.
The palette sprite can be selected and edited without resetting a run. BMP opening and BMP/XPM round trips preserve all twenty colors and their row order; invalid dimensions and transparent palette pixels are rejected. PNG opening/saving uses native browser APIs and has not been exercised in a browser during this update.
Five loader/worker checks passed, including identical original-engine downloads for both display choices and rejection of a compiled-grid mismatch before output allocation. A real run with High display requested completed 48 steps (one Earth day) at 1,800 seconds per step, with 22 finite field updates and pause/resume in 2.7 seconds. Worker networking was disabled; land masks and Gaussian coordinates matched the original terrain exactly.
Application checks used represented DOM/canvas interfaces in a JavaScript VM, with direct pixel-array checks for cloud geometry. No browser visual or physical phone testing was performed. The shell size and fine cloud detail are artistic, not modeled cloud altitude or resolved weather.
Native comparison · 2026-09-10
Compiled the same adapted model with GCC/GFortran 13.2.0 (native x86-64) and r-wasm Flang 21.1.8 + Emscripten + the descriptor-compatible runtime (WebAssembly). Default single-precision computation, T21L10, same boundary data and namelists: 1367 W/m², 360 ppm CO₂, one Earth day rotation, 30-minute timesteps, KICK=0. The native build includes the same calendar-call and hurricane initialization repairs.
After 48 timesteps (one simulated Earth day), across all 2,048 grid cells:
| Field | RMS difference | Maximum absolute difference |
|---|---|---|
| Surface air temperature | 0.00063435 K | 0.00534058 K |
| Total cloud fraction | 0.00015867 | 0.00484091 |
| Lowest-level eastward wind | 0.00032827 m/s | 0.00583076 m/s |
| Lowest-level northward wind | 0.00025756 m/s | 0.00451183 m/s |
| Surface pressure | 0.01747355 Pa | 0.30468750 Pa |
At the first timestep, temperature RMS difference was 0.00001723 K. The two builds agreed on elapsed steps, 1,800-second timestep, and shutdown flag. Small differences are expected across compilers; chaotic weather can diverge over long integrations. This check is not proof of full physical equivalence.
Worker integration
Executed the website's worker and generated engine in a JavaScript VM with the browser worker interfaces represented locally and real bundled files served through the fetch adapter. This tests computation and messaging, not browser layout or a particular browser engine.
• Default ten-day run completed all 480 timesteps with finite output fields.
• Temperature range at completion: 227.51–300.16 K; cloud fractions: 0–1.
• Pause at step 12 held the model state; resume completed the run.
• 214 field updates; approximately 19.7 seconds of wall time on this test machine.
• Separate one-day experiment with 1500 W/m², 800 ppm CO₂, and two-day rotation
completed successfully and produced different results from the default.
• Invalid configurations were rejected; stellar-flux, CO₂, and rotation controls
were checked against their generated Fortran namelists.
• JavaScript syntax and local public asset references were checked.
• WebMCP is feature-detected; no supported browser context was available to validate
registration. It is optional and ordinary UI operation does not depend on it.
Limits
Long climate equilibration, the full parameter range, long-run energy balance, all browser engines, memory limits, mobile suspension, and iPhone performance have not been validated. Cold-start transients can be strong. JSON exports contain only the displayed sampled fields, not a complete history or a restart checkpoint.
Constrained random worlds and extreme surface fields
5,000 seeded random selections all chose a supported model and passed their coupled constraints. All eight classes occurred within two percentage points of their configured probabilities. The capability matrix contains three ExoPlaSim and nine simplified surface-estimate combinations; other manual combinations remain appearance-only.
Extreme estimates produced finite surface temperatures and nonnegative pressures. Their discrete energy budget closed to relative error below 1e-10 before conversion to Float32 arrays. Endpoint sampling, bounded fallback references, gas-condensation screens and temperature limits passed. Uncalculated cloud, wind and air-temperature fields remain unavailable.
The actual ExoPlaSim engine completed the default ten-day run, plus one-day runs at the cold random boundary (1050 W/m², 400 ppm CO₂, 0.8-day rotation) and warm random boundary (1500 W/m², 300 ppm CO₂, three-day rotation). All produced finite fields and supported pause/resume with worker networking disabled.
Ten tests passed across the generator/surface and engine suites. JavaScript syntax, HTML control IDs and local links were checked. No browser UI or physical phone test was performed. These checks do not validate extreme climate predictions or guarantee long-run model stability. Read the surface model’s assumptions and limits.
RFL terrain, cubemap and playback · 2026-09-11
The real Fortran engine completed ten days over the default RFL continents and one day over a different seed with a 5 km relief scale. Its output land mask matched the generated terrain exactly. Higher terrain reduced surface pressure: their correlation in the latter run was −0.922.
The twelve engine/world checks and five terrain, format and replay checks passed. The terrestrial noise matches original compiled RFL C samples within 1e-7. Palette edits round-trip through BMP and XPM. All twelve cubemap edges and eight corners share matching directions, and replay keeps bounded, chronological snapshots.
At the time of this earlier check, cubemap faces projected the same 64 × 32 fields. The current update above keeps the original solver and adds display detail only. No browser UI or physical phone test was performed. Arbitrary terrain and long-run climate stability remain unvalidated.