2.2. Building UPP Stand-Alone

The UPP uses a CMake-based build system to integrate all the required components for building the UPP. Once built, the UPP can be run standalone (outside the UFS Applications) to post-process model output.

2.2.1. Software Requirements

The UPP is tested on a variety of research platforms, including NOAA HPC systems (e.g., Hera, Orion). These supported platforms are preconfigured for building and running the UPP and already have the required libraries available via spack-stack in a centralized location. The spack-stack is a Spack-based method for installing UFS prerequisite software libraries.

Users working on unsupported platforms will need to install spack-stack on their system and can do so following the instructions in the spack-stack User’s Guide.

Note

Users can install HPC-Stack instead of spack-spack by following the instructions in the HPC-Stack User’s Guide. However, support for HPC-Stack is being deprecated, and limited assistance is available for use of HPC-Stack with the UPP.

2.2.1.1. Common Modules

As of February 1, 2024, the UPP uses the following common modules from spack-stack:

cmake 3.16.1+
hdf5/1.14.0
netcdf-c 4.9.2
netcdf-fortran 4.6.1
jasper 2.0.32
libpng 1.6.37 / png 1.6.35
zlib 1.2.13
g2 3.4.5
g2tmpl 1.10.2
parallelio 2.5.10
bacio 2.4.1
ip 4.3.0
sp 2.5.0
crtm 2.4.0.1
w3emc 2.10.0
nemsio 2.5.4
sigio 2.3.2
sfcio 1.4.1
wrf_io 1.2.0

Individual machines may subsequently load slightly different versions. The most updated list of modules for a given machine can be viewed in each machine’s modulefile. Users on non-Tier-1 systems should look at the modulefile for the system whose architecture most closely resembles their own system’s architecture to determine which modules they may need.

2.2.2. Obtaining and Installing UPP

Building and running UPP v11.0.0 has been tested and is supported on the following pre-configured platforms.

System

Compiler and Version

NOAA Hera

Intel 18.0.5.274

NOAA Orion

Intel 2018.4

To install the UPP, navigate to the directory where you want to install UPP and clone the repository.

git clone -b branch-or-tag-name https://github.com/NOAA-EMC/UPP

where, branch-or-tag-name is the release branch or tag you wish to clone (e.g., upp_v11.0.0). (Leaving off the -b argument will clone all branches of the repository.)

Move to the directory with the build script and build the UPP.

cd UPP/tests

./compile_upp.sh

Note

To build in debug mode, you can add -DCMAKE_BUILD_TYPE=Debug to the cmake_opts parameter in the compile_upp.sh script. This removes compiler optimization flags and adds -g to the Fortran compilation. You can also use -DCMAKE_BUILD_TYPE=RELWITHDEBINFO, which gives the -g, but keeps the -O2 optimization for the Fortran compilation.

Move back to the top-level UPP directory and create a directory where the CRTM fix files will be unpacked. Download the fix files from the GitHub release page or use the wget command. Unpack the tar file.

cd ../
mkdir crtm && cd crtm
wget https://github.com/NOAA-EMC/UPP/releases/download/upp_v11.0.0/fix.tar.gz
tar -xzf fix.tar.gz

Note

To make a clean build, simply remove both the tests/build and tests/install directories and the exec/upp.x executable and then rerun the compile_upp.sh script. This is recommended if a mistake is made during the installation process.