[Dart-dev] DART/branches Revision: 10784
dart at ucar.edu
dart at ucar.edu
Tue Dec 6 16:17:19 MST 2016
hendric at ucar.edu
2016-12-06 16:17:18 -0700 (Tue, 06 Dec 2016)
266
Moving namelist option to output stages to filter since they
are program specific and only apply to filter. New option
to add stages independent of the program:
subroutine set_stage_to_write(stage_name, write_stage)
function get_stage_to_write(stage_name)
Modified: DART/branches/rma_fixed_filenames/filter/filter_mod.f90
===================================================================
--- DART/branches/rma_fixed_filenames/filter/filter_mod.f90 2016-12-05 23:06:36 UTC (rev 10783)
+++ DART/branches/rma_fixed_filenames/filter/filter_mod.f90 2016-12-06 23:17:18 UTC (rev 10784)
@@ -27,7 +27,7 @@
use utilities_mod, only : register_module, error_handler, E_ERR, E_MSG, E_DBG, &
logfileunit, nmlfileunit, timestamp, &
do_output, find_namelist_in_file, check_namelist_read, &
- open_file, close_file, do_nml_file, do_nml_term
+ open_file, close_file, do_nml_file, do_nml_term, to_upper
use assim_model_mod, only : static_init_assim_model, get_model_size, &
end_assim_model, pert_model_copies
use assim_tools_mod, only : filter_assim, set_assim_tools_trace, get_missing_ok_status, &
@@ -62,8 +62,7 @@
use random_seq_mod, only : random_seq_type, init_random_seq, random_gaussian
use state_vector_io_mod, only : state_vector_io_init, read_state, write_state, &
- get_output_preassim, get_output_postassim, &
- get_output_mean, get_output_sd, get_output_input
+ set_stage_to_write, get_stage_to_write
use io_filenames_mod, only : io_filenames_init, file_info_type, file_info_dump, &
set_file_metadata
@@ -71,8 +70,7 @@
use forward_operator_mod, only : get_obs_ens_distrib_state
use quality_control_mod, only : initialize_qc
-use state_space_diag_mod, only : init_state_space_diag, netcdf_file_type, &
- get_num_output_state_members, set_num_output_state_members
+use state_space_diag_mod, only : init_state_space_diag, netcdf_file_type
! state copy meta data
use copies_on_off_mod, only : ENS_MEAN_COPY, ENS_SD_COPY, PRIOR_INF_COPY, &
@@ -144,6 +142,12 @@
! File options. Single vs. Multiple.
logical :: single_file_in = .false. ! all copies read from 1 file
logical :: single_file_out = .false. ! all copies written to 1 file
+! Stages to write
+character(len=10) :: stages_to_write(4) = (/"null ", "null ", "null ", "output "/) ! input, preassim, postassim, output
+integer :: num_output_state_members = 0
+logical :: output_restarts = .true.
+logical :: output_mean = .true.
+logical :: output_sd = .true.
character(len=256) :: obs_sequence_in_name = "obs_seq.out", &
obs_sequence_out_name = "obs_seq.final", &
@@ -185,9 +189,12 @@
silence, output_restart_file_list, &
distributed_state, input_restart_file_list, &
single_file_in, single_file_out, &
- perturb_from_single_instance, perturbation_amplitude
+ perturb_from_single_instance, perturbation_amplitude, &
+ stages_to_write, num_output_state_members, &
+ output_restarts, output_mean, output_sd
+
!----------------------------------------------------------------
contains
@@ -318,8 +325,8 @@
! Setup the indices into the ensemble storage:
! Can't output more ensemble members than exist
-if(get_num_output_state_members() > ens_size) call set_num_output_state_members(ens_size)
-if(num_output_obs_members > ens_size) num_output_obs_members = ens_size
+if(num_output_state_members > ens_size) num_output_state_members = ens_size
+if(num_output_obs_members > ens_size) num_output_obs_members = ens_size
! State
call set_state_copies(ens_size, num_extras)
@@ -389,6 +396,8 @@
call init_file_info_extras(file_info_postassim,'postassim')
call init_file_info_extras(file_info_output, 'output')
+call parse_stages_to_write(stages_to_write)
+
if (.not. silence) then !>@todo abuse of the 'silence' variable
call file_info_dump(file_info_input, 'filter:input')
call file_info_dump(file_info_preassim, 'filter:preassim')
@@ -431,7 +440,7 @@
prior_obs_spread_index, posterior_obs_spread_index)
if(ds) call error_handler(E_ERR, 'filter', 'smoother broken by Helen')
-if(ds) call smoother_gen_copy_meta_data(get_num_output_state_members(), output_inflation=.true.) !> @todo fudge
+if(ds) call smoother_gen_copy_meta_data(num_output_state_members, output_inflation=.true.) !> @todo fudge
call timestamp_message('After initializing output files')
call trace_message('After initializing output files')
@@ -602,8 +611,12 @@
call trace_message('After prior inflation damping and prep')
endif
- if (get_output_input()) then
- call write_state(state_ens_handle, file_info_input, num_members=0)
+ if (get_stage_to_write('input')) then
+ call write_state(state_ens_handle, file_info_input, &
+ output_restarts=output_restarts, &
+ output_mean=output_mean, &
+ output_sd=output_sd, &
+ num_members=0)
More information about the Dart-dev
mailing list