Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Distributed Hydrology Soil Vegetation Model (DHSVM)

This repository serves as the public source code repository of the Distributed Hydrology Soil Vegetation Model (DHSVM). You can find DHSVM documentation, and selected past and ongoing DHSVM-based research & projects on the DHSVM website .

DHSVM (Wigmosta et al., 1994) numerically represents with high spatial resolution (typically on the order of 100 m) the effects of local weather, topography, soil type, and vegetation on the hydrology within watersheds. The model is used to study the impacts of climate change, land use change, forest management practices, flooding, glacier dynamics, stream temperature and stream quality.

DHSVM is a research model that does not come with any warrantee or guarantee. Please be advised that no technical support is available other than the model web page. Because the model is under continous development, there is no guarantee that the newly developed modules or options are exhaustively tested or work properly.

If you decide to use DHSVM, please acknowledge Wigmosta et al. [1994] and any other relevant publications. We are very interested in receiving a copy of any manuscripts of studies in which the model is used. Finally, if you do find bugs in the model or if you have improvements to the model code, we are interested in incorporating your suggestions and/or contributions.

DHSVM v 3.2

Release date: February 23, 2018

This is a major release from DHSVM 3.1.2. It includes several new features, function enhancements and bug fixes.
The tutorial and sample data to run DHSVM v 3.2 will be made available on the DHSVM website .

New Capabilities

  • Variable radiation transmittance (with solar position and tree characteristics)
  • Canopy gap (Sun et al., 2018)
  • Snow sliding
  • Python scripts to create stream network
  • Support of gridded meteorological data input

Enhancement & Fixes

  • Negative soil moisture
  • Configuration and Build with CMake

Configuration and Build with CMake

DHSVM and related utilities can be configured and built using CMake. This provides an automated, cross-platform way to locate and use system libraries (X11, NetCDF, etc.) and select optional features. Here are some terse instructions:

  • In the top DHSVM (where CMakeLists.txt is located), make a directory for the build, called build maybe.

  • In the build directory, run CMake with appropriate options, for example,

    cmake -D CMAKE_BUILD_TYPE:STRING=Release ..

    Look at for configurations used on several developers' systems. Alternatively, just use the script:

    sh ../

    This provides a vanilla configuration without X11, NetCDF, or RBM using the default C compiler.

  • If successful, build DHSVM and related programs, using

    cmake --build .

    The resulting executable programs will be in the build directory in a tree mirroring the source tree. For example, DHSVM is build/DHSVM/sourcecode/DHSVM.

The original Makefiles are in the source tree and can still be used as described in the tutorial if preferred.

Experimental Surface/Subsurface Mode

The normal DHSVM surface/subsurface routing scheme uses 4 neighbors and directs cell outflow to all down-gradient neighbors ("D4"). Another method, which uses 8 neighbors and directs outflow only to the neighbor with the steepest gradient ("D8"). The latter has proved useful in very low-gradient areas that span several cells. To enable D8 routing add this option


to the configuration. D4 is the default.

Snow-only mode

If DHSVM is configured with this option,


an additional executable is built, DHSVM_SNOW, which operates in snow-only mode.