[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