[Dart-dev] DART/branches Revision: 12582
dart at ucar.edu
dart at ucar.edu
Thu May 10 16:24:36 MDT 2018
hendric at ucar.edu
2018-05-10 16:24:35 -0600 (Thu, 10 May 2018)
132
repaired reading an ensemble of restarts from a list and
are using 'extra copies' to compute the mean using the
ensemble manager.
Modified: DART/branches/rma_closest_member_tool/assimilation_code/programs/closest_member_tool/closest_member_tool.f90
===================================================================
--- DART/branches/rma_closest_member_tool/assimilation_code/programs/closest_member_tool/closest_member_tool.f90 2018-05-10 18:58:13 UTC (rev 12581)
+++ DART/branches/rma_closest_member_tool/assimilation_code/programs/closest_member_tool/closest_member_tool.f90 2018-05-10 22:24:35 UTC (rev 12582)
@@ -41,7 +41,9 @@
use io_filenames_mod, only : file_info_type, io_filenames_init, &
set_io_copy_flag, set_file_metadata, &
- set_member_file_metadata, READ_COPY
+ set_member_file_metadata, file_info_dump, &
+ stage_metadata_type, get_stage_metadata, &
+ get_restart_filename, READ_COPY
use state_structure_mod, only : get_num_domains
@@ -48,7 +50,7 @@
use mpi_utilities_mod, only : initialize_mpi_utilities, task_count, &
finalize_mpi_utilities
-use ensemble_manager_mod, only : ensemble_type, init_ensemble_manager
+use ensemble_manager_mod, only : ensemble_type, init_ensemble_manager, compute_copy_mean_sd
!>@todo needs to destroy ensemble before the end of the program
implicit none
@@ -108,14 +110,15 @@
single_restart_file_in, &
difference_method, &
use_only_qtys
-
-
type(ensemble_type) :: ens_handle, mean_ens_handle
character(len=256), allocatable :: file_array_input(:,:)
character(len=256) :: input_state_files(MAX_FILES) = ''
-integer :: num_domains
+integer :: num_domains, idom, imem
type(time_type) :: model_time
logical :: read_time_from_file = .true.
+type(stage_metadata_type) :: input_restart_files
+character(len=256) :: string1, my_base, my_desc
+integer :: ENS_SD_COPY, ENS_MEAN_COPY
!> @todo seems like you are using get_state_meta_data just so you can get the kinds.
!> WRF and MPAS will be doing the vertical conversion also.
@@ -142,16 +145,6 @@
call static_init_assim_model()
model_size = get_model_size()
-! Allocate space for file arrays. contains a matrix of files
-! (ens_size x num_domains). If perturbing from a single instance
-! the number of input files does not have to ! be ens_size but
-! rather a single file (or multiple files if more than one domain)
-
-num_domains = get_num_domains()
-
-allocate(file_array_input(ens_size, num_domains))
-file_array_input = RESHAPE(input_restart_file_list, (/ens_size, num_domains/))
-
write(msgstring, *) 'Model size/restart data length =', model_size
call error_handler(E_MSG,'',msgstring)
write(msgstring, *) 'Ensemble member count = ', ens_size
@@ -161,22 +154,72 @@
! make space for the mean and a single member, plus place to sort list
! for output
-call init_ensemble_manager(ens_handle, ens_size, model_size)
+call init_ensemble_manager(ens_handle, ens_size+2, model_size)
call init_ensemble_manager(mean_ens_handle, 1, model_size)
-! Set file IO information
-! Input Files
-call set_member_file_metadata(ens_file_info, ens_size, my_copy_start=1)
-call set_io_copy_flag(ens_file_info, c1=1, c2=ens_size, io_flag=READ_COPY)
+mean_time = set_time_missing()
+member_time = set_time_missing()
+mean_advance_time = set_time_missing()
+mean_advance_time = set_time_missing()
+num_domains = get_num_domains()
+
+! Given either a vector of in/output_state_files or a text file containing
+! a list of files, return a vector of files containing the filenames.
+call set_multiple_filename_lists(input_state_files(:), &
+ input_restart_file_list(:), &
+ num_domains, &
+ ens_size, &
+ 'filter','input_state_files','input_state_file_list')
+
+! be ens_size but rather a single file (or multiple files if more than one domain)
+allocate(file_array_input(ens_size, num_domains))
+
+file_array_input = RESHAPE(input_state_files, (/ens_size, num_domains/))
+
+if (1==2) then
+ print*, input_state_files, 'input_state_files'
+ print*, input_restart_file_list, 'input_restart_file_list'
+ print*, file_array_input, 'file_array_input'
+endif
+! read in the ensemble and the mean - always in a separate file
+call io_filenames_init(ens_file_info, ens_size, .false., .false., restart_files=file_array_input)
+call io_filenames_init(mean_file_info, 1, .false., .false., root_name='input')
+
More information about the Dart-dev
mailing list