MODULES / NAMELIST / FILES / REFERENCES / ERRORS / BUGS / PLANS

PROGRAM obs_diag

Contact: Tim Hoar
Revision: $Revision: 2819 $
Source: $URL: http://subversion.ucar.edu/DAReS/DART/trunk/diagnostics/oned/obs_diag.html $
Change Date: $Date: 2007-04-07 11:41:21 -0600 (Sat, 07 Apr 2007) $
Change history: try "svn log" or "svn diff"

OVERVIEW

Main program for observation-space diagnostics for the models with 1D locations. The model space is carved up into regions, hence the dependency on the location type. There is no discrimination between observation types, but the framework is still in the code - the main selection block is commented out. The result of the code is a set of ASCII files that contain the RMS of the bias and the RMS of the spread of the prior (aka 'guess') and posterior (aka 'analysis') estimates as a function of time and region. Separate (pairs of) files are created for each observation type in the observation sequence file.

The obs_diag program performs an outlier test on observations, which can be more restrictive than the outlier test in the filter, but not less (see outlier_threshold in filter_nml and rat_cri here).

The J release of DART also implements a DART QC flag that provides information about how the observation was or was not assimilated. The DART QC flag is intended to provide information about whether the observation was assimilated, evaluated only, whether the assimilation resulted in a 'good' observation, etc. Here is the table that should explain things:

DART QC flag valuemeaning
0observation assimilated
1observation evaluated only
DART QC values higher than this means the prior and posterior are OK, but ...
2assimilated, but the posterior forward operator failed
3Evaluated only, but the posterior forward operator failed
DART QC values higher than this means only the prior is OK, but ...
4prior forward operator failed
5not used because of namelist control
DART QC values higher than this are bad news.
6prior QC rejected
7outlier rejected
8+reserved for future use

The namelist contains several unused features that are simply used to facilitate the matlab plotting routines until such time as the output is reformatted to a netCDF file.

Optional namelist interface &obsdiag_nml may be read from file input.nml.




MODULES DIRECTLY USED

types_mod
obs_sequence_mod
obs_def_mod
location_mod
time_manager_mod
utilities_mod

MODULES INDIRECTLY USED

random_seq_mod
random_nr_mod
assim_model_mod
model_mod



NAMELIST

We adhere to the F90 standard of starting a namelist with an ampersand '&' and terminating with a slash '/'.

namelist / obsdiag_nml /  &
      obs_sequence_name, iskip_days, obs_select, rat_cri,  &
      input_qc_threshold, bin_width_sections, &
      lonlim1, lonlim2, reg_names, verbose

Discussion

This namelist is read in a file called input.nml

Contents Type Description
obs_sequence_name character(len=129) Contains name of observation sequence file. Default is "obs_seq.final"
iskip_days integer not used. Future plan is to provide the ability to skip some time before accumulating statistics.
Default is 0.
obs_select integer not used. Future plan is to allow selection of certain types of observations.
Default is 1 -- all types used.
rat_cri real(r8) Critical ratio of distance of the value of observation from the ensemble mean to the standard deviation of the ensemble. If this ratio is too large then the observation is suspect and will be ignored. If this value is larger than the corresponding one in the filter, then it does nothing; that obs has already been excluded by the filter.
Default: 4.0
input_qc_threshold real(r8) This mimics the values used by NCEP for their nomenclature for observation quality control. Any observation with a QC value equal to or above the input_qc_threshold is not included in the diagnostics. The total number of rejected observations is reported as 'NbadQC' in the diagnostics at the end of the run.
Default is 4.0
bin_width_seconds integer Specifies the width of the analysis window. All observations within a window centered at the observation time +/- bin_width_seconds is used. Default is 0 - half the separation between observation times as defined in the observation sequence file is used (i.e. all observations used).
lonlim1 real(r8) array of length(4) starting value of coordinates defining 'regions'. A value of -1 indicates the start of 'no region'.
Default is (/ 0.0, 0.0, 0.5, -1.0/)
lonlim2 real(r8) array of length(4) ending value of coordinates defining 'regions'. A value of -1 indicates the end of 'no region'.
Default is (/ 1.0, 0.5, 1.0, -1.0/)
reg_names character(len=6), dimension(4) Array of names for each of the regions. The default example has the unit circle as a whole and divided into two equal parts, so there are only three regions.
Default: 'whole','yin','yang','bogus'
verbose logical switch controlling amount of run-time output.
Default is .false. (suppress most output)



FILES

The output file names are based on the metadata for the observation types. If the observation sequence file contains observations of KIND_1D_INTEGRAL, you will get a pair of files: RAW_STATE_1D_INTEGRAL_ges_times.dat, and RAW_STATE_1D_INTEGRAL_anl_times.dat.

File formats

We intend to write the output as netCDF files eventually. Until then, here's the rosetta stone...
column 1day of observation
column 2seconds of observation
column 3rms of bias
column 4rms of spread
column 5number of observations
Columns 3,4,5 are repeated for each region
If there are no observations in a particular region, the default value of -99 is used for the bias and spread. The regions themselves are logged in ObsDiagAtts.m.


REFERENCES


ERROR CODES and CONDITIONS

RoutineMessageComment
get_last_obs No "last" observation in sequence Must have an incomplete observation sequence file.
get_first_obs No Observations in sequence. Empty observation sequence file.



KNOWN BUGS




FUTURE PLANS

Change output format to netCDF, eliminate reliance on ancillary plotting attributes file: ObsDiagAtts.m.

Discussion

None at this time.