2.2. Building UPP Standalone

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., Ursa, 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.

2.2.1.1. Common Modules

As of August 8, 2025, the UPP uses the following common modules from spack-stack:

hdf5 1.14.3
netcdf-c 4.9.2
netcdf-fortran 4.6.1
jasper 2.0.32
libpng 1.6.37
zlib 1.2.13
g2 3.5.1
g2tmpl 1.13.0
bacio 2.4.1
ip 5.1.0
crtm 2.4.0.1
w3emc 2.10.0
nemsio 2.5.4
sigio 2.3.3
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. This directory will be referred to as ${TOP_DIR} throughout the documentation.

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 the default develop branch 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 activate -DCMAKE_BUILD_TYPE=Debug by adding the -d flag when running the compile_upp.sh script. This removes compiler optimization flags and adds the -g flag to the Fortran compilation. You can also use -DCMAKE_BUILD_TYPE=RELWITHDEBINFO, which adds the -g flag and uses the -O2 optimization for the Fortran compilation.

2.2.2.1. Post-processing CRTM Files (optional)

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

Hint

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.