CHAPTER 1 Incremental
formulation of 3D/4D variational assimilation-an overview
CHAPTER 2 3D variational assimilation
CHAPTER 3 4D variational assimilation
CHAPTER 4 Background term
CHAPTER 5 Conventional observational
constraints
CHAPTER 6 Satellite observational
constraints
CHAPTER 7 Background, analysis
and forecast errors
CHAPTER 8 Gravity-wave control
CHAPTER 9 Data partitioning (OBSORT)
CHAPTER 10 Observation screening
CHAPTER 11 Analysis of snow
CHAPTER 12 Land surface analysis
CHAPTER 13 SST and sea-ice analysis
CHAPTER 14 Reduced-rank Kalman filter
REFERENCES
|
|
Next
Section
Previous Section
The statistical calibration is done using dedicated scripts outside the
IFS code. First, the 24/48-hour forecast error differences for a set of
dates are constructed in terms of spectral , , and . This involves running a set of MARS requests and
building the required GRIB files. Then, the forecast-error differences are
read and processed by a Fortran statistics program that finally writes two
files in GSA format: one with the coefficients of the balance operator,
one with the error covariances of , , and . These files take up a couple of megabytes. They are computed for
a given triangular truncation and number of levels (currently T106L31).
In the covariance file there are 4 sets of vertical covariance matrices.
The balance files contain one set of coefficients for the operator, and three sets of vertical
balance matrices for , and .
The IFS needs these two GSA files to use in e.g. the incremental analysis jobs. The configuration described here corresponds to namelist switch LSTABAL=.true.
(NAMJG), and it is identified in the code by the string CDJBTYPE=`STABAL96'. LSTABAL=.false. would give
the old formulation. The input files must be named stabal96.cv
and stabal96.bal. They are read in by sujbdat and sujbbal,
respectively.
Some other important namelist options in NAMJG are LCFCE (to enforce uniform
background errors), L3DBGERR (to have a 3D distribution vorticity background
errors), and LCORCOSU (to enforce compactly supported horizontal correlations).
The switch LGUESS in NAMCT0 can be used to switch off altogether. The default is LGUESS=.true., i.e. switched on.
Figure 4.1 Calling tree for subroutine sujbcov.
Inside the IFS code, is localized in the setups below subroutine
sujbcov and in the inverse change of variable cvar2in (and its adjoint and
their inverses, CVAR2INAD, CVAR2 and CVAR2AD). Calling trees are shown in
Fig. 4.1 and Fig. 4.2 . The computation of the cost
function and its adjoint is done in sim4d(Section 2.3 in Chapter 2 `3D variational assimilation'
)---it is planned to move it to a dedicated subroutine. The sequence within
the set-up routine is the following:
|
(i) SUJBDAT: Reads covariances from file stabal96.cv, |
|
Interpolates in the vertical to the model's vertical
levels (if necessary) |
|
Sets humidity correlations to 0, for pressures
less than 100 hPa. |
|
(ii) SUJBCOR: Sets up spectral correlation operator |
|
Covariance matrices (one per ) are converted to vertical correlation matrices and horizontal autocorrelation
spectra. The eigenvectors and the eigenvalues of vertical correlations
matrices are computed using EIGENMD and stored in FGEDVNS and FGEGVNS-arrays
(yomjg), respectively, for later use in JGVCOR, JGVCORI, JGVCORAD
and JGVCORIAD. The horizontal autocorrelation spectra are stored in
the FGSCNM-array (yomjg), for later use in JGHCOR and JGHCORI. |
|
(iii) SUJBSTD: Set up background error standard
deviations, see Subsection 4.3.4. |
|
(iv) SUJBBAL: Set up balance constraint. Read
the file stabal96.bal and store in yomjg, for later
use in balstat, balstatad, balvert, balvertad, balverti and balvertiad
as part of the change of variable operator. |
|
(v) SUJBTEST: Test of the adjoint of the change
of variable, if LJBTEST=.true. |
The distributed memory affects the setups below sujbdat and sujbbal when
the data files are read in (by the master processor only). First, the resolution
of the files is read, then the relevant arrays are allocated and the actual
data is read, truncated if necessary, and broadcast. The code is designed
to work at any resolution.
Figure 4.2 Calling tree for subroutine cvar2in.
In the change of variable, there is a transposition of the fields between
the horizontal and vertical balance operators, balstat and balvert, repsectively.
Note that the operator is performed by calling cvar2in, so in IFS parlance corresponds to the inverse change of variable.
The background standard errors are set up below sujbstd (in SUINFCE, called
from SUECGES) and used in jgnr or jgnrs (and their adjoint and inverses,
jgnrad and jgnrsi). In addition to the covariance files, they use a gridpoint
GRIB file called errgrib in order to specify the three-dimensional
error patterns. The data from the file is converted to the appropriate parameters
and resolution if needed. The background error fields for some parameters
(wind, height, temperature and surface pressure) are built for the screening
job although they are not needed in the analysis itself. For more information,
refer to the chapter on the cycling of background errors, Chapter 7 `Background, analysis and forecast errors'
.
The humidity background errors are currently not cycled - they are computed
(in SUSHFCE under JGNR) by a simple empirical formulation as a function
of the temperature and relative humidity of the background:
The standard deviation in terms of relative humidity is then converted to
specific humidity, taking the variation of of the equation
where is the relative humidity, , is the saturation water-vapour pressure at the temperature
in question (Tetens' formula, Eq. (5.11) in Chapter
5 `Conventional observational constraints' ) and is pressure.
Humidity increments are forced to be negligibly small above the tropopause
to avoid a systematic drift of stratospheric humidity over extended periods
of data assimilation. This is achieved by setting a very low value of for everywhere the pressure is lower than 70hPa, and at anyother point
where the pressure is lower than 500hPa and the background temperature and
pressure fields are such that the square of the buoyancy frequency exceeds
everywhere between that level and the 70hPa level.
More specifically, for each grid column is set to for model levels such that , where the level is determined by requiring either that it is the highest level with
hPa for which
or, if no such level can be found for in the range from 500 to 70hPa, that it is the lowest level for which
.
Here and are the background temperature and pressure
at level of the grid-column.
In addition, any values of lower than are reset to .
For pressures less than = 800 hPa, and over the sea, the model
of background errors above is modified by
where (where LSM = land-sea mask) and =12500.
Next Section
Previous Section
|