[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