[Dart-dev] DART/branches Revision: 10745

dart at ucar.edu dart at ucar.edu
Mon Nov 14 07:59:46 MST 2016


hendric at ucar.edu
2016-11-14 07:59:45 -0700 (Mon, 14 Nov 2016)
169
diagnostic files are controlled in state_space_diage_mod.f90.
The number of output state members should not effect if
diagnostic files are written. This needs testing.




Modified: DART/branches/rma_fixed_filenames/filter/filter_mod.f90
===================================================================
--- DART/branches/rma_fixed_filenames/filter/filter_mod.f90	2016-11-14 14:44:23 UTC (rev 10744)
+++ DART/branches/rma_fixed_filenames/filter/filter_mod.f90	2016-11-14 14:59:45 UTC (rev 10745)
@@ -616,6 +616,9 @@
    if ((output_interval > 0) .and. &
        (time_step_number / output_interval * output_interval == time_step_number)) then
 
+      !>todo FIXME JPH: Should save copies of these and write out at the end.
+      !> this will be more memory intensive but faster as we can take advantage
+      !> of parallel IO.
       if (get_output_preassim()) then
         call write_assim_files(state_ens_handle, file_info, &
               ENS_MEAN_COPY, ENS_SD_COPY, PRIOR_INF_COPY, PRIOR_INF_SD_COPY, &
@@ -748,18 +751,18 @@
 
    !>todo FIXME JPH: option to write copies after inflation and before
    !> posterior inflation.
-   ! if ((output_interval > 0) .and. &
-   !     (time_step_number / output_interval * output_interval == time_step_number)) then
-   !    if (get_output_postassim()) then
-   !      call write_assim_files(state_ens_handle, file_info, &
-   !            ENS_MEAN_COPY, ENS_SD_COPY, PRIOR_INF_COPY, PRIOR_INF_SD_COPY, &
-   !            ouput_infaltion)
-   !    endif
-   !    !> @todo What to do here?
-   !    !call smoother_ss_diagnostics(model_size, get_num_output_state_members(), &
-   !    !  output_inflation, temp_ens, ENS_MEAN_COPY, ENS_SD_COPY, &
-   !    ! POST_INF_COPY, POST_INF_SD_COPY)
-   ! endif
+   if ((output_interval > 0) .and. &
+       (time_step_number / output_interval * output_interval == time_step_number)) then
+      if (get_output_postassim()) then
+        call write_assim_files(state_ens_handle, file_info, &
+              ENS_MEAN_COPY, ENS_SD_COPY, POST_INF_COPY, POST_INF_SD_COPY, &
+              ouput_infaltion)
+      endif
+      !> @todo What to do here?
+      !call smoother_ss_diagnostics(model_size, get_num_output_state_members(), &
+      !  output_inflation, temp_ens, ENS_MEAN_COPY, ENS_SD_COPY, &
+      ! POST_INF_COPY, POST_INF_SD_COPY)
+   endif
 
    call timestamp_message('After  posterior state space diagnostics')
    call trace_message('After  posterior state space diagnostics')
@@ -988,21 +991,21 @@
 
 subroutine filter_initialize_modules_used()
 
+call trace_message('Before filter_initialize_module_used call')
 call register_module(source,revision,revdate)
 
 ! Initialize the obs sequence module
 call static_init_obs_sequence()
 
 ! Initialize the model class data now that obs_sequence is all set up
-call trace_message('Before init_model call')
 call static_init_assim_model()
-call trace_message('After  init_model call')
+! Initialize diagnostics
 call init_state_space_diag()
-call trace_message('After  initialize_state_space_diag call')
+! Initialize IO module
 call state_vector_io_init()
-call trace_message('After  init_state_vector_io call')
+! Initialize quality control
 call initialize_qc()
-call trace_message('After  initialize_qc call')
+call trace_message('After filter_initialize_module_used call')
 
 end subroutine filter_initialize_modules_used
 
@@ -1800,21 +1803,25 @@
 ! If there are no diagnostic files, we will need to store the
 ! copies that would have gone in Prior_Diag.nc and Posterior_Diag.nc
 ! in spare copies in the ensemble.
-if (num_output_state_members <= 0) then
 
+!>todo FIXME JPH : This logic needs to be tested. Previously was using
+!>                 skip_diag() which is depricated.
+if (get_output_preassim()) then
    ! Not stopping to write prior_members so keep these Prior copies
    ! as extra copies and write them and the end.
    SPARE_PRIOR_MEAN       = ens_size + 7
    SPARE_PRIOR_SPREAD     = ens_size + 8
    SPARE_PRIOR_INF_MEAN   = ens_size + 9
    SPARE_PRIOR_INF_SPREAD = ens_size + 10
-   ! need to store posterior inflation mean and inflation spread since
-   ! these are overwritten in filter_assim(inflate_only=.true.)
-   SPARE_POST_INF_MEAN    = ens_size + 11
-   SPARE_POST_INF_SPREAD  = ens_size + 12
-   num_extras = num_extras + 6
-
-elseif (num_output_state_members > 0) then
+   num_extras = num_extras + 4
+   if(get_output_postassim()) then
+      ! need to store posterior inflation mean and inflation spread since
+      ! these are overwritten in filter_assim(inflate_only=.true.)
+      SPARE_POST_INF_MEAN    = ens_size + 11
+      SPARE_POST_INF_SPREAD  = ens_size + 12
+      num_extras = num_extras + 2


More information about the Dart-dev mailing list