1.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 the table of 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 runtime 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 Satellites (GOES)
Advanced Microwave Scanning Radiometer (AMSRE)
For CRTM documentation, refer to the CRTM User Guide.
1.2.1. System Architecture Overview
The basic components of the offline UPP are shown in the schematic below.
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.
1.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.xexecutable after successful compilationmodulefiles: Contains modulefiles for specific platforms and compilers for building on preconfigured machines.
parm: Contains parameter files, which can be modified by the user to control how the post-processing is performed.
sorc: Contains source code for:
The UPP (under
ncep_post.fd)In-Flight Icing (IFI) (under
libIFI.fd). Note that IFI code is private not available to the public.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 -------- Regression testing files
├── cmake -------- CMake build files
├── doc -------- User's Guide files
│ └── Doxyfile.in -------- Doxygen configuration file
├── exec* -------- Location of UPP executable
├── fix
├── 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 by the UPP
│ └── postxconfig-NT-*.txt -------- Text file of requested output that UPP reads (processed from postcntrl)
├── 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
├── CMakeLists.txt
├── LICENSE.md
├── README.md
└── VERSION