...
Code Block | ||
---|---|---|
| ||
#!/usr/bin/env python from ecmwfapi import ECMWFDataServer server = ECMWFDataServer() server.retrieve({ "class": "s2", "dataset": "s2s", "date": "2015-01-01/2015-01-05/2015-01-08/2015-01-12/2015-01-15/2015-01-19/2015-01-22/2015-01-26/2015-01-29", "expver": "prod", "levtype": "sfc", "origin": "ecmf", "param": "165", "step": "0/to/768/by/24", "stream": "enfo", "target": "CHANGEME", "time": "00", "number": "1/to/50", "type": "pf", }) |
Re-forecasts
ECMWF re-forecasts are produced on the fly. This means that every week a new set of re-forecasts is produce to calibrate the real-time ensemble forecast of the following week. The ensemble re-forecasts consist of a 5-member ensemble
starting the same day and month as a Thursday real-time forecast, but covering the past 20 years. For instance the first re-forecast set archived in the S2S database was the re-forecast used to calibrate the real-time forecast of 1st January 2015 (a Thursday). This set consisted of a 5-member ensemble starting on 1st January 1995, 1st January 1996, ... 1st January 2014 (20 years, 5 member ensemble = 100-member climate ensemble). The re-forecast dataset is therefore updated every week in the S2S archive, and re-forecasts covering all the 4 seasons will only be available at the end of 2015.
The ECMWF re-forecasts are archived in the S2S database using two dates: "date" and "hdate" (see examples below): hdate is the actual date of the re-forecast (e.g. 19950101) while date is the date of the real-time forecast (=ModelversionDate in grib2) associated to the re-forecast (20150101). The reason we need 2 dates is because the ECMWF re-forecasts are produced on the fly and we need to avoid the re-forecasts produced in the future years to overwrite the re-forecasts currently produced. Therefore ModelversionDate allows us to distinguish the re-forecasts produced in 2015 from those produced in 2016, 2017... More details on the ECMWF model and re-forecast configuration can be found here.
Re- forecasts: 1 param, 1 date
Retrieving 1 field (10m U wind) for all time steps and for the 1st January 2014
Code Block | ||
---|---|---|
| ||
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
server.retrieve({
"class": "s2",
"dataset": "s2s",
"hdate": "2014-01-01",
"date": "2015-01-01",
"expver": "prod",
"levtype": "sfc",
"origin": "ecmf",
"param": "165",
"step": "0/to/768/by/24",
"stream": "enfh",
"target": "CHANGEME",
"time": "00",
"type": "cf",
}) |
Code Block | ||
---|---|---|
| ||
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
server.retrieve({
"class": "s2",
"dataset": "s2s",
"hdate": "2014-01-01",
"date": "2015-01-01",
"expver": "prod",
"levtype": "sfc",
"origin": "ecmf",
"param": "165",
"step": "0/to/768/by/24",
"stream": "enfh",
"target": "CHANGEME",
"time": "00",
"number": "1/2/3/4",
"type": "pf",
}) |
Re- forecasts used to calibrate a Thursday real-time forecast:
...
Code Block |
---|
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
server.retrieve({
"class": "s2",
"dataset": "s2s",
"hdate": "1995-01-01/1996-01-01/1997-01-01/1998-01-01/1999-01-01/2000-01-01/2001-01-01/2002-01-01/2003-01-01/2004-01-01/2005-01-01/2006-01-01/2007-01-01/2008-01-01/2009-01-01/2010-01-01/2011-01-01/2012-01-01/2013-01-01/2014-01-01",
"date": "2015-01-01",
"expver": "prod",
"levtype": "sfc",
"origin": "ecmf",
"param": "165",
"step": "0/to/768/by/24",
"stream": "enfh",
"target": "CHANGEME",
"time": "00",
"type": "cf",
}) |
Code Block | ||
---|---|---|
| ||
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
server.retrieve({
"class": "s2",
"dataset": "s2s",
"hdate": "1995-01-01/1996-01-01/1997-01-01/1998-01-01/1999-01-01/2000-01-01/2001-01-01/2002-01-01/2003-01-01/2004-01-01/2005-01-01/2006-01-01/2007-01-01/2008-01-01/2009-01-01/2010-01-01/2011-01-01/2012-01-01/2013-01-01/2014-01-01",
"date": "2015-01-01",
"expver": "prod",
"levtype": "sfc",
"origin": "ecmf",
"param": "165",
"step": "0/to/768/by/24",
"stream": "enfh",
"target": "CHANGEME",
"number": "1/2/3/4",
"time": "00",
"type": "pf",
}) |
Re- forecasts used to calibrate a Monday real-time forecast:
...
Code Block | ||
---|---|---|
| ||
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
server.retrieve({
"class": "s2",
"dataset": "s2s",
"hdate": "1995-01-01/1996-01-01/1997-01-01/1998-01-01/1999-01-01/2000-01-01/2001-01-01/2002-01-01/2003-01-01/2004-01-01/2005-01-01/2006-01-01/2007-01-01/2008-01-01/2009-01-01/2010-01-01/2011-01-01/2012-01-01/2013-01-01/2014-01-01",
"date": "2015-01-01",
"expver": "prod",
"levtype": "sfc",
"origin": "ecmf",
"param": "165",
"step": "0/to/768/by/24",
"stream": "enfh",
"target": "CHANGEME",
"time": "00",
"type": "cf",
}) |
Code Block | ||
---|---|---|
| ||
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
server.retrieve({
"class": "s2",
"dataset": "s2s",
"hdate": "1995-01-01/1996-01-01/1997-01-01/1998-01-01/1999-01-01/2000-01-01/2001-01-01/2002-01-01/2003-01-01/2004-01-01/2005-01-01/2006-01-01/2007-01-01/2008-01-01/2009-01-01/2010-01-01/2011-01-01/2012-01-01/2013-01-01/2014-01-01",
"date": "2015-01-01",
"expver": "prod",
"levtype": "sfc",
"origin": "ecmf",
"param": "165",
"step": "0/to/768/by/24",
"stream": "enfh",
"target": "CHANGEME",
"number": "1/2/3/4",
"time": "00",
"type": "pf",
}) |
Code Block |
---|
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
server.retrieve({
"class": "s2",
"dataset": "s2s",
"hdate": "1995-01-08/1996-01-08/1997-01-08/1998-01-08/1999-01-08/2000-01-08/2001-01-08/2002-01-08/2003-01-08/2004-01-08/2005-01-08/2006-01-08/2007-01-08/2008-01-08/2009-01-08/2010-01-08/2011-01-08/2012-01-08/2013-01-08/2014-01-08",
"date": "2015-01-08",
"expver": "prod",
"levtype": "sfc",
"origin": "ecmf",
"param": "165",
"step": "0/to/768/by/24",
"stream": "enfh",
"target": "CHANGEME",
"time": "00",
"type": "cf",
}) |
...
language | py |
---|
...