[Dart-dev] DART/branches Revision: 11793
dart at ucar.edu
dart at ucar.edu
Thu Jul 6 15:41:06 MDT 2017
hendric at ucar.edu
2017-07-06 15:41:01 -0600 (Thu, 06 Jul 2017)
44
reading mutiple domains from a file list.
Modified: DART/branches/rma_file_list_nml/assimilation_code/modules/assimilation/filter_mod.f90
===================================================================
--- DART/branches/rma_file_list_nml/assimilation_code/modules/assimilation/filter_mod.f90 2017-07-06 17:49:14 UTC (rev 11792)
+++ DART/branches/rma_file_list_nml/assimilation_code/modules/assimilation/filter_mod.f90 2017-07-06 21:41:01 UTC (rev 11793)
@@ -86,6 +86,8 @@
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
@@ -2383,24 +2385,15 @@
type(file_info_type), intent(out) :: file_info_analysis
type(file_info_type), intent(out) :: file_info_output
-integer :: noutput_members, next_file, nfiles, idom, i
+integer :: noutput_members, next_file, nfiles, idom, i, tfiles
logical :: has_multi_domains, multi_dom
character(len=64) :: fsource
character(len=256) :: file_array_input(MAXFILES), file_array_output(MAXFILES)
+character(len=256) :: file_input(MAXFILES), file_output(MAXFILES)
! local variable to shorten the name for function input
noutput_members = num_output_state_members
-! !>@todo FIXME temporary error message until we handle filename in the namelist
-! !> (for now, you need to use the indirect file which contains a list of files)
-! if (( input_state_files(1) /= 'null' .and. input_state_files(1) /= '') .or. &
-! (output_state_files(1) /= 'null' .and. output_state_files(1) /= '')) then
-! call error_handler(E_ERR,'initialize_file_information', &
-! 'input_state_files and output_state_files are currently unsupported.', &
-! source, revision, revdate, &
-! text2='please use input_state_file_list and output_state_file_list instead')
-! endif
-
file_array_input (:) = input_state_files(:)
file_array_output(:) = output_state_files(:)
@@ -2425,7 +2418,7 @@
text3='and a input_state_files_list containing a list of names')
endif
-if (input_state_file_list(2) /= '') then
+if (input_state_file_list(2) /= '' .and. get_num_domains() >= 2) then
fsource = 'file list has multiple domains'
multi_dom = .true.
else
@@ -2434,31 +2427,38 @@
endif
print*, 'Gsource :: ', fsource, MAX_NUM_DOMS
- write(*,'("`",A25,"` ",A25,"`"," ",A25,"`")'), 'file array input :: ', &
- trim(file_array_input(1)), &
- trim(file_array_input(2)), &
- trim(file_array_input(3)), &
- trim(file_array_input(4))
print*, 'input_state_file_list :: "', trim(input_state_file_list(1)), '"'
+print*, ''
+print*, 'file_array_input(1) :: "', trim(file_array_input(1)), '"'
+print*, 'file_array_input(2) :: "', trim(file_array_input(2)), '"'
+print*, 'file_array_input(3) :: "', trim(file_array_input(3)), '"'
+print*, 'file_array_input(4) :: "', trim(file_array_input(4)), '"'
nfiles = 0
-do i = 1, MAX_NUM_DOMS
+tfiles = 1
+do i = 1, get_num_domains()
if(input_state_file_list(i) == '' ) exit
- print*, 'domain = ', i
nfiles = set_filename_list(file_array_input(:), input_state_file_list(i), 'filter')
+ file_input(tfiles:tfiles+nfiles-1) = file_array_input(1:nfiles)
+
+ tfiles = tfiles + nfiles
+
+ print*, 'domain = ', i, ', nfiles = ', nfiles, ', tfiles = ', tfiles
+ print*, ''
+ print*, 'file_array_input(1) :: "', trim(file_array_input(1)), '"'
+ print*, 'file_array_input(2) :: "', trim(file_array_input(2)), '"'
+ print*, 'file_array_input(3) :: "', trim(file_array_input(3)), '"'
+ print*, 'file_array_input(4) :: "', trim(file_array_input(4)), '"'
+ print*, ''
+ print*, 'file_input(tfiles:tfiles+nfiles-1) :: "', file_input(tfiles:tfiles+nfiles-1), '"'
+
+ file_array_input(:) = input_state_files(:)
+
enddo
- write(*,'("`",A25,"` ",A25,"`"," ",A25,"`")'), 'file array input :: ', &
- trim(file_array_input(1)), &
- trim(file_array_input(2)), &
- trim(file_array_input(3)), &
- trim(file_array_input(4))
-print*, 'file_array_input(1) :: "', trim(file_array_input(1))
-print*, 'file_array_input(2) :: "', trim(file_array_input(2))
-print*, 'file_array_input(3) :: "', trim(file_array_input(3))
-print*, 'file_array_input(4) :: "', trim(file_array_input(4))
+ print*, 'file_input(:) :: "', file_input(1:tfiles), '"'
More information about the Dart-dev
mailing list