diff --git a/example.danra.yaml b/example.danra.yaml index 19fb07b..0f5235c 100644 --- a/example.danra.yaml +++ b/example.danra.yaml @@ -24,10 +24,6 @@ inputs: altitude: sel: [100, ] units: m - v: - altitude: - sel: [100, ] - units: m dim_mapping: time: time state_feature: @@ -37,13 +33,21 @@ inputs: grid_index: method: flatten dims: [x, y] + subsetting: + type: latlon-bbox + coordinates: + # give WESN bounding box around Denmark in degrees + wesn: [6, 18, 52, 60] target_architecture_variable: state - danra_surface: - path: ~/Desktop/mldev/single_levels.zarr + era_height_levels: + path: ~/Desktop/mldev/era5.zarr dims: [time, x, y] variables: - - pres_seasurface + u: + altitude: + sel: [100, ] + units: m dim_mapping: time: time grid_index: @@ -52,4 +56,11 @@ inputs: forcing_feature: method: stack_variables_by_var_name name_format: f"{var_name}" - target_architecture_variable: forcing + subsetting: + method: latlon-bbox-frame + coordinates: + # give WESN bounding box around Denmark in degrees + wesn: [6, 18, 52, 60] + # width in degrees + latlonwidth: 1.0 + target_architecture_variable: state diff --git a/notebooks/lateral-boundaries.ipynb b/notebooks/lateral-boundaries.ipynb new file mode 100644 index 0000000..b1eb1bf --- /dev/null +++ b/notebooks/lateral-boundaries.ipynb @@ -0,0 +1,9894 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr\n", + "import matplotlib.pyplot as plt\n", + "import cartopy.crs as ccrs\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "fp_danra = \"/dmidata/projects/cloudphysics/danra/data/v0.3.0/height_levels.zarr/\"\n", + "url_era5 = \"gs://gcp-public-data-arco-era5/ar/1959-2022-full_37-1h-0p25deg-chunk-1.zarr-v2\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
<xarray.Dataset>\n", + "Dimensions: (time: 552264, lat: 721,\n", + " lon: 1440, level: 37)\n", + "Coordinates:\n", + " * lat (lat) float32 90.0 ... ...\n", + " * level (level) int64 1 2 ... 1000\n", + " * lon (lon) float32 0.0 ... 3...\n", + " * time (time) datetime64[ns] 1...\n", + "Data variables: (12/31)\n", + " 10m_u_component_of_wind (time, lat, lon) float32 dask.array<chunksize=(48, 721, 1440), meta=np.ndarray>\n", + " 10m_v_component_of_wind (time, lat, lon) float32 dask.array<chunksize=(48, 721, 1440), meta=np.ndarray>\n", + " 2m_temperature (time, lat, lon) float32 dask.array<chunksize=(48, 721, 1440), meta=np.ndarray>\n", + " angle_of_sub_gridscale_orography (lat, lon) float32 dask.array<chunksize=(721, 1440), meta=np.ndarray>\n", + " anisotropy_of_sub_gridscale_orography (lat, lon) float32 dask.array<chunksize=(721, 1440), meta=np.ndarray>\n", + " geopotential (time, level, lat, lon) float32 dask.array<chunksize=(48, 37, 721, 1440), meta=np.ndarray>\n", + " ... ...\n", + " total_precipitation (time, lat, lon) float32 dask.array<chunksize=(48, 721, 1440), meta=np.ndarray>\n", + " type_of_high_vegetation (lat, lon) float32 dask.array<chunksize=(721, 1440), meta=np.ndarray>\n", + " type_of_low_vegetation (lat, lon) float32 dask.array<chunksize=(721, 1440), meta=np.ndarray>\n", + " u_component_of_wind (time, level, lat, lon) float32 dask.array<chunksize=(48, 37, 721, 1440), meta=np.ndarray>\n", + " v_component_of_wind (time, level, lat, lon) float32 dask.array<chunksize=(48, 37, 721, 1440), meta=np.ndarray>\n", + " vertical_velocity (time, level, lat, lon) float32 dask.array<chunksize=(48, 37, 721, 1440), meta=np.ndarray>
<xarray.Dataset>\n", + "Dimensions: (altitude: 1, y: 589, x: 789, time: 29120)\n", + "Coordinates:\n", + " * altitude (altitude) int64 100\n", + " lat (y, x) float64 dask.array<chunksize=(256, 256), meta=np.ndarray>\n", + " lon (y, x) float64 dask.array<chunksize=(256, 256), meta=np.ndarray>\n", + " * time (time) datetime64[ns] 1990-09-01 ... 2000-08-18T21:00:00\n", + " * x (x) float64 -1.999e+06 -1.997e+06 ... -3.175e+04 -2.925e+04\n", + " * y (y) float64 -6.095e+05 -6.07e+05 -6.045e+05 ... 8.58e+05 8.605e+05\n", + "Data variables:\n", + " r (altitude, time, y, x) float64 dask.array<chunksize=(1, 256, 256, 256), meta=np.ndarray>\n", + " t (altitude, time, y, x) float64 dask.array<chunksize=(1, 256, 256, 256), meta=np.ndarray>\n", + " u (altitude, time, y, x) float64 dask.array<chunksize=(1, 256, 256, 256), meta=np.ndarray>\n", + " v (altitude, time, y, x) float64 dask.array<chunksize=(1, 256, 256, 256), meta=np.ndarray>\n", + "Attributes:\n", + " description: All prognostic variables for 10-year period on reduced levels
<xarray.DataArray '10m_u_component_of_wind' (lat: 721, lon: 1440)>\n", + "dask.array<getitem, shape=(721, 1440), dtype=float32, chunksize=(721, 1440), chunktype=numpy.ndarray>\n", + "Coordinates:\n", + " * lat (lat) float32 90.0 89.75 89.5 89.25 ... -89.25 -89.5 -89.75 -90.0\n", + " * lon (lon) float32 0.0 0.25 0.5 0.75 1.0 ... 359.0 359.2 359.5 359.8\n", + " time datetime64[ns] 1959-01-01\n", + "Attributes:\n", + " long_name: 10 metre U wind component\n", + " short_name: u10\n", + " units: m s**-1
<xarray.Dataset>\n", + "Dimensions: (time: 552264, lat: 721,\n", + " lon: 1440, level: 37)\n", + "Coordinates:\n", + " * lat (lat) float32 90.0 ... ...\n", + " * level (level) int64 1 2 ... 1000\n", + " * lon (lon) float32 0.0 ... 3...\n", + " * time (time) datetime64[ns] 1...\n", + "Data variables: (12/31)\n", + " 10m_u_component_of_wind (time, lat, lon) float32 dask.array<chunksize=(48, 721, 1440), meta=np.ndarray>\n", + " 10m_v_component_of_wind (time, lat, lon) float32 dask.array<chunksize=(48, 721, 1440), meta=np.ndarray>\n", + " 2m_temperature (time, lat, lon) float32 dask.array<chunksize=(48, 721, 1440), meta=np.ndarray>\n", + " angle_of_sub_gridscale_orography (lat, lon) float32 dask.array<chunksize=(721, 1440), meta=np.ndarray>\n", + " anisotropy_of_sub_gridscale_orography (lat, lon) float32 dask.array<chunksize=(721, 1440), meta=np.ndarray>\n", + " geopotential (time, level, lat, lon) float32 dask.array<chunksize=(48, 37, 721, 1440), meta=np.ndarray>\n", + " ... ...\n", + " total_precipitation (time, lat, lon) float32 dask.array<chunksize=(48, 721, 1440), meta=np.ndarray>\n", + " type_of_high_vegetation (lat, lon) float32 dask.array<chunksize=(721, 1440), meta=np.ndarray>\n", + " type_of_low_vegetation (lat, lon) float32 dask.array<chunksize=(721, 1440), meta=np.ndarray>\n", + " u_component_of_wind (time, level, lat, lon) float32 dask.array<chunksize=(48, 37, 721, 1440), meta=np.ndarray>\n", + " v_component_of_wind (time, level, lat, lon) float32 dask.array<chunksize=(48, 37, 721, 1440), meta=np.ndarray>\n", + " vertical_velocity (time, level, lat, lon) float32 dask.array<chunksize=(48, 37, 721, 1440), meta=np.ndarray>
<xarray.DataArray 'lon' (lon: 1440, lat: 721)>\n", + "array([[False, False, False, ..., False, False, False],\n", + " [False, False, False, ..., False, False, False],\n", + " [False, False, False, ..., False, False, False],\n", + " ...,\n", + " [False, False, False, ..., False, False, False],\n", + " [False, False, False, ..., False, False, False],\n", + " [False, False, False, ..., False, False, False]])\n", + "Coordinates:\n", + " * lon (lon) float32 0.0 0.25 0.5 0.75 1.0 ... 359.0 359.2 359.5 359.8\n", + " * lat (lat) float32 90.0 89.75 89.5 89.25 ... -89.25 -89.5 -89.75 -90.0
<xarray.DataArray 't' (altitude: 1, y: 404, x: 360)>\n", + "dask.array<where, shape=(1, 404, 360), dtype=float64, chunksize=(1, 211, 227), chunktype=numpy.ndarray>\n", + "Coordinates:\n", + " * altitude (altitude) int64 100\n", + " lat (y, x) float64 50.68 50.68 50.69 50.69 ... 61.1 61.1 61.1 61.1\n", + " lon (y, x) float64 6.605 6.639 6.673 6.708 ... 17.62 17.67 17.71 17.76\n", + " time datetime64[ns] 1990-09-01T18:00:00\n", + " * x (x) float64 -1.287e+06 -1.284e+06 ... -3.917e+05 -3.892e+05\n", + " * y (y) float64 -4.97e+05 -4.945e+05 -4.92e+05 ... 5.08e+05 5.105e+05\n", + "Attributes:\n", + " level_type: heightAboveGround\n", + " long_name: Temperature\n", + " shortName: t\n", + " stepType: instant\n", + " stepUnits: 1\n", + " typeOfLevel: heightAboveGround\n", + " units: K
<xarray.DataArray '2m_temperature' (lat: 39, lon: 55)>\n", + "dask.array<getitem, shape=(39, 55), dtype=float32, chunksize=(39, 55), chunktype=numpy.ndarray>\n", + "Coordinates:\n", + " * lat (lat) float32 60.75 60.5 60.25 60.0 59.75 ... 52.0 51.75 51.5 51.25\n", + " * lon (lon) float32 5.25 5.5 5.75 6.0 6.25 ... 18.0 18.25 18.5 18.75\n", + " time datetime64[ns] 1990-09-01T18:00:00\n", + "Attributes:\n", + " long_name: 2 metre temperature\n", + " short_name: t2m\n", + " units: K