Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info
  • The objective of this example is to demonstrate how to make a request efficient by iterating properly over several hindcastYears, hindcastMonths and hindcastDays
  • It can be used as a starting point however you need to adapt it to your needseg to set the keyword values (eg hindcastYear)  according to your needs,
  • In this way you can extend this request to download the whole S2S CMA reforecast,  but don't forget to check CMA availability (warning)

(warning) Please note: use the variable "target"  to write each hindcastDate on a separate file .

v1.0
Code Block
languagepy
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
def retrieve_data(hindcastDate,modelVersionDate,centre):
    target = "target_s2s_%s_%s.grb" % centre % hindcastDate
    server.retrieve({
       "class": "s2",
       "dataset": "s2s",
       "date": modelVersionDate,
       "expver": "prod",
       "hdate": hindcastDate,
       "levtype": "sfc",
       "origin": centre,
       "param": "165",
       "step": "0",
       "stream": "enfh",
       "target": target,
       "time": "00",
       "type": "cf",
})

for hindcastYear in ["2012", "2013"]:
    for hindcastMonth in ["08", "09"]:
		 for hindcastDay in ["01" "02" ]:
            hindcastDate = hindcastYear+hindcastMonth+hindcastDay
            retrieve_data(hindcastDate,"2014-05-01","babj")
v1.1
Code Block
languagepy
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()

origin = "babj"
modelVersionDate = "2014-05-01"
hindcastYearList = ["2012", "2013"]
hindcastMonthList = ["08", "09"]
hindcastDayList = ["01", "02"]

def retrieve_data(hindcastDate):
    target = "target_s2s_%s_%s.grb" % (origin, hindcastDate)
    server.retrieve({
        "class": "s2",
        "dataset": "s2s",
        "date": modelVersionDate,
        "expver": "prod",
        "hdate": hindcastDate,
        "levtype": "sfc",
        "origin": "babj",
        "param": "165",
        "step": "0",
        "stream": "enfh",
        "target": target,
        "time": "00",
        "type": "cf",
    })

def iterate():
    for hindcastYear in hindcastYearList:
        for hindcastMonth in hindcastMonthList:
            for hindcastDay in hindcastDayList:
                hindcastDate = hindcastYear + hindcastMonth + hindcastDay
                retrieve_data(hindcastDate)

if __name__ == '__main__':
    iterate()
v1.3
Code Block
languagepy
titleCMA
for hindcastYear in ["2012", "2013"]:
    for hindcastMonth in ["08", "09"]:
         if hindcastMonth in ["01", "03", "05", "07", "08", "10", "12"]: hindcastDateEnd = "31"
         if hindcastMonth in [ "04", "06", "09", "11"]: hindcastDateEnd = "30"
         for hindcastDay in ["01" ... hindcastDateEnd ]:
            hindcastDate = hindcastYear+hindcastMonth+hindcastDay
            retrieve_data(hindcastDate,"2014-05-01","babj")
BoM
Code Block
languagepy
titleBoM
for hindcastYear in ["2012", "2013"]:
    for hindcastMonth in ["08", "09"]:
         for hindcastDay in ["01"  "06" "11" "16" "21" "26"]:
            hindcastDate = hindcastYear+hindcastMonth+hindcastDay
            retrieve_data(hindcastDate,"2014-01-01","ammc")

...

Useful links

Info