[Dart-dev] DART/branches Revision: 12785

dart at ucar.edu dart at ucar.edu
Fri Aug 24 11:30:26 MDT 2018


hendric at ucar.edu
2018-08-24 11:30:26 -0600 (Fri, 24 Aug 2018)
266

adding a simple test that divides an array into
groups of processors and then creates a window
for accessing the information.  this only works
for arrays that are perfectly divisible by two,
which should be okay for testing purposes. 
currently compiles and runs.




Added: DART/branches/rma_distrib/developer_tests/mpi_groups/simple_test.f90
===================================================================
--- DART/branches/rma_distrib/developer_tests/mpi_groups/simple_test.f90	                        (rev 0)
+++ DART/branches/rma_distrib/developer_tests/mpi_groups/simple_test.f90	2018-08-24 17:30:26 UTC (rev 12785)
@@ -0,0 +1,338 @@
+! DART software - Copyright UCAR. This open source software is provided
+! by UCAR, "as is", without charge, subject to all terms of use at
+! http://www.image.ucar.edu/DAReS/DART/DART_download
+!
+! $Id$
+
+program simple_test
+
+use             types_mod, only : r8, i8, missing_r8, metadatalength
+
+use         utilities_mod, only : register_module, error_handler, E_MSG, E_ERR, &
+                                  initialize_utilities, finalize_utilities,     &
+                                  find_namelist_in_file, check_namelist_read,   &
+                                  nc_check, E_MSG, open_file, close_file, do_output
+
+use     mpi_utilities_mod, only : initialize_mpi_utilities, finalize_mpi_utilities, &
+                                  task_count, my_task_id, task_sync, set_group_size,&
+                                  get_group_size, set_group_size,    &
+                                  group_task_id, get_dart_mpi_comm, get_group_comm, &
+                                  get_group_id, datasize
+
+use      time_manager_mod, only : time_type, set_time, print_date, operator(-), &
+                                  NO_CALENDAR
+
+use  ensemble_manager_mod, only : init_ensemble_manager, ensemble_type, print_ens_handle
+
+use   state_vector_io_mod, only : state_vector_io_init, read_state, write_state
+
+use   state_structure_mod, only : get_num_domains, get_model_variable_indices, &
+                                  state_structure_info, add_domain
+
+use      io_filenames_mod, only : io_filenames_init, file_info_type,       &
+                                  stage_metadata_type, get_stage_metadata, &
+                                  get_restart_filename, set_file_metadata, &
+                                  set_io_copy_flag, READ_COPY, WRITE_COPY
+
+use distributed_state_mod, only : create_state_window, free_state_window, &
+                                  create_mean_window, free_mean_window,   &
+                                  get_state
+
+use             model_mod, only : static_init_model
+
+use netcdf
+
+use mpi
+
+implicit none
+
+! version controlled file description for error handling, do not edit
+character(len=256), parameter :: source   = &
+   "$URL$"
+character(len=32 ), parameter :: revision = "$Revision$"
+character(len=128), parameter :: revdate  = "$Date$"
+
+integer, parameter :: MAX_TESTS = 7
+
+! this is max number of domains times number of ensemble members
+! if you have more than one domain and your ensemble members are
+! in separate files, the names should be listed in this order:
+!  all filenames for ensemble members for domain 1
+!  all filenames for ensemble members for domain 2, etc
+
+integer, parameter :: MAX_FILES = 1000
+
+!------------------------------------------------------------------
+! The namelist variables
+!------------------------------------------------------------------
+
+logical                       :: single_file = .false.
+integer                       :: num_ens = 1
+integer                       :: dtype = 1
+integer                       :: ltype = 1
+integer                       :: ttype = 1
+character(len=256)            :: input_state_files(MAX_FILES)  = 'null'
+character(len=256)            :: output_state_files(MAX_FILES) = 'null'
+
+
+namelist /simple_test_nml/ num_ens, single_file, input_state_files, output_state_files, &
+                               dtype, ltype, ttype
+
+! io variables
+integer                   :: iunit, io
+type(file_info_type)      :: file_info_input, file_info_output
+type(stage_metadata_type) :: input_restart_files, output_restart_files
+logical :: read_time_from_file = .true.
+
+! model state variables
+type(ensemble_type)   :: ens_handle
+type(ensemble_type)   :: mean_handle
+
+type(time_type)       :: model_time
+integer(i8)           :: model_size, my_index
+
+! misc. variables
+integer :: i, idom, imem, domid, num_domains
+


More information about the Dart-dev mailing list