mpp_domains_mod is a set of simple calls for domain decomposition and domain updates on rectilinear grids. It requires the module mpp_mod, upon which it is built.
type, public :: domain_axis_spec
private
integer :: begin, end, size, max_size
logical :: is_global
end type domain_axis_spec
type, public :: domain1D
private
type(domain_axis_spec) :: compute, data, global, active
logical :: mustputb, mustgetb, mustputf, mustgetf, folded
type(domain1D), pointer, dimension(:) :: list
integer :: pe !PE to which this domain is assigned
integer :: pos
end type domain1D
domaintypes of higher rank can be constructed from type domain1D
typically we only need 1 and 2D, but could need higher (e.g 3D LES)
some elements are repeated below if they are needed once per domain
type, public :: domain2D
private
type(domain1D) :: x
type(domain1D) :: y
type(domain2D), pointer, dimension(:) :: list
integer :: pe !PE to which this domain is assigned
integer :: pos
end type domain2D
type(domain1D), public :: NULL_DOMAIN1D
type(domain2D), public :: NULL_DOMAIN2D The domain2D type contains all the necessary information to
define the global, compute and data domains of each task, as well as the PE
associated with the task. The PEs from which remote data may be
acquired to update the data domain are also contained in a linked list
of neighbours. mpp_parameter_mod
mpp_datatype_mod
mpp_data_mod
mpp_domains_util_mod
mpp_domains_reduce_mod
mpp_domains_misc_mod
mpp_domains_define_mod
use mpp_domains_modmpp_domains_mod uses mpp_mod, and therefore is subject to the compiling and linking requirements of that module.
The source consists of the main source file and also requires the following include files: GFDL users can check it out of the main CVS repository as part of the CVS module. The current public tag is . External users can download the latest package . Public access to the GFDL CVS repository will soon be made available.