Flexible interpolation and asynchronous output using YAC and PROJ

PISM uses YAC to implement projection-aware interpolation of inputs (which also requires PROJ[1] to compute longitude, latitude coordinates of cell centers and cell corners) and asynchronous writing of diagnostic outputs and model state snapshots.

YAC depends on YAXT. Please make sure you have Autoconf, Automake, and libfyaml installed, then use the following commands to install both YAXT and YAC:

Listing 1 Building YAXT and YAC
export CC=${CC:-mpicc}
export FC=${FC:-mpifort}
export CFLAGS="-O3 -g -march=native"

prefix=${prefix:-$HOME/local/yac}

yaxt_version=0.11.5.1
git clone -b release-${yaxt_version} \
    https://gitlab.dkrz.de/dkrz-sw/yaxt.git

cd yaxt

autoreconf -i

./configure --prefix=${prefix} FC=no \
            --with-pic

make all && make install

cd -

yac_version=3.14.0
git clone -b release-${yac_version} \
    https://gitlab.dkrz.de/dkrz-sw/yac.git

cd yac

test -f ./configure || ./autogen.sh

./configure --prefix=${prefix} \
            --with-yaxt-root=${prefix} \
            --disable-netcdf \
            --disable-examples \
            --disable-tools \
            --disable-deprecated \
            --disable-fortran-bindings \
            --enable-python-bindings \
            --with-pic

make all && make install

To build PISM with these libraries, set the CMake variable Pism_USE_YAC and include YAC’s installation prefix in CMAKE_PREFIX_PATH:

cmake -DPism_USE_YAC=YES \
      -DCMAKE_PREFIX_PATH="$HOME/local/yac;..." \
      ...

See section Interpolation of input data to learn how to use flexible interpolation in PISM.

Footnotes


Previous Up Next