(06/09/2003)
In this section,
you will learn how to run 3DVAR using only a single “pseudo” (or “bogus”)
observation.
By this stage you
have successfully created the three input files (first guess fg,
observation ob and background error statistics be in directory $DAT_DIR)
required to run 3DVAR. Also, you have successfully downloaded and compiled the
3DVAR code. If this is correct, we are ready to learn how to run 3DVAR. If not,
then you’ll need to return to the 3DVAR
Tutorial Page to complete stages a. to c.
To view the MM5
format analysis output of 3DVAR, we make use of the MM5 GRAPH plotting package.
You will need to download this and compile. To learn how to do this, visit the
MM5 tutorial’s GRAPH
tutorial and proceed up to the point at which you have compiled GRAPH in
directory $DAT_DIR (i.e. the command make >& make.out & in
the GRAPH tutorial). Tidy up $DAT_DIR with the command
rm GRAPH.TAR
1. What is
a PSOT anyhow?
A pseudo single
observation test (PSOT) involves the assimilation of a pseudo (or bogus)
observation of one of the model variables (u, v, T, p, q) at a single point in
the domain. In this case, the 3DVAR analysis is achieved in only 1 or 2
iterations. The purpose of these tests is a) To quickly check 3DVAR can run ok
on your machine, and b) to illustrate the impact of the background error
covariance (B) matrix.
The matrix B
(info stored in derived data type be) performs two roles for a single
observation. Firstly, the closeness of the fit to the analysis A to the
observation O and background B is dictated by the background
and observation error
variances according to
,
(1)
(Technical point:
Equation (1) assumes a quadratic cost-function, as is the case in the current
3DVAR). Note the observation will be fitted exactly (i.e. O – A = 0) only when its
observation error variance
is zero or the
background error variance
is infinite (this is never the case so do not judge the
quality of an analysis by how closely it fits the observations – this is a very
commonly made error!).
In addition to
setting the relative weight of observation and background in the analysis via
(1), the background error covariance also defines the response of the
analysis away from the observation location in all variables (not just the
observed one). In this experiment, we will illustrate this by running a PSOT,
and making plots of the analysis increments (A - B) that are produced.
2. Required
3DVAR namelist changes
The number of
parameters required to switch on the PSOT capability in 3DVAR is fairly small:
basically 3DVAR needs to know where [location – grid x, y, and z values], what
[variable – “u”, “v”, “T”, “p” or “q”], observation minus first-guess value
(O-B, in units of variable) and how good [observation error standard deviation
in units of
variable]. Also, you’ll need to switch all the “real” observations off.
The PSOT used in
this tutorial is set up in DA_Run_3DVAR_PSOT.csh as an pressure
innovation vector (O-B) of 1mb at grid point 40, 30, 31. An observation error
standard deviation of 1mb is assigned.
You can see the
namelist changes required by differencing the default script (DA_Run_3DVAR.csh)
and PSOT script (DA_Run_3DVAR_PSOT.csh), i.e.
cd 3dvar/run
diff
DA_Run_3DVAR.csh DA_Run_3DVAR_PSOT.csh > diff.out
To see the
differences, type
cat diff.out
and you’ll see
52c52
< setenv RUN_ID 3DVAR.test
# Experiment identifier.
---
> setenv RUN_ID 3DVAR.PSOT.test
#
Experiment identifier.
153,161c153,161
< if ( ! $?DA_USE_SYNOPOBS )
set DA_USE_SYNOPOBS = .TRUE.
# True if SYNOP assimilated.
< if ( ! $?DA_USE_SHIPSOBS )
set DA_USE_SHIPSOBS = .TRUE.
# True if SHIPS assimilated.
< if ( ! $?DA_USE_METAROBS )
set DA_USE_METAROBS = .TRUE.
# True if METAR assimilated.
< if ( ! $?DA_USE_PILOTOBS )
set DA_USE_PILOTOBS = .TRUE.
# etc
< if ( ! $?DA_USE_SOUNDOBS )
set DA_USE_SOUNDOBS = .TRUE.
< if ( ! $?DA_USE_SATEMOBS )
set DA_USE_SATEMOBS = .TRUE.
< if ( ! $?DA_USE_SATOBOBS )
set DA_USE_SATOBOBS = .TRUE.
< if ( ! $?DA_USE_AIREPOBS )
set DA_USE_AIREPOBS = .TRUE.
< if ( ! $?DA_USE_GPSPWOBS )
set DA_USE_GPSPWOBS = .TRUE.
---
> if ( ! $?DA_USE_SYNOPOBS )
set DA_USE_SYNOPOBS = .FALSE.
# True if SYNOP assimilated.
> if ( ! $?DA_USE_SHIPSOBS )
set DA_USE_SHIPSOBS = .FALSE.
# True if SHIPS assimilated.
> if ( ! $?DA_USE_METAROBS )
set DA_USE_METAROBS = .FALSE.
# True if METAR assimilated.
> if ( ! $?DA_USE_PILOTOBS )
set DA_USE_PILOTOBS = .FALSE.
# etc
> if ( ! $?DA_USE_SOUNDOBS )
set DA_USE_SOUNDOBS = .FALSE.
> if ( ! $?DA_USE_SATEMOBS )
set DA_USE_SATEMOBS = .FALSE.
> if ( ! $?DA_USE_SATOBOBS )
set DA_USE_SATOBOBS = .FALSE.
> if ( ! $?DA_USE_AIREPOBS )
set DA_USE_AIREPOBS = .FALSE.
> if ( ! $?DA_USE_GPSPWOBS )
set DA_USE_GPSPWOBS = .FALSE.
164,166c164,166
< if ( ! $?DA_USE_SSMT1OBS ) set DA_USE_SSMT1OBS = .TRUE.
< if ( ! $?DA_USE_SSMT2OBS ) set DA_USE_SSMT2OBS = .TRUE.
< if ( ! $?DA_USE_QSCATOBS ) set DA_USE_QSCATOBS = .TRUE.
---
> if ( ! $?DA_USE_SSMT1OBS ) set DA_USE_SSMT1OBS = .FALSE.
> if ( ! $?DA_USE_SSMT2OBS ) set DA_USE_SSMT2OBS = .FALSE.
> if ( ! $?DA_USE_QSCATOBS ) set DA_USE_QSCATOBS = .FALSE.
222c222
< if ( ! $?DA_NUM_PSEUDO ) set DA_NUM_PSEUDO = 0
# Set to 1 for PSOT test.
---
> if ( ! $?DA_NUM_PSEUDO ) set DA_NUM_PSEUDO = 1
# Set to 1 for PSOT test.
3. Run
3DVAR
The only changes
you need to make to the DA_Run_3DVAR_PSOT.csh script are to specify the
DAT_DIR and RUN_DIR environment variables. Optionally, you can also change the
RUN_ID variable. The script will then create a new subdirectory
${RUN_DIR}/${RUN_ID} in which 3DVAR will run - all output is directed there.
Once you have set
the necessary environment variables, run 3DVAR by typing
DA_Run_3DVAR_PSOT.csh
in the 3dvar/run
subdirectory.
Successful
completion of the job results in a number of output diagnostics files in the
${RUN_DIR}/${RUN_ID} subdirectory.
4. View
3DVAR Analysis Increments
If you have not already
done so, download and compile GRAPH.
As mentioned
above, PSOTs are useful for illustrating the impact of background error
covariances in 3DVAR. As an example, first cd to the GRAPH directory. Copy the g_plots.tbl
file from ftp://ftp.ucar.edu/mesouser/mm53dvar/g_plots.tbl
to your GRAPH directory. Then, to run GRAPH, type
graph.csh 1 1
${RUN_DIR}/${RUN_ID}/DAProg_3DVAR.analincs
where
${RUN_DIR}/${RUN_ID} is the directory containing your output. On successful
completion, a file “gmeta” will be produced containing plots of the 3DVAR
analysis increments. This can be viewed by typing
idt gmeta
The file contains
plots of temperature and pressure increments due to the single O-B=1mb pressure
differences used in this PSOT. A vertical cross-section resulting from the
pressure PSOT is shown below:

Note the
three-dimensional, multivariate response. In future versions of 3DVAR, this
response will be flow-dependent (i.e. vary from day to day depending on the
current weather).
To save the gmeta
file for this PSOT, type
cp gmeta ${DAT_DIR}/gmeta.psot
PSOTs are very
instructive in helping you understand how a data assimilation system uses
observations. It is suggested that you now take some time to run other PSOTs to
help you get familiar with the 3DVAR script (don’t forget to change RUN_ID
if you want to save each PSOT), namelist and to probe how 3DVAR uses various
types of conventional observation variables.
Example 1 – Move the
location of the PSOT to x = 20, y = 20, k=15.
Example 2 –
Create a wind (e.g. u) PSOT instead of a pressure PSOT.
Example 3 – Halve
the observation error standard deviation and note how the observation is fitted
more closely (the analysis increment is larger). Can you confirm equation (1)
holds for your tests?
Example 4 - Modify
the background error length scales (len_scaling1-5) and note how the area of influence
of the observation changes.
5. What
next?
Having played
with 3DVAR and a single observation, let’s try a case with thousands of
observations:
Miscellanies:
Trouble Shooting: If you have questions, ask mesouser.