...
*************** 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 | 
|---|
*****************************************************************************************************