[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