[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