Paper Highlight: The Variable Infiltration Capacity model version 5 (VIC-5): infrastructure improvements for new applications and reproducibility

Posted by Joe Hamman on September 1, 2018

We recently published a paper introducing version 5 of the Variable Infiltration Capacity model (VIC-5). The paper was published in Geoscientific Model Development (1) and described the improvement to the model and changes to the development process. The model source code is available on GitHub (2) and Zenodo (3) and the documentation can be found here.

The Variable Infiltration Capacity model version 5 (VIC-5): infrastructure improvements for new applications and reproducibility


The Variable Infiltration Capacity (VIC) model is a macroscale semi-distributed hydrologic model. VIC development began in the early 1990s and the model has since been used extensively for basin- to global-scale applications that include hydrologic dataset construction, trend analysis of hydrologic fluxes and states, data evaluation and assimilation, forecasting, coupled climate modeling, and climate change impact assessment. Ongoing operational applications of the VIC model include the University of Washington’s drought monitoring and forecasting systems and NASA’s Land Data Assimilation System. This paper documents the development of VIC version 5 (VIC-5), which includes a major reconfiguration of the legacy VIC source code to support a wider range of modern hydrologic modeling applications. The VIC source code has been moved to a public GitHub repository to encourage participation by the broader user and developer communities. The reconfiguration has separated the core physics of the model from the driver source code, whereby the latter is responsible for memory allocation, preprocessing and post-processing, and input–output (I–O). VIC-5 includes four drivers that use the same core physics modules, but which allow for different methods for accessing this core to enable different model applications. Finally, VIC-5 is distributed with robust test infrastructure, components of which routinely run during development using cloud-hosted continuous integration. The work described here provides an example to the model development community for extending the life of a legacy model that is being used extensively. The development and release of VIC-5 represents a significant step forward for the VIC user community in terms of support for existing and new model applications, reproducibility, and scientific robustness.


Figure from Hamman et al (2018): The reconfigured VIC-5 source code structure. The “physical core” includes the scientific modules of VIC (e.g., routines that simulate the fluxes and states of the model) and is used by each of the four drivers. The remainder of the VIC source code structure is considered driver-level code. Each driver uses components of the shared driver to minimize code duplication at the driver level. Likewise, the shared image driver includes source code that is used by both the image and CESM drivers (e.g., MPI and NetCDF utilities). Finally, the “extensions” constitute optional and driverspecific sub-models.


  1. Hamman, J., B. Nijssen, A. Roberts, A. Craig, W. Maslowski, and R. Osinski, 2017a: The Coastal Streamflow Flux in the Regional Arctic System Model. Journal of Geophysical Research: Oceans, doi:10.1002/2016JC012323.
  2. VIC Developers. “UW-Hydro/VIC: The Variable Infiltration Capacity (VIC) Macroscale Hydrologic Model.” UW-Hydro/VIC, GitHub, Last Accessed 2018-09-01,
  3. Joe Hamman, Bart Nijssen, Ted Bohn, Wietse Franssen, Yixin Mao, and Diana Gergel. (2017, February 1). UW-Hydro/VIC: VIC 5.0.1 (Version VIC.5.0.1). Zenodo. 10.5281/zenodo.267178.