[Dart-dev] DART/branches Revision: 11811

dart at ucar.edu dart at ucar.edu
Thu Jul 13 11:05:11 MDT 2017


hendric at ucar.edu
2017-07-13 11:05:11 -0600 (Thu, 13 Jul 2017)
65

error checking for the stages and the number of restart files.




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-12 21:09:32 UTC (rev 11810)
+++ DART/branches/rma_file_list_nml/assimilation_code/modules/assimilation/filter_mod.f90	2017-07-13 17:05:11 UTC (rev 11811)
@@ -77,8 +77,8 @@
 
 use io_filenames_mod,      only : io_filenames_init, file_info_type, &
                                   combine_file_info, set_file_metadata,  &
-                                  set_member_file_metadata, &
-                                  set_io_copy_flag, check_file_info_variable_shape, &
+                                  set_member_file_metadata,  set_io_copy_flag, &
+                                  check_file_info_variable_shape, check_num_restarts, &
                                   query_copy_present, COPY_NOT_PRESENT, &
                                   READ_COPY, WRITE_COPY, READ_WRITE_COPY, &
                                   file_info_dump
@@ -514,6 +514,8 @@
                                  file_info_output)
 
 call check_file_info_variable_shape(file_info_output, state_ens_handle)
+call check_num_restarts(file_info_input,  state_ens_handle, ens_size) 
+call check_num_restarts(file_info_output, state_ens_handle, ens_size) 
 
 call set_inflation_mean_copy( prior_inflate, PRIOR_INF_COPY )
 call set_inflation_sd_copy(   prior_inflate, PRIOR_INF_SD_COPY )
@@ -2338,10 +2340,45 @@
    my_stage = stages(i)
    call to_upper(my_stage)
    if (trim(my_stage) /= trim('NULL')) then
-      call set_stage_to_write(stages(i),.true.)
-      write(msgstring,*)"filter will write stage : "//trim(stages(i))
-      call error_handler(E_MSG,'parse_stages_to_write:', &
+   SELECT CASE (my_stage)
+      CASE ('INPUT')
+         call set_stage_to_write(stages(i),.true.)
+         write(msgstring,*)"filter will write stage : "//trim(stages(i))
+         call error_handler(E_MSG,'parse_stages_to_write:', &
                          msgstring,source,revision,revdate)
+      CASE ('FORECAST')
+         call set_stage_to_write(stages(i),.true.)
+         write(msgstring,*)"filter will write stage : "//trim(stages(i))
+         call error_handler(E_MSG,'parse_stages_to_write:', &
+                         msgstring,source,revision,revdate)
+      CASE ('PREASSIM')
+         call set_stage_to_write(stages(i),.true.)
+         write(msgstring,*)"filter will write stage : "//trim(stages(i))
+         call error_handler(E_MSG,'parse_stages_to_write:', &
+                         msgstring,source,revision,revdate)
+      CASE ('POSTASSIM')
+         call set_stage_to_write(stages(i),.true.)
+         write(msgstring,*)"filter will write stage : "//trim(stages(i))
+         call error_handler(E_MSG,'parse_stages_to_write:', &
+                         msgstring,source,revision,revdate)
+      CASE ('ANALYSIS')
+         call set_stage_to_write(stages(i),.true.)
+         write(msgstring,*)"filter will write stage : "//trim(stages(i))
+         call error_handler(E_MSG,'parse_stages_to_write:', &
+                         msgstring,source,revision,revdate)
+      CASE ('OUTPUT')
+         call set_stage_to_write(stages(i),.true.)
+         write(msgstring,*)"filter will write stage : "//trim(stages(i))
+         call error_handler(E_MSG,'parse_stages_to_write:', &
+                         msgstring,source,revision,revdate)
+      CASE DEFAULT
+         write(msgstring,*)"unknown stage : "//trim(stages(i))
+         call error_handler(E_ERR,'parse_stages_to_write:', &
+                            msgstring,source,revision,revdate, &
+                           text2="currently supported stages include :",&
+                           text3="input, forecast, preassim, postassim, analysis, output")
+   END SELECT
+
    endif
 enddo
 
@@ -2419,18 +2456,9 @@
 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( input_state_file_list,  'input_state_file_list')
 call check_file_list_dimensions(output_state_file_list, 'output_state_file_list')
 
-!#! print*, 'fsource :: ', fsource, MAX_NUM_DOMS
-!#! 
-!#! 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)), '"'
-
 ! set input files
 nfiles = 0 ! number of files from a text state_file_list
 tfiles = 1 ! cummulative sum of files (with multiple domains)
@@ -2439,7 +2467,6 @@
 
    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
 
    ! clear file_array_input array, so that we can fill the next set of input files


More information about the Dart-dev mailing list