[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