Bris kjørte gjennom på fire V100-kort, ett minutt og 51 sekunder, og skrev to filer: 45 MB over det nordiske domenet og 40 MB globalt. Det er første gang modellen har fått initialbetingelser den kan lese, satt sammen cutoutet og regnet ferdig.
Tallene består alle sjekkene. Men tall alene sier lite om et værfelt er riktig, så det interessante er bildene.
Det nordiske domenet
Fire paneler: temperatur, havnivåtrykk, vindstyrke og nedbør, alle på det trimmede MEPS-rutenettet, 849 × 969 punkter à 2,5 km.

Temperaturen viser Skandinavia tydelig. Kjølen ligger som et kaldt belte langs grensen mellom Norge og Sverige, mens Atlanterhavet i vest og kontinentet i sørøst er varmere. Over land er strukturen fin og flekkete, over hav glatt. Det er nøyaktig slik en 2,5 km-modell skal oppføre seg: havet har jevn temperatur, landet har terreng, snødekke og lokale forskjeller.
Trykket faller jevnt fra rundt 1033 hPa i sørvest til 1005 i nordøst. Ingen kanter, ingen hopp — bare et synoptisk mønster.
Vinden er det panelet som sier mest. Sterk over Atlanterhavet, svak over land, med en skarp kontrast langs kysten. Det er friksjon: vind bremses over ru overflater og løper fritt over hav. Langs fjellkjeden ligger orografisk struktur. Og vinden er sterkest der trykkgradienten er tettest, altså geostrofisk balanse.
Nedbøren ligger i bånd nordvest over Norskehavet, konsistent med lavtrykket i nordøst, og er tørr over Østersjøen og kontinentet.
Til sammen: dette er et værfelt, ikke støy som tilfeldigvis ligger innenfor rimelige intervaller.
Det globale domenet

Her er det ett trekk som ser ut som en feil og ikke er det.
Kontinentene trer fram i temperaturfeltet — Antarktis kaldt, Sahara og Australia varme, Himalaya som et kjølig felt, Grønland kaldt. Trykket har normale synoptiske virvler. Vinden viser passatbeltene og de kraftige vestavindene over Sørishavet.
Men over Skandinavia ligger et kantet område som skiller seg ut i alle fire panelene.
Det er ikke en feil i modellen. Cutoutet fjerner 5 480 globale punkter under LAM-domenet — jeg leste tallet ut av grafen i sjekkpunktet før datasettene ble bygget. Når det globale feltet interpoleres til 0,25° grid, finnes det ingen data der å interpolere fra, og resultatet blir artefakter.
Det er nettopp derfor modellen skriver to filer. Over Skandinavia skal man bruke den nordiske.
Hva bildene beviser, og hva de ikke gjør
De bekrefter en god del:
- rutenettene stemmer med grafen i sjekkpunktet, ellers ville geografien vært forskjøvet
trim_edgetraff — det nordiske feltet er 849 × 969- enhetene er riktige, ellers ville temperaturen ikke vært i kelvin og trykket ikke i pascal
- land–hav-kontrasten i vinden viser at landmasken kom med
- terrenget i temperaturfeltet viser at orografien ligger der den skal
Men det er én ting bildene i prinsippet ikke kan avsløre, og det er ubehagelig presist den konverteringen jeg er minst sikker på.
MEPS lagrer vind langs Lambert-projeksjonens akser, mens modellen forventer jordrelative komponenter. Rotasjonen mellom dem måtte gjøres utenfor anemoi, fordi alle de fysiske filtrene i anemoi-datasets viste seg å være GRIB-only. Den rotasjonen er bare testet mot et syntetisk rutenett.
Og feltet som plottes er vindstyrke, altså √(u² + v²). Den størrelsen er invariant under rotasjon. Et vindfelt dreid tjue grader gir nøyaktig samme bilde.
Så alt som ser riktig ut i vindpanelet — friksjonskontrasten, orografien, at det følger trykket — ville sett like riktig ut med feil rotert vind.
Rotasjonen, kontrollert
Forsøket på å skrive 10u og 10v til NetCDF-fila mislyktes. Tre kjøringer på rad døde i to_netcdf med RuntimeError: NetCDF: HDF error, hver med ulik lengde gjennom variabellista — den siste skrev bare temperatur og trykk, og den globale fila ikke i det hele tatt. Disken hadde 274 TB ledig, så det var ikke plass det sto på.
Men prognosen var uansett feil sted å lete. Rotasjonen påføres datasettet, ikke prognosen — så den kan kontrolleres der, uten modellkjøring, uten GPU og uten kø.
Kontrollen er geostrofisk balanse: vinden skal stå tilnærmet vinkelrett på trykkgradienten, med lavtrykk til venstre for strømmen på nordlige halvkule. Målt over punktene der gradienten er sterk nok til at balansen betyr noe, ga datasettet −74,5°.
Og her holdt jeg på å konkludere feil vei. Skriptet mitt forventet +90° og meldte «164 grader fra forventning», som så ut som en mislykket rotasjon. Men fortegnet i forventningen var snudd. Jeg konstruerte et rent geostrofisk felt og målte det med nøyaktig samme formel, i stedet for å resonnere om fortegnet — og da ga det −90°.
Avviket er altså 15,5°, ikke 164. Og 15,5° er nøyaktig det man venter: overflatevind er ikke rent geostrofisk, friksjon dreier den mot lavtrykk med 10–20° over hav og mer over land.
Rotasjonen er riktig. Den siste ukontrollerte konverteringen i kjeden er dermed verifisert mot ekte data i stedet for et syntetisk rutenett.
Lærdommen er verdt å ta med: et fortegn man resonnerer seg fram til er lett å snu, og en verifikasjon med feil forventning er verre enn ingen — den peker selvsikkert på feil sted. Å konstruere et tilfelle med kjent svar og måle det tar to minutter.
Status
Hele kjeden er nå kontrollert: rutenettene mot grafen i sjekkpunktet, trim_edge, enhetene, landmasken, orografien, duggpunkt- og omega-konverteringene mot kjente verdier, og vindrotasjonen mot geostrofisk balanse.
Forbeholdet står likevel: dette er initialisert fra ERA5, ikke fra operasjonell analyse. Feltene er fysiske, men ingen tall herfra hører hjemme i en verifikasjon.
