...
Code Block | ||
---|---|---|
| ||
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
origin = "ammc"
modelVersionDate = "2014-01-01"
def retrieve_BoM_reforecast():
"""
A function to demonstrate how to iterate efficiently over all hindcastYears, hindcastMonths etc
for a particular BoM_reforecast_request.
Change the variables below to adapt the iteration to your needs
"""
hindcastYearStart = 1981
hindcastYearEnd = 2013
hindcastMonthStart = 1
hindcastMonthEnd = 12
hindcastDays = list(range(1, 27, 5)) # BoM availability is every 5 days: 1, 6, 11, 21, 26
for hindcastYear in list(range(hindcastYearStart, hindcastYearEnd + 1)):
for hindcastMonth in list(range(hindcastMonthStart, hindcastMonthEnd + 1)):
hindcastDates = []
for hindcastDay in hindcastDays:
hindcastDate = '%04d%02d%02d' % (
hindcastYear, hindcastMonth, hindcastDay)
hindcastDates.append(hindcastDate)
target = "%s%04d%02d.grb" % (origin, hindcastYear, hindcastMonth)
print "/".join(hindcastDates)
BoM_reforecast_request("/".join(hindcastDates), target)
def BoM_reforecast_request(hindcastDate, target):
"""
A BoM reforecast requests. Change the keywords below to adapt it to your needs.
"""
server.retrieve({
"class": "s2",
"dataset": "s2s",
"date": modelVersionDate,
"expver": "prod",
"hdate": hindcastDate,
"levtype": "pl",
"levelist": "500/700/850/925/1000",
"origin": origin,
"param": "130/156",
"step": "24/to/720/by/24",
"stream": "enfh",
"target": target,
"time": "00",
"number": "1/to/31/by/1",
"type": "pf",
})
if __name__ == '__main__':
retrieve_BoM_reforecast() |
...