Ifs Documentation Cy47r3 Part 1 Observations
Ifs Documentation Cy47r3 Part 1 Observations
PART I: OBSERVATIONS
© Copyright 2020-
European Centre for Medium-Range Weather Forecasts
Shinfield Park, Reading, RG2 9AX, UK
The content of this document is available for use under a Creative Commons Attribution 4.0 International
Public License. See the terms at https://creativecommons.org/licenses/by/4.0.
Chapter 1
Overview: the observation world
Table of contents
1.1 Introduction
1.2 Concepts
1.2.1 Observation groupings, reports and datums
1.2.2 Observation sets
1.2.3 Timeslots
1.2.4 Events and status
1.2.5 The screening trajectory
1.2.6 Observation Database usage in IFS
1.2.7 Parallel aspects (scalability)
1.3 Dataflow through processing and screening
1.4 Observation groupings in the IFS
1.4.1 Obstype and codetype
1.4.2 SQNO - [DEPRECATED]
1.4.3 Physical variable: varno
1.4.4 Observation operator codes: NVAR - [DEPRECATED]
1.4.5 Satgrp table and friends
1.4.6 ‘Area’ type - [DEPRECATED]
1.4.7 VarBC bias groups
1.1 INTRODUCTION
The handling of observations is one of the most complex parts of the IFS data assimilation system. Observations
come in diverse forms and, depending on their type, they are treated in very different ways. The observations
themselves (y) and the observation operator H(), which converts from the model state x to an observation
equivalent H(x), are just part of a wider infrastructure of processing, quality control, thinning, and assigning
observation errors. The metadata associated with each observation can run into hundreds of variables, all
needing to be stored in an observation database (ODB). Thus the observation world encompasses:
• Observation operators as described in Chapter 3. The input to the observation operator is the ODB,
plus the the model state at observation locations. Observation operators, as well as generating H(x),
may put additional information into the ODB in some cases including observation error and quality
control decisions.
• Model state interpolated to observation location or GOM PLUS is described in Part 2
(Data Assimilation). This contains vertical profiles of atmospheric variables (temperature, humidity
etc.), surface variables and any other information required from the model. Using the ‘2D GOM’ facility,
instead of a single vertical profile, the GOM PLUS can contain a slant-path, a set of profiles along a
limb path (e.g. for GPSRO) or just all the nearby model columns (which is used in the Bayesian radar
retrieval at Météo-France).
• ODB is a collection of data formats and metadata describing the observations.
– In the core of the IFS, processing is based on ODB-1, a hierarchical table format capable of running
in a parallel environment, manipulated and accessed using Structured Query Language (SQL).
Documentation on ODB-1 can be found at https://software.ecmwf.int/wiki/display/ODB/
ODB+User+Guide.
– However, most interactions with ODB in the IFS use an additional layer of code known as ODB-IFS
which is in the process of being completely rewritten. See Sec. 1.2.6.
– For some pre-processing, and for archiving to MARS, the ODB-2 format is used: https:
//software.ecmwf.int/wiki/display/ODB/ODB+API.
– The variables and codes used in the ODB are governed by a committee, and can be browsed at
http://apps.ecmwf.int/odbgov.
– At a more detailed level, some parts of the ODB contents are described in the current
documentation, mainly in Chapter 6.
• Observation processing is a chain that leads from the ingestion of raw data (as BUFR files and
other data formats) to the archiving of ODBs in MARS containing diagnostics from the assimilation
run (traditionally known as feedback files). Apart from running the observation operators in the data
assimilation, observation processing has two main components that can be described as ‘preparation’
and ‘screening’, described next.
• Preparation generates all the parameters needed to run the observation operator in the assimilation
system. This is everything from format conversions (e.g. BUFR to ODB-1) to the retrieval of surface
emissivities or cloud top pressure from satellite radiances. It is also necessary to apply coordinate
transforms (for example from windspeed and direction to horizontal wind components) or to run
a retrieval prior to assimilation (for example from backscatter to ocean surface wind). This stage
may include simple thinning (such as discarding some satellite observations) This stage also sets up
observation errors and other parameters such as the settings for quality control. All this is described in
Chapter 2.
• Screening includes all the decisions whether or not to use a certain data. Screening decisions are
made throughout the processing chain. They includes blacklisting and other quality control decisions
that can only be made when a first guess is available, or in the presence of all observations (‘dependent’
screening). See Chapter 4.
• Observation errors: the diagonal part of the observation error matrix R is created during observation
processing. For conventional observations, it is done in COPE; for other observations it may be created
in DEFRUN or the first time the observation operator is called, particularly if the observation error is
situation-dependent. This observation error is eventually stored in the ODB for later use by the data
assimilation system. Correlated parts of the observation error model are described in Part 2 (Data
assimilation).
• Bias correction Some bias correction is performed as part of pre-processing (such as for radiosondes,
done in COPE) but most is now handled inside the 4D-Var minimisation using variational bias correction
(VarBC). This is more properly part of the data assimilation, so it is also left to Part 2.
• Other auxiliary control variables Similar to VarBC, other auxiliary control variables are used for
satellite radiance assimilation. These include a skin temperature sink variable and a cloud top height
variable, and are partly described in Part 2, but their main documentation is here, in Chapter 3.
• Variational quality control This is part of the data assimilation algorithm, so again it is found in
Part 2. However, it is the responsibility of the observation processing to provide the parameters that
control these tests, such as for example the Huber norm parameters; these are stored in the ODB for
use during the assimilation.
• Diagnostic Jo table Although this is another Part 2 concept, the diagnostic Jo table has a detailed
structure that breaks down observations into smaller groups, such as observation type and variable for the
conventional observations (e.g. radiosonde wind) and satellite instrument for radiances (e.g. AMSU-A).
This fine structuring of observations is known only by the observation world, and is described here.
As with the rest of the IFS, the observation world has built up over more than 20 years and is still in constant
development. Processing takes place in different layers of code, from ancient parts of the original IFS, through
to more OOPS encapsulations. We are constantly working to remove and refactor the older layers of code,
but this is an ongoing task. Many areas and concepts are now ‘deprecated’, in other words they still provide
important functions but they are expected to disappear in future cycles and they should not be involved in new
developments. Where possible, this is clearly stated in the current documentation, and their descriptions have
been moved to a special section: Chapter 5. More broadly, the exercise of documenting code is a good way to
understanding its inadequacies and indicating ways its design could be improved; thus it also tries to identify
areas that could be rationalised in future cycles. To understand the code as it stands, it is worth knowing the
history of such developments. For example, before the ODB was introduced, observations were stored in a data
structure called CMA, and concepts from the CMA live on in many places, some good, others outdated and
in the process of being refactored. Parts of the processing for conventional observations have been exported
into the COPE project, and the ability to call observation operators has now been encapsulated for OOPS,
but areas such as setup and screening have not seen so much development.
1.2 CONCEPTS
1.2.1 Observation groupings, reports and datums
Observations are organised into a heirarchical structure which is reflected in ODB-1. At the broadest level,
observations can be organised into meaningful groupings, such as the data from a sensor on one satellite,
or all drifting buoys. There are a number of schemes for grouping used in the IFS, and many of these
groupings overlap, since they make sense in some areas but not others. Lower down is the concept of a ‘report’,
encompassing for example a single radiosonde ascent or a satellite observation that spans multiple frequencies.
Each report thus contains multiple observations, often referred to as datums. Strictly, the plural of datum
is data, but ‘datum’ or ‘datums’ emphasises that this is the lowest quantum of observational information.
In the ODB each datum is associated with a vertical position (vertco reference 1@body, given in terms of
pressure, height or channel number) and a variable number (varno@body). Datums are grouped into reports
to take advantage of their common characteristics: for satellite observations, we often loosely think of the
report level as the ‘observation’; the datums in the report (measurements at different frequencies) relate to
a single location and were made using the same observational parameters, such as scan angle or instrument
temperature. Hence it is more precise to talk about datums and reports than ‘observations’.
1.2.3 Timeslots
Timeslots are sub-divisions of the 4D-Var window into which observations are grouped for processing, typically
of length 30 minutes. For interpolation from model to observation space, one timestep of the model is chosen to
represent the model state in that timeslot. Timeslots are useful because they isolate the observation grouping
from the model time resolution, which varies within 4D-Var. However, timesteps may be eliminated in future
to simplify the code and to use the most appropriate model timestep for the observation.
STATE INDEPENDENT
PREPARATIONS SUPPORT DATA
ODB-1
PREPARATIONS (INCLUDING
FORECAST SUPPORT DATA
STATE DEPENDENT)
ODB-1
LEGEND
OBSERVATIONS ODB-1
ESTIMATED PARAMETERS
DEPARTURES/FLAGS (FG)
MODEL FIELDS
ODB-1
HIGH LEVEL TASK ANALYSIS
LOW LEVEL TASK
Figure 1.1 Simplified IFS observation processing flow diagram, with the disc icons representing data
stores and the rectangles representing processing stages. Further details can be found in Fig. 2.1 for the
state-independent preparations, Fig. 2.2 for the main preparations, Fig. 4.1 for the screening and Fig. 3.1
for 4D-Var.
The last of these points leads to an important distinction in the IFS: between ‘independent’ and ‘dependent’
screening decisions. The dependent decisions are things like checking for redundant observations and thinning,
where a selection is made among all the observations that passed earlier quality checks. For example, clear-sky
satellite radiance thinning takes as input all observations that passed quality control and blacklisting, and it
selects observations with the warmest brightness temperature, as a way of filtering otherwise undetected cloud.
There is thus an opposition between wanting to discard data early for performance reasons, and keeping it until
enough supporting information is available, such as the FG model state, or the FG departure. For this reason,
and also to perform actions in the easiest place, as well as just for historical reasons, there is a complex and
multi-stranded flow of data through the IFS. Figure 1.1 illustrates how some of the data formats are used, and
how the ODB-1 data is progressively augmented with additional information as the observations flow through
the system. It also acts as a key to more detailed figures, found throughout this document, that summarise
these steps in more detail (see figure caption).
However, the complexity of dataflow in the IFS makes it hard to summarise in a compact, well-structured way.
Table 1.1 uncovers a little more of this complexity, and also summarises the structure used in this document.
Chapter 2 covers observation preparations (defined in Sec. 1.1) which may take place before the main IFS,
when it has historically been called preprocessing, or inside the main IFS code. The only place that has access
to the atmospheric state is the main IFS, so we can identify the pre-processing stages as ‘state-independent’,
as in Fig. 1.1. Note that the observation operators themselves are often responsible for processing and data
selection decisions, so some preparations are described under Chapter 3, on the observation operators. Chapter
4 then covers the generic screening, i.e. the decisions on observation usage made inside the IFS (bearing in
mind that some decisions have already been made during ‘preparation’ and are described in chapter 2 or 3).
The generic screening is split into independent screening and dependent screening, such as redundancy checks
and combined thinning. Finally, 4D-Var itself can update the status of observations, such as by downweighting
outlying observations using VarQC.
There is a one-to-one mapping between obstype and codetype and their SQNO equivalent, provided by the
hardcoded routines and definitions in CMOCTMAP, CMOCTMAP INV and SUCOCTP. The historical benefit
of the SQNO is to provide a compressed index over the small set of codetypes being used for any obstype.
Given the limited use cases, the annoyance of having to hardcode this information, and how easy it would be
Archiving
to eliminate it using modern code, this is deprecated and should be replaced in a future cycle. An opportunity
to do this is when the diagnostic Jo table is refactored for OOPS.
Chapter 2
Preparation of observations
Table of contents
2.1 Introduction
2.2 Non-COPE state-independent preparations (preprocessing)
2.2.1 Clear-sky satellite radiances
2.2.2 All-sky microwave radiances
2.2.3 Ground-based radar precipitation composites
2.3 Continuous Observation Processing Environment (COPE)
2.4 Variable conversions including retrievals
2.4.1 Conventional observations:
2.4.2 Scatterometer winds
2.4.3 Adjusted variables
2.4.4 Other conversions
2.5 Observation errors
2.5.1 Conventional observations
2.5.2 Satellite observations
2.5.3 Ground-based radar precipitation composites
2.6 Background error estimates for screening
2.7 Other preparations
2.7.1 Surface emissivity for microwave radiances
2.7.2 Cloud affected infrared radiances
2.7.3 AMV height reassignment
2.1 INTRODUCTION
This chapter describes the processing required before a normalised first guess departure can be computed.
This is best referred to as ‘observation preparation’ as it combines the ‘pre-processing’ tasks upstream of the
main IFS code and the preparations that takes place within the IFS during the initial ‘screening’ run (i.e.
when LSCREEN=.TRUE.). Although the observation operator is part of this process, it is used more widely
so it is left for the next chapter. Figure 1.1 and Table 1.1 show how this fits into the processing chain as a
whole. Many of these preparations have historically been thought of as ‘screening’ simply because they have
been performed during the screening run. This new documentation tries to make a clear distinction between
‘preparations’, which are described in this chapter, and ‘screening’, described in Chapter 4. Screening properly
refers to what happens once the normalised first guess departures are available, as decisions on what goes into
the assimilation are made at almost every stage of processing.
Historically, the upstream observation pre-processing (described here as ‘state-independent preparations’) have
not been part of the IFS documentation. The aim is to bring this more fully into the documentation, but because
these tasks are in the process of re-factoring under COPE, they will not be covered in great detail. Fig. 2.1
illustrates these tasks but is far from comprehensive.
Figure 2.2 summarises broadly the preparations that take place inside the IFS and are mostly ‘state-dependent’.
However, viewing the processing in this way is not always helpful. For example, variable conversions, such as
from wind-speed and direction to horizontal wind components, take place in COPE (in prescreening) for
conventional data but in the IFS for satellite-derived AMVs. This chapter is hence mostly structured by the
scientific procedure (e.g. parameter conversions, prior retrievals, observation error) rather than the technical
location in which the science is achieved.
STATE INDEPENDENT
SAT BUFR CONV BUFR CONV TAC
PREPARATIONS
MODEL FIELDS
ODB-1
HIGH LEVEL TASK
Figure 2.1 Simplified IFS flow diagram for state-independent observation preparations (alternatively
known as preprocessing). The disc icons representing data stores and the rectangles representing processing
stages. This is an illustrative, rather than comprehensive, description of the processing. See Fig. 1.1 for
the wider observation processing context.
PREPARATIONS (INCLUDING
STATE DEPENDENT)
ODB-1
ESTIMATED PARAMETERS
Prepare sink variables SUPPORT DATA
(cloud and skin temperature)
DEPARTURES/FLAGS (FG)
DEPARTURES/FLAGS (AN)
SUPPORT DATA
MODEL FIELDS
ODB-1
HIGH LEVEL TASK
Figure 2.2 Simplified IFS flow diagram for observation preparations which may be state dependent: more
broadly, processing which takes place inside the main IFS. The disc icons representing data stores and the
rectangles representing processing stages. This is an illustrative, rather than comprehensive, description
of the processing. See Fig. 1.1 for the wider observation processing context.
• airep.json
• dribu.json
• temp.json
• pilot.json
• pgps.json
• synop.json
• ship.json
• awp.json
• ewp.json
• DateTimeValidator, LocationValidator
• error statistics.csv
• PrescribedErrorAssigner
• FinalErrorAssigner
• SpecificHumidityAssigner
• InstrumentTypeAssigner
• HeightToPressureConverter
• RadiosondeBiasCorrector
The JSON configuration files describe processing pipeline for the given observation type in declarative way.
This allows to modify or even construct new pipelines at runtime, reusing existing filters, without having to
recompile the source. Conceptually, every pipeline is composed of a chain of filters that are sequentially applied
on each observation report. All JSON configuration files can be found in the standard IFS scripts directory.
Since COPE is a collaborative project involving several external partners, its source code is managed under
common Git repository: https://software.ecmwf.int/stash/projects/COPE/repos/cope.
For SYNOP, SHIP and BUOY reports the usual humidity variable reported is dewpoint temperature and for
many years this was the only one extracted. However some (particularly in cold regions) report relative humidity
and from 47R1 there is an option (B2O EXTRACT RH2M, default false) to extract this and another option
(COPE OVERRIDE RH2M) which determines which is used if both are reported.
(i) Wind direction (DDD) and force (FFF) are transformed into wind components (u and v) for SYNOP,
AIREP, SATOB, DRIBU, TEMP and PILOT observations.
(ii) Temperature (T) and dew point (Td) are transformed into relative humidity (RH) for SYNOP and
TEMP observations, with a further transformation of the RH into specific humidity (Q) for TEMP
observations.
where T0 = 273.16 K, a = 611.21, b = 17.502, c = 32.19, Rdry = 287.0597 and Rvap = 461.5250 are constants.
The specific humidity Q is worked out by using
A
Q = RH
Rvap
1 − RH Rdry −1 A
Data from the AMI instrument on ERS-2 have been used from June 1996 (with an interruption from January
2001 till March 2004), data from the SeaWinds instrument on-board QuikSCAT was used from January 2002
until November 2009 (when QuikSCAT failed), and data from ASCAT on MetOp have been assimilated
from June 2007 onwards. Data from NSCAT have never been used in an operational setup, although offline
assimilation experiments have been performed. From November 2010 onwards scatterometer data is assimilated
as equivalent-neutral 10-metre wind, rather than (real) 10-metre wind, since the former model winds are closer
related to scatterometer observations.
For ERS and ASCAT data, the sum is over triplets, while for QuikSCAT the sum may extend to 16 values (four
25 km sub-cells with each four observations). The quantity p is equal to unity for NSCAT and QuikSCAT.
For ERS and ASCAT data, a value of p = 0.625 was introduced because it makes the underlying GMF more
harmonic, which helps to avoid direction-trapping effects (Stoffelen and Anderson, 1997). The noise to signal
ratio kp provides an estimate for the relative accuracy of the observations.
0
The simulation of σm is for ERS and ASCAT data based on the CMOD5.4 model function. For NSCAT data
the NSCAT-2 GMF has been utilized. For QuikSCAT data, the choice of GMF is handled by a logical switch
LQTABLE. By default LQTABLE = .TRUE. and the QSCAT-1 model function is used, otherwise, modelled
backscatter values are based on the NSCAT-2 GMF. The minimization is achieved using a tabular form of the
GMF, giving the value of the backscatter coefficient for wind speeds, direction and incidence angles discretized
with, for ERS and ASCAT data, steps of 0.5 ms−1 , 50 and 10 , respectively. For NSCAT and QuikSCAT data
the corresponding values are 0.2 ms−1 , 2.5◦ and 1◦ . ERS and ASCAT use the same table, which is read in the
initialisation subroutine INIERSCA. For QuikSCAT, inversion takes place in the QSCAT25TO50KM program
in the PRESCAT task.
For QuikSCAT, from 38 across-track 50 km cells, the outer 4 at either side of the swath are, due to their known
reduced quality rejected. In addition, for QuikSCAT, it is verified whether inverted winds are well-defined, i.e.
whether minima D(u) are sufficiently sharp. In practise this is mainly an issue for cells in the central part of
the swath. Data is rejected when the angle between the most likely solution and its most anti-parallel one is
less than 135◦ (routine SCAQC).
After wind inversion, a further check is done on the backscatter residual associated to the rank-1 solution
(also called ‘distance to the cone’). This misfit contains both the effects of instrumental noise and of GMF
errors. Locally, these errors can become large when the measurements are affected by geophysical parameters
not taken into account by the GMF, such as sea-state or intense rainfall. For ERS, a triplet is rejected when
the cone distance exceeds a threshold of three times its expected value. For QuikSCAT and ASCAT data such
a test is not performed.
In addition to a distance-to-cone test on single observations, a similar test is performed for averages for
data within certain time slots. If these averages exceed certain values, all data within the considered time
slot is suspected to be affected by an instrument anomaly, since geophysical fluctuations are expected to be
averaged out when grouping together large numbers of data points. For ERS and ASCAT, cell-wise averages
are calculated for the default 4D-Var observation time slot (30 minutes) in the IFS routine SCAQC, and
its rejection threshold (1.5 times average values) are defined in the IFS routine SUFGLIM. For QuikSCAT
averages are considered over six-hourly data files and are evaluated in the pre-screening (DCONE OC), using
a threshold of 1.45 for any of cells between 5 and 34.
Both mp rain probability and nof rain index are provided in the original 25 km BUFR product (for details
see Leidner et al., 2000). When one of these quantities is missing, the above mentioned condition for the
remaining quantity is used.
(d ) Bias corrections
For ASCAT and ERS, bias corrections are applied, both in terms of backscatter (before wind inversion) and
wind speed (after inversion), particularly to compensate for any change in the instrumental calibration and to
ensure consistency between the retrieved and model winds. The backscatter and wind-speed bias corrections
are defined by dedicated files read in the initialization subroutine INIERSCA. Files are in principle model-
cycle and date dependent. Currently for ERS-2, the appropriate files have no effect (i.e. containing only unity
correction factors and zeros), since the CMOD5.4 GMF was tuned on ERS-2. For ASCAT, though, the usage
of bias corrections is essential, since the backscatter product for this instrument has been calibrated differently
from ERS. The bias correction file for backscatter has been updated every time a change in the calibration of
ASCAT was imposed by EUMETSAT.
For QuikSCAT data no bias corrections in σ 0 space is applied, though, wind-bias corrections are made. This
also takes place in the pre-screening. Corrections are performed in three steps. First of all, wind speeds are
slightly reduced according to:
v ′ = 0.2 + 0.96 v.
Where v is the wind speed as obtained from inversion (2.1) The addition of 0.2 ms−1 is used in the
operational configuration, where scatterometer data is assimilated as equivalent neutral wind. In case this
is not desired (expressed by LSCATT NEUTRAL=false) only the rescaling factor of 0.96 is used. It was
observed that the residual bias between QuikSCAT winds and ECMWF first guess winds depends on the value
of mp rain probability. The motivation is that, for higher amounts of precipitation, a larger part of the total
backscatter is induced by rain, leaving a smaller part for the wind signal. The correction applied is
where ⟨ ⟩ denotes the average value over the 25 km sub-cells that were taken into account in the inversion
(i.e. over rain-free sub-cells). The maximum allowed correction is 2.5 ms−1 , which is seldom reached. Finally,
for strong winds, QuikSCAT winds were found to be quite higher than their ECMWF first guess counterparts.
In order to accommodate this, for winds stronger than 19 ms−1 the following correction is applied:
∂p 1
= C(A1 u − A2 v)
∂x 2
∂p
= −C(A1 u + A2 v)
∂y
where u and v are observed wind components, and A1 = 0.94 and A2 = 0.34 are the sine and cosine of the
angle between the actual and geostrophic winds. C is the Coriolis term multiplied by a drag coefficient (D)
so that
C = 2ΩD sin θ
where, θ is the latitude and Ω = 0.7292 × 10−4 s−1 is the angular velocity of the earth and D is expressed as
D = GZ
G = 1.25 is an assumed ratio between geostrophic and surface wind over sea and Z = 0.11 kgm−3 is an
assumed air density. Now the adjusted pressure tendency (Pta ) is found as
∂p ∂p
Pta = Pt − Us + Vs
∂x ∂y
Psa = Ps − Pta ∆t
where, ∆t is a time difference between analysis and observation time. Of course in the case of non-SHIP data
Pta ≡ Pt .
These transformations are (probably) now done in COPE (see Sec. 2.3)
(i) Season.
(ii) Actual geographical position of an observation.
The positional dependency is then introduced to reflect the dependence on the precise latitude within these
three regimes.
The persistence error calculation is split into two parts. In the first part the above dependencies are expressed
in terms of factors a and b which are defined as
d π
a = sin 2π +
365.25 2
and
max(θ, 20)
b = 1.5 + a 0.5 min
20
where d is a day of year and θ is latitude.
The persistence error for time difference between analysis and observation ∆t is then expressed as a function
of b with a further dependence on latitude and a maximum persistence error Emaxpers for 24 hour given by
Emaxpers
Epers = [1 + 2 sin(|2θ|b∆t)]
6
where ∆t is expressed as a fraction of a day. The Emaxpers have the values shown in Table 2.1.
Subroutine SUPERERR is used to define all relevant points in order to carry out this calculation, and is called
only once during the general system initialization. The calculation of the actual persistence error is dealt with
by OBSPERR.
Table 2.1 Observation persistence errors of maximum 24-hour wind (u, v), height (Z) and
temperature (T ).
As can be seen from the tables of prescribed observation errors, they are defined at standard pressure levels
but the ones used are interpolated to the observed pressures. The interpolation is such that the observation
error is kept constant below the lowest and above the highest levels, whereas in between it is interpolated
linearly in ln p. Several subroutines are used for working out the prescribed observation error: SUOBSERR,
OBSERR, FIXERR, THIOERR and PWCOERR.
Relative humidity observation error RH err is either prescribed or modelled. More will be said about the modelled
RH err in Subsection (c). RH err is prescribed only for TEMP and SYNOP data. RH err is preset to 0.17 for
TEMP and 0.13 for SYNOP. However, if RH < 0.2 it is increased to 0.23 and to 0.28 if T < 233 K for both
TEMP and SYNOP.
Surface pressure observation error Ps err is derived by multiplying the height observation error Zerr by a
constant:
Ps err = 1.225 Zerr
However, the Ps err may be reduced if the pressure tendency correction is applied. For non-SHIP data the
reduction factor is 4, whereas for SHIP data the reduction factor is either 2 or 4, depending on if the Pt is
adjusted for SHIP movement or not.
The thickness observation error (DZ err ) is derived from Zerr .
where FOE , OE and PE are final, prescribed and persistence observation errors, respectively. The subroutine
used for this purpose is FINOERR.
(c) AMVs
Situation-dependent observation errors are computed in AMV OBERR. These are generated within the AMV
observation operator when LSCREEN=.TRUE.
(d ) GPSRO
Observation errors are computed in GPSRO OBERROR. These are generated within the observation operator
when LSCREEN=.TRUE.
Clear-sky radiances: For some clear-sky radiances, background error estimates based on the EDA spread
(for a given zenith angle) are available as SES fields, and these are treated similar to the values for
standard geophysical variables. SES fields are available for clear-sky simulations of HIRS, MSU, SSU,
AMSU-A, AMSU-B/MHS and SSMI (Bormann and Bonavita, 2013). Where needed, these values are
interpolated to the observation locations. For some other sensors (e.g., geostationary imagers, ATMS,
MWTS-2), background error estimates from equivalent channels of the previously named sensors are
assigned. While these estimates are not the same as a mapping of the actually used control vector
background error into observation space they will capture similar spatial structures.
For hyperspectral infrared instruments (IASI, AIRS, CrIS), the background error estimate is set to 3 K.
For most spectral regions this is a severe over-estimation of the uncertainty in the background, and the
implication is that the background error quality control for these instruments is very loose.
All-sky radiances: All-sky radiances do not use situation-dependent estimates from the EDA spread, but
rather employ a parametric model, as defined in MWAVE ERROR MODEL.
Bending angles: The background error is set to the same value as the observation error.
Chapter 3
Observation operators
Table of contents
3.1 Introduction
3.1.1 Top-level observation operator: HOP
3.1.2 Tangent-linear and adjoint code
3.1.3 Data selection controls: NOTVAR
3.1.4 Test harness
3.1.5 Other tests of the observation operator
3.2 Conventional observation operators
3.2.1 General aspects
3.2.2 Geopotential height
3.2.3 Wind
3.2.4 Humidity
3.2.5 Temperature
3.2.6 Surface observation operators
3.2.7 Atmospheric Motion Vectors
3.2.8 Gas retrievals
3.2.9 Scatterometer winds
3.3 Satellite radiance operators
3.3.1 Common aspects for the setup of nadir radiance assimilation
3.3.2 Clear-sky nadir radiances and overcast infrared nadir radiances
3.3.3 All-sky nadir radiances
3.3.4 Clear-sky limb radiances
3.4 GPS Radio Occultation bending angles
3.5 Ground-based radar precipitation composites
3.6 Atmospheric composition
3.1 INTRODUCTION
The observation operators provide the link between the analysis variables and the observations (Lorenc, 1986;
Pailleux, 1990). The observation operator is applied to components of the model state to obtain the model
equivalent of the observation, so that the model and observation can be compared. The operator H signifies
the ensemble of operators transforming the control variable x into the equivalent of each observed quantity,
yo , at observation locations.
From a data assimilation perspective, the job of the observation operator is to interpolate the model state to
the observation location, and then to convert from state variables to observed variables. In the IFS, this job is
divided into two or three parts. The horizontal interpolation to observation locations is handled by the GOMs;
this is a complex task requiring multi-process communication to interpolate and to get the model data from
whichever processors it is located onto the processors where the observation data resides (see part 2). From a
dataflow point of view, the observation operator is needed in the context of observation preparation, screening
and 4D-Var. Figure 3.1 summarises the operations relevant to observations in 4D-Var. In this observation
operator documentation, we consider a more limited part of the observation operator: the vertical part of the
interpolation (where relevant) and the transformation into observed variables.
4DVAR ANALYSIS
ODB-1
SUPPORT DATA
MODEL FIELDS
ODB-1
HIGH LEVEL TASK ANALYSIS
LOW LEVEL TASK
Figure 3.1 Simplified IFS flow diagram for observation-related processing in 4D-Var. This is an
illustrative, rather than comprehensive, description of the processing. See Fig. 1.1 for the wider observation
processing context.
The IFS observation operators are generic in the sense that the same routine is often used for several different
data types. For example, the radiance operator (RTTOV) simulates measurements from a large number of
satellite radiometers (microwave and infrared), and the temperature operator (PPT) is used for TEMP, AIREP,
and other data types. Similarly the routine PPQ is used for interpolation of specific humidity to given pressures,
but it can also be used for any other atmospheric mixing ratio constituents, such as ozone and carbon dioxide.
Note that many of the PP-routines were developed for the model’s pressure-level post-processing package and
are used also in that context.
• the GOM PLUS (YDGP5) containing the model state at observation locations;
• the ODB, currently an implicit input through a Fortran module; as OOPS develops further the ODB
will become an explicit input too;
• the VarBC object YDVARBC, representing the bias correction coeffients;
• the implicit (communicated-by-module) results of a variety of setup routines (see later).
The main job of HOP is first to open an ODB view, i.e. to give access to the contents of the ODB relevant to
this set of observations, and second, to call a lower level observation operator depending on what observational
data is in the set. This is determined by the varnos (see Sec. 6.4) of the reports and datums in the set. The
varno determines what physical observation operator is required, for example radiance simulation using RTTOV
or a vertical interpolation of humidity. Because observation sets often contain multiple variables, it is possible
for more than one physical observation operator to be called for the same set. The main physical operators
are:
• Conventional observations (OBSOP CONV): this covers surface and upper-air observations, as
well as in-situ data and satellite retrievals that include AMVs and scatterometer winds. What links these
observations is the observed variables are closely related to the model state, so that the main part of
the observation operator is usually only a vertical interpolation or integration (for example interpolating
to the vertical level of an aircraft observation, or integrating over many model levels for total or partial
column ozone observations). All the necessary conventional operators are handled by ‘PP’ or post-
processing routines, and are accessed through the top-level PP interface to the observation operator,
PPNEW. Section 3.2 covers these observation operators.
• Nadir radiances (OBSOP RAD): this covers both clear-sky and all-sky radiance observations. At a
lower level, these use either RTTOV or (for all-sky microwave) RTTOV SCATT. See section 3.3
• Limb radiances (OBSOP LIMB): the 2-dimensional model state and 2-dimensional observation
operator for limb radiances is not handled by RTTOV, so limb radiances need their own operator.
This code is dormant and not used operationally. See section 3.3
• GPS bending angles (OBSOP GPSRO): this covers satellite radio-occulation, and it usually requires
2-D slice through the model to compute the tangent path through the earth’s atmosphere, including the
computation of the bending angles. See section 3.4
• GPS path delays (ground-based GPS; OBSOP APDSS): Currently only active at Météo-France,
so not discussed further.
• Ground-based radar observations (OBSOP RADAR): This implements the 1D-Bayesian retrieval
of Wattrelot et al. (2014) used at Météo-France, and not discussed further here.
• Precipitation accumulations, (OBSOP PRECIP ACCUM): This enables the assimilation of
NEXRAD rain radar and rain gauges. The model-equivalent precipitation accumulations are computed
inside the model physics and then stored directly to ODB, circumventing the normal process of the
observation operator. The main job of the observation operator under HOP is to extract the pre-
computed observation equivalent from the ODB. This approach is DEPRECATED and will become
impossible in OOPS.
• Atmospheric composition (OBSOP COMPOSITION): This handles observations mainly used in
the Copernicus atmospheric monitoring service, and it covers retrieved constituent variables as well as
aerosol optical depth and some other advanced experimental operators. Composition variables would
normally be expected to go through the conventional observation route (OBSOP CONV). However, the
composition route allows proper treatment of the averaging kernels. A more technical link among the
composition operators is their use of the ‘GEMS’ input model variables, split into greenhouse gases
(GHG), reactive gases (CHEM) and aerosols (AERO). Nevertheless, there is much overlap at a scientific
and technical level between the conventional and composition parts of the observation operator, so a
long-term design goal should be to unify them.
direct, TL and adjoint routines consistent. For example, if a new feature is added in the direct version, it is
more obvious that the TL and adjoint should be updated to reflect this.
Where direct and TL or adjoint variables are present in the same routine, the usual IFS naming convention
applies:
• GOM PLUS DUMP files containing the model state at observation locations;
• ODB-1 files (ECMA and CCMA) containing the ODB;
• VARBC.cycle file containing the VarBC coefficients;
• HOP RESULTS files containing reference HOP output, for comparison;
• All the data files required to run the observation operator, such as RTTOV coefficient files, channel
mappings etc.
To produce these files it is necessary to run the IFS with LHOP RESULTS=true and
LGOM PLUS DUMP=true in the TESTVAR namelist. Also it is necessary to restrict the amount of
observational data to make it feasible to run the test harness interactively on a single node. Further details
can be found in the test harness README.run file.
In direct mode the test harness runs the observation operator and computes the VarBC bias correction; these
are compared to the reference output and should be bit-identical between offline and online runs of the same
code. In TL and adjoint mode the TL-adjoint consistency test is run, along with a comparison of the TL results
with reference results from a run of the IFS. There is not yet the facility to test VarBC TL or adjoint or the
auxiliary control variables like the skin-temperature sink variable.
Λ
TICAO = T0 − ϕICAO (3.1)
g
where T0 is 288 K, ϕICAO is the geopotential above 1013.25 hPa and Λ is 0.0065 K m−1 in the ICAO
troposphere and 0 in the ICAO stratosphere (the routine PPSTA). The ICAO tropopause is defined by the
level where the ICAO temperature has reached 216.5 K (SUSTA). Using this temperature profile and integrating
the hydrostatic equation provides TICAO and the geopotential ϕICAO as a function of pressure (PPSTA). We
may then evaluate the geopotential ϕ(p) at any pressure p following
where psurf is the model surface pressure and ϕsurf , the model orography. ∆ϕ is obtained by vertical
interpolation from the full model level values ∆ϕk . The interpolation is linear in ln(p) up to the second
model level (PPINTP) and quadratic in ln(p) for levels above it (PPITPQ, see below). Following Simmons
and Burridge (1981) the full model level values are obtained by integrating the discretized hydrostatic equation
using the routine GPGEO of the forecast model to give
k+1
X pj+1/2
∆ϕk = Rdry (Tvj − TICAOj ) ln + αk Rdry (Tvk − TICAOk ) (3.3)
pj−1/2
j=L
with
pk−1/2 pk+1/2
αk = 1 − ln
pk+1/2 − pk−1/2 pk−1/2
for k > 1 and α1 = ln(2).
where a, b and c are constants determined so that the above equation fits the heights at the top levels (k = 1, 2
and 3). The interpolation formula is
Rdry psurf
T ∗ = Tl−1 + Λ Tl−1 ln (3.6)
g pl−1
∗
{T + max[Ty , min(Tx , T ∗ )]}
T∗ = (3.7)
2
Find the temperature at mean sea level, T0 (also in CTSTAR) from
ϕsurf
T0 = T ∗ + Λ (3.8)
g
T0 = min[T0 , max(Tx , T ∗ )] (3.9)
where Tx is 290.5 K and Ty is 255 K. The geopotential under the model’s orography is (in PPGEOP) calculated
as γ
Rdry T ∗
p
ϕ = ϕsurf − −1 (3.10)
γ psurf
Rdry
where γ = ϕsurf (T0 − Tsurf ).
3.2.3 Wind
In PPUV a linear interpolation in ln p (PPINTP) is used to interpolate u and v to the observed pressure levels
up to the second full model level, above which a quadratic interpolation is used (PPITPQ. Below the lowest
model level wind components are assumed to be constant and equal to the values of the lowest model level.
3.2.4 Humidity
Specific humidity q, relative humidity U and precipitable water content P W C are linearly interpolated in p,
in PPQ, PPRH and PPPWC, respectively. Upper air relative humidity data are normally not used, but could
be used, if required. The use of surface relative humidity data is described in Subsection (e).
and then in PPRH interpolated to the required observed pressure levels (using PPINTP). Below the lowest
model level and above the top of the model is U assumed to be constant. Saturation vapour pressure is
calculated using FOEEWMO if GPRH has been called form the observation operator routines, and using
FOEEWM if called from the model post processing.
and then in PPPWC interpolated to the required observed pressure levels (using PPINTP). PWC is assumed
to be zero above the top of the model. Below the model’s orography PWC is extrapolated assuming a constant
q = ql .
(d ) Specific humidity
Specific humidity q is in PPQ interpolated to the required observed pressure levels (using PPINTP). Below
the lowest model level and above the top of the model is q assumed to be constant and equal to ql and q1 ,
respectively.
3.2.5 Temperature
Temperature is interpolated linearly in pressure (PPINTP), in the routine PPT. Above the highest model level
the temperature is kept constant and equal to the value of the highest model level. Between the lowest model
level and the model’s surface the temperature is interpolated linearly, using
(psurf − p)Tl + (p − pl )T ∗
T= (3.15)
psurf − pl
Below the lowest model level the temperature is extrapolated by
2 3
p 1 p 1 p
T = T ∗ 1 + α ln + α ln + α ln (3.16)
psurf 2 psurf 6 psurf
with α = ΛRdry /g, for ϕsat /g < 2000 m, but α is modified for high orography to α = Rdry (T0′ − T ∗ )/ϕsurf ,
where
T0′ = min(T0 , 298) (3.17)
for ϕsurf /g > 2500 m, and
for 2000 < ϕsurf /g < 2500 m. If T0′ < T ∗ then α is reset to zero. The two temperatures T ∗ and T0 are computed
using (3.6) to (3.9).
were u, s are wind and energy variables, u∗ , s∗ are friction values, u∗ = |u∗ |, and κ = 0.4 is von Kármán’s
constant. Note that u denotes the vector wind relative to a surface current u0 ,
u = ua − u0 , (3.22)
with ua the wind in the absolute (model) frame. In default configuration (global variable LECURR is false)
surface current is zero, in which case the distinction between absolute and relative wind is irrelevant.
The temperature is linked to the dry static energy s by
s = cp T + ϕ (3.23)
cpvap
cp = cpdry 1 + −1 q . (3.24)
cpdry
where z0 is the surface roughness length. Drag and heat coefficients are defined as
u2∗
CM = , (3.26)
[u(z)]2
u∗ s∗
CH = , (3.27)
u(z)[s(z) − s̃]
where u(z) = |u(z)| and s̃ is the dry static energy at the surface. Details on the estimation of the roughness
length and transfer coefficients can be found in Subsection (c).
For convenience the following quantities are introduced:
√
κ κ κ CM
BN = √ , BM = √ , BH = . (3.28)
CN CM CH
and the vertical profiles for relative wind and dry static energy are then given by
u(z1 ) z BN z BN −BM
u(z) = ln 1 + (e − 1) − ln 1 + (e − 1) , (3.33)
BM z1 z1
s(z1 ) − s̃ z BN z BN −BH
s(z) = s̃ + ln 1 + (e − 1) − ln 1 + (e − 1) . (3.34)
BH z1 z1
In case the influence of stability is neglected, the following equivalent-neutral wind profile un (z) is obtained:
u(z1 ) z
un (z) = ln 1 + (eBN − 1) . (3.35)
BM z1
For wind, the relevant routine PPUV10M embodies this method of Geleyn (1988) to estimate vector
wind components at observation height z from provided lowest model level wind u(z1 ) = ua (z1 ) − u0 . For
scatterometer data, by default, relative wind (3.30), (3.33) is returned, while for all other data the wind in the
absolute frame is evaluated:
ua = u + u0 . (3.36)
For scatterometer data, by default equivalent-neutral wind (3.35) is returned. In case non-neutral wind is to
be assimilated (operational before November 2010), a variable LSCATT NEUTRAL is to be set to false.
The temperature at observation height z = 2 m is evaluated in PPT2M. It is obtained from s as
zg
T (z) = s(z) − , (3.37)
cp
with
πϑsoil q
h̄ = max 0.5 1 − cos , min 1, (3.40)
ϑcap qsat (Tsurf , psurf )
where ϑsoil is the soil moisture content and ϑcap is the soil moisture at field capacity (2/7 in volumetric units).
Equation (3.39) assigns a value of 1 to the surface relative humidity over the snow covered and wet fraction
of the grid box. The snow-cover fraction Csnow depends on the snow amount Wsnow so that
Wsnow
Csnow = min 1,
Wsnowcr
where Wsnowcr = 0.015 m is a critical value. The wet skin fraction Cliq is derived from the skin-reservoir water
content Wliq by
Wliq
Cliq = min 1, ,
Wliqmax
where
Wliqmax = Wlayermax {(1 − Cveg ) + Cveg Aleaf }
−4
with Wlayermax = 2 × 10 m being the maximum amount of water that can be held on one layer of leaves,
or as a film on bare soil, Aleaf = 4 is the leaf-area index, and Cveg is the vegetation fraction.
Because of the complicated form of the stability functions, the former integrals have been approximated by
analytical expressions, formally given by (coded in EXCHCO)
z
CM = CN fM Ri ,
z0
(3.43)
z
CH = CN fH Ri ,
z0
where Tv is the virtual potential temperature. The functions fM and fH correspond to the model instability
functions and have the correct behaviour near neutrality and in the cases of high stability (Louis, 1979; Louis
et al., 1982).
with b = c = 5.
(ii) Stable case Ri > 0
1
fM = p , (3.47)
1 + 2bRi / (1 + dRi )
1
fM = p , (3.48)
1 + 3bRi / (1 + dRi )
with d = 5.
As an alternative, the information on stability can be extracted from the 10-metre equivalent neutral wind
un as evaluated in SPPCFL MOD in the ECMWF surface-layer physics, which is activated by a switch
LVDFTRAJ=true. In that case, over the ocean roughness length z0 is estimated from un and the ocean-
wave Charnock parameter α, by an approximate solution (Hersbach, 2011) of the following set of implicit
equations (coded in Z0SEA):
ν u2
z0 = αM + α ∗, (3.49)
u∗ g
u∗
un = log(1 + z10 /z0 ). (3.50)
κ
Here z10 = 10 m, αM = 0.11, κ = 0.4 is the Von Kármán constant, g = 9.80665 ms−2 is the gravitational
acceleration, and ν = 1.5x10−5 m2 s−1 the kinematic viscosity.
The coefficient CN is, again evaluated by (3.25), but now using the improved estimate of zo , while coefficient
CM for momentum is given by (EXCHCO VDF):
2
CM = BM /κ, BM = log(1 + z10 /z0 )||u(z1 )||/un . (3.51)
In the operational configuration this method is only used for the assimilation of scatterometer wind. For
other observables, the method of Louis (1979); Louis et al. (1982) (LVDFTRAJ=false) is used. Routine
EXCHCO VDF does not provide an estimate for the coefficient CH for heat.
10 is set (see Table 6.25). For the latter case datum status is set to rejected as well (Table 6.24). When
LQSCATT = .FALSE, the two first winds are used and the ambiguity removal takes place implicitly through
a special SCAT cost-function (see part II), in HJO (Stoffelen and Anderson, 1997). In that case for QuikSCAT
the most likely wind (highest a priori probability) and its most opposing ambiguity are selected.
Routine PPUV10M is like SYNOP, SHIP and DRIBU wind, also used also for SCAT data. Difference is that
(in case account is taken for ocean current) the relative wind rather than the absolute wind is returned (not
active in the operational suite, though), and the evaluation of equivalent-neutral wind rather than the real wind
(which latter includes for scatterometer data undesired stability effects; operational since November 2011).
of all the satellite groups that were found in the ODBs can be found in the if straj output by searching for
SATGRP.
humidity, and other gas concentration values are taken from the lowest model level. A check against the
validity bounds of the RTTOV transmittance parametrization is in this case done within RTTOV (routine
SATRAD/RTTOV/MAIN/RTTOV CHECKINPUT.F90), for the optical depth calculations only (switch
APPLY REGRESSION LIMITS in SATRAD/MODULE/RTTOV CONST.F90). Various radiance preparations
are again performed in HRADP ML.
In either case, the routine OBSOP RAD constructs a list of requested channel numbers for each report from
the observation array, and only model radiances for exactly those channels are then requested from the RT-
code. The routine RADTR ML packets the profiles into chunks of work of an appropriate maximum size for
the RT-code (currently set to 8 in SATRAD/MODULE/mod cparam.F90). The RT packet size has been
communicated to IFS in the call to RTSETUP. The output is radiances for the channels requested.
The TL and the adjoint are done in the common routines HOP and OBSOP RAD, with separate lower-level
routines. The Ṫ and q̇ have to be recomputed before the actual tangent linear and adjoint computations can
start. The pointers to the radiance data in the observation array are obtained just as done in the direct code.
Consistency of the TL and adjoint operator can be tested by turning on the switch LRTTOV ADTEST in
prepIFS.
(i) Microwave imagers—AMSR2, GMI, MWRI, and some channels of SSMIS are actively assimilated;
WINDSAT and SSM/I are passively monitored, though only over oceans and only for latitudes
equatorward of 60◦
(ii) Microwave humidity sounders—MHS, MWHS-2 channels 11-15, and some channels of SSMIS are actively
assimilated over land, ocean and sea-ice
(iii) Microwave temperature sounders—AMSU-A channels 5-14 and MWHS-2 channels 2-7 are assimilated
over land, ocean and sea-ice with few exceptions
All-sky observations follow a path through the IFS code that is slightly different from that for clear-sky
radiance observations, though the observation operator runs under HOP and OBSOP RAD rather than under
the model physics, as previously. However, the observation operator requires a number of diagnostic variables
(e.g. precipitation flux and fraction) that come from the moist physics parametrizations and require a model
timestep to have been run before they can be made available in observation space. These fields are generated
in CALLPAR, stored in the GFL arrays and interpolated to observation space like any other model field required
by an observation operator, using the GOM arrays. The main difference is that there is no interpolation: the
observation operator gets the model profile at the grid point closest to the observation. An exception to this
is temperature sounders such as AMSU-A, which use slant-path radiative transfer (Bormann, 2017) via 2D
GOM arrays.
All-sky assimilation can be switched on in PrepIFS by means of switches for individual sensors, e.g. LAMSR2,
LGMI, LSSMIS etc. For all-sky AMSU-A and MHS, which can run in parallel to clear-sky assimilation, there
is a separate switch LAMSUA ALLSKY or LMHS ALLSKY. Comprehensive scientific documentation of the
all-sky approach can be found in Bauer et al. (2010), Geer et al. (2010), Geer and Bauer (2011), Geer and
Bauer (2012) and Geer et al. (2014).
A number of initialisation tasks are performed in IFS/MWAVE/mwave setup, including reading the namelist
NAMMWAVE for configuration flags. An array of mwave ids structures is created, one for each satellite and
sensor combination that will pass through the all-sky operators. In this private table are stored things like the
instrument zenith angle, observation error specifications, and the ID numbers used in the rest of the IFS (e.g.
sensor, satellite and bufr IDs).
(c) Diagnostics
The consistency of the TL and adjoint operators can be tested by setting ldmwave test = .true. in the
NAMMWAVE namelist in the SCRIPTS/GEN/ifsmin script. This causes IFS/MWAVE/mwave obsop test to
be called during the minimisation with the real TL input values for each observation. The results of the test
are written to the IFS logfiles, prefixed by ‘MWAVE OBSOP TEST AD:’. The first number gives the TL / AD
inaccuracy in multiples of machine precision. Typically this should be substantially less than 100 but it will go
over 1000 for a few observations.
A number of diagnostics are stored in the ODB in the allsky or allsky body table:
DATUM TBFLAG - This is a bitfield which records quality control decisions for the all-sky observations. It is an
additional diagnostic on top of the usual status and event flags, and it only records decisions made internally in
the all-sky observation operator. A value of 1 indicates an OK observation; all other values indicate rejection.
However, even if the observation is considered OK by the all-sky observation operator, it may subsequently be
rejected by the other IFS screening processes (e.g. blacklisting, thinning, VarQC, background QC), so always
check the ‘status@hdr’ and ‘status@body’ too. Binary arithmetic can be used to decipher the tbflag bitfield.
For example, if DATUM TBFLAG = 33 = 25 + 20 , that means bits 5 and 0 have been set. Bit 5 indicates
contamination by sea-ice. 20 is equal to 1; this would have indicated ”OK” if no other bit had been set. The
full structure of the DATUM TBFLAG bitfield is described in IFS/MODULE/yommwave.
DATUM TBCLOUD - this is a bitfield recording the status of diagnostic cloud and rain identification
tests performed on observed and simulated brightness temperatures by IFS/OP OBS/mwimager cloud and
further documented in the code and in Geer et al. (2008). The bitfield structure is documented in
IFS/MODULE/yommwave. The lowest 2 bits give the results of the FG cloud test. With AND representing
the bitwise boolean operator, (DATUM TBCLOUD AND 2) / 2 will give the result of the test for cloud in the
FG, with 1 indicating a cloudy scene. (DATUM TBCLOUD AND 1) / 1 will give the result for the observation.
There are also a number of diagnostics relating to FG and analysis model state. These are valid at the time
and location of the observation, giving information that is not otherwise archived. These values include the
surface rain and snow rate, in kg m−2 s−1 , and the total columns of water vapour, cloud water, cloud ice,
rain and snow, in kg m−2 .
The routine SULIMB sets up a limb group table (defined and stored in module YOMLIMB), for each satellite,
sensor, and codetype, along the lines of the satellite group table set up in SURAD. Limb radiances are treated
together with GPS radio occultation observations here. SULIMB calls the routine RTL SETUP which includes
the interface routine to the satrad library to read the RTLIMB coefficient files. Note that in contrast to the
setup for nadir radiances, the code is set up to use fixed pressure levels, reference and limit profiles that are
specific to the RT-coefficient files. This information is stored in the limb group table. RTL SETUP also reads
a channel selection file into the channel selection structure Y LIMB CHAN SEL in the module YOMLIMB.
Observation errors and constant, channel-specific biases are also read here from auxiliary files and stored in
dedicated variables YOMLIMB.
Setting of observation errors and biases and screening of clear-sky limb radiances is performed from
OBSOP LIMB RAD in the routines RTL OBERROR and RTL SCREEN. The latter applies the channel
selection previously stored in Y LIMB CHAN SEL in module YOMLIMB, and it performs cloud screening.
The actual assimilation happens under the routine HOP via OBSOP LIMB RAD. OBSOP LIMB RAD calls
the routine RTL HOP 1D which performs the following tasks: it interpolates the model profiles in the vertical
to the fixed pressure levels (using the standard interpolation routines), does a simple extrapolation above the
model top if required (based on a fixed mesospheric lapse rate for temperature, and holding humidity or ozone
constant), and it checks the model profiles against the validity limits provided with the RTLIMB coefficient file.
Finally, RTL HOP 1D calls RTLIMB HAT to enter the satrad library and perform the radiance computations.
The routine RTL HOP 1D is used when local horizontal homogeneity is to be assumed for the radiative
transfer computations. Alternatively, the radiative transfer computations can take the horizontal structure in
the limb-viewing plane into account by providing a series of profiles covering the limb-viewing plane. In this
case, profiles provided by 2D GOMs are used, and the routine RTL HOP 2D is called from HOP instead of
RTL HOP 1D. The two-dimensional facility is switched on by specifying NOBSPROFS(10) > 1 for obstype
10 in the namelist NAMNPROF. Note that this means GPS radio occulation bending angles present in the
assimilation will also take horizontal structure into account.
operator first accumulates the model surface precipitation fields at each time step over the same period
(NPRACCL) as the observed precipitation composites. This accumulation is currently performed inside the
model physics (EC PHYS). Model precipitation amounts are then converted to log(RR[mm/h]+1) space, to
be consistent with observations (in GBRAD OBSOP). Scientific details can be found in Lopez (2011).
Chapter 4
Screening
Table of contents
4.1 Introduction
4.2 The structure of the observation screening
4.2.1 The incoming observations
4.2.2 The screening run
4.2.3 General rationale of the observation screening
4.2.4 3D-Var versus 4D-Var screening
4.3 Screening decisions made in observation operators
4.3.1 Satellite radiances
4.3.2 Ground-based radar precipitation composites
4.4 Generic independent observation screening decisions
4.4.1 Preliminary check of observations
4.4.2 Blacklisting
4.4.3 Background quality control
4.5 The dependent observation screening decisions
4.5.1 Update of the observations
4.5.2 Global time–location arrays
4.5.3 Vertical consistency of multilevel reports
4.5.4 Removal of duplicated reports
4.5.5 Redundancy check
4.5.6 Thinning
4.5.7 Compression of the ODB
4.6 Parallel aspects
Appendix A
A.1 Bad reporting practice of SYNOP and TEMP reports
A.2 Revised background quality control for selected observations
4.1 INTRODUCTION
This chapter describes the observation screening in the ECMWF 3D/4D-Var data assimilation. A more general
description can be found in Järvinen and Undén (1997). The purpose of the observation screening is to select a
clean array of observations to be used in the data assimilation. This selection involves quality checks, removal of
duplicated observations, thinning of their resolution etc.. The current selection algorithm has been operational
since September 1996 and was to a large extent designed to reproduce the functionalities of the corresponding
codes in the ECMWF OI analysis (Lönnberg and Shaw, 1985, 1987; Lönnberg, 1989). Figure 4.1 illustrates
the dataflow during the screening.
SCREENING OF OBSERVATIONS
ODB-1
ESTIMATED PARAMETERS
DEPARTURES/FLAGS (FG)
DEPARTURES/FLAGS (AN)
SUPPORT DATA
MODEL FIELDS
ODB-1
HIGH LEVEL TASK
Figure 4.1 Simplified IFS flow diagram for screening This is an illustrative, rather than comprehensive,
description of the processing. See Fig. 1.1 for the wider observation processing context.
observations are compared to the model as it is integrated for the length of the assimilation window. The
observation minus model differences (the departures) are computed as described in Part II and stored in
the ODB. These departures are an important input to the data selection procedures as many quality-control
decisions depend on the magnitude of the departure. The collection of routines that perform data selection
are jointly referred to as ‘the screening’. The purpose of the observation screening is to select the best quality
observations, to detect duplicates, and reduce data redundancy through thinning.
on other observations or decisions, and they are taken next, following a certain logical order. For instance, the
horizontal thinning of radiance reports is only performed for the subset of reports that passed the background
quality control. Finally, the CCMA database is created for the minimization in such a way that it only contains
the data that will be used.
4.4.2 Blacklisting
Next, the observations are scanned through for blacklisting (subroutine BLACK). At the set-up stage the
blacklist interface is initialized (BLINIT) to the external blacklist library. The blacklist files consist formally
of two parts. Firstly, the selection of variables for assimilation is specified in the ‘data selection’ part of the
blacklist file. This controls which observation types, variables, vertical ranges etc. will be selected for the
assimilation. Some more complicated decisions are also performed through the data selection file; for instance,
an orographic rejection limit is applied in the case of the observation being too deep inside the model orography.
This part of the blacklist also provides a handy tool for experimentation with the observing system, as well
as with the assimilation system itself. Secondly, a ‘monthly monitoring’ blacklist file is provided for discarding
the stations that have recently been reporting in an excessively noisy or biased manner compared with the
ECMWF background field.
Most data selection criteria are coded in so called blacklist files, written in a convenient, readable blacklist
language (see the Blacklist Documentation, Järvinen et al., 1996). The blacklist mechanism is very flexible
and allows nearly complete control of which data to use/not use in the assimilation. The ‘monthly blacklist’
is the part of the blacklist that is based on operational data monitoring results, and it is maintained by the
Meteorological Operations Section. The blacklist is consulted in the screening job. The interface is set up in
BLINIT, in such a way that a number of named items from the header (Table 4.1) and body (Table 4.2) parts
of the observation report can be passed to the blacklist software. Depending on the blacklisting criteria flags are
communicated to the routine BLACK, and those are written to the ECMA ODB data base. Blacklist-rejected
data are subsequently excluded from the CCMA ODB and will not be present in the minimisation job steps.
Data selection rules should be coded in the blacklist files whenever possible rather than in the IFS code itself.
The operational blacklist history is kept in an archive.
Table 4.1 Header variables in the ifs/blacklist interface. Exact contents may change - see black.F90.
Table 4.2 Body variables for the ifs/blacklist interface. Exact contents may change - see black.F90
Table 4.3 The predefined limits for the background quality control, given in terms of multiples of the
expected variance of the normalized background departure.
(FGCHK, SUFGLIM). For the wind observations, the background quality control is performed simultaneously
for both wind components (FGWND). In practice, there is an associated background quality-control flag with
four possible values, namely 0 for a correct, 1 for a probably correct, 2 for a probably incorrect and 3 for
an incorrect observation, respectively (SUSCRE0). Table 4.3 gives the predefined limits for the background
quality control in terms of multiples of the expected variance of the normalized background departure. These
values are set in DEFRUN and can be changed in namelist NAMJO. For SATOB winds the background error
limits are modified as explained in Appendix A.
There is also a background quality control for the observed wind direction (FGWND). The predefined error
limits of 60◦ , 90◦ and 120◦ apply for flag values 1, 2 and 3, respectively. The background quality control
for the wind direction is applied only above 700 hPa for upper-air observations for wind speeds larger than
15 ms−1 . If the wind-direction background quality-control flag has been set to a value that is greater than or
equal to 2, the background quality-control flag for the wind observations is increased by 1.
There is no first-guess check for scatterometer data. It is demanded, though, that neither scatterometer nor
model wind speed should exceed 35 ms−1 , since that marks the range of validity for scatterometer wind
inversion.
4.5.6 Thinning
Finally, a horizontal thinning is performed for the AIREP, radiances (ATOVS,AIRS,IASI), GEOS, SATOB,
ERS and SCAT SCAT reports. The horizontal thinning of reports means that a predefined minimum horizontal
distance between the nearby reports from the same platform is enforced. For AIREP reports the free distance
between reports is currently enforced to about 60 km (Cardinali et al., 2003). The thinning of the AIREP data
is performed with respect to one aircraft at a time (MOVPL, THIAIR). Reports from different aircraft may
however be very close to each other. In this removal of redundant reports the best quality data is retained as
the preceding quality controls are taken into account. In vertical, the thinning is performed for layers around
model levels, thus allowing more reports for ascending and descending flight paths.
Thinning of radiances, GRAD, SATOB, ERS and ASCAT SCAT reports are each done in two stages controlled
by THINN. For radiances (THINNER), a minimum distance of about 70 km is enforced and, thereafter, a
repeat scan is performed to achieve the final separation of roughly 250 km or 120 km between reports from
one platform. This is controlled through settings in DEFRUN, that can also be modified through namelist
(NAMSCC). The thinning algorithm is the same as used for AIREPs except that for radiances a different
preference order is applied: a sea sounding is preferred over a land one, a clear sounding is preferred over a
cloudy one and, finally, the closest observation time to the analysis time is preferred. For geostationary water
vapour radiances, a similar thinning in two stages is applied with currently about 70 km minimum distance and
about 125 km final separation (THINNER). During the thinning, preference is given to data having the largest
fraction of clear sky in the clear-sky radiance average, high infrared brightness temperature (for GOES data)
and, finally, a small standard deviation of brightness temperatures within the CSR mean. A similar thinning
technique is applied to SATOB high-density data (THINNER). Note that prior to assimilation a coarser pre-
thinning may take place already during observation pre-processing in order to reduce otherwise excessive data
volumes.
The screening of SATOB data has been extended for atmospheric motion wind observations, including
individual quality estimate. The quality information from the quality control performed by the producer at
extraction time is appended to each wind observation. This Quality Indicator (QI) is introduced as an additional
criterion in the thinning step; priority is given to the observation with the highest QI value.
For ERS and ASCAT scatterometer data, the above described thinning algorithm is only applied along track.
In across-track direction, backscatter data from these platforms are provided into wind-vector cells (WVC)
with a spatial resolution of 25 km. In this direction, data is thinned by selecting predefined wind-vector cells
(subroutine SCAQC). For ERS, from 19 cells, only 3, 7, 11, 15 and 19 are regarded (cells 1 and 2 are of known
lower quality). For ASCAT, from 42 cells (two swaths of 21 cells each) only cells 1, 5, 9, 13, 17, 21, 22, 26,
30, 34, 38 and 42 are used. After this across-track thinning, the generic thinning algorithm is applied to the
remaining cells in along-track direction. QuikSCAT data (also provided on a 25 km grid) are not thinned.
Instead, a 50 km wind product is determined from backscatter data from four underlying 25 km cells, each
given a reduced weight of one fourth.
Scatterometer winds are besides thinning subject to a high-wind rejection test with an upper-wind speed limit
set to 35 ms−1 to both the scatterometer and background winds (FGWND).
APPENDIX A
A.1 Bad reporting practice of SYNOP and TEMP reports
The way the synoptic surface stations report mass observations (pressure or geopotential height) is considered
as bad if:
• station altitude is above 800 m and station reports mean sea level pressure
• station altitude is above 800 m and station reports 1000 hPa level
• station altitude is above 1700 m and station reports 900 hPa level
• station altitude is below 300 m and station reports 900 hPa level
• station altitude is above 2300 m and station reports 850 hPa level
• station altitude is below 800 m and station reports 850 hPa level
• station altitude is above 3700 m and station reports 700 hPa level
• station altitude is below 2300 m and station reports 700 hPa level
• station altitude is below 3700 m and station reports 500 hpa level
The reporting practice is also considered as bad if the station reports 500 gpm, 1000 gpm, 2000 gpm, 3000 gpm
or 4000 gpm level pressure, respectively, and station altitude is more than 800 m different from the reported
level.
For TEMP geopotentials the reporting practice is considered as bad if:
• station altitude is above 800 m and station reports 1000 hPa level
• station altitude is above 2300 m and station reports 850 hPa level
• station altitude is above 3700 m and station reports 700 hPa level
• AIREP wind observations with zero wind speed are rejected if the background wind exceeds 5 m s−1 .
• For AIREP and DRIBU wind observations the rejection limit is multiplied by 0.5, and for PILOT wind
by 0.8.
• For SATOB wind observations the rejection limit is multiplied by 0.1, except below 700 hPa level where
it is multiplied by 0.2.
• No background quality control is applied for SCAT winds.
• For DRIBU surface pressure observations the rejection limit is multiplied by 0.9, and for PAOB surface
pressure by 0.7.
• For AIREP temperature observations the rejection limit is multiplied by 1.6.
Chapter 5
Deprecated areas
Table of contents
5.1 Introduction
5.2 Continuous Observation Processing Environment (COPE) transition
5.3 MKCMARPL tasks and functions [DEPRECATED]
5.3.1 Basic observation processing setup [DEPRECATED]
5.3.2 Invoking, initializing and controlling the MKCMARPL [DEPRECATED]
5.3.3 MKCMARPL [DEPRECATED]
5.3.4 Basic observation handling routines [DEPRECATED]
5.1 INTRODUCTION
This section is for deprecated parts of the observation code, things which have increasingly little relevance to
understanding the modern system. Unfortunately, the deprecated code still performs a few important tasks,
otherwise it would have already been removed. This documentation is not kept up to date but it is still useful
for understanding those few remaining tasks, especially for those people whose job it will be to replace them
completely.
The main deprecated area is ‘Make CMA replacement’ or MKCMARPL which once performed most of the
pre-processing tasks in the IFS. Nowadays, pre-processing for conventional in-situ observations has largely been
superseded by COPE (what remains is Meteo-France specific). However, a number of other observation types
still rely on MKCMARPL in important ways, or just in annoying ways that make it hard to simply delete what
is apparently useless code. For example:
• AMVs require variable conversion from windspeed and direction to horizontal wind components u and
v. More pointlessly, they also need to set up an (unused) initial observation error using the deprecated
OBSERR routines. This error needs to be present in the ODB to prevent rejection during screening,
even though it is not used.
• For some satellite radiances, channel numbering is reassigned. There may or may not be anything else
useful going on under LEVEL1CGEOS OB. for example, there are checks on longitudes, latitudes and
times, but these are likely duplicates of checks elsewhere in the pre-processing.
• Scatterometer processing still relies on the MKCMARPL. The retrieval from backscatter to winds, and
re-ordering of the observation body elements.
• Ozone observations still rely on MKCMARPL. Among other things they set up observation errors here.
• AIREPIN — airep.json
• DRIBUIN — dribu.json
• TEMPIN — temp.json
• PILOTIN — pilot.json
• PGPSIN — pgps.json
• LNDSYIN — synop.json
• SHIPIN — ship.json
• AWPRFIN — awp.json
• EWPRFIN — ewp.json
• PRLMCHK — DateTimeValidator, LocationValidator
• YOMOERR, SUOBSERR — error statistics.csv
• YOMLVLY, SULEVLAY, ERRSTAT, OBSERR, FIXERR — PrescribedErrorAssigner
• FINOEREV — FinalErrorAssigner
• RH2Q — SpecificHumidityAssigner
• OBINSTP — InstrumentTypeAssigner
• Z2PICAO — HeightToPressureConverter
• YOMRSTRHBIAS, GET NEW RS TRH BIAS, SONDE COUNTRY DB MATCH, NEW RS TRH BIAS
— RadiosondeBiasCorrector
As can be seen in the listing above, there is nearly one to one correspondence between the former MKCMARPL
worker Fortran subroutines [A-Z]*IN and [a-z]*.json configuration files. This is not by coincidence since
preserving the former logical structure makes the transition to new framework more transparent. The JSON
configuration files describe processing pipeline for the given observation type in declarative way. This allows
to modify or even construct new pipelines at runtime, reusing existing filters, without having to recompile the
source. Conceptually, every pipeline is composed of a chain of filters that are sequentially applied on each
observation report. All JSON configuration files can be found in the standard IFS scripts directory.
Descriptor Records (DDRs) as well as the ODB packing patterns (bit structure) employed for header
and body respectively.
• MKCMARPL is namelist driven and in DEFRUN a logical variable LMKCMARPL is defined. By default
LMKCMARPL = .TRUE. but it can be overwritten via namelist NAMOBS. Furthermore, many other
parameters and switches are defined in DEFRUN and some of them can also be overwritten via namelists.
• SUANCT and SULIM define some additional analysis constants and limits.
• SULEVLAY and SUSATRET define analysis related level/layer and satellite retrieval parameters,
respectively.
• SUVNMB declares variable numbers.
• SUSCRE0, SUOBSORT and SETCOM define flag limits, identify ambiguous moving platforms, initialise
observation sorting, and provide some general observation common variables.
• DEPERERR and SUERRORS deal with observation error statistics definitions. SUERRORS calls
SUPERERR to define observation persistence errors and SUOBSERR to define prescribed observation
errors.
• INIERSCA deals with initialising SCATT processing.
The next step is to find out if it is a SCREENING run and if so to check if it is a MKCMARPL run as well. In
the case of a MKCMARPL run all aspects of the observation processing before the screening are dealt with by
calling MKCMARPL (more about it in Subsection 5.3.3). After MKCMARPL has finished there are several ways
to proceed. These depend on the status of LMKCMARPLO and LRPLSWAPOUT logical switches (NAMOBS
namelist). If LRPLSWAPOUT = .TRUE. the ODB is swapped out and if LMKCMARPLO = .TRUE. the
ODB is written out and the run terminated. Both of these options are not normally used and their use is for
diagnostics/debugging purposes. Once the MKCMARPL work has been completed the remainder of SUOBS
will execute as before. Thus, calls to WRITEOBA, WINDAUX, OBATABS, SUAMV, SURAD, SULIMB,
SUOBAREA, MKGLOBSTAB and SUREO3 are issued.
In the context of operational running, the MKCMARPL related switches are set:
GETDB/PUTDB might be issued. This is because there may be sufficient differences between similar data
to justify a slightly different approach in their pre-processing. For example under the CONVENTIONAL OB
routine there are two calls to a GETDB and PUTDB pair. The first call deals with all conventional observations
except SATEMs; the second call deals with the SATEMs. As indicated earlier, between each GETDB and
PUTDB a number of observations type or code type designed worker routines are called.
• CONVENTIONAL OB calls the following worker routines: SYNOPIN, AIREPIN, DRIBUIN, TEMPIN,
PILOTIN, EWPRFIN, AWPRFIN, PAOBIN and METARSIN. A worker routine name indicates which
observations it is dealing with.
• SATOB OB calls SATOBIN and SATAMIN.
• SCAT OB calls ERS1IN, NSCATIN, ASCATIN and QSCATIN.
• LEVEL1CGEOS OB calls RAD1CIN and GOESRIN.
• OZONE OB calls only REO3SIN.
• PRLMCHK calls REPSEL and TIMDIF to do report selection according to preset criteria and to find
out time difference between analysis time and the actual observation time, respectively.
• GETSETE makes a local copy of a given observation variable and its related parameters from an ODB
supplied array.
• After updating the local copy, AIREPBE is called to return the updated local copy back to the ODB
supplied array.
The preliminary quality control at the report level consists of making sure that observation position, date and
time are reasonable. Furthermore, as there is a possibility of excluding certain observations via the NAMOBS
namelist, a check is made of whether the observation is actually wanted at this stage. Once the report level
check is passed attention is turned to the data itself. Each datum is checked against predefined list of expected
data. If not in the list, datum is rejected and a warning message issued. At this stage it is also ensured that
missing indicators used are unique.
After the preliminary phase attention is turned to getting data in the right form and shape for further usage.
Thus, in the case of an AIREP observation, this is done in sections of available variables: wind and temperature.
(i) Wind. There are four wind variables: wind direction (DDD), wind force (FFF), u and v components.
For each of these variables the first thing which is done is to get a local copy of it together with its related
parameters from an ODB supplied array (GETSETE). Once a variable is made available locally a check is
made to ensure that the vertical coordinate is pressure; if instead of pressure a flight level is supplied it is
converted into pressure by assuming a standard ICAO atmosphere (Z2PICAO). If the variable in question
is either u or v, then DDD and FFF are converted into u and v wind components. Furthermore, for each
of the four variables appropriate observation error statistics are assigned (ERRSTAT, FINOERR). Also,
if any flags are set at this stage an appropriate word in the local copy is updated (PPVAFL). Finally, an
updated local copy of an observed quantity and its related parameters are returned back into the ODB
(AIREPBE).
(ii) Temperature. In the case of temperature only one observed variable is dealt with. The pattern of
making a local copy (GETSETE), ensuring that pressure is the vertical coordinate (Z2PICAO), assigning
the observation error statistics (ERRSTAT), updating flags (PPVAFL) and returning an updated local
copy back to the ODB (AIREPBE) is repeated.
As just mentioned ERRSTAT deals with assigning observation errors for a given observation variable. ERRSTAT
first calls OBSPERR to assign observation persistence error; then it calls OBSERR which in turn calls FIXERR
OBINSTP
REPSEL
PRLMCHK
TIMDIF
! Data(Body) Check
GETSETE
AIREPBE FILFBDE NGEDEVE
GETSETE
OBSPERR
Z2PICAO
OBSERR FIXERR
ERRSTAT
FINOERR
PPVAFL
AIREPBE FILFBDE NGEDEVE
Figure 5.1 Simplified IFS observation pre-processing flow diagram, with AIREPIN as an example. Colour
coding scheme: routines in red boxes perform observation pre-processing.
to assign prescribed observation error. It is worth mentioning that observation errors themselves are already
predefined at an earlier stage (SU ERRORS).
The pattern of activities outlined for AIREPIN is repeated more or less in the other worker routines. However,
the SYNOPIN routine is first split further into SHIPIN, METARIN, PGPSIN and LANSYIN. This is because
SHIP, METAR, GPS and SYNOP LAND observations are sufficiently different to justify a separate worker
routine. Furthermore, LANSYIN is somewhat more complicated than AIREPIN. One of the reasons for this is
that we have to distinguish between low and high level stations.
Chapter 6
Tables, codes and flags
Table of contents
6.1 Introduction
6.2 BUFR observation types and subtypes
6.3 Obstype and codetype
6.4 Variable codes (varno)
6.5 Conventional observation operator codes: NVAR and CVAR NAME - [DEPRECATED]
6.6 Observation characteristics: instrument specification and retrieval type
6.7 Vertical coordinate: pressure, satellite ID and level ID codes
6.8 ODB report status: events, flags and codes
6.9 Datum status: events, RDB and analysis flags
6.1 INTRODUCTION
Older versions of the IFS documentation have contained copious tables attempting to document all the
codes, flags and groupings for observations in the IFS. If this was ever possible, in recent years the variety of
observational data processing has mushroomed, these tables have in some places became hopelessly out of
date and their true counterparts are too large to comfortably fit in such documentation. The truest record
is the IFS source code, the ODB data archived to MARS, and the logfiles of the IFS. The ODB governance
database at http://apps.ecmwf.int/odbgov is reasonably up-to-date but does not cover everything. Some
of the old tables from the IFS documentation are provided here, although no longer kept up-to-date, as they
are useful for illustration purposes, and as a guide to what these codes are for. See also Sec. 1.4.
Table 6.1 Some BUFR observation types and subtypes. See WMO documentation for the full set, or the
ODB governance tables http://data-portal.ecmwf.int/odbgov/.
Table 6.2 Some ODB observation types and code types. See the ODB governance tables http://data-
portal.ecmwf.int/odbgov/ for a fuller and more up-to-date list
Table 6.3 Some variables (VARNO) in the ODB. Check the ODB governance database http://data-
portal.ecmwf.int/odbgov/ for the latest information.
Table 6.4 Association between variable numbering and observation operator routines for some of the
longstanding observation types. The CVAR-NAMEs also appear in the printed Jo -table in the log-file. For
the full and up-to-date set of variable numbers see yomcosjo.F90.
The second ODB report event word holds an additional set of events which are now dependent on observation
type. Details are given in Tables 6.19 to 6.22.
The ODB report RDB flag word ([DEPRECATED], probably unused) is 30 bits packed which contains flags
for five report parameters: latitude, longitude, date, time and altitude. Each parameter occupies 6 bits with
further stratification which is identical for every parameter as indicated in Table 6.23.
Table 6.23 RDB report (latitude, longitude, date, time and altitude) flags. [DEPRECATED], probably
unused.
No. of Bit
Parameter Bits Position
Bit No. of
Position Bits Value – Description
0 1 0 – No Human Monitoring Substitution
1 – Human Monitoring Substitution
Latitude 6 0+ +1 1 0 – No Q/C Substitution
Longitude 6 6+ 1 – Q/C Substitution
Date 6 12+ +2 1 0 – Override Flag not Set
Time 6 18+ 1 – Override Flag Set
Altitude 6 24+ +3 2 0 – Parameter Correct
1 – Parameter Probably Correct
2 – Parameter Probably Incorrect
3 – Parameter Incorrect
+5 1 0 – Parameter Flag Set by Q/C or not Checked
1 – Parameter Flag Set by Human Monitoring
Furthermore, each datum in the ODB has a blacklist event word. This word uses 31 bits to describe various
blacklist events as indicated in Table 6.29.
For each datum in ODB there is an RDB flag ([DEPRECATED], probably unused) word which holds flags for
pressure (vertical coordinate) and the datum itself. This is packed word with 30 bits used – see Table 6.30.
Pressure and datum RDB flags use 15 bits each. Thus pressure RDB flag starts at bit position 0, whereas the
datum flag starts at bit position 15. Each 15 bits structure is further stratified in exactly the same way for
both parameters:
In addition to RDB datum flags there is a word in ODB to store analysis flags. There are five types of analysis
flags: final analysis, first guess, departure, variational q/c and blacklist flags. Each flag occupies 4 bits and the
exact description is given in Table 6.31.
Table 6.30 RDB pressure (vertical coordinate) and datum flags. [DEPRECATED], probably unused.
No. of Bit
Parameter Bits Position
Bit No. of
Position Bits Value – Description
0 1 0 – No Human Monitoring
Substitution
1 – Human Monitoring
Substitution
+1 1 0 – No Q/C Substitution
Pressure 15 0+ 1 – Q/C Substitution
Datum 15 15+ +2 1 0 – Override Flag not Set
1 – Override Flag Set
+3 2 0 – Correct
1 – Probably Correct
2 – Probably Incorrect
3 – Parameter Incorrect
+5 1 0 – Flag Set by Q/C or not
Checked
1 – Flag Set by Human
Monitoring
+6 2 0 – Previous Analysis judged it
correct
1 – Previous Analysis judged it
probably correct
2 – Previous Analysis judged it
probably incorrect
3 – Previous Analysis judged it
incorrect
+8 1 0 – Not used by previous
analysis
1 – Used by previous analysis
+9 5 Not Used
References
Alduchov, O. A. and Eskridge, R. E. (1996). Improved Magnus form approximation of saturation vapor
pressure. J. Appl. Meteorol., 35, 601–609.
Andersson, E., Pailleux, J., Thépaut, J.-N., Eyre, J. R., McNally, A. P., Kelly, G. A. and Courtier, P. (1994).
Use of cloud-cleared radiances in three/four-dimensional variational data assimilation. Q. J. R. Meteorol.
Soc., 120, 627–653.
Baordo, F. and Geer, A. J. (2016). Assimilation of SSMIS humidity-sounding channels in all-sky conditions
over land using a dynamic emissivity retrieval. Quarterly Journal of the Royal Meteorological Society, doi:
10.1002/qj.2873.
Bauer, P., Geer, A. J., Lopez, P. and Salmond, D. (2010). Direct 4D-Var assimilation of all-sky radiances:
Part I. Implementation. Q. J. R. Meteorol. Soc., 136, 1868–1885.
Blondin, C. (1991). Parametrization of land surface processes in numerical weather prediction. In T. J.
Schmugge and J.-C. André (Eds), Land Surface Evaporation: Measurement and Parametrization, pp. 31–54,
Springer-Verlag.
Bonavita, M., Dahoui, M., Lopez, P., Prates, F., Holm, E., Chiara, G. D., Geer, A., Isaksen, L. and Ingleby,
B. (2017). On the initialization of tropical cyclones. ECMWF Tech. Memo. No. 810.
Bormann, N. (2014). Reformulation of the emissivity kalman filter atlas. RD Internal Memorandum, p. 14pp,
available online: http://intra.ecmwf.int/publications/library/do/references/show?id=1471.
Bormann, N. (2017). Slant path radiative transfer for the assimilation of sounder radiances. Tellus A: Dynamic
Meteorology and Oceanography, 69(1), 1272779.
Bormann, N. and Bonavita, M. (2013). Spread of the ensemble of data assimilations in radiance space.
ECMWF Technical Memorandum 708.
Bormann, N., Bonavita, M., Dragani, R., Eresmaa, R., Matricardi, M. and McNally, A. (2016). Enhancing
the impact of IASI observations through an updated observation-error covariance matrix. Q. J. R. Meteorol.
Soc., 142, 1767–1780.
Bormann, N. and Healy, S. (2006). A fast radiative-transfer model for the assimilation of MIPAS limb
radiances: Accounting for horizontal gradients. Q. J. R. Meteorol. Soc., 132, 2357–2376.
Bormann, N., Healy, S. and Hamrud, M. (2007). Assimilation of MIPAS limb radiances in the ECMWF system.
Part II: Experiments with a 2-dimensional observation operator and comparison to retrieval assimilation.
Q. J. R. Meteorol. Soc., 133, 329–346.
Bormann, N., Matricardi, M. and Healy, S. (2005). A fast radiative transfer model for the assimilation of
infrared limb radiances from MIPAS. Q. J. R. Meteorol. Soc., 131, 1631–1653.
Bormann, N., Saarinen, S., Kelly, G. and Thépaut, J.-N. (2003). The spatial structure of observation errors
in atmospheric motion vectors from geostationary satellite data. Mon. Wea. Rev., 131, 706–718.
Bormann, N. and Thépaut, J.-N. (2007). Assimilation of MIPAS limb radiances in the ECMWF system. Part
I: Experiments with a 1-dimensional observation operator. Q. J. R. Meteorol. Soc., 133, 309–327.
Buck, A. L. (1981). New equations for computing vapor pressure and enhancement factor. J. Appl. Meteorol.,
20, 1527–1532.
Cardinali, C., Andersson, E., Viterbo, P., Thépaut, J.-N. and Vasiljevic, D. (1994). Use of conventional surface
observations in three-dimensional variational data assimilation. ECMWF Tech. Memo. No. 205.
Cardinali, C., Isaksen, L. and Andersson, E. (2003). Use and impact of automated aircraft data in a global
4D-Var data assimilation system. Mon. Wea. Rev., 131, 1865–1877.
Courtier, P., Andersson, E., Heckley, W., Pailleux, J., Vasiljevic, D., Hamrud, M., Hollingsworth, A., Rabier, F.
and Fisher, M. (1998). The ECMWF implementation of three dimensional variational assimilation (3D-Var).
I: Formulation. Q. J. R. Meteorol. Soc., 124, 1783–1807.
Deblonde, G. and English, S. (2001). Evaluation of the fastem-2 fast microwave oceanic surface emissivity
model. In Tech. Proc. ITSC-XI, pp. 67–78, Budapest.
Engelen, R. J., Andersson, E., Chevallier, F., Hollingsworth, A., Matricardi, M., McNally, A., Thépaut, J.-N.
and Watts, P. (2004). Estimating atmospheric CO2 from advanced infrared satellite radiances within an
operational 4D-Var data assimilation system: Methodology and first results. J. Geophys. Res., 109, D19309.
Eyre, J. R. (1991). A fast radiative transfer model for satellite sounding systems. ECMWF Tech. Memo.
No. 176.
Geer, A. J., Baordo, F., Bormann, N. and English, S. (2014). All-sky assimilation of microwave humidity
sounders. ECMWF technical memorandum, in preparation.
Geer, A. J. and Bauer, P. (2011). Observation errors in all-sky data assimilation. Q. J. R. Meteorol. Soc.,
DOI: 10.1002/qj.830.
Geer, A. J. and Bauer, P. (2012). Assimilating AMSU-A radiances sensitive to cloud and temperature using
the all-sky approach. ECMWF technical memorandum 670.
Geer, A. J., Bauer, P. and Lopez, P. (2008). Lessons learnt from the operational 1D+4D-Var assimilation of
rain- and cloud-affected SSM/I observations at ECMWF. Q. J. R. Meteorol. Soc., 134, 1513–1525.
Geer, A. J., Bauer, P. and Lopez, P. (2010). Direct 4D-Var assimilation of all-sky radiances: Part II.
Assessment. Q. J. R. Meteorol. Soc., 136, 1886–1905.
Geleyn, J.-F. (1988). Interpolation of wind, temperature and humidity values from the model levels to the
height of meaurement. Tellus, 40, 347–351.
Han, W. and Bormann, N. (2016). Constrained adaptive bias correction for satellite radiance assimilation in
the ECMWF 4D-Var system. ECMWF Tech. Memo. No. 783., doi:10.21957/rex0omex.
Healy, S. and Thépaut, J.-N. (2006). Assimilation experiments with CHAMP GPS radio occultation
measurements. Q. J. R. Meteorol. Soc., 132, 605–623.
Hersbach, H. (2010a). Assimilation of scatterometer data as equivalent-neutral wind. ECMWF Tech. Memo.
No. 629.
Hersbach, H. (2010b). Comparison of c-band scatterometer cmod5.n equivalent neutral winds with ecmwf.
J. Atmos. Oceanic Technol., 27, 721–736.
Hersbach, H. (2011). Sea surface roughness and drag coefficient as functions of neutral wind speed. J. Phys.
Oceanogr., 41, 247–251.
Hersbach, H., Stoffelen, A. and de, S. H. (2007). An improved C-band scatterometer ocean geophysical model
function: CMOD5. J. Geophys. Res., 112, doi:10.1029/2006JC003743.
Hocking, J. (2014). Interpolation methods in the rttov radiative transfer model. Forecast Research Technical
Report No. 590.
Huddleston, J. N. and Stiles, B. W. (2000). Multidimensional histogram (MUDH) rain flag. Product
Description Version 2.1, URL http://podaac-www.jpl.nasa.gov/quikscat/.
Ingleby, B. (2015). Global assimilation of air temperature, humidity, wind and pressure from surface stations.
Q. J. R. Meteorol. Soc., 141, 504–517.
Isaksen, L. and Janssen, P. A. E. M. (2004). Impact of ERS scatterometer winds in ECMWF’s assimilation.
Q. J. R. Meteorol. Soc., 130, 1793–1814.
Järvinen, H., Andersson, E. and Bouttier, F. (1999). Variational assimilation of time sequences of surface
observations with serially correlated errors. ECMWF Tech. Memo. No. 266.
Järvinen, H., Saarinen, S. and Undén, P. (1996). User’s Guide for Blacklisting. Available on request from
ECMWF, Shinfield Park, RG2 9AX, Reading, Berkshire, UK.
Järvinen, H. and Undén, P. (1997). Observation screening and first guess quality control in the ECMWF
3D-Var data assimilation system. ECMWF Tech. Memo. No. 236.
Karbou, F., Gérard, E. and Rabier, F. (2006). Microwave land emissivity and skin temperature for AMSU-A
and -B assimilation over land. Q. J. R. Meteorol. Soc., 132, 2333–2355.
Krzeminski, B., Bormann, N., Karbou, F. and Bauer, P. (2009a). Improved use of surface-sensitive microwave
radiances at ECMWF. In Proceedings of 2009 EUMETSAT Meteorological Satellite Conference, Bath, United
Kingdom.
Krzeminski, B., Bormann, N., Kelly, G., McNally, A. and Bauer, P. (2009b). Revision of the HIRS cloud
detection at ecmwf. ECMWF/EUMETSAT fellowship reports No. 19.
Lean, K. and Bormann, N. (2021). Using model cloud information to reassign low level AMVs for NWP.
ECMWF/EUMETSAT fellowship reports No. 56.
Lean, P., Geer, A., Salmond, D. and Hague, J. (2016). The cost and scalability of observation processing in
IFS; implications for future observation usage. RD internal memo, RD16-045.
Leidner, S. M., Hoffman, R. N. and Augenbaum, J. (2000). SeaWinds Scatterometer Real-Time BUFR
Geophysical Data Product, User’s Guide Version 2.3.0. NOAA/NESDIS.
Lönnberg, P. (1989). Developments in the ECMWF analysis system. In Proc. ECMWF Seminar on Data
assimilation and the Use of Satellite Data, pp. 75–119, Reading, 5–9 September 1988.
Lönnberg, P. and Shaw, D. (1985). Data selection and quality control in the ECMWF analysis system. In
ECMWF Workshop on The Use And Quality Control of Meteorological Observations, pp. 225–254, Reading,
6–9 November 1984.
Lönnberg, P. and Shaw, D. (Eds) (1987). ECMWF Data Assimilation Scientific Documentation, Research
Manual 1.
Lopez, P. (2011). Direct 4d-var assimilation of NCEP stage IV radar and gauge precipitation data at ecmwf.
Monthly Weather Review, 139(7), 2098–2116.
Lorenc, A. C. (1986). Analysis methods for numerical weather prediction. Q. J. R. Meteorol. Soc., 112,
1177–1194.
Louis, J.-F. (1979). A parametric model of vertical eddy fluxes in the atmosphere. Boundary-Layer Meteorol.,
17, 187–202.
Louis, J.-F., Tiedtke, M. and Geleyn, J.-F. (1982). A short history of the PBL parametrization at ECMWF.
In Proc. ECMWF Workshop on Planetary Boundary Layer Parameterization, pp. 59–80, Reading, 25–27
November, 1981.
Lupu, C. and McNally, A. (2012). Assimilation of cloud affected radiances from meteosat-9 at ecmwf.
ECMWF/EUMETSAT fellowship reports No. 25.
Matricardi, M., Chevallier, F. and Tjemkes, S. (2001). An improved fast radiative transfer model for the
assimilation of radiance observations. ECMWF Tech. Memo. No. 345.
McNally, A. P. (2009). The direct assimilation of cloud affected satellite infrared radiances in the ecmwf
4d-var. Q. J. R. Meteorol. Soc., 135, 1214–1229.
McNally, A. P., Andersson, E., Kelly, G. and Saunders, R. W. (1999). The use of raw TOVS/ATOVS radiances
in the ECMWF 4D-Var assimilation system. ECMWF Newsletter No. 83, pp. 2–7.
McNally, A. P. and Watts, P. D. (2003). A cloud detection algorithm for high spectral resolution infrared
sounders. Q. J. R. Meteorol. Soc., 129, 3411–3423.
Munro, R., Köpken, C., Kelly, G., Thépaut, J.-N. and Saunders, R. (2004). Assimilation of Meteosat
radiance data within the 4D-Var system at ECMWF: Data quality monitoring, bias correction and single-cycle
experiments. Q. J. R. Meteorol. Soc., 130, 2293–2313.
Pailleux, J. (1990). A global variational assimilation scheme and its application for using TOVS radiances.
In Proc. WMO International Symposium on Assimilation of Observations in Meteorology and Oceanography,
pp. 325–328, Clermont-Ferrand, France.
Saunders, R. W. and Matricardi, M. (1998). A fast forward model for ATOVS (RTATOV). In Tech. Proc.
9th International TOVS Study Conference, p. 11 pp, Igls, Austria, 20–26 February, 1997.
Sherlock, V. J. (1999). ISEM-6: Infrared Surface Emissivity Model for RRTOV-6. Forecasting Research
Technical Report No. 299, available from Met Office, London Road, Bracknell, Berkshire RG12 2SZ, UK.
Simmons, A. J. and Burridge, D. (1981). An energy and angular momentum conserving vertical finite
difference scheme and hybrid coordinate. Mon. Wea. Rev., 109, 758–766.
Simmons, A. J. and Chen, J. (1991). The calculation of geopotential and the pressure gradient in the ECMWF
atmospheric model: Influence on the simulation of the polar atmosphere and on temperature analyses. Q. J. R.
Meteorol. Soc., 117, 29–58.
Stoffelen, A. and Anderson, D. (1997). Ambiguity removal and assimilation of scatterometer data. Q. J. R.
Meteorol. Soc., 123, 491–518.
Tomassini, M., LeMeur, D. and Saunders, R. W. (1998). Near-surface satellite wind observations of hurricanes
and their impact on ECMWF model analyses and forecasts. Mon. Wea. Rev., 126, 1274–1286.
Vasiljevic, D., Cardinali, C. and Undén, P. (1992). ECMWF 3D-Variational assimilation of conventional
observations. In Proc. ECMWF Workshop on Variational Assimilation with Emphasis on Three-dimensional
Aspects, Reading, 9–12 November 1992.
Wattrelot, E., Caumont, O. and Mahfouf, J.-F. (2014). Operational implementation of the 1D+3D-Var
assimilation method of radar reflectivity data in the AROME model. Monthly Weather Review, 142(5),
1852–1873.