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
#!/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", })
#!/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:
Retrieving 1 param (10m U wind) for all time steps and used to calibrate the 1st January 2015 real-time forecast (Thursday).
#!/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", })
#!/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:
Retrieving 1 param (10m U wind) for all time steps and used to calibrate the 5th January 2015 real-time forecast (Monday). It takes the re-forecast for Thursday 1st January and Thursday 8th January
#!/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", })
#!/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", })
#!/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", })
#!/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", "number": "1/2/3/4", "time": "00", "type": "pf", })