Fast, flexible, modular channel routing for the National water model and beyond:
T-Route, a dynamic channel routing model, offers a comprehensive solution for river network routing problems. It is designed to handle 1-D channel routing challenges in vector-based river network data, such as the USGS's NHDPlus High Resolution dataset, and OGC WaterML 2.0 Surface Hydrology Features (HY_Features) data model used in NextGen framework.
Provided a series lateral inflows for each node in a channel network, T-Route computes the resulting streamflows. T-Route requires that all routing computations srictly obey an upstream-to-downstream ordering. Such ordering facilitates the heterogenous application of routing models in a single river network. For example, hydrologic models - such as Muskingum Cunge - may be more appropriate for low-order headwater streams where backwater conditions have minimal impact on flooding. In contrast, T-Route empowers users to apply computationally intensive hydraulic models, such as the diffusive wave approximation of St. Venant equations, for high-order streams and rivers, where backwater flooding is a significant concern. This flexibility enables users to allocate computational resources precisely where they are needed most, optimizing efficiency.
Expanding its capabilities, T-Route now supports the OGC WaterML 2.0 Surface Hydrology Features (HY_Features) data model, facilitating the management of complex acyclic network connectivity. HY_Features data model provides users with a choice of routing solutions, including Muskingum-Cunge, Diffusive Wave, or Dynamic Wave.
Key Features of T-Route:
Feature | Muskingum-Cunge (MC) | Diffusive Wave |
---|---|---|
Domain | Individual stream segment | Independent sub-network |
Computing Method | Parallel on CONUS using junction order and short-time step | Serial on a sub-network using junction order |
Routing Direction | Upstream to downstream | Both directions |
Numerical Scheme | One-dimensional explicit scheme | Implicit Crank-Nicolson scheme |
T-Route's flexible design is ideal for NOAA's National Water Model (NWM) 3.0, but its utility extends to various research and practical applications. While the code is currently bespoke for NWM, efforts are ongoing to generalize the core utilities, making T-Route compatible with any standardized network and forcing data.
The figure below illustrates the workflow for executing T-Route via two interfaces: the Command Line Interface (CLI) and the Basic Model Interface (BMI). When using the CLI, the user can select from two river network representations: NHDNetwork or HYFeatures. In contrast, the BMI exclusively supports HYFeatures. For the routing method, users have the option to apply either the Muskingum-Cunge method or the Diffusive Wave method.
/test
directory includes a T-Route demonstration on the Lower Colorado River, TX, showcasing capabilities like streamflow data assimilation and diffusive wave routing.T-Route development is rigorously aligned with and guided by the NOAA Office of Water Prediction mission: Collaboratively research, develop and deliver timely and consistent, state-of-the-science national hydrologic analyses, forecast information, data, guidance and equitable decision-support services to inform essential emergency management and water resources decisions across all time scales.
src/kernel/
: Fortran modules.src/troute-config/
: Configuration parser for T-Route specific file.src/troute-network/
: Manages network, data assimilation, and routing types.src/troute-nwm/
: Coordinates T-Route’s modules.src/troute-routing/
: Handles flow segment and reservoir routing modules.T-Route represents streamflow channel routing and reservoir routing, assimilating data on vector-based channel networks. It fits into a broader framework where it interacts with land surface models, Forcing Engines, and coastal models, each playing a pivotal role in hydrologic forecasting and analysis.
This program uses the following system packages:
python3
gcc-gfortran
... and the following non-default python modules:
numpy
pandas
xarray
netcdf4
joblib
toolz
Cython
pyyaml
geopandas
pyarrow
deprecated
please see usage and testing below. Standby for docker container instructions in the near future.
Currently, there are no specific configuration details. Stand by for updates.
To get a sense of the operation of the routing scheme, follow this sequence of commands:
# install required python modules
pip3 install numpy pandas xarray netcdf4 joblib toolz pyyaml Cython>3,!=3.0.4 geopandas pyarrow deprecated wheel
# clone t-toute
git clone --progress --single-branch --branch master http://github.com/NOAA-OWP/T-Route.git
# compile and install
./compiler.sh
# execute a demonstration test with NHD network
cd test/LowerColorado_TX
python3 -m nwm_routing -f -V4 test_AnA_V4_NHD.yaml
# OR
# execute a demonstration test with HYFeature network
cd test/LowerColorado_TX_v4
python3 -m nwm_routing -f -V4 test_AnA_V4_HYFeature.yaml
Note: The following instructions are for setting up T-Route on a Linux environment (standalone, no MPI). If you are using Windows, please install WSL (Windows Subsystem for Linux) before proceeding.
Install Recommended distro:
wsl --install Ubuntu-22.04
Set up venv-based virtual environment:
sudo apt update
sudo apt install python3-pip
sudo apt install python3.10-venv
python3 -m venv troute_env1
source troute_env1/bin/activate
Clone T-Route:
mkdir troute1
cd troute1
git clone --progress --single-branch --branch master http://github.com/NOAA-OWP/T-Route.git
cd troute1
pip install -r requirements.txt
Download & build netcdf fortran libraries from UCAR:
cd ~
wget https://downloads.unidata.ucar.edu/netcdf-fortran/4.6.1/netcdf-fortran-4.6.1.tar.gz
tar xvf netcdf-fortran-4.6.1.tar.gz
cd netcdf-fortran-4.6.1/
sudo apt install gfortran
sudo apt install build-essential
sudo apt-get install libnetcdf-dev
./configure
make check
sudo make install
Build and test T-Route:
cd ~/troute1
./compiler.sh
export LD_LIBRARY_PATH=/usr/local/lib/
cd test/LowerColorado_TX
python3 -m nwm_routing -f -V4 test_AnA_V4_NHD.yaml
Install Required Components:
git clone https://github.com/jameshalgren/miniconda-template.git
.Activate the Environment:
Install T-Route:
NetCDF Issues:
apt-get install *netcdf*
.find /usr/ -name *mod
).export NETCDF="PATH_TO_NETCDF.MOD"
.Python Version:
alias python=python3
in the .bashrc file if python
is not defined.Handle Permission Errors:
sudo chmod 777 <path>
for "permission denied" errors (replace <path>
with the relevant directory).By following these instructions, you should successfully install and set up T-Route on your Linux system. For any issues or questions, feel free to seek assistance.
We are constantly looking to improve. Please see the Git Issues for additional information.
T-Route team and the technical maintainers of the repository for more questions are: dongha.kim@noaa.gov sean.horvath@noaa.gov amin.torabi@noaa.gov jurgen.zach@noaa.gov
Among other things, we are working on preparing more robust I/O capability for testing and on improving the speed of the parallel tree traversal. We welcome your thoughts, recommendations, comments, and of course, PRs.
Please feel free to fork the repository and let us know if you will be issuing a pull request. More instructions will eventually be documented in CONTRIBUTING.
A great deal of credit is owed to Drs. Ehab Meslehe and Fred Ogden, and as well to the entire NCAR WRF-Hydro development team. Continued leadership and support from Dr. Trey Flowers.