...
*************** This page is under construction! *****************
What is the objective of this page?
Info | |
---|---|
The objective: | To help users to improve S2S BoM CMA MARS requests performance via the WebAPI.
|
How is the S2S reforecast data
...
organised in MARS?
Info |
---|
In general it is organised, as a huge tree, with the indentation below, showing different levels down that tree:
|
What would be the natural way to group requests?
Info |
---|
|
...
. The natural way to group requests |
...
Info |
---|
Following the previous paragraph, the natural way to group requests would be:
|
What is the best approach to loop over several HindcastDates for a BoM request?
...
title | The main idea in brief: |
---|
Best practise to iterate over all hindcastDates of several hindcastYears for CMA
Info |
---|
|
...
What is the best approach to get all HindcastDays for several HindcastYears ?
The best approach is to iterate over the |
...
hindcastYears. For each |
...
hindcastYear iterate over all |
...
the available hindcastMonths and for each |
...
hindcastMonth iterate over all |
...
the available hindcastDays.
|
Info | ||
---|---|---|
for hindcastYear in hindcastYears | ||
Info | ||
| ||
for HindcastYear in HindcastYears |
An example to request Perturbed forecast, pl, for HindcastYears 2012 to 2013 for 2 HindcastMonths (eg August & September)
Info | ||
---|---|---|
| ||
for HindcastYear from 2012 to 2013 |
...
hindcastDate) |
Web-API examples:
A CMA reforecast request for one hindcastDate
Info |
---|
The request below is for all members of the perturbed forecast, 10 meter U and V wind components, for all time-steps and for model version 2014-05-01 |
Code Block | ||
---|---|---|
| ||
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
modelVersionDate = "2014-05-01" # This is the first model version for CMA (babj)
hindcastDate = "2014-04-01" # The selected hindcast date
server = ECMWFDataServer()
server.retrieve({
"class": "s2",
"dataset": "s2s",
"date": modelVersionDate,
"expver": "prod",
"hdate": hindcastDate,
"levtype": "sfc",
"origin": "babj",
"param": "165/166",
"step": "24/to/1440/by/24",
"stream": "enfh",
"target": "data.pf.sfc",
"time": "00",
"number": "1/2/3",
"type": "pf",
}) |
A CMA reforecast request for several hindcastDates
Info |
---|
|
v1.0
Code Block | ||
---|---|---|
| ||
#!/usr/bin/env python from ecmwfapi import ECMWFDataServer server = ECMWFDataServer() origin = "babj" modelVersionDate = "2014-05-01" def retrieve_data(hindcastDate,modelVersionDate,centre): target = "target_s2s_%s_%s.grb" % centre % hindcastDate server.retrieve({ "class": "s2", "dataset": "s2s", "date": "2014-01-01"modelVersionDate, "expver": "prod", "hdate": HindcastDate, (ie the selected HindcastDate eg "2013-09-01") hindcastDate, "levtype": "sfc", "origin": centre, "levelistparam":"10/50/100/200 "165", "levtypestep": "pl0", "originstream": "ammc", "enfh", "target": target, "paramtime": "133/15600", "steptype": "24/48 "number": "1/2/3/4/5/", "stream": "enfh", "target": "CHANGEME", "time": "00", "type": "pf", }) |
If the request is "small" you may request more HindcastDates in one go.
You can also check the S2S BoM reforecast availability or view more BoM re-forecast examples ?
"cf",
})
hindcastYearList = ["2012", "2013"]
hindcastMonthList = ["08", "09"]
hindcastDayList = ["01", "02"]
for hindcastYear in hindcastYearList:
for hindcastMonth in hindcastMonthList:
for hindcastDay in hindcastDayList:
hindcastDate = hindcastYear + hindcastMonth + hindcastDay
retrieve_data(hindcastDate) |
Code Block | ||||
---|---|---|---|---|
| ||||
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 example
Code Block | ||||
---|---|---|---|---|
| ||||
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 |
---|
*****************************************************************************************************