The Next Generation Water Resources Modeling Framework (NextGen)
advances the National Water Model with flexible, modular, and regionally
adaptive hydrologic modeling at national scale.
NextGen In A Box (NGIAB) packages the complex NextGen system into an
open-source, containerized application for easier access and
usability.
NGIAB uses Docker and Singularity for portability across local
machines, cloud platforms, and HPC systems.
NGIAB’s ecosystem includes the Community Hydrofabric, Data
Preprocessor, TEEHR, Data Visualizer, and calibration tools that support
end-to-end hydrologic modeling workflows.
NGIAB fosters an open ecosystem where researchers, developers, and
practitioners actively contribute new models, extensions, and
workflows.
ngen-run/ is the standard NextGen run directory,
containing the realization files that define models, parameters, and run
settings; forcing data; outputs; as well as the spatial
hydrofabric.
The Data Preprocess tool simplifies preparing data for NextGen by
offering a GUI and CLI for selecting catchments and date ranges,
subsetting hydrofabric data, generating forcing files, and creating
realization files.
NGIAB supports HPC environments through Singularity, not Docker, but
the workflow mirrors the local Docker use.
Port forwarding is required to use the Data Visualizer through an
SSH connection.
Community contribution guidelines are available in each repository’s
GitHub page.
NGIAB can also be run through JupyterHub or DatastreamCLI.
Model integration in NGIAB requires model configuration, supporting
input datasets, and compatibility with the broader NGIAB ecosystem,
including preprocessing, calibration, evaluation, and visualization
tools.
Models integrate into NextGen/NGIAB through the Basic Model
Interface (BMI), which lets models be swapped in and out of the
framework.
Python models must target Python 3.11, pin
netCDF/pydantic/pandas to
compatible versions, and ship a PyPI distribution; non-Python models
must compile against libc 2.34 or lower.
A Python model is integrated by installing it in the
final stage of the NGIAB Dockerfile, rebuilding the image,
and running it against a test data package.