[Dart-dev] DART/branches Revision: 11834

dart at ucar.edu dart at ucar.edu
Wed Jul 19 10:55:32 MDT 2017


hendric at ucar.edu
2017-07-19 10:55:29 -0600 (Wed, 19 Jul 2017)
55

some minor changes to variable names and 'if' logic.




Modified: DART/branches/rma_array_nml/assimilation_code/modules/assimilation/filter_mod.dopplerfold.f90
===================================================================
--- DART/branches/rma_array_nml/assimilation_code/modules/assimilation/filter_mod.dopplerfold.f90	2017-07-18 21:39:24 UTC (rev 11833)
+++ DART/branches/rma_array_nml/assimilation_code/modules/assimilation/filter_mod.dopplerfold.f90	2017-07-19 16:55:29 UTC (rev 11834)
@@ -2408,7 +2408,7 @@
 type(file_info_type), intent(out) :: file_info_analysis
 type(file_info_type), intent(out) :: file_info_output
 
-integer :: noutput_members, next_file, nfiles, ninput_files, ndomains, idom, i
+integer :: noutput_members, next_file, ninput_files, noutput_files, ndomains, idom
 character(len=64)  :: fsource
 character(len=256), allocatable :: file_array_input(:,:), file_array_output(:,:)
 
@@ -2415,55 +2415,35 @@
 ! local variable to shorten the name for function input
 noutput_members = num_output_state_members 
 ndomains        = get_num_domains()
+noutput_files   = ens_size ! number of incomming ensemble members
 ninput_files    = ens_size ! number of incomming ensemble members
 
-if (perturb_from_single_instance) ninput_files = 1
+! Assign the correct number of input and output files.
+if (single_file_in .or. perturb_from_single_instance)  ninput_files = 1
+if (single_file_out)                                  noutput_files = 1
 
-if (input_state_files(1) == '' .and. input_state_file_list(1) == '') then
-   call error_handler(E_ERR, 'initialize_file_information', source,revision,revdate,&
-              text2='must specify either input_state_files in the namelist,)', &
-              text3='or a input_state_file_list file containing a list of names')
-      
-endif
-   
-! make sure the namelist specifies one or the other but not both
-if (input_state_files(1) /= '' .and. input_state_file_list(1) /= '') then
-   call error_handler(E_ERR, 'initialize_file_information', source,revision,revdate,&
-             text2='cannot specify both input_state_files in the namelist ', &
-             text3='and a input_state_files_list containing a list of names')
-endif
-
-! Check the dimensions input_state_file_list and output_state_file_list
-call check_file_list_dimensions( input_state_file_list,  'input_state_file_list')
-call check_file_list_dimensions(output_state_file_list, 'output_state_file_list')
-
+! 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_state_file_list(:), &
                                  ndomains, &
                                  ninput_files,     &
-                                 'filter')
+                                 'filter','input_state_files','input_state_file_list')
 call set_multiple_filename_lists(output_state_files(:), &
                                  output_state_file_list(:), &
                                  ndomains, &
-                                 ens_size, &
-                                 'filter')
+                                 noutput_files, &
+                                 'filter','output_state_files','output_state_file_list')
 
 ! Allocate space for file arrays.  contains a matrix of files (num_ens 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)
-allocate(file_array_input(ninput_files, ndomains), file_array_output(ens_size, ndomains))
+allocate(file_array_input(ninput_files, ndomains), file_array_output(noutput_files, ndomains))
 
-if (perturb_from_single_instance .and. ndomains > 1) then
-   do idom = 1, ndomains
-      file_array_input(1,idom) = input_state_files(idom)
-   enddo
-else
    file_array_input  = RESHAPE(input_state_files,  (/ninput_files, ndomains/))
-endif
+file_array_output = RESHAPE(output_state_files, (/noutput_files, ndomains/))
 
-file_array_output = RESHAPE(output_state_files, (/ens_size, ndomains/))
 
-
 ! Allocate space for the filename handles
 call io_filenames_init(file_info_input,                       & 
                        ncopies       = ncopies,               &
@@ -2505,7 +2485,6 @@
 if (get_stage_to_write('analysis')) &
    call set_filename_info(file_info_analysis, 'analysis',  noutput_members,  ANALYSIS_COPIES )
 
-! we are expecting a list of output restart files so ens_size = 0.
 call set_filename_info(file_info_output,   'output',    ens_size,                 CURRENT_COPIES )
 
 ! Set file IO information
@@ -2553,31 +2532,6 @@
 
 
 !-----------------------------------------------------------
-!> Check the dimensions state_file_list
-
-subroutine check_file_list_dimensions(state_file_list, desc)
-character(len=*) state_file_list(:)
-character(len=*) desc
-
-integer :: nlines
-
-call find_textfile_dims(state_file_list(1), nlines)


More information about the Dart-dev mailing list