[Dart-dev] DART/branches Revision: 12606

dart at ucar.edu dart at ucar.edu
Tue May 29 11:23:50 MDT 2018


hendric at ucar.edu
2018-05-29 11:23:50 -0600 (Tue, 29 May 2018)
139

refactoring writing and printing results to only be
called by the root processor.  removing unused
variables, and general code clean up.




Modified: DART/branches/rma_closest_member_tool/assimilation_code/programs/closest_member_tool/closest_member_tool.f90
===================================================================
--- DART/branches/rma_closest_member_tool/assimilation_code/programs/closest_member_tool/closest_member_tool.f90	2018-05-29 17:07:59 UTC (rev 12605)
+++ DART/branches/rma_closest_member_tool/assimilation_code/programs/closest_member_tool/closest_member_tool.f90	2018-05-29 17:23:50 UTC (rev 12606)
@@ -91,7 +91,6 @@
 logical                        :: single_restart_file_in = .false.
 character(len = obstypelength) :: use_only_qtys(max_list_len) = ''
 character(len=256)             :: input_restart_file_list(MAX_NUM_DOMS) = 'null'
-character(len=256)             :: mean_restart_file_list(MAX_NUM_DOMS)  = 'null'
 character(len=256)             :: output_file_name
 
 !----------------------------------------------------------------
@@ -106,7 +105,6 @@
 
 namelist /closest_member_tool_nml/  &
    input_restart_file_list,      &
-   mean_restart_file_list,       &
    output_file_name,             &
    ens_size,                     &
    single_restart_file_in,       &
@@ -123,6 +121,7 @@
 integer                         :: num_domains, idom, imem
 integer                         :: ENS_MEAN_COPY 
 integer                         :: copies, my_num_vars
+real(r8), allocatable           :: total_diff(:)
 
 !----------------------------------------------------------------
 ! program start
@@ -153,7 +152,7 @@
 call error_handler(E_MSG,'',msgstring)
 
 ! make space that is ensemble size and an extra copy for the mean
-call init_ensemble_manager(ens_handle,      ens_size+1, model_size)
+call init_ensemble_manager(ens_handle, ens_size+1, model_size)
 
 num_domains = get_num_domains()
 
@@ -175,8 +174,12 @@
    print*, input_restart_file_list, 'input_restart_file_list'
    print*, file_array_input,        'file_array_input'
 endif
+
 ! read in the ensemble and the mean - always in a separate file
-call io_filenames_init(ens_file_info, ens_size, .false., .false., restart_files=file_array_input)
+call io_filenames_init(ens_file_info, ens_size, &
+                       cycling=single_restart_file_in, &
+                       single_file=single_restart_file_in, &
+                       restart_files=file_array_input)
 
 do imem = 1, ens_size
    write(my_base,'(A,I0.2)') 'inens_',                 imem
@@ -303,25 +306,39 @@
 
 !------------------- Print out results     -----------------------
 
-!------------------- Write results to file -----------------------
+if (my_task_id() == 0) then
+   call index_sort(total_diff, index_list, ens_size)
+   call error_handler(E_MSG, '', ' ')
+   write(msgstring, "(A,I5)") 'Member with the minimum difference from the mean is ', index_list(1)
+   call error_handler(E_MSG, '', msgstring)
+   call error_handler(E_MSG, '', ' ')
 
-! if the input is a single file, write the ensemble member number to a file.
-! if the input is separate files, write the full filename to a file.
+   do ens=1, ens_size
+      write(msgstring, "(A,I5,A,G18.6)") "Member ", index_list(ens), " difference ", total_diff(index_list(ens))
+      call error_handler(E_MSG, '', msgstring)
+   enddo
 
-iunit = open_file(output_file_name, 'formatted', 'write')
+   !------------------- Write results to file -----------------------
+   
+   ! if the input is a single file, write the ensemble member number to a file.
+   ! if the input is separate files, write the full filename to a file.
+   
+   iunit = open_file(output_file_name, 'formatted', 'write')
+   
+   if (single_restart_file_in) then
+      write(iunit, "(I4)") index_list(1)
+   else
+      write(iunit, "(A,A,I4.4)") trim(input_restart_file_list(1)), '.', index_list(1)
+   endif
+   
+   call close_file(iunit)
+     
+   call error_handler(E_MSG, '', ' ')
+   write(msgstring, *) 'Writing closest member information to file: ', trim(output_file_name)
+   call error_handler(E_MSG, '', msgstring)
 
-if (single_restart_file_in) then
-   write(iunit, "(I4)") index_list(1)
-else
-   write(iunit, "(A,A,I4.4)") trim(input_restart_file_list(1)), '.', index_list(1)
 endif
 
-call close_file(iunit)
-  
-call error_handler(E_MSG, '', ' ')
-write(msgstring, *) 'Writing closest member information to file: ', trim(output_file_name)
-call error_handler(E_MSG, '', msgstring)


More information about the Dart-dev mailing list