The namelist file: 'namelist.3dvar' has 13
records below. The meaning and
usages of each namelist variables are
explained here.
&record1
MODEL_TYPE
= 'MM5',
;
Specify the model type, which could be 'MM5' or 'WRF',
;
but here just 'MM5' option is fully tested.
WRITE_INCREMENTS
= .TRUE. /
;
.TRUE. indicates to write out the
analysis increment file:
; 'DAProg_3DVAR.analincs'
which is useful for plotting
; the increments fields,
especially for the SINGLE-OBS test.
;
.FALSE. no increment file:'DAProg_3DVAR.analincs' written out.
&record2
ANALYSIS_TYPE
= '3D-VAR',
;
Indicates the job type, now only '3D-VAR', not change.
ANALYSIS_DATE
= '1999-08-19_12:00:00.0000',
;
Specify the analysis time.
ANALYSIS_ACCU
= 900 ,
;
Specify the accuracy of the time difference in seconds between
;
the above analysis time and the first guess time. For a multi-time
;
first guess input file, for example the MM5 forecast file 'MMOUTPUT',
;
the data at the particular time under
;
; abs (time - ANALYSIS_DATE)
<= ANALYSIS_ACCU
;
;
are selected as the first guess. This is important for cycling run
; of '3DVAR->MM5->3DVAR->MM5...'.
;
W_INCREMENTS = .TRUE. /
;
.TRUE. the increment of the vertical
velocity W will be diagnosed
; based on the increments
of other fields. If there is
; information of the W
from observations assimilated,
; such as the Radar radial
velocity, the W increments are
; always computed, no matter W_INCREMENTS=.TRUE.
or .FALSE.
;
.FALSE. the increment of the vertical velocity W is zero if no
; W information
assimilated.
&record3
fg_format = 2,
;
Indicates the first guess format: 1 = WRF; 2 = MM5.
ob_format
= 2 /
;
Indicates the observation file format: 1 = BURF; 2 = ASCII.
&record4
PROCESS_OBS = 'YES',
;
Always set 'YES', not change.
obs_qc_pointer
= 0,
;
Indicates the quality flag (qc) criterion, integer number, default is 0:
; the data with qc >=
obs_qc_pointer are assimilated.
; the data with qc < obs_qc_pointer are discarded.
Use_SynopObs = .TRUE.,
;
.TRUE. assimilate the SYNOP data if any
available.
;
.FALSE. not assimilate the SYNOP data even if available from OBS file.
Use_ShipsObs = .TRUE.,
;
.TRUE. assimilate the SHIPS data if any
available.
;
.FALSE. not assimilate the SHIPS data even if available from OBS file.
Use_MetarObs = .TRUE.,
;
.TRUE. assimilate the METAR data if any
available.
;
.FALSE. not assimilate the METAR data even if available from OBS file.
Use_PilotObs = .TRUE.,
;
.TRUE. assimilate the PILOT data if any
available.
;
.FALSE. not assimilate the PILOT data even if available from OBS file.
Use_RadarObs = .FALSE.,
;
.TRUE. assimilate the RADAR data if any
available.
;
.FALSE. not assimilate the RADAR data even if available from OBS file.
;
** Note at this moment, assimilation of Radar data (radial velocity)
; is not working, so
always set Use_RadarObs = .FALSE., no matter
; the radar data available
or not.
Use_SoundObs = .TRUE.,
;
.TRUE. assimilate the SOUND data if any
available.
;
.FALSE. not assimilate the SOUND data even if available from OBS file.
Use_SatemObs = .TRUE.,
;
.TRUE. assimilate the SATEM data if any
available.
;
.FALSE. not assimilate the SATEM data even if available from OBS file.
;
** Currently only the retrieved SATEM thickness data can be assimilated.
Use_SatobObs = .TRUE.,
;
.TRUE. assimilate the SATOB data if any
available.
;
.FALSE. not assimilate the SATOB data even if available from OBS file.
Use_AirepObs = .TRUE.,
;
.TRUE. assimilate the AIREP data if any
available.
;
.FALSE. not assimilate the AIREP data even if available from OBS file.
Use_GpspwObs = .TRUE.,
;
.TRUE. assimilate the GPSPW data if any
available.
;
.FALSE. not assimilate the GPSPW data even if available from OBS file.
Use_ProfilerObs
= .TRUE.,
;
.TRUE. assimilate the wind profiler data
if any available.
;
.FALSE. not assimilate the wind profiler data even if available
; from OBS file.
Use_BuoyObs = .TRUE.,
;
.TRUE. assimilate the BUOY data if any
available.
;
.FALSE. not assimilate the BUOY data even if available from OBS file.
Use_SsmiRetrievalObs
= .TRUE.,
;
.TRUE. assimilate the SSMI retrieval
data (PW and surface wind speed)
; if any available.
;
.FALSE. not assimilate the SSMI retrieval data (PW and surface wind
; speed) even if available
from OBS file.
Use_SsmiTbObs = .FALSE.,
;
.TRUE. assimilate the SSMI Brightness
temperature data if any available.
;
.FALSE. not assimilate the SSMI Brightness temperature data even if
; available from OBS file.
;
** Note at this moment, assimilation of SSMI Brightness temperature data
; is not working, so
always set Use_SsmiTbObs =.FALSE., no matter
; the SSMI Brightness
temperature data available or not.
use_ssmt1obs = .FALSE.,
;
.TRUE. assimilate the SSMT1 (temperature)
data if any available.
;
.FALSE. not assimilate the SSMT1 (temperature) data even if available
; from OBS file.
use_ssmt2obs = .FALSE.,
;
.TRUE. assimilate the SSMT2 (relative
humidity) data if any available.
;
.FALSE. not assimilate the SSMT2 (relative humidity) data even if
; available from OBS file.
use_qscatobs = .TRUE.,
;
.TRUE. assimilate the Quik SCAT
(SeaWinds) data if any available.
;
.FALSE. not assimilate the Quik SCAT (SeaWinds) data even if available
;
** Note at this moment, assimilation of only the SeaWinds Level 2B data
; from JPL.
check_max_iv = .TRUE.,
;
.TRUE. Go through the Maximum OBS error
check based on the innovations
; (O-B). For safety, in
general, it should set check_max_iv = .TRUE.
;
.FALSE. no Maximum OBS error check. Only when you sure that all of the
; observation data have
the good quality, such as in the SINGLE-OBS
; tests, you can set
check_max_iv = .FALSE.
use_obs_errfac
= .FALSE.,
;
.TRUE. the OBS error tuning factors need
to be applied.
;
.FALSE. no the OBS error tuning factors need to be applied. At this
; moment, always set
use_obs_errfac = .FALSE., not change.
put_rand_seed = .FALSE.,
;
set put_rand_seed = .FALSE., not change.
omb_set_rand = .FALSE.,
;
set omb_set_rand = .FALSE., not change.
omb_add_noise = .FALSE. /
;
set omb_add_noise = .FALSE., not change.
&record5
TIME_WINDOW = 3.,
;
The time window (hours) centered at the analysis time
;
for the observations. Usually set TIME_WINDOW = 3.
PRINT_DETAIL = 0 /
;
a printing switch. 0 = no details printed; a non-zero values
;
may cause huge stuff printed. Usually set PRINT_DETAIL = 0
&record6
max_ext_its = 1,
;
Used to assign the number of the outer loops. For example,
;
1 = a single outer loop, 3 = 3 outer loops, etc., now the
;
maximum number of outer loops is allowed to be 10.
EPS =
1.E-02,1.E-02,1.E-03,1.E-02,1.E-02,
1.E-02,1.E-02,1.E-02,1.E-02,1.E-02,
;
Used to assign the minimization convergence criterion for the
;
internal loop within each of the outer loops..
;
;
Comments:
;
;
The double loops incremental approach implemented in this new
;
release version is a new feature. The purposes of introducing
;
the outer-loops are
;
; (1) to consider the
non-linearities in the observation operators;
; (2) to do multiple times of the
background quality control on
; the observations.
;
;
Following the procedure proposed by Veerse and Thepaut (1998) and
;
Courtier et al (1994) the cost function in the multiple outer-loop
;
incremental approach became
;
; J =
1/2 [X'(k) + X(k) - Xb]T B-1 [X'(k) + X(k) - Xb]
; + 1/2 SUM [H'X'(k) - d(k)]T R-1
[H'X'(k) - d(k)]
;
;
where
; k is
the outer-loop index, k = 1,..., max_ext_it
; Xb is the background
; X(k) is the first guess at the k-th outer-loop
; X(k) = X(k-1) +
X'(k-1)
; X'(k) is the increments at
the k-th outer-loop
; d(k) is the innovation at the k-th outer-loop
; d(k) = [O -
HX(k-1)]
; X(0) = Xb and X'(0) = 0
;
;
References:
;
;
Courtier, P., J.N. Thepaut, and A. Hollingsworth, 1994: A strategy
;
for operational implementation of 4D-Var, using an incremental
; approach. Q.J.R.Meteorol.
Soc., 120, pp.1367-1387.
;
Veerse, F., and J.-N. Thepaut, 1998: Multiple-truncation incremental
; approach for
four-dimensional variational data assimilation.
; Q.J.R.Meteorol. Soc.,
124, pp 1889-1908.
;
NTMAX = 100,
;
The maximum number of iterations of the minimization in internal loop.
NVERIF = 0,
;
not used now, always set NVERIF = 0
NSAVE = 4,
;
used for Quasi-Newton method (minimise_option=1), always set NSAVE = 4,
;
not change.
WRITE_SWITCH = .FALSE.,
;
.TRUE. write out the analysis results
during the minimization.
;
.FALSE. not write out the analysis results during the minimization.
; usually set WRITE_SWITCH
= .FALSE., not change.
WRITE_INTERVAL
= 5 /
;
Used to assign the interval (number of iterations) to write out the
;
analysis results when WRITE_SWITCH = .TRUE.
&record7
;
Note: these namelist variables in record7 are only applied to the
; cv_options
= 2.
;
RF_PASSES = 4,
;
Used to assign the number of passes of recursive filter.
VAR_SCALING1 = 1.0,
;
The background error variance tuning factor for control variable 1 ---
;
Stream function PSI.
VAR_SCALING2 = 1.0,
;
The background error variance tuning factor for control variable 2 ---
;
potential velocity CHI.
VAR_SCALING3 = 1.0,
;
The background error variance tuning factor for control variable 3 ---
; unbalanced pressure Pu.
VAR_SCALING4 = 1.0,
;
The background error variance tuning factor for control variable 4 ---
;
specific humidity q or relative humidity RH.
VAR_SCALING5 = 1.0,
;
Not used currently.
LEN_SCALING1 = 1.0,
;
The scale-length (used in the recursive filter) tuning factor
;
for control variable 1 --- Stream function PSI.
LEN_SCALING2 = 1.0,
;
The scale-length (used in the recursive filter) tuning factor
;
for control variable 2 --- potential velocity CHI.
LEN_SCALING3 = 1.0,
;
The scale-length (used in the recursive filter) tuning factor
;
for control variable 3 --- unbalanced pressure Pu.
LEN_SCALING4 = 1.0,
;
The scale-length (used in the recursive filter) tuning factor
;
for control variable 4 --- specific humidity q or relative humidity RH.
LEN_SCALING5 = 1.0 /
;
Not used currently.
&record8
NSMOOTH = 0,
;
Not used currently, always set NSMOOTH = 0
def_sub_domain
= .FALSE.,
;
Not used.
xj_start_sub_domain
= 55.0,
;
Not used.
yi_start_sub_domain
= 35.0,
;
Not used.
xj_end_sub_domain = 80.0,
;
Not used.
yi_end_sub_domain = 60.0 /
;
Not used.
&record10
Testing_3DVAR = .FALSE.,
;
.TRUE. Do the XToY adjoint test.
;
; Here Y represents the
observations, and X represents the
; analyzed variables
(note, not control variables).
; XToY means the
observation operators and their adjoint.
;
; When you assimilate a
NEW type of observation, and a NEW
; observation operator and
its adjoint code developed, you
; must do this correctness
check first by set
; Testing_3DVAR = .TRUE.. Once the correctness check is
; successful, set
Testing_3DVAR = .FALSE., and go ahead to
; assimilate the
observations.
;
; Program stopped after
check finished.
;
;
.FALSE. Not do adjoint check, but do the 3DVAR data assimilation. Test_Transforms = .FALSE., ;
.TRUE. Do the VToX transform correctness
check. ;
; Here V represents the
control variables, X represents the
; analyzed variables.
; VToX means the transform
formulas and their adjoint. ;
; When you change the V or
X, you must do the VToX check first
; to guarantee the
correctness. ;
; Program stopped after
check finished.
;
.FALSE. Not do adjoint check, but do the 3DVAR data assimilation. Test_Statistics
= .FALSE., ;
Not used. Interpolate_Stats = .TRUE. / ;
Note: this namelist variable is only applied to cv_options = 2. ; ;
.TRUE. To get the interpolated
Background Error Statistics (BES)
; matching with your First
Guess (FG). ; ; When the BES file and FG file have the
different domain size,
; you must set
Interpolate_Stats = .TRUE. ;
; With Interpolate_Stats =
.TRUE., a interpolated BES file
; is automatically written
out for next time use or for
; plotting the
Eigenvectors, Eigenvalues, ...
; ;
.FALSE. When the BES file and FG file have the identical domain size. &record11 cv_options = 2, ;
2 --> Use NCAR control variables: coefficients of the eigenvectors
; for Psi, Chi, Pu, and
q(Rh), and corresponding BES in minimization.
; VToX includes 2 steps:
VvToVp (Eigenvector space to physical space)
; and VpToX
(control variables to analyzed
;
variables in physical space). ;
3 --> Use NCEP control variables: S, unbalanced Zu, unbalanced Tu,
; pseudo-relative humidity
Prh, and logarithm of the unbalanced
; part of the surface
pressure in physical space, and their
; corresponding BES file. ;
For details, please look at
wrf3dvar_cvoptions3
; ;
Note: only cv_options = 2 with MM5 FG (fg_format=2) and ASCII OBS
; file (ob_format=2) is
fully tested in the release version. ; cv_options_hum
= 1, ;
This namelist variable is only effective for cv_options=2. ; ;
1 --> Use the specific humidity q as the control variable. ;
2 --> Use the relative humidity RH as the control variable. check_rh = 2, ;
This namelist variable is only effective for cv_options=2. ; ;
0 --> No supersaturation check after minimization. ;
1 --> With the supersaturation (rh>100%) and minimum rh
; (rh<10%) check, and
make the local adjustment of the
; specific humidity. ;
2 --> With the maximum (rh>95%) and minimum (rh<11%) rh
; check, and make the
multi-level q adjustment under
; the constraints of
integrated water vapor in column
; conserved. as1 = 0.2, 0.5, 1.5, ; The
tuning coefficients for variance, horizontal and vertical scales for control
; variable 1 --- Stream function
S. Used for cv_options=3 only. as2 = 0.2, 0.5, 1.5,
; The tuning coefficients for variance,
horizontal and vertical scales for control
; variable 2 --- unbalanced
potential velocity Zu. Used for cv_options=3 only. as3 = 0.2, 0.5, 1.5,
; The tuning coefficients for variance,
horizontal and vertical scales for control
; variable 3 --- unbalanced part
of temperature Tu. Used for cv_options=3 only.
as4 = 0.2, 0.5, 1.5,
; The tuning coefficients for variance,
horizontal and vertical scales for control
; variable 4 --- Pseudo-relative
humidity Prh. Used for cv_options=3 only.
as5 = 0.5, 1.0, 1.0,
; The tuning coefficients for variance,
horizontal and vertical scales for control
; variable 5 --- unbalanced part
of the surface pressure Pu.
; (The Pu has only horizontal scale, no vertical
scale). Used for cv_options=3 only.
sfc_assi_options
= 2, ;
Note: currently this namelist variable is only effective for ; cv_options=2. ; ;
1 --> Before the minimization, the surface observed parameters
; (wind, temperature,
moisture and pressure) are reduced to
; the lowest model level. ;
; This means that the
original observations are modified
; based on the information
of the first guess fields. ;
; The observations are
discarded when the elevations of the
; observing sites are too
far from the lowest model level height
; (> 100m). ;
2 --> Based on the surface similarity theory in MM5/MRF/PBL, some
; of the observation
operators (Hx) are developed to get the
; analysis equivalent of the
surface observed parameters, then
; the innovations are
computed. ; ; The original values of the surface
observation are never
; changed. ;
; Regardless of the
elevations of the observing sites, the
; analysis 10-m wind and 2-m
temperature, moisture are computed.
; Only the analysis pressure
computation need to consider the
; station heights. set_omb_rand_fac
= 1.0, ;
Scaling factor for random O-B (*sigma_o). Not change. Not change. seed_array1 = 0, ;
The first element of the seed for subroutine random_seed. Not change. seed_array2 = 0, ;
The second element of the seed for subroutine random_seed. Not change. outer_loop_write
= .TRUE., ;
.TRUE. write out the analysis files for
each of the outer-loops.
; The fortran file units
for these analysis files are fort.{21-max_ext_its+it},
; where "it" is the
sequential number of outer-loops. ;
.FALSE. write out only the final analysis files. in_cg_cost_function_needed = .TRUE., ;
This namelist variable is only effective for minimise_option = 2 ; ;
.TRUE. Compute the cost functions every
iteration and output. ;
.FALSE. Only the initial and final cost functions are computed ; and output. ; ;
Note: in general, you should set in_cg_cost_function_needed = .FALSE.
; because the cost function
computation is expensive. Only
; when you want to get the
plots for the performance of the
; convergence, you may set
in_cg_cost_function_needed = .TRUE. minimise_option
= 2, ;
1 --> using the Quasi-Newton (QN) algorithm for the minimization. ;
2 --> using the Conjugate Gradient (CG) algorithm for the minimization. lat_stats_option
= .TRUE. / ;
This namelist variable is only effective for cv_options = 2 and ;
Interpolate_Stats = .TRUE. ; ;
.TRUE. The I-dependent regression
coefficients for balance part of
; pressure are used. If
the input BES file does not have
; I-dependent regression coefficients,
program stopped. ;
.FALSE. The domain averaged regression coefficients for balance
; part of pressure are
used. &record12 balance_type = 1 / ;
Momentum-mass balance type:
; 1 = Geostrophic;
; 2 = Cyclostrophic;
; 3 = Geo/cyclostrophic. ; ;
Note: the setting here must be identical to which (bhi(28,10) in the big
header)
; in BES file. &record13 ;
The namelist variables in this record13 are only applied to cv_options=2. ;
The settings of the namelist variables in this record should be identical ;
to those in BES file. ; vert_corr = 2, ;
Currently you must set vert_corr = 2, i.e. the eigenvector decomposition ;
method is applied in vertical in modeling the vertical correlationship. vertical_ip = 0, ;
The type of the vertical inner product:
; 0=Euclidean,
; 1=SQRT(pressure),
; 2=pressure ; ;
Note: This value must be consistent with which {value from the big-header
; Bhi(31,10)} in the BES
file, otherwise program stopped. vert_evalue = 1, ;
1 --> use the global eigenvector/eigenvalue. Now program hardwired
; vert_evalue = 1, other
values will stop the job. Not change it. ;
2 --> use the I-dependent eigenvector/eigenvalue. ; ;
Note: Although the I-dependent (approximately latitude-dependent)
; eigenvector and eigenvalue
are available in BES file, the
; GLOBAL
eigenvector/eigenvalue gave smoother analysis results. max_vert_var1 = 99.0, ;
Specify the maximum truncation value (percentage) to explain the variance of the ;
control variable 1 -- Stream function, in eigenvector decomposition max_vert_var2 = 99.0, ;
Specify the maximum truncation value (percentage) to explain the variance of the ;
control variable 2 -- Potential velocity, in eigenvector decomposition max_vert_var3 = 99.0, ;
Specify the maximum truncation value (percentage) to explain the variance of the ;
control variable 3 -- Unbalanced part of pressure, in eigenvector ; decomposition
max_vert_var4 = 99.0, ;
Specify the maximum truncation value (percentage) to explain the variance of the ;
control variable 4 -- Specify humidity or relative humidity, in ;
eigenvector decomposition max_vert_var5 = 0.0 / ;
Not used. &pseudo_ob_nl ;
The namelist variables in this record are used for the PSEUDO-OBS ;
tests. num_pseudo = 0, ;
Set the number of pseudo observations. Currently only the value of 1 ;
is allowed, i.e. num_pseudo = 1 --- the SINGLE-OBS test. pseudo_x = 1.0, ;
Set the x-position (J) of the OBS in unit of grid-point. pseudo_y = 1.0, ;
Set the y-position (I) of the OBS in unit of grid-point. pseudo_z = 1.0, ;
Set the z-position (ZK) of OBS with the vertical level index. ;
In MM5, the top level has z=1, and bottom level, z=kx. pseudo_val = 1.0, ;
Set the innovation of the OBS variable: u/v at m/s, p at Pa, t at degree, ;
and q at kg/kg. pseudo_err = 1.0, ;
Set the OBS error of the OBS variable. pseudo_var = 't' / ;
Set the name of the OBS variable:
; 'u' = X-direction component of
wind,
; 'v' = Y-direction component of
wind,
; 't' = Temperature,
; 'p' = Prerssure,
; 'q' = Specific humidity