[Dart-dev] DART/branches Revision: 11816
dart at ucar.edu
dart at ucar.edu
Mon Jul 17 13:22:01 MDT 2017
hendric at ucar.edu
2017-07-17 13:22:00 -0600 (Mon, 17 Jul 2017)
125
moving over files from rma_file_list_nml to new branch.
also including a new subroutine to parse multiple file
name lists.
Modified: DART/branches/rma_array_nml/assimilation_code/modules/assimilation/filter_mod.f90
===================================================================
--- DART/branches/rma_array_nml/assimilation_code/modules/assimilation/filter_mod.f90 2017-07-17 17:39:49 UTC (rev 11815)
+++ DART/branches/rma_array_nml/assimilation_code/modules/assimilation/filter_mod.f90 2017-07-17 19:22:00 UTC (rev 11816)
@@ -30,7 +30,8 @@
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, to_upper
+ open_file, close_file, do_nml_file, do_nml_term, to_upper, &
+ set_multiple_filename_lists, set_filename_list, find_textfile_dims
use assim_model_mod, only : static_init_assim_model, get_model_size, &
end_assim_model, pert_model_copies
@@ -76,14 +77,17 @@
use io_filenames_mod, only : io_filenames_init, file_info_type, &
combine_file_info, set_file_metadata, &
- set_member_file_metadata, &
- set_io_copy_flag, check_file_info_variable_shape, &
+ set_member_file_metadata, set_io_copy_flag, &
+ check_file_info_variable_shape, check_num_restarts, &
query_copy_present, COPY_NOT_PRESENT, &
- READ_COPY, WRITE_COPY, READ_WRITE_COPY
+ READ_COPY, WRITE_COPY, READ_WRITE_COPY, &
+ file_info_dump
use direct_netcdf_mod, only : finalize_single_file_io, write_augmented_state, &
nc_get_num_times
+use state_structure_mod, only : get_num_domains
+
use forward_operator_mod, only : get_obs_ens_distrib_state
use quality_control_mod, only : initialize_qc
@@ -190,17 +194,17 @@
integer, parameter :: MAXFILES = 200
!>@todo FIXME - how does this work for multiple domains? ens1d1, ens2d1, ... ens1d2 or
!> ens1d1 ens1d2, ens1d1 ens2d2, etc i like the latter better.
-character(len=256) :: input_state_files(MAXFILES) = 'null'
-character(len=256) :: output_state_files(MAXFILES) = 'null'
+character(len=256) :: input_state_files(MAXFILES) = ''
+character(len=256) :: output_state_files(MAXFILES) = ''
! Name of files containing a list of {input,output} restart files, 1 file per domain
-character(len=256) :: input_state_file_list(MAX_NUM_DOMS) = 'null'
-character(len=256) :: output_state_file_list(MAX_NUM_DOMS) = 'null'
+character(len=256) :: input_state_file_list(MAX_NUM_DOMS) = ''
+character(len=256) :: output_state_file_list(MAX_NUM_DOMS) = ''
! Read in a single file and perturb this to create an ensemble
-logical :: perturb_from_single_instance = .false.
-real(r8) :: perturbation_amplitude = 0.2_r8
+logical :: perturb_from_single_instance = .false.
+real(r8) :: perturbation_amplitude = 0.2_r8
! 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
+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. Valid values are:
! multi-file: input, forecast, preassim, postassim, analysis, output
@@ -229,16 +233,16 @@
! Inflation namelist entries follow, first entry for prior, second for posterior
! inf_flavor is 0:none, 1:obs space, 2: varying state space, 3: fixed state_space,
! 4 is rtps (relax to prior spread)
-integer :: inf_flavor(2) = 0
-logical :: inf_initial_from_restart(2) = .false.
-logical :: inf_sd_initial_from_restart(2) = .false.
-logical :: inf_deterministic(2) = .true.
-real(r8) :: inf_initial(2) = 1.0_r8
-real(r8) :: inf_sd_initial(2) = 0.0_r8
-real(r8) :: inf_damping(2) = 1.0_r8
-real(r8) :: inf_lower_bound(2) = 1.0_r8
-real(r8) :: inf_upper_bound(2) = 1000000.0_r8
-real(r8) :: inf_sd_lower_bound(2) = 0.0_r8
+integer :: inf_flavor(2) = 0
+logical :: inf_initial_from_restart(2) = .false.
+logical :: inf_sd_initial_from_restart(2) = .false.
+logical :: inf_deterministic(2) = .true.
+real(r8) :: inf_initial(2) = 1.0_r8
+real(r8) :: inf_sd_initial(2) = 0.0_r8
+real(r8) :: inf_damping(2) = 1.0_r8
+real(r8) :: inf_lower_bound(2) = 1.0_r8
+real(r8) :: inf_upper_bound(2) = 1000000.0_r8
+real(r8) :: inf_sd_lower_bound(2) = 0.0_r8
namelist /filter_nml/ async, adv_ens_command, ens_size, tasks_per_model_advance, &
output_members, obs_sequence_in_name, obs_sequence_out_name, &
@@ -307,7 +311,7 @@
type(file_info_type) :: file_info_output
type(file_info_type) :: file_info_all
-logical :: ds, all_gone, allow_missing
+logical :: ds, all_gone, allow_missing
! real(r8), allocatable :: temp_ens(:) ! for smoother
real(r8), allocatable :: prior_qc_copy(:)
@@ -503,21 +507,27 @@
! for now, assume that we only allow cycling if single_file_out is true.
! code in this call needs to know how to initialize the output files.
More information about the Dart-dev
mailing list