Skip to content

octavi parser#2500

Draft
enssow wants to merge 10 commits into
ecmwf:developfrom
enssow:sorcha/dev/2379
Draft

octavi parser#2500
enssow wants to merge 10 commits into
ecmwf:developfrom
enssow:sorcha/dev/2379

Conversation

@enssow

@enssow enssow commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Description

Code to export to CF-compliant GRIB, further extending to octavi format

Issue Number

Closes #2379

Checklist before asking for review

  • I have performed a self-review of my code
  • My changes comply with basic sanity checks:
    • I have fixed formatting issues with ./scripts/actions.sh lint
    • I have run unit tests with ./scripts/actions.sh unit-test
    • I have documented my code and I have updated the docstrings.
    • I have added unit tests, if relevant
  • I have tried my changes with data and code:
    • I have run the integration tests with ./scripts/actions.sh integration-test
    • (bigger changes) I have run a full training and I have written in the comment the run_id(s): launch-slurm.py --time 60
    • (bigger changes and experiments) I have shared a hegdedoc in the github issue with all the configurations and runs for this experiments
  • I have informed and aligned with people impacted by my change:
    • for config changes: the MatterMost channels and/or a design doc
    • for changes of dependencies: the MatterMost software development channel

@enssow enssow marked this pull request as draft June 12, 2026 14:45
@github-actions github-actions Bot added the eval anything related to the model evaluation pipeline label Jun 12, 2026
@enssow enssow mentioned this pull request Jun 26, 2026
4 tasks
@enssow

enssow commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

The operational version of AROME uses the forecasts of the operational ARPEGE model as the initial and boundary conditions. AROME runs locally with 2.5 km of horizontal resolution and 60 vertical model levels, for a 48 hours forecast range, in the following domains:

Azores: from 35.73ºN to 40.85ºN in latitude, and 24.08ºW to 33.08ºW in longitude
Madeira: from 31ºN to 34.74ºN in latitude, and 14.8ºW to 18.98ºW in longitude
Iberian Peninsula: from 34.01ºN to 44.79ºN in latitude, and 1.21ºW to 12.79ºW in longitude

  • earthkit_regrid only goes down to 0.1 (reuse verif regridding?)
  • region bbox added (testing needed)

@enssow

enssow commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

confirmed regions works correctly with netcdf (same workflow for the grib)

image

I think regridding to 0.025 is currently not working due to how sparse the data is?

@enssow

enssow commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

regridding to a very fine resolution now works, is this expected to have these streaks?
image

@enssow

enssow commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

tested on SANTIS with id=ukxlqsbd; uv run export --run-id $id --output-dir ../$id --format grib --stream ERA5 --samples 1 --fsteps 1 2 --regrid-type regular_ll --regrid-degree 0.025 --region 35.73 40.85 24.08 33.08

@enssow

enssow commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

can decide at a later date but it could be possible to first interpolate with with eartgkit to it's smallest resolution 0.1 and then interpolate further to 0.025.
image
this is 0.25 degrees with earthkit

@enssow

enssow commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

checking outputs with iris seems to show there are duplicates being formed:

[/data/apps/sss/environments/default-2026_06_10/lib/python3.12/site-packages/iris/common/mixin.py:212](https://file+.vscode-resource.vscode-cdn.net/data/apps/sss/environments/default-2026_06_10/lib/python3.12/site-packages/iris/common/mixin.py:212): FutureWarning: You are using legacy date precision for Iris units - max precision is seconds. In future, Iris will use microsecond precision - available since cf-units version 3.3 - which may affect core behaviour. To opt-in to the new behaviour, set `iris.FUTURE.date_microseconds = True`.
  warnings.warn(message, category=FutureWarning)
0: air_pressure / (Pa)                 (time: 2; latitude: 206; longitude: 361)
1: air_pressure/ (Pa)                 (time: 2; latitude: 206; longitude: 361)
2: air_temperature/ (K)               (time: 2; latitude: 206; longitude: 361)
3: air_temperature / (K)               (time: 2; pressure: 13; latitude: 206; longitude: 361)
4: dew_point_temperature/(K)         (time: 2; latitude: 206; longitude: 361)
5: geopotential/ (m2 s-2)             (time: 2; pressure: 13; latitude: 206; longitude: 361)
6: specific_humidity / (kg kg-1)       (time: 2; pressure: 13; latitude: 206; longitude: 361)
7: surface_temperature/ (K)           (time: 2; latitude: 206; longitude: 361)
8: x_wind/ (m s-1)                    (time: 2; latitude: 206; longitude: 361)
9: x_wind / (m s-1)                    (time: 2; pressure: 13; latitude: 206; longitude: 361)
10: y_wind/ (m s-1)                    (time: 2; latitude: 206; longitude: 361)
11: y_wind / (m s-1)                    (time: 2; pressure: 13; latitude: 206; longitude: 361)

potentially u10 and u being called the same etc. but input from MeteoFrance needed for testing the gribs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

eval anything related to the model evaluation pipeline

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

implement the export parser for OCTAVI (MeteoFrance)

1 participant