[Dart-dev] DART/branches Revision: 11925

dart at ucar.edu dart at ucar.edu
Wed Aug 30 16:43:42 MDT 2017

thoar at ucar.edu
2017-08-30 16:43:39 -0600 (Wed, 30 Aug 2017)
Implement support for identity observations in the oned version of obs_diag.
Simply use the QTY_STATE_VARIABLE and go through the same logic as any other.
Could extend this to use the get_state_meta_data() routine to return 
the exact QTY in all the obs_diag programs for 'perfect' behavior.

The documentation for the threed_sphere/obs_diag has a better explanation of
what happens when there are no observations in what looks to be perfectly 
good levels ... specified with the wrong units or are totally out-of-range.

Modified: DART/branches/rma_trunk/assimilation_code/programs/obs_diag/oned/obs_diag.f90
--- DART/branches/rma_trunk/assimilation_code/programs/obs_diag/oned/obs_diag.f90	2017-08-30 22:38:53 UTC (rev 11924)
+++ DART/branches/rma_trunk/assimilation_code/programs/obs_diag/oned/obs_diag.f90	2017-08-30 22:43:39 UTC (rev 11925)
@@ -27,7 +27,8 @@
                              read_obs_seq_header, destroy_obs, get_qc_meta_data
 use      obs_def_mod, only : obs_def_type, get_obs_def_error_variance, get_obs_def_time, &
                              get_obs_def_location, get_obs_def_type_of_obs
-use     obs_kind_mod, only : max_defined_types_of_obs, get_name_for_type_of_obs
+use     obs_kind_mod, only : max_defined_types_of_obs, get_name_for_type_of_obs, &
+                             QTY_STATE_VARIABLE
 use     location_mod, only : location_type, get_location, operator(/=), LocationDims
 use time_manager_mod, only : time_type, set_time, get_time, print_time, &
                              print_date, set_calendar_type, get_date, &
@@ -563,12 +564,13 @@
          ! Check to see if it is an identity observation.
-         ! If it is, we count them and skip them since they are better
-         ! explored with the model-space diagnostics.
+         ! Redefine identity observations as flavor = QTY_STATE_VARIABLE
+         !>@todo use get_state_meta_data() to determine exactly. Could then
+         !> do this for all models, regardless of dimensionality.
          if ( flavor < 0 ) then
-         !  write(*,*)'obs ',obsindex,' is an identity observation - no fair.',obs_err_var
             Nidentity = Nidentity + 1
-            cycle ObservationLoop
+            flavor = QTY_STATE_VARIABLE

Modified: DART/branches/rma_trunk/assimilation_code/programs/obs_diag/threed_sphere/obs_diag.html
--- DART/branches/rma_trunk/assimilation_code/programs/obs_diag/threed_sphere/obs_diag.html	2017-08-30 22:38:53 UTC (rev 11924)
+++ DART/branches/rma_trunk/assimilation_code/programs/obs_diag/threed_sphere/obs_diag.html	2017-08-30 22:43:39 UTC (rev 11925)
@@ -1175,7 +1175,13 @@
 <br />
 Hope to have a separate DART QC flag for observations outside the model state.
 Right now, all observations that have a DARt forward operator fail (extrapolate, mainly)
-get counted as observations that are rejected. Logically, these observations are not possible because most (all?) DART observation operators cannot extrapolate.
+get counted as observations that are rejected. Logically, these observations 
+are not possible because most (all?) DART observation operators cannot extrapolate.
+<br />
+<br />
+If the specified levels are not in the proper range for the observations, no vertical profile is built.
+The 'verbose' option should highlight the fact there are no observations in the specified vertical bins - 
+AND provide some sort of guidance about the min and max values of the vertical values. 

More information about the Dart-dev mailing list