[Dart-dev] DART/branches Revision: 10835
dart at ucar.edu
dart at ucar.edu
Fri Dec 23 11:48:02 MST 2016
hendric at ucar.edu
2016-12-23 11:48:02 -0700 (Fri, 23 Dec 2016)
108
adding the capability to read from a list of files rather than
a single file models with multiple domains.
Modified: DART/branches/rma_fixed_filenames/io/io_filenames_mod.f90
===================================================================
--- DART/branches/rma_fixed_filenames/io/io_filenames_mod.f90 2016-12-23 18:14:58 UTC (rev 10834)
+++ DART/branches/rma_fixed_filenames/io/io_filenames_mod.f90 2016-12-23 18:48:02 UTC (rev 10835)
@@ -296,8 +296,8 @@
offset = my_copy_start - 1
! Is it sufficient to check if the first file exists? JPH
-if (trim(file_info%restart_list(1)) == trim('null') .or. &
- trim(file_info%restart_list(1)) == '') then
+if (file_info%restart_list(1) == 'null' .or. &
+ file_info%restart_list(1) == '') then
if (file_info%root_name == 'null') then
write(msgstring,*) 'Unable to construct file names.', &
@@ -374,7 +374,7 @@
!-------------------------------------------------------
!> Write file name and description
-subroutine set_explicit_file_metadata(file_info, cnum, fname, desc)
+subroutine set_explicit_file_metadata(file_info, cnum, fnames, desc)
! EXAMPLE: to construct a file name of 'input_mean_d01.nc'
! cnum is ensemble copy number and is not used in the file name
@@ -384,7 +384,7 @@
type(file_info_type), intent(inout) :: file_info
integer, intent(in) :: cnum
-character(len=*), intent(in) :: fname
+character(len=*), intent(in) :: fnames(:)
character(len=*), intent(in) :: desc
character(len=256) :: string1
@@ -394,11 +394,25 @@
if (cnum <= 0) return
-! Assuming a single domain if setting a file explicitly
-file_info%stage_metadata%my_copy_number(cnum) = cnum
-file_info%stage_metadata%filenames(cnum,1) = trim(fname)
-file_info%stage_metadata%file_description(cnum,1) = trim(desc)
+if (get_num_domains() /= size(fnames(:),1)) then
+ write(msgstring,*) 'num domains ', get_num_domains(), &
+ ' /= size(fnames) : ', size(fnames(:),1)
+ call error_handler(E_ERR, 'set_explicit_file_metadata', msgstring, &
+ source, revision, revdate)
+endif
+! Array of files (multiple domains)
+file_info%stage_metadata%my_copy_number(cnum) = cnum
+do idom = 1, get_num_domains()
+ if (get_num_domains() > 1) then
+ write(string1,'(2A,I4)') trim(desc), 'for domain ', idom
+ else
+ write(string1,*) trim(desc)
+ endif
+ file_info%stage_metadata%filenames(cnum,idom) = trim(fnames(idom))
+ file_info%stage_metadata%file_description(cnum,idom) = trim(string1)
+enddo
+
file_info%stage_metadata%initialized = .true.
end subroutine set_explicit_file_metadata
@@ -446,8 +460,8 @@
file_info%stage_metadata%my_copy_number(my_copy) = my_copy
if (get_num_domains() > 1) then
- write(dom_str, '(A, i2.2)') '_d', idom
do idom = 1, get_num_domains()
+ write(dom_str, '(A, i2.2)') '_d', idom
write(string1,'(2A,''.nc'')') trim(stage_name)//'_'//trim(base_name), trim(dom_str)
file_info%stage_metadata%filenames(my_copy,idom) = trim(string1)
Modified: DART/branches/rma_fixed_filenames/perfect_model_obs/perfect_model_obs.f90
===================================================================
--- DART/branches/rma_fixed_filenames/perfect_model_obs/perfect_model_obs.f90 2016-12-23 18:14:58 UTC (rev 10834)
+++ DART/branches/rma_fixed_filenames/perfect_model_obs/perfect_model_obs.f90 2016-12-23 18:48:02 UTC (rev 10835)
@@ -103,11 +103,11 @@
integer :: output_interval = 1
integer :: print_every_nth_obs = 0
-character(len=256) :: restart_in_file_name = 'perfect_ics.nc', &
- restart_out_file_name = 'perfect_restart.nc', &
- obs_seq_in_file_name = 'obs_seq.in', &
- obs_seq_out_file_name = 'obs_seq.out', &
- adv_ens_command = './advance_model.csh'
+character(len=256) :: restart_in_file_names(10) = 'null', &
+ restart_out_file_names(10) = 'null', &
+ obs_seq_in_file_name = 'obs_seq.in', &
+ obs_seq_out_file_name = 'obs_seq.out', &
+ adv_ens_command = './advance_model.csh'
namelist /perfect_model_obs_nml/ start_from_restart, async, &
init_time_days, init_time_seconds, &
@@ -117,7 +117,8 @@
adv_ens_command, tasks_per_model_advance, &
obs_window_days, obs_window_seconds, silence, &
trace_execution, output_timestamps, &
- print_every_nth_obs, output_forward_op_errors
+ print_every_nth_obs, output_forward_op_errors, &
More information about the Dart-dev
mailing list