GNU Winds On Critical Streamline Surfaces
Project Documentation and Overview
This project is the GNU release of Winds On Critical Streamline Surfaces,
a diagnostic windfield model for complex terrain. It can be used in many
applications, from toxic dispersion to wind energy/wind hazard studies,
as well as fast downscaling of large forecast model grids. See below
for a short history and the
readme file
for a short list of journal references.
The source is still F77 fixed-format, and is currently being refactored
as part of the verification of the floating point math implementation. The new
autotools build uses exception traps and enforces Fortran and IEEE standards
(however GNU extensions are currently enabled to allow a deleted feature to
build under the F95 standard).
Other enhancements and/or extensions may also happen; stay tuned...
- Release Notes -
Autogenerated changelog for github releases (with a little history for context).
- Overview doc -
VTMX data CD user guide (not exactly current, but useful for config parameters)).
- Software API docs -
Software API documentation with call diagrams, etc.
Below is an example output graphic from the SJSU WOCSS page (click to see current data).
Short Overview of GNU Winds On Critical Streamline Surfaces
GWOCSS is a mass-conservative flow surface-following physics-based
windfield model for fast calculation of gridded winds using terrain
data and minimal observational inputs. GWOCSS is a diagnostic model
(rather than prognostic), so the output is essentially a fast and
mathematically/physically constrained objective analysis, or "nowcast".
The model is capable of several output types on multiple grid levels,
including 3D winds and turbulence parameters.
The main requirements for
model localization are digital terrain data for the region of interest
and a minimum of either 1) three (3) independent surface observations with
pressure, or 2) one full upper air observation with pressure data (standard
METAR and rawinsonde data will work fine). Other sources of surface and
upper data can also be used (the more good data the better) but all inputs
must be converted to the standard WOCSS input format (see the
sample input file
for an example with many surface and upper air stations).
How does GWOCSS work?
The basic algorithmic/functional flow of GWOCSS is shown below:
- Read configuration, terrain, and input data
- Inverse distance interpolation of surface observations in the lowest layer
- Inverse distance interpolation of upper air observations in the topmost layer
- At each grid point, fit a smooth profile between the horizontally interpolated wind at the bottom ( Z1 ) level and that at the top level ( Ztop )
- Interpolate ( Ui ) between profiles and add to the local ( Uref )
- Values agree with those at the top and bottom of the domain (determined from upper level and surface observations)
- Values agree with observed profiles
- Write selected output grids, pseudo-observations, and (optional) input data
Short history of G(NU)WOCSS algorithm development
Mass conservation model (Estoque & Bhumralkar, 1969)
- Sigma-coordinate
- Variational calculus
Endlich (1967): variational => iterative adjustment
- Faster, but not perfectly non-divergent
Endlich & Ludwig (1982): sigma => user defined surfaces
- Allowed surfaces to intersect terrain, but
- Required user to define surface shapes for each case
- Iterative adjustment forces flow around obstacles
Critical streamline concepts to define surfaces
- Analogous to do what skilled analysts do
- Iterative adjustment forces flow around obstacles
Operational / Research Uses of GWOCSS
- Real-time wind stress inputs for tidal current model of San Francisco Bay (WOCSS, USGS & San Jose State U)
- Real-time guidance for estimating stratus advection at the San Francisco Airport (WOCSS by NOAA forecasters at FAA Air Traffic Control Center)
- Estimation of pollutant or tracer trajectories (WOCSS, RAMS/MM5/WRF, by BAAQMD)
- Real-time space launch range wind and toxic propellant hazards (GWOCSS, USAF, VAFB)
- Estimating wind energy potential from archived observations (Endlich et al., 1982: JAM, 21, 1441-1454)