Home page  
Home   Your Room   Login   Contact   Feedback   Site Map   Search:  
Discover this product  
About Us
Overview
Getting here
Committees
Products
Forecasts
Order Data
Order Software
Services
Computing
Archive
PrepIFS
Research
Modelling
Reanalysis
Seasonal
Publications
Newsletters
Manuals
Library
News&Events
Calendar
Employment
Open Tenders
   
Home > Research > Monthly Forecasting > Documentation > Ensemble generation >     
   

SST and wind stress perturbations

 
   

The present document describes how the initialization and perturbation of SSTs and wind stress are generated in SYSTEM 2 for the background statistics. The process of generating initialization and perturbations of SSTs and wind stress will be done in an identical way for the real time integrations. However the paths mentioned in the present document are likely to be different. For example, for real-time operations, it is unlikely that the ECFS path ec:/ocx/ will be used. It should also be noticed that the current perturbations and initialization in SYSTEM 2 have been generated by an offline version of these programs.


SST INITIALIZATION

a) Generation of SST analysis:
 
 Daily SST analyses are calculated from observed SSTs. In ECMWF seasonal forecasting system 1, SSTs were those used for the operational NWP analysis and were retrieved from MARS. However, this product is not entirely satisfying for our needs: it displays some discontinuities in time. Therefore Reynolds SST products from NCEP have been preferred. Reynolds OIv2 SSTs are a weekly product on a 1x1 degree horizontal grid. This product goes back to the 1950s and it has an analysed ice edge. This product is available in real-time.


  Three fortran programs are used to generate the daily SST analysis:
 
 

a) sstreyn.F: For one given date, this program computes the two dates of available Reynolds SST which are closest to the input date (one before and one after). It extracts the corresponding 2 Reynolds global SSTs and stores them in fort.1 and fort.2. The output contains also the dates of the weekly SST files that will be used for the interpolation. The Reynolds SST fields are currently OI SSTs and are updated daily by operations at ec:/oparch/ocean/sst.
 

b) sstforcing.F: This program computes the daily interpolations from the Reynolds SST fields (fort.1 and fort.2) to compute the daily value corresponding to the input date. It also computes their spatial interpolation from the 1x1 degree grid to a given resolution (t42, i.e. 2.875 degree resolution, for low resolution ocean or t85, i.e. 1.4375 degree resolution, for high resolution ocean).
 

c) sstclim.res: In case the input date is more recent than any of the Reynolds SST fields, then the latest Reynolds SST is persisted till the input date. Normally that should not happen, but this code is available in case there is a problem to get the SSTs from NCEP. To persist the SSTs, a daily climatology has been computed and stored in ec:/ocx/forcing/sst/re2d_trr_86to98mm where rr is the resolution (42 or 85) and mm is the month. For each calendar day, the climatology has been calculated by averaging the Reynolds OIv2 analysis from 1986 to 1998 on a 1 degree resolution grid and interpolating the result in a t42 and t85 grids The program computes the last SST anomaly in Reynolds analysis and adds this anomaly to the climatology corresponding to the input date.

These programs are called by get_sst
 
 
 

b) Perturbation of SSTs:
 

SSTs are perturbed by attempting to evaluate the error in the initial conditions. Two ways of evaluating errors in the initial conditions have been used:
 
 

1) The difference between 2 different SST products (Reynolds 2DVAR and Reynolds OI SSTs) gives an estimation of the error due to the data assimilation of SSTs.
 
 

2) The difference between observed SSTs and 1 week persisted SSTs (in our case we use the weekly product Reynolds 2DVAR) gives an estimation of errors in observation and in the time averaging.
 
 

For both cases, a file (FILE1 for persistence and FILE2 for the difference between Reynolds 2DVAR and OI) has been created containing these differences for each week from 1986 to 1998 in a 1x1 degree grid. The seasonal cycle has been removed.
 
 

FILE1 on vpp700e: /home/rd/ocx/data/pert/sst_pers.pert

FILE2 on vpp700e /home/rd/ocx/data/pert/sst_err.pert
 

The index for FILE1 and FILE2 is home/rd/ocx/data/pert/sst_indx.pert
 
 

These files have a backup on ECFS, in the directory ec:/ocx/forcing/pert along with the files and programs needed for its creation.
 
 

The perturbations should then be only applied over the band 60S to 60N, since one of the products (Reynolds OI) is known to be deficient near the polar regions.
 
 

pert_sst.res: The inputs to this program include the total number of perturbations and the rank of the requested perturbation (this program is called individually for each perturbation). A first test evaluates if the total number of perturbations is odd or even. If it is odd, then the first perturbation is 0, and the others go by pair (same perturbation but with opposite sign). If the total number of perturbations is even then the perturbations go by pairs. The number of independent perturbations to be generated is then calculated along with the rank and sign of the requested perturbation. Then, a random generator is called as many times as requested to reach the requested perturbation number. The first input of the random generator is the initial date of the experiment ( an option is available to add the experiment identifier to the input of the random generator). This should ensure the reproducibility of the random extraction. There is an option to ignore the experiment identifier, so that we can more exactly compare different experiments if we want to. From the number generated, two years between 1986 and 1998 are deduced. If the pair of years has already been chosen for previous perturbations, then a new random number is generated till the pair of years derived from this number is chosen for the first time. The SST perturbation data in FILE1 or FILE2 which year correspond to these randomly chosen years and which date (day and month) (it corresponds to the central date of the weekly analysis) is the closest to the input date are selected. They are added and multiplied by the sign of the perturbation. This will be the SST perturbation. A spatial interpolation projects this perturbation into the ocean grid.

This program is called in iniocean.sms
 

c) Generation of the two bags of error estimates used to generate the perturbations:
 
 

The weekly Reynolds OIv2 SST files are read and stored for each year from 1985 to 1999 into an IEEE file. The same is done with Reynolds 2DVAR SSTS In addition another IEEE file is created contained Reynolds 2DVAR SSTs but one week ahead. This new file is considered as the 1-week persistence. The climatology of Reynolds OIv2 SSTs, Reynolds 2DVAR SSTS and 1-week persistence SSTs of Reynolds 2DVAR are then computed in an identical format. All SST files have their climate removed. The differences between Reynolds 2DVAR and Reynolds OIv2 SSTs are then calculated for each week from 1985 to 1999 and are considered as the error in analysis. The differences between Reynolds 2DVAR and Reynolds 2DVAR + 1 week persistence are also calculated and are considered as the error due to persistence. All these differences are stored in an IEEE file and constitute the bags of error estimate.

read_reynolds.f: reads Reynolds OI SSTs

input: OI Reynolds SSTs (stored in /vol/seasonal/net/sst/ops/oi.comp.bias.yyyy)

output: IEEE file fort.50 and index file fort.71

 
 

read_reyn2D.f: reads Reynolds 2DVAR SSTs

input: 2DVAR Reynolds SSTs (stored in /era/data/erf/obs/sst_sic/era40/yyyy/sst_ncep2dvar.yyyymm.fill.da)

output: IEEE file fort.150 and fort.151 (1 week persistence).

 
 

clim.f and readclim.f: Compute climatologies.

input: fort.50, fort.150, fort.151 and fort.71

output: fort.60, fort.160 and fort.161

 

error_an.f: Computes anomalies between Reynolds OI and Reynolds 2DVAR

input: fort.50, fort.60, fort.150, fort.160 and fort.71

output: sst_indx.pert

error_pers.f: Computes anomalies between Reynolds 2DVAR and Reynolds 2DVAR + 1 week

                        persistence
input: fort.150, fort.151, fort.160, fort.161 and fort.71.
output: sst_pers.pert

(fort.71 is also saved as sst_indx.pert)

 

All these programs are stored in ec:/ocx/forcing/pert along with sst_err.pert, sst_indx.pert and

sst_pers.pert.

 
 

WIND STRESS INITIALIZATION




a) Generation of a wind stress analysis:
 
 

In the previous system, the wind stress was directly extracted from ERA 24 hours forecast analysis till 1994 and numerical weather prediction thereafter. However it appeared that a discontinuity in wind stress between 1993 (end of ERA) and 1994 (operation analysis) prevailed over the Tropical Pacific. Such discontinuity is believed to have potentially important consequences on the quality of the forecast. One essential request for seasonal forecast is the stability of the system, such that significant differences in the forecast and climatological ensembles can only be explained by natural variability. The wind stress extracted from ERA and operational analysis is in fact a 24 hours forecast of cumulated wind stress. It is then dependent on the physics of the GCM, and therefore of changes in model cycle. In an attempt to overcome this problem, an offline program has been extracted from IFS to compute the zonal and meridional wind stresses directly from analyses. Although a discontinuity is still apparent between 1993 and 1994, it is much smaller than the discontinuity obtained with the 24 hour forecast.
 
 

The wind stress generation is done by wstr_gener.F
 
 

wstr_gener.F: This file produces daily analyses of wind stress. This program needs a preliminary MARS request of the following analyses: U/V/T/Q at the lowest model level, the surface temperature at level 1 and the land sea mask already interpolated in a t42 or t85 grid. These variables (except land sea mask) are retrieved 4 times a day.wstr_gener.F reads this file, and from these variables wstr_gener.F computes the meridional and zonal wind stresses once per day. Then the zonal wind stress and meridional wind stress are written in an output file in a t42 or t85 grid. In research mode, the fields U/V/T/Q are interpolated by MARS.
 

 

This program is called by get_wstr: the output file from wstr_gener.F called fort.10 is then processed by wstr_m to append the monthly file that contains the wind stress analysis in the ec:/ocx/forcing/wstr/ directory (for operations, it will certainly be a different path).
 

b) Wind stress perturbations:
 

As for SST, the wind stress perturbations are calculated by estimating the error in the wind stress analysis. An analysis of wind stress from 1980 to 1997, here referred to as SOC, has been developed at the Southampton Oceanography Centre (SOC; this data has been produced by S. Josey from Southampton). SOC is a global monthly analysis of wind stress on a 1x1 degree grid. Different wind stress products (NCEP reanalysis, ECMWF reanalysis, FSU...) have been tested by forcing the oceanic GCM HOPE with these wind stresses and comparing the predicted SSTs with observations. SOC gave particularly satisfying results. The interannual anomalies between this wind stress analysis and the stress used to create the initial conditions of SYSTEM 2 (wind stress computed online from ECMWF analyses and described in the previous section) is considered as a measure of the uncertainty in the wind stress. The climatology has been removed for both analyses. The difference between the two analyses (after removing their climate) has been computed for each month from 1980 to 1997 and interpolated on a t42 and t85 grid. This constitutes the "bag" where error estimates will be randomly picked from.
 
 

The program called to create the wind stress perturbations is:

pert_wstr.res: This program is similar to pert_sst, except that the program pert_sst is called only once to generate a perturbation for a given time while pert_wstr is called to generate a series of perturbations continuous in time to be used to assimilate the ocean over a long period of time. This program is called to compute the daily wind stress forcing for each day of the month and year of the input date.

The inputs to this program include the total number of perturbations and the rank of the particular perturbation requested. As for SSTs, if the total number of perturbations is even, then perturbations go by pair. If the total number of perturbations is odd, then the first perturbation is 0, and the others go by pair. The sign and number of "independent' perturbations before the requested perturbation are then computed.

Computing the daily wind stress perturbations for one month (month0) needs to randomly chose three different perturbations: for the month before, the current and the following month:

Since the "bag" of error estimates contains monthly averaged fields, the daily fields for the first half of month0 are computed by linearly interpolating the error estimate for month0-1 and the error estimate for month0. For the second half of month0, the daily fields is constructed by a linear interpolation between the error estimate in month0 and the error estimate in month0+1. The main problem now is that the perturbations should be continuous in time. In other words, we need to keep the memory of the constructions of perturbations in the previous months. Therefore the random "pick" in the bag of error estimates is reproduced from January 1980 (an arbitrary date that should be before the start of any data assimilation for SYSTEM 2). The input number for the random generator is just the rank of the requested perturbations, to ensure the reproducibility of the selection of error estimates for one given perturbation number.

The random generator is called once for each month from January 1980 to month0+1 (month0 is the month of the input date). The random numbers for month0-1, month0 and month0+1 are then converted into a year between 1980 to 1997 and a randomly chosen sign (+ or -). The error estimate for the corresponding month and these years are extracted from the bag. They are multiplied by the corresponding randomly chosen sign. A daily interpolation is then performed. The daily perturbations are then stored into a GRIB monthly file, and stored on ECFS in ec:/ocx/forcing/wstr (it will be different in operations).

This program checks if the error estimate randomly chosen for month0 for the independent perturbation N has not already been selected in the previous independent perturbations. This means that the maximum number of independent wind stress perturbation that can be generated that way is 18 (number of years contained in the bag).

So far 4 (2 independent) perturbations of wind stress have been created and stored on ECFS at ec:/ocx/forcing/pwstr/pk_trr_date where k is the rank of the perturbation, rr the resolution (42 or 85).

c) Generation of the bag of error estimates:

Five programs are called to generate to generate the files difyyyytrr.ieee where rr is the resolution (85 or 42). They compute the monthly means of SOC and ECMWF offline analysis wind stresses. The climatology from 1980 to 1997 is then computed for both products and for each calendar month. The interannual anomalies between SOC and ECMWF analyses are computed for each month from 1980 to 1997 and stored in the IEEE files: difyyyytrr.ieee
 

meansoc.f and meancomp.f: compute respectively monthly means of SOC and ECMWF offline analysis wind stresses from the daily files stored in ec:/ocx/forcing/wstr/soc_* and ec:/ocx/forcing/wstr/comp_*.

input: ec:/ocx/forcing/wstr/soc_* and ec: /ocx/forcing/wstr/comp_* (GRIB)

output: socyyyyt85 and compyyyyt85 (IEEE)

climsoc.f and climcomp.f: compute climatology of SOC and ECMWF offline analysis

input: socyyyyt85 and compyyyyt85

output: climsoc and climcomp (IEEE format)

compdif.f: Computes the interannual anomalies between SOC and ECMWF offline analysis

input: socyyyyt85 and compyyyyt85. climsoc and climcomp

output: difyyyytrr.ieee (IEEE)

 

The programs meansoc.f, meancomp.f, climsoc.f climcomp.f and compdif.f are stored in ec:/ocx/forcing/pert
 

The files containing the monthly error estimates difyyyytrr.ieee which are used in pert_wstr.res are also stored in ec:/ocx/forcing/pert


 

Top of page 17.01.2003
 
   Page Details         © ECMWF   
shim shim shim