As part of the efforts in the CMDV project, interfaces to integrate the MOAB unstructured mesh library with the TempestRemap remapping tool have been undertaken. This work has led to the development of a new offline remapping tool called mbtempest
, which exposes the functionality to compute the supermesh or intersection mesh between two unstructured source and target component grids, in addition to using this supermesh for computing the remapping weights to project solutions between the grids. This functionality is part of the critical worflow with E3SM, where the generated remapping weights in the offline step are consumed by MCT at runtime to seamlessly transfer solution data between components (atm↔ocn, atm↔lnd, etc).
Getting started
In order to build the MOAB-TempestRemap stack with parallel MPI launch support, we suggest the following list of commands. First define an installation prefix directory where the stack of library, includes and tools will be installed. Let us call this as the $INSTALL_PREFIX
environment variable.
Dependencies
Before getting started, for your architecture of choice, whether that is your laptop or a LCF machine, create a list of following compatible environment variables that can be used to build the stack.
- MPI-enabled C, C++, and Fortran compiler wrappers that are exported in the local environment as
$CC
,$CXX
, and$FC
. - Next, verify installations of dependent libraries such as
$HDF5_DIR
and$NETCDF_DIR
that have been compiled with MPI support using the$CC, $CXX, $FC
compilers. - Get Eigen3 package from the webpage and untar to the
$INSTALL_PREFIX/eigen3
directory with the following command
a. Download: wget https://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz OR curl https://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz -O
b. Move:mv eigen-eigen* $INSTALL_PREFIX/eigen3
Build
To get the entire stack working correctly, we need to find parallel-enabled dependency installations for HDF5 and NetCDF that are built with MPI library support for the current architecture
- TempestRemap
a. Clone repository: `git clone https://github.com/ClimateGlobalChange/tempestremap.git tempestremap`
b. Create build dir:cd tempestremap && mkdir build
c. Generate configure script:autoreconf -fi
d. Go to build dir:cd build
e. Configure:../configure --prefix=$INSTALL_PREFIX/tempestremap --with-netcdf=$NETCDF_DIR --with-hdf5=$HDF5_DIR CC=$CC CXX=$CXX CXXFLAGS="-g -O2"
f. Build and install:make all && make install
At the end of this series of steps, the TempestRemap libraries and tools (GenerateCSMesh, GenerateICOMesh, GenerateOverlapMesh, GenerateOfflineMap among others) will be installed in$INSTALL_PREFIX/tempestremap
directory. - MOAB
a. Clone repository: git clone https://bitbucket.org/fathomteam/moab.git moab
b. Create build dir: cd moab && mkdir build
c. Generate configure script: autoreconf -fi
d. Go to build dir:cd build
e. Configure:../configure --prefix=$INSTALL_PREFIX/moab --with-mpi --with-tempestremap=$INSTALL_PREFIX/tempestremap --with-netcdf=$NETCDF_DIR --with-hdf5=$HDF5_DIR CC=$CC FC=$FC F77=$FC CXX=$CXX CXXFLAGS="-g -O2" --with-eigen3=$INSTALL_PREFIX/eigen3
f. Build and install:make all && make install
If steps a-f pass fully, the MOAB libraries and tools, along with interfaces for TempestRemap will be installed in$INSTALL_PREFIX/moab
directory. The offline remapping weight computation tool,mbtempest
, will also be installed during this process and can then be used standalone to generate the weight files as needed.
What is mbtempest ?
The mbtempest
tool