[Dart-dev] DART/branches Revision: 12569

dart at ucar.edu dart at ucar.edu
Mon Apr 30 15:03:23 MDT 2018


thoar at ucar.edu
2018-04-30 15:03:23 -0600 (Mon, 30 Apr 2018)
101
Adding support for DART QC == 8 vertical conversion failed.

In response to JIRA ticket DARTSUP-433




Modified: DART/branches/rma_trunk/assimilation_code/programs/obs_diag/threed_sphere/obs_diag.f90
===================================================================
--- DART/branches/rma_trunk/assimilation_code/programs/obs_diag/threed_sphere/obs_diag.f90	2018-04-30 18:03:01 UTC (rev 12568)
+++ DART/branches/rma_trunk/assimilation_code/programs/obs_diag/threed_sphere/obs_diag.f90	2018-04-30 21:03:23 UTC (rev 12569)
@@ -13,7 +13,9 @@
 ! All 'possible' obs_kinds are treated separately.
 !-----------------------------------------------------------------------
 
-! In Atmospheric Science, 'spread' has units of standard deviations ...
+! In Atmospheric Science, 'spread' has units of standard deviation ...
+! In filter:obs_space_diagnostics() the 'spread' copies are converted to
+! standard deviations.
 !
 ! I should rename some of the variables I use as variances to reflect this.
 ! 'priorspred' should really be 'priorvar' since you have to accumulate variances
@@ -148,7 +150,8 @@
 !         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
@@ -162,7 +165,7 @@
 
 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
@@ -229,13 +232,15 @@
 ! Variables used to accumulate the statistics.
 !-----------------------------------------------------------------------
 
-integer, parameter :: Ncopies = 22
+!>@todo must be a more clever way to relate the copy_names to the components
+
+integer, parameter :: Ncopies = 23
 character(len=stringlength), dimension(Ncopies) :: copy_names =                  &
    (/ 'Nposs      ', 'Nused      ', 'NbigQC     ', 'NbadIZ     ', 'NbadUV     ', &
       'NbadLV     ', '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  ' /)
+      '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 TLRV_type
    ! statistics by time-level-region-variable
@@ -255,6 +260,7 @@
    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 TLRV_type
 
@@ -275,6 +281,7 @@
    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
 end type LRV_type
 
 ! FIXME ... I have these things in global storage ... should not be passing as
@@ -774,8 +781,8 @@
          ! so I erred on the conservative side. TJH 24 Aug 2007
          !--------------------------------------------------------------
 
-         ! integer, parameter  :: QC_MAX_PRIOR     = 3
-         ! integer, parameter  :: QC_MAX_POSTERIOR = 1
+         ! REPEATED FOR REFERENCE integer, parameter  :: QC_MAX_PRIOR     = 3
+         ! REPEATED FOR REFERENCE integer, parameter  :: QC_MAX_POSTERIOR = 1
 
          ! debug section for strange looking observations:
          if ( 1 == 2 ) then
@@ -836,8 +843,8 @@
          obs(1)  = obs(1)             *scale_factor(flavor)
          pr_mean = prior_mean(1)      *scale_factor(flavor)
          po_mean = posterior_mean(1)  *scale_factor(flavor)
-         pr_sprd = prior_spread(1)    *scale_factor(flavor)
-         po_sprd = posterior_spread(1)*scale_factor(flavor)
+         pr_sprd = prior_spread(1)    *scale_factor(flavor)  ! standard deviations
+         po_sprd = posterior_spread(1)*scale_factor(flavor)  ! standard deviations
 
          !--------------------------------------------------------------
          ! (DEBUG) Summary of observation knowledge at this point
@@ -1185,6 +1192,7 @@
 write(*,*) '# bad DART QC post   : ',sum(poste%NbadDartQC)
 write(*,*) '# priorQC 7 postQC 4 : ',num_ambiguous
 write(*,*)
+write(*,*) '# trusted prior   : ',sum(prior%Ntrusted)
 write(*,*) '# prior DART QC 0 : ',sum(prior%NDartQC_0)
 write(*,*) '# prior DART QC 1 : ',sum(prior%NDartQC_1)
 write(*,*) '# prior DART QC 2 : ',sum(prior%NDartQC_2)
@@ -1193,8 +1201,9 @@


More information about the Dart-dev mailing list