Skip to content

Commit 9c4b8ac

Browse files
committed
Merge remote-tracking branch 'upstream/develop' into develop
2 parents 4ee49a9 + 2787388 commit 9c4b8ac

318 files changed

Lines changed: 30906 additions & 66967 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: Build and Test
2+
on: [push, pull_request]
3+
4+
jobs:
5+
build:
6+
runs-on: ubuntu-20.04
7+
env:
8+
FC: gfortran-9
9+
CC: gcc-9
10+
11+
steps:
12+
- name: install-dependencies
13+
run: |
14+
sudo apt-get update
15+
sudo apt-get install libmpich-dev
16+
sudo apt-get install libnetcdf-dev libnetcdff-dev netcdf-bin pkg-config
17+
sudo apt-get install libpng-dev
18+
sudo apt-get install libjpeg-dev
19+
sudo apt-get install doxygen
20+
21+
- name: checkout-jasper
22+
uses: actions/checkout@v2
23+
with:
24+
repository: jasper-software/jasper
25+
path: jasper
26+
ref: version-2.0.22
27+
28+
- name: build-jasper
29+
run: |
30+
cd jasper
31+
mkdir build-jasper && cd build-jasper
32+
cmake .. -DCMAKE_INSTALL_PREFIX=~
33+
make -j2
34+
make install
35+
36+
- name: checkout-nceplibs
37+
uses: actions/checkout@v2
38+
with:
39+
repository: NOAA-EMC/NCEPLIBS
40+
path: nceplibs
41+
ref: v1.2.0
42+
43+
- name: build-nceplibs
44+
run: |
45+
cd nceplibs
46+
mkdir build && cd build
47+
cmake .. -DCMAKE_INSTALL_PREFIX=~ -DFLAT=ON -DBUILD_POST=OFF
48+
make -j2
49+
50+
- name: checkout-post
51+
uses: actions/checkout@v2
52+
with:
53+
path: post
54+
submodules: true
55+
56+
- name: build-post
57+
run: |
58+
cd post
59+
mkdir build && cd build
60+
cmake .. -DCMAKE_PREFIX_PATH=~ -DENABLE_DOCS=ON
61+
make -j2
62+
63+
64+
65+
66+
67+

.gitmodules

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,3 @@
22
path = CMakeModules
33
url = https://github.com/noaa-emc/CMakeModules
44
branch = develop
5-
[submodule "comupp/src/lib/crtm2"]
6-
path = sorc/comlibs/crtm2
7-
url = https://github.com/NCAR/UPP_CRTM

CMakeLists.txt

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
1+
# This is the CMake build file for EMC_post (also known as UPP).
2+
#
13
cmake_minimum_required(VERSION 3.15)
24

35
file(STRINGS "VERSION" pVersion LIMIT_COUNT 1)
46

57
project(
6-
nceppost
8+
upp
79
VERSION ${pVersion}
810
LANGUAGES Fortran)
911

1012
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/Modules")
1113

12-
option(OPENMP "use OpenMP threading" OFF)
14+
# Handle user options.
15+
option(OPENMP "use OpenMP threading" ON)
1316
option(BUILD_POSTEXEC "Build NCEPpost executable" ON)
14-
option(BUILD_WITH_WRFLIB "Build NCEPpost with WRF library" OFF)
17+
option(BUILD_WITH_WRFIO "Build NCEPpost with WRF-IO library" OFF)
18+
option(ENABLE_DOCS "Enable generation of doxygen-based documentation." OFF)
1519

1620
if(NOT CMAKE_BUILD_TYPE MATCHES "^(Debug|Release|RelWithDebInfo|MinSizeRel)$")
1721
message(STATUS "Setting build type to 'Release' as none was specified.")
@@ -33,27 +37,35 @@ if(OPENMP)
3337
find_package(OpenMP REQUIRED COMPONENTS Fortran)
3438
endif()
3539

36-
if(BUILD_WITH_WRFLIB)
37-
find_package(wrf REQUIRED)
38-
else()
39-
set(wrf_FOUND FALSE)
40+
if(APPLE)
41+
# The linker on macOS does not include `common symbols` by default
42+
# Passing the -c flag includes them and fixes an error with undefined symbols
43+
set(CMAKE_Fortran_ARCHIVE_FINISH "<CMAKE_RANLIB> -c <TARGET>")
4044
endif()
4145

42-
find_package(w3nco REQUIRED)
46+
find_package(bacio REQUIRED)
47+
find_package(crtm REQUIRED)
4348
find_package(g2 REQUIRED)
4449
find_package(g2tmpl REQUIRED)
45-
find_package(bacio REQUIRED)
4650
find_package(ip REQUIRED)
47-
find_package(sp REQUIRED)
48-
find_package(w3emc REQUIRED)
49-
find_package(crtm REQUIRED)
5051

5152
if(BUILD_POSTEXEC)
52-
find_package(sigio REQUIRED)
53-
find_package(sfcio REQUIRED)
5453
find_package(nemsio REQUIRED)
55-
find_package(gfsio REQUIRED)
54+
find_package(sfcio REQUIRED)
55+
find_package(sigio REQUIRED)
56+
find_package(sp REQUIRED)
57+
find_package(w3nco REQUIRED)
58+
if(BUILD_WITH_WRFIO)
59+
find_package(wrf_io REQUIRED)
60+
endif()
5661
endif()
5762

5863
add_subdirectory(sorc)
5964
add_subdirectory(parm)
65+
66+
# If desired, build the doxygen docs.
67+
if(ENABLE_DOCS)
68+
find_package(Doxygen REQUIRED)
69+
add_subdirectory(docs)
70+
endif()
71+

Externals.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[gtg]
2-
branch = master
2+
tag = ncep_post_gtg.v2.0.3
33
protocol = git
44
repo_url = git@github.com:NCAR/UPP_GTG.git
55
local_path = sorc/post_gtg.fd

README.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
2+
# Unified Post-Processing (UPP)
3+
4+
The Unified Post Processor (UPP) software package is a software
5+
package designed to generate useful products from raw model
6+
output.
7+
8+
The UPP is currently used in operations with the Global Forecast
9+
System (GFS), GFS Ensemble Forecast System (GEFS), North American
10+
Mesoscale (NAM), Rapid Refresh (RAP), High Resolution Rapid Refresh
11+
(HRRR), Short Range Ensemble Forecast (SREF), Hurricane WRF (HWRF)
12+
applications, and is also used in Unified Forecasting System (UFS)
13+
applications.
14+
15+
The UPP provides the capability to compute a variety of diagnostic
16+
fields and interpolate to pressure levels or other vertical
17+
coordinates.
18+
19+
UPP also incorporates the Joint Center for Satellite Data Assimilation
20+
(JCSDA) Community Radiative Transfer Model (CRTM) to compute model
21+
derived brightness temperature (TB) for various instruments and
22+
channels. This additional feature enables the generation of a number
23+
of simulated satellite products including GOES products.
24+
25+
Output from the UPP is in National Weather Service (NWS) and World
26+
Meteorological Organization (WMO) GRIB2 format and can be used
27+
directly by visualization, plotting, or verification packages, or for
28+
further downstream post-processing, e.g. statistical post-processing
29+
techniques.
30+
31+
Examples of UPP products include:
32+
33+
- T, Z, humidity, wind, cloud water, cloud ice, rain, and snow on pressure levels
34+
- SLP, shelter level T, humidity, and wind fields
35+
- Precipitation-related fields
36+
- PBL-related fields
37+
- Severe weather products (e.g. CAPE, Vorticity, Wind shear)
38+
- Radiative/Surface fluxes
39+
- Cloud related fields
40+
- Aviation products
41+
- Radar reflectivity products
42+
- Satellite look-alike products
43+
44+
Support for the UFS UPP is provided through the UFS Forum by the
45+
Developmental Testbed Center (DTC) for FV3-based applications.
46+
47+
The UPP uses some of the [NCEPLIBS](https://github.com/NOAA-EMC/NCEPLIBS)
48+
project.
49+
50+
## Authors
51+
52+
NCEP/EMC Developers
53+
54+
Code Manager: Wen Meng, Huiya Chuang, Kate Fossell
55+
56+
## Prerequisites
57+
58+
This package requires the following NCEPLIBS packages:
59+
60+
- [NCEPLIBS-g2](https://github.com/NOAA-EMC/NCEPLIBS-g2)
61+
- [NCEPLIBS-g2tmpl](https://github.com/NOAA-EMC/NCEPLIBS-g2tmpl)
62+
- [NCEPLIBS-sp](https://github.com/NOAA-EMC/NCEPLIBS-sp)
63+
- [NCEPLIBS-ip](https://github.com/NOAA-EMC/NCEPLIBS-ip)
64+
- [NCEPLIBS-bacio](https://github.com/NOAA-EMC/NCEPLIBS-bacio)
65+
- [NCEPLIBS-w3emc](https://github.com/NOAA-EMC/NCEPLIBS-w3emc)
66+
- [NCEPLIBS-w3nco](https://github.com/NOAA-EMC/NCEPLIBS-w3nco)
67+
- [CRTM](https://github.com/noaa-emc/emc_crtm)
68+
69+
Also required to build NCEPpost executable (cmake option
70+
BUILD_POSTEXEC):
71+
72+
- [NCEPLIBS-sigio](https://github.com/NOAA-EMC/NCEPLIBS-sigio) -
73+
- [NCEPLIBS-sfcio](https://github.com/NOAA-EMC/NCEPLIBS-sfcio) -
74+
- [NCEPLIBS-nemsio](https://github.com/NOAA-EMC/NCEPLIBS-nemsio) -
75+
- [NCEPLIBS-gfsio](https://github.com/NOAA-EMC/NCEPLIBS-gfsio)
76+
77+
The [NCEPLIBS-wrf_io](https://github.com/NOAA-EMC/NCEPLIBS-wrf_io)
78+
library is required to build with NCEPpost with WRF-IO library (cmake
79+
option BUILD_WITH_WRFIO).
80+
81+
The following third-party libraries are required:
82+
83+
- [netcdf-c](https://github.com/Unidata/netcdf-c)
84+
- [netcdf-fortran](https://github.com/Unidata/netcdf-fortran)
85+
- [Jasper](https://github.com/jasper-software/jasper)
86+
- [libpng](http://www.libpng.org/pub/png/libpng.html)
87+
- [libz](https://zlib.net/)
88+
89+
## Building
90+
91+
Builds include:
92+
93+
- Operational use GNC build as Wen described for both library and
94+
executable (library used for GFS only at this time)
95+
96+
- MRW App uses UPP packaged with nceplibs and cmake to build/run with
97+
executable (via release/public-v1 branch).
98+
99+
- SRW App uses UPP repo branch/tag directly and uses cmake to
100+
build/run with executable (via release/public-v2 branch).
101+
102+
- Community standalone uses UPP repo branch/tag directly and uses
103+
cmake to build/run with executable (via release/public-v2
104+
branch). For these procedures, we add a
105+
-DCMAKE_PREFIX_PATH=${INSTALL_PREFIX} where INSTALL_PREFIX is the
106+
location of the nceplibs installation as a dependency requirement.
107+
108+
```
109+
mkdir build
110+
cd build
111+
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install
112+
make
113+
make test
114+
make install
115+
```
116+
117+
## Disclaimer
118+
119+
The United States Department of Commerce (DOC) GitHub project code is
120+
provided on an "as is" basis and the user assumes responsibility for
121+
its use. DOC has relinquished control of the information and no longer
122+
has responsibility to protect the integrity, confidentiality, or
123+
availability of the information. Any claims against the Department of
124+
Commerce stemming from the use of its GitHub project will be governed
125+
by all applicable Federal law. Any reference to specific commercial
126+
products, processes, or services by service mark, trademark,
127+
manufacturer, or otherwise, does not constitute or imply their
128+
endorsement, recommendation or favoring by the Department of
129+
Commerce. The Department of Commerce seal and logo, or the seal and
130+
logo of a DOC bureau, shall not be used in any manner to imply
131+
endorsement of any commercial product or activity by DOC or the United
132+
States Government.

VERSION

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
9.9.9
2-
# This is a placeholder version number.
3-
# It will be replaced with an appropriate version following a discussion within the UPP management.
1+
10.0.8

clean

Lines changed: 0 additions & 57 deletions
This file was deleted.

cmake/PackageConfig.cmake.in

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,26 @@ include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-config-version.cmake")
1111
include(CMakeFindDependencyMacro)
1212

1313
find_dependency(MPI)
14+
find_dependency(NetCDF COMPONENTS Fortran)
1415

1516
# ON/OFF implies @PROJECT_NAME@ was compiled with/without OpenMP
1617
if(@OPENMP@)
1718
find_dependency(OpenMP COMPONENTS Fortran)
1819
endif()
1920

20-
find_dependency(NetCDF COMPONENTS Fortran)
21-
22-
find_dependency(w3nco CONFIG)
21+
find_dependency(bacio CONFIG)
22+
find_dependency(crtm CONFIG)
2323
find_dependency(g2 CONFIG)
2424
find_dependency(g2tmpl CONFIG)
25-
find_dependency(bacio CONFIG)
2625
find_dependency(ip CONFIG)
27-
find_dependency(sp CONFIG)
28-
find_dependency(w3emc CONFIG)
29-
find_dependency(crtm CONFIG)
3026

3127
# nceppost library does not depend on these, the executable does.
32-
#find_dependency(sigio CONFIG)
33-
#find_dependency(sfcio CONFIG)
34-
#find_dependency(nemsio CONFIG)
3528
#find_dependency(gfsio CONFIG)
29+
#find_dependency(nemsio CONFIG)
30+
#find_dependency(sfcio CONFIG)
31+
#find_dependency(sigio CONFIG)
32+
#find_dependency(sp CONFIG)
33+
#find_dependency(w3nco CONFIG)
3634

3735
# Get the build type from library target
3836
get_target_property(@PROJECT_NAME@_BUILD_TYPES @PROJECT_NAME@::@PROJECT_NAME@ IMPORTED_CONFIGURATIONS)

0 commit comments

Comments
 (0)