From 2e9913d5691cbde7b9d18d454f898d651c63d428 Mon Sep 17 00:00:00 2001
From: "voigta80 (Aiko Voigt)" <aiko.voigt@univie.ac.at>
Date: Mon, 21 Oct 2024 21:52:45 +0200
Subject: [PATCH] Adds functions to download era5 and era5-land data

---
 era5-download/download.py           | 59 +++++++++++++++++++++++++++++
 era5-download/era5-download.py      | 55 ++++++---------------------
 era5-download/era5-land-download.py | 53 ++++++--------------------
 3 files changed, 83 insertions(+), 84 deletions(-)
 create mode 100644 era5-download/download.py

diff --git a/era5-download/download.py b/era5-download/download.py
new file mode 100644
index 0000000..95f2636
--- /dev/null
+++ b/era5-download/download.py
@@ -0,0 +1,59 @@
+import xarray as _xr
+import cdsapi as _cdsapi
+
+# location of downloaded files
+_path = "/srvfs/scratch/avoigt/msc-intro-computational-meteorology-exercises-w2024/"
+
+def era5_land(_year, _month):
+    """
+    Downloads era5 land data for a given year and month.
+    """
+    _dataset = "reanalysis-era5-land"
+    _request = {
+        "variable": [
+            "2m_temperature", "surface_solar_radiation_downwards",
+            "10m_u_component_of_wind", "10m_v_component_of_wind"
+        ],
+        "year": _year,
+        "month": _month,
+        "day": [
+            "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12",
+            "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24",
+            "25", "26", "27", "28", "29", "30", "31"],
+        "time": [
+            "00:00", "01:00", "02:00", "03:00", "04:00", "05:00", "06:00", "07:00", "08:00",
+            "09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00",
+            "18:00", "19:00", "20:00", "21:00", "22:00", "23:00"],
+        "data_format": "netcdf",
+        "download_format": "unarchived"
+    }
+    _client = _cdsapi.Client()
+    _client.retrieve(_dataset, _request).download(_path+"/era5-land-"+_year+"-"+_month+".nc")
+
+def era5(_year, _month):
+    """
+    Downloads era5 data for a given year and month.
+    """
+    _dataset = "reanalysis-era5-single-levels"
+    _request = {
+        "product_type": ["reanalysis"],
+        "variable": [
+            "2m_temperature", "surface_solar_radiation_downwards", "surface_solar_radiation_downward_clear_sky",
+            "10m_u_component_of_wind", "10m_v_component_of_wind"
+        ],
+        "year": _year,
+        "month": _month,
+        "day": [
+            "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12",
+            "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24",
+            "25", "26", "27", "28", "29", "30", "31"],
+        "time": [
+            "00:00", "01:00", "02:00", "03:00", "04:00", "05:00", "06:00", "07:00", "08:00",
+            "09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00",
+            "18:00", "19:00", "20:00", "21:00", "22:00", "23:00"],
+        "data_format": "netcdf",
+        "download_format": "unarchived"
+    }
+    _client = _cdsapi.Client()
+    _client.retrieve(_dataset, _request).download(_path+"/era5-"+_year+"-"+_month+".nc")
+
diff --git a/era5-download/era5-download.py b/era5-download/era5-download.py
index f34f017..ffc8d74 100644
--- a/era5-download/era5-download.py
+++ b/era5-download/era5-download.py
@@ -1,49 +1,18 @@
 # call with:
 # /srvfs/home/avoigt/micromamba/envs/intro-comp-meteo-ex-w2024/bin/python3.10 era5-download.py
 
-import xarray as xr
-import cdsapi
+import numpy as np
+import download as download
 
-import cdsapi
+# define list of years 
+ystart=2000;
+yend=2010;
+years=[];
+[years.append(str(year)) for year in np.arange(ystart,yend+1)];
 
-dataset = "reanalysis-era5-single-levels"
-request = {
-    "product_type": ["reanalysis"],
-    "variable": [
-        "10m_u_component_of_wind",
-        "10m_v_component_of_wind",
-        "2m_temperature",
-        "surface_solar_radiation_downward_clear_sky",
-        "surface_solar_radiation_downwards"
-    ],
-    "year": ["1950"],
-    "month": ["01"],
-    "day": [
-        "01", "02", "03",
-        "04", "05", "06",
-        "07", "08", "09",
-        "10", "11", "12",
-        "13", "14", "15",
-        "16", "17", "18",
-        "19", "20", "21",
-        "22", "23", "24",
-        "25", "26", "27",
-        "28", "29", "30",
-        "31"
-    ],
-    "time": [
-        "00:00", "01:00", "02:00",
-        "03:00", "04:00", "05:00",
-        "06:00", "07:00", "08:00",
-        "09:00", "10:00", "11:00",
-        "12:00", "13:00", "14:00",
-        "15:00", "16:00", "17:00",
-        "18:00", "19:00", "20:00",
-        "21:00", "22:00", "23:00"
-    ],
-    "data_format": "netcdf",
-    "download_format": "unarchived"
-}
+# define list of months
+months = ["01","02","03","04","05","06","07","08","09","10","11","12"];
 
-client = cdsapi.Client()
-client.retrieve(dataset, request).download("/srvfs/scratch/avoigt/msc-intro-computational-meteorology-exercises-w2024/era5-1950-01.nc")
\ No newline at end of file
+for year in years:
+    for month in months:
+        download.era5(year, month)
\ No newline at end of file
diff --git a/era5-download/era5-land-download.py b/era5-download/era5-land-download.py
index 5d93fbe..e70f8c1 100644
--- a/era5-download/era5-land-download.py
+++ b/era5-download/era5-land-download.py
@@ -1,47 +1,18 @@
 # call with:
 # /srvfs/home/avoigt/micromamba/envs/intro-comp-meteo-ex-w2024/bin/python3.10 era5-land-download.py
 
-import xarray as xr
-import cdsapi
+import numpy as np
+import download as download
 
-import cdsapi
+# define list of years 
+ystart=2000;
+yend=2010;
+years=[];
+[years.append(str(year)) for year in np.arange(ystart,yend+1)];
 
-dataset = "reanalysis-era5-land"
-request = {
-    "variable": [
-        "2m_temperature",
-        "surface_solar_radiation_downwards",
-        "10m_u_component_of_wind",
-        "10m_v_component_of_wind"
-    ],
-    "year": "1950",
-    "month": "01",
-    "day": [
-        "01", "02", "03",
-        "04", "05", "06",
-        "07", "08", "09",
-        "10", "11", "12",
-        "13", "14", "15",
-        "16", "17", "18",
-        "19", "20", "21",
-        "22", "23", "24",
-        "25", "26", "27",
-        "28", "29", "30",
-        "31"
-    ],
-    "time": [
-        "00:00", "01:00", "02:00",
-        "03:00", "04:00", "05:00",
-        "06:00", "07:00", "08:00",
-        "09:00", "10:00", "11:00",
-        "12:00", "13:00", "14:00",
-        "15:00", "16:00", "17:00",
-        "18:00", "19:00", "20:00",
-        "21:00", "22:00", "23:00"
-    ],
-    "data_format": "netcdf",
-    "download_format": "unarchived"
-}
+# define list of months
+months = ["01","02","03","04","05","06","07","08","09","10","11","12"];
 
-client = cdsapi.Client()
-client.retrieve(dataset, request).download("/srvfs/scratch/avoigt/msc-intro-computational-meteorology-exercises-w2024/era5-land-1950-01.nc")
\ No newline at end of file
+for year in years:
+    for month in months:
+        download.era5_land(year, month)
\ No newline at end of file
-- 
GitLab