[Dart-dev] DART/branches Revision: 12436

dart at ucar.edu dart at ucar.edu
Wed Mar 7 16:29:47 MST 2018


hendric at ucar.edu
2018-03-07 16:29:47 -0700 (Wed, 07 Mar 2018)
113
adding a simple test for having multiple windows open and a
separate communicator for the mean ensemble member.




Added: DART/branches/rma_distrib/developer_tests/mpi_groups/model_mod.f90
===================================================================
--- DART/branches/rma_distrib/developer_tests/mpi_groups/model_mod.f90	                        (rev 0)
+++ DART/branches/rma_distrib/developer_tests/mpi_groups/model_mod.f90	2018-03-07 23:29:47 UTC (rev 12436)
@@ -0,0 +1,328 @@
+! 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$
+
+module model_mod
+
+! This is a template showing the interfaces required for a model to be compliant
+! with the DART data assimilation infrastructure. The public interfaces listed
+! must all be supported with the argument lists as indicated. Many of the interfaces
+! are not required for minimal implementation (see the discussion of each
+! interface and look for NULL INTERFACE). 
+
+! Modules that are absolutely required for use are listed
+use        types_mod, only : r8, i8, MISSING_R8
+use time_manager_mod, only : time_type, set_time, set_time_missing
+use     location_mod, only : location_type, get_close_type, &
+                             get_close_obs, get_close_state, &
+                             convert_vertical_obs, convert_vertical_state, &
+                             set_location, set_location_missing
+use    utilities_mod, only : register_module, error_handler, &
+                             E_ERR, E_MSG
+                             ! nmlfileunit, do_output, do_nml_file, do_nml_term,  &
+                             ! find_namelist_in_file, check_namelist_read
+use netcdf_utilities_mod, only : nc_add_global_attribute, nc_sync, &
+                                 nc_add_global_creation_time, nc_redef, nc_enddef
+use state_structure_mod, only : add_domain
+use ensemble_manager_mod, only : ensemble_type
+use dart_time_io_mod, only  : read_model_time, write_model_time
+use default_model_mod, only : pert_model_copies, nc_write_model_vars
+
+implicit none
+private
+
+! required by DART code - will be called from filter and other
+! DART executables.  interfaces to these routines are fixed and
+! cannot be changed in any way.
+public :: get_model_size,         &
+          adv_1step,              &
+          get_state_meta_data,    &
+          model_interpolate,      &
+          shortest_time_between_assimilations, &
+          end_model,              &
+          static_init_model,      &
+          nc_write_model_atts,    &
+          init_time,              &
+          init_conditions
+
+! public but in another module
+public :: nc_write_model_vars,    &
+          pert_model_copies,      &
+          get_close_obs,          &
+          get_close_state,        &
+          convert_vertical_obs,   &
+          convert_vertical_state, &
+          read_model_time, &
+          write_model_time
+
+
+! 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$"
+
+! EXAMPLE: define model parameters here
+integer, parameter               :: model_size = 3
+type(time_type)                  :: time_step
+type(location_type), allocatable :: state_loc(:)
+
+! EXAMPLE: perhaps a namelist here 
+integer  :: time_step_days      = 0
+integer  :: time_step_seconds   = 3600
+namelist /model_nml/ time_step_days, time_step_seconds
+
+contains
+
+!------------------------------------------------------------------
+!
+! Called to do one time initialization of the model. As examples,
+! might define information about the model size or model timestep.
+! In models that require pre-computed static data, for instance
+! spherical harmonic weights, these would also be computed here.
+! Can be a NULL INTERFACE for the simplest models.
+
+subroutine static_init_model()
+
+ real(r8) :: x_loc
+ integer  :: i, dom_id
+!integer  :: iunit, io
+
+! Print module information to log file and stdout.
+call register_module(source, revision, revdate)
+
+! This is where you would read a namelist, for example.


More information about the Dart-dev mailing list