2. Technical Overview

The Unified Post Processor (UPP) is used to post-process model forecasts. It can compute a variety of diagnostic fields and interpolate output from the model’s native grids to National Weather Service (NWS) standard levels (e.g., pressure, height) and standard output grids (e.g., AWIPS, Lambert Conformal, polar-stereographic) in NWS and World Meteorological Organization (WMO) GRIB2 format. There is also an option to output fields on the model’s native vertical levels. Output from the UPP can be used directly by visualization, plotting, or verification packages or used in further downstream post-processing (e.g., statistical post-processing techniques).

HIGHLIGHTS

The UPP reads and processes GFS and LAM (Limited Area Model) data from the FV3 dynamical core and generates output in GRIB2 format. It uses MPI parallel code and produces hundreds of products like those used operationally on the same operational grids. Examples of UPP products include:

  • T, Z, humidity, wind, cloud water, cloud ice, rain, and snow on pressure levels

  • SLP, shelter level T, humidity, and wind fields

  • Precipitation-related fields

  • PBL-related fields

  • Severe weather products (e.g. CAPE, Vorticity, Wind shear)

  • Radiative/Surface fluxes

  • Cloud related fields

  • Aviation products

  • Radar reflectivity products

  • Satellite look-alike products

A full list of fields that can be generated by the UPP is provided in GRIB2 Fields Produced by UPP.

As of v11.0.0, the UPP has 2D decomposition capabilities and is also backwards compatible for 1D decomposition. The functionality demonstrates run-time improvements, especially for larger domains. Support for this feature is available for standalone UPP applications.

Support for the community UPP is provided through GitHub Discussions.

SYNTHETIC SATELLITE PRODUCTS

The UPP also incorporates the Joint Center for Satellite Data Assimilation (JCSDA) Community Radiative Transfer Model (CRTM) to compute model-derived brightness temperature (TB) for various instruments and channels. This additional feature enables the generation of simulated satellite products such as:

  • Geostationary Operational Environmental Satellite (GOES)

  • Advanced Microwave Scanning Radiometer (AMSRE)

  • Special Sensor Microwave Imager/Sounder (SSMIS)

For CRTM documentation, refer to the CRTM User Guide.

2.1. System Architecture Overview

The basic components of the offline UPP are shown in the schematic below.

The model output files are used as input to the UPP executable. The UPP executable uses the parameter files to determine the list of output fields. The executable generates post-processed output files in grib2 format, which can be used in downstream applications for regridding, visualization, verification, etc.

The upp.x component performs the bulk of the post-processing. Its functions include:

  • Vertical interpolation from model levels/surfaces to isobaric, height, and other levels/surfaces

  • Computing diagnostics from model data such as CAPE, relative humidity, radar reflectivities, etc.

2.2. UPP Directory Structure

The main UPP repository is named UPP; it is available on GitHub at https://github.com/NOAA-EMC/UPP. Under the main UPP directory reside the following relevant subdirectories (the * indicates a directory that exists only after the build is complete):

exec*: Contains the upp.x executable after successful compilation
modulefiles: Contains modulefiles for specific platforms and compilers for building on pre-configured machines.
parm: Contains parameter files, which can be modified by the user to control how the post processing is performed.
scripts: Contains a sample run script to process fv3 history files.
- run_upp: Script that runs the stand-alone UPP package (upp.x)
sorc: Contains source code for:
- ncep_post.fd: Source code for the UPP
tests: Contains the scripts used to install UPP
- compile_upp.sh: UPP build script
- build*: Contains the UPP build
- install*: Contains the installed executable (bin/upp.x), modules, and libraries

When the develop branch of the UPP repository is cloned, the basic directory structure follows the example below. Some files and directories have been removed for brevity.

UPP
 ├── ci                          -------- Automated testing files
 ├── cmake                       -------- CMake build files
 ├── docs                        -------- User's Guide files
 │   └── Doxyfile.in             -------- Doxygen configuration file
 ├── exec*
 ├── fix
 ├── jobs                        -------- Scripts that set up the environment and call ex-scripts from the scripts directory
 ├── modulefiles
 ├── parm
 │    ├── post_avblflds.xml      -------- List of all fields available in UPP
 │    ├── postcntrl*.xml         -------- User-editable control files that list the variables to be output
 │    └── postxconfig-NT-*.txt   -------- Text file of requested output that UPP reads (processed from postcntrl)
 ├── scripts
 │    └── run_upp                -------- Script that runs the stand-alone UPP package (upp.x)
 ├── sorc
 │    ├── libIFI.fd              -------- Private repository (submodule) for in-flight icing
 │    └── ncep_post.fd           -------- Main post-processing routines
 ├── tests
 │    ├── build*
 │    ├── install*
 │    └── compile_upp.sh         -------- UPP build script
 ├── ush                         -------- Utility scripts (referenced & run in /scripts)
 ├── CMakeLists.txt
 ├── LICENSE.md
 ├── README.md
 └── VERSION