MCT
The Model Coupling Toolkit
http://www.mcs.anl.gov/research/projects/mct/
MCT is a set of open-source software tools for creating coupled models. MCT is fully parallel and can be used to couple message-passing parallel models to create a parallel coupled model. MCT is available as a small library and a set of Fortran90 modules.
MCT provides model interoperability through a simple API. Two models that declare and use MCT datatypes can be coupled with a minimum of effort.
MCT provides the following core coupling services:
- a component model registry
- domain decomposition descriptors
- communications schedulers for parallel MxN intercomponent data transfer and MxM intracomponent data redistribution
- a flexible and indexible (i.e., random-access) field data storage datatype
- a time averaging and accumulation buffer datatype
- a general spatial grid representation capable of supporting unstructured grids
- parallel tools for intergrid interpolation implemented as matrix-vector multiplication spatial integration and averaging tools (including paired integrals to support conservative interpolation)
- tools for merging data from multiple components for use by another component.
- a programming model similar to that of the Message Passing Interface.
MCT can be used in single or multiple executable systems and allows sequential or concurrent execution.
Supported platforms include IBM, SGI, Compaq, NEC, Cray X1 and Linux (with Absoft, Lahey, NAG, PGI, PathScale, or Intel compilers and MPICH, VMI and/or ChaMPIon/Pro MPI libraries) .
Usage
module load mct/2.6.0-gnu
module load mct/2.6.0-intel
module load mct/2.6.0-intel-serial
Installation
Intel version
mkdir /sw/mct/2.6.0-intel cd /sw/mct/2.6.0-intel/source/MCT module load intel-cmkl-11 module load python/2.7.1 module load intel-cc-11/11.1.072 module load intel-mpi/4.0.1.007 module load intel-tools-11/11.1.072 Trying using intel mpi: ./configure --prefix=/sw/mct/2.6.0-intel FC=mpiifort CC=mpicc --enable-babel 2>&1 |tee configure.out make 2>&1 |tee make.out make install 2>&1 |tee makeInstall.out We could do this as well if mpi is not needed: make clean all ./configure --prefix=/sw/mct/2.6.0-intel-serial FC=ifort CC=icc --enable-babel 2>&1 |tee configure-ser.out make 2>&1 |tee make-ser.out make install 2>&1 |tee makeInstall-ser.out
gnu version
module load python/2.7.1 module load mpi/openMPI/1.4.3-gnu mkdir /sw/mct/2.6.0-gnu cd /sw/mct/2.6.0-gnu/source/MCT ./configure --prefix=/sw/mct/2.6.0-gnu FC=mpif90 CC=mpicc --enable-babel 2>&1 |tee configure.out make 2>&1 |tee make.out make install 2>&1 |tee makeInstall.out