[Dart-dev] DART/branches Revision: 12644

dart at ucar.edu dart at ucar.edu
Thu Jun 7 13:13:36 MDT 2018


thoar at ucar.edu
2018-06-07 13:13:36 -0600 (Thu, 07 Jun 2018)
90
After code review but needs a lot of work.
Code before incorporating review suggestions.




Modified: DART/branches/qc8/assimilation_code/programs/obs_diag/oned/obs_diag.f90
===================================================================
--- DART/branches/qc8/assimilation_code/programs/obs_diag/oned/obs_diag.f90	2018-06-07 19:08:52 UTC (rev 12643)
+++ DART/branches/qc8/assimilation_code/programs/obs_diag/oned/obs_diag.f90	2018-06-07 19:13:36 UTC (rev 12644)
@@ -88,11 +88,11 @@
 integer :: num_obs_types
 
 ! variables used primarily/exclusively for the rank histogram
-integer                :: ens_size, rank_histogram_bin
-type(random_seq_type)  :: ran_seq
-real(r8)               :: obs_err_var
+integer               :: ens_size, rank_histogram_bin
+type(random_seq_type) :: ran_seq
+real(r8)              :: obs_err_var
 
-character(len=129) :: obs_seq_read_format
+character(len=stringlength) :: obs_seq_read_format
 logical :: pre_I_format
 
 integer,  dimension(2) :: key_bounds
@@ -118,14 +118,26 @@
 ! 3     Evaluated only, but the posterior forward operator failed
 !   --- everything above this means only the prior is OK
 ! 4     prior forward operator failed
-! 5     not used
+! 5     not assimilated or evaluated because of namelist specification of
+!         input.nml:obs_kind_nml:[assimilate,evaluate]_these_obs_types
 ! 6     prior QC rejected
 ! 7     outlier rejected
-! 8+    reserved for future use
+! 8     failed vertical conversion
+! 9+    reserved for future use
+!
+! Some DART QC == 4 have meaningful posterior mean/spread (i.e. not MISSING)
+! Anything with a DART QC == 5 has MISSING values for all DART copies
+! Anything with a DART QC == 6 has MISSING values for all DART copies
+! Anything with a DART QC == 7 has 'good' values for all DART copies, EXCEPT
+! ambiguous case:
+! prior rejected (7) ... posterior fails (should be 7 & 4)
+!
+! FIXME can there be a case where the prior is evaluated and the posterior QC is wrong
+! FIXME ... there are cases where the prior fails but the posterior works ...
 
 integer             :: org_qc_index, dart_qc_index
 integer             :: qc_integer
-integer, parameter  :: QC_MAX = 8
+integer, parameter  :: QC_MAX = 9
 integer, parameter  :: QC_MAX_PRIOR     = 3
 integer, parameter  :: QC_MAX_POSTERIOR = 1
 integer, dimension(0:QC_MAX) :: qc_counter = 0
@@ -132,9 +144,11 @@
 real(r8), allocatable, dimension(:) :: qc
 real(r8), allocatable, dimension(:) :: copyvals
 
-integer, parameter, dimension(5) :: hist_qcs = (/ 0, 1, 2, 3, 7 /)
+integer, parameter, dimension(5) ::          hist_qcs = (/ 0, 1, 2, 3, 7 /)
 integer, parameter, dimension(5) :: trusted_prior_qcs = (/ 0, 1, 2, 3, 7 /)
 integer, parameter, dimension(3) :: trusted_poste_qcs = (/ 0, 1,       7 /)
+integer, parameter, dimension(4) ::    good_prior_qcs = (/ 0, 1, 2, 3 /)
+integer, parameter, dimension(2) ::    good_poste_qcs = (/ 0, 1       /)
 integer :: numqcvals
 
 !-----------------------------------------------------------------------
@@ -177,13 +191,13 @@
 ! Variables used to accumulate the statistics.
 !-----------------------------------------------------------------------
 
-integer, parameter :: Ncopies = 18
-character(len = stringlength), dimension(Ncopies) :: copy_names = &
-   (/ 'Nposs      ', 'Nused      ',                               &
-      'rmse       ', 'bias       ', 'spread     ', 'totalspread', &
-      'NbadDARTQC ', 'observation', 'ens_mean   ',                &
-      'N_DARTqc_0 ', 'N_DARTqc_1 ', 'N_DARTqc_2 ', 'N_DARTqc_3 ', &
-      'N_DARTqc_4 ', 'N_DARTqc_5 ', 'N_DARTqc_6 ', 'N_DARTqc_7 ', 'N_trusted  ' /)
+integer, parameter :: Ncopies = 19
+character(len=stringlength), dimension(Ncopies) :: copy_names =                  &
+   (/ 'Nposs      ', 'Nused      ',                                              &
+      'rmse       ', 'bias       ', 'spread     ', 'totalspread',                &
+      'NbadDARTQC ', 'observation', 'ens_mean   ', 'N_trusted  ',                &
+      'N_DARTqc_0 ', 'N_DARTqc_1 ', 'N_DARTqc_2 ', 'N_DARTqc_3 ', 'N_DARTqc_4 ', &
+      'N_DARTqc_5 ', 'N_DARTqc_6 ', 'N_DARTqc_7 ', 'N_DARTqc_8 '                /)
 
 type TRV_type
    ! statistics by time-region-variable
@@ -198,15 +212,16 @@
    real(r8), dimension(:,:,:), pointer :: observation, ens_mean
    integer,  dimension(:,:,:), pointer :: NDartQC_0, NDartQC_1, NDartQC_2, NDartQC_3
    integer,  dimension(:,:,:), pointer :: NDartQC_4, NDartQC_5, NDartQC_6, NDartQC_7
+   integer,  dimension(:,:,:), pointer :: NDartQC_8
    integer,  dimension(:,:,:,:), pointer :: hist_bin => NULL()
 end type TRV_type
 
-type(TRV_type) :: analy, guess
+type(TRV_type) :: prior, poste
 
 type(time_type), allocatable, dimension(:)   :: bincenter
 type(time_type), allocatable, dimension(:,:) :: binedges
-real(digits12),  allocatable, dimension(:)   :: epochcenter
-real(digits12),  allocatable, dimension(:,:) :: epochedges
+real(digits12),  allocatable, dimension(:)   :: epoch_center
+real(digits12),  allocatable, dimension(:,:) :: epoch_edges


More information about the Dart-dev mailing list