Releases: UW-Hydro/VIC
VIC 5.1.0
VIC 5.1.0 (December 14, 2021)
This is a maintanence release that includes numerous bug fixes and a few model enhancements. All code changes were included in the two release candidates (5.1.0.rc1 and 5.1.0.rc2). See the notes below from the two release candidates for more details.
Announcements
- VIC is now shared under the MIT license (GH#917).
- Travis-CI was disabled folling the platform's migration to travis-ci.com. See GH#919 for more details (GH918).
VIC 5.1.0 rc2 (September 28, 2020)
Bug Fixes:
-
Fixed datetime handling bug in unit test module (GH#796)
-
Removed descriptions of forcing disaggregation options from documentation of classic driver global parameter file (GH#831)
-
Removed descriptions of forcing disaggregation options from documentation of image driver global parameter file (GH#833)
-
Fixed segmentation fault in lake model caused by incorrect passing of pointer argument to
vic_run()
. (GH#826 -
Relaxed some of the validation of lake parameters, to allow them to be null in cells containing no lakes. (GH#826
-
Fixed passing of lake data structures to
generate_default_lake_state()
. (GH#826 -
Separated the dimensions of arrays related to lake basin shape and of arrays related to the number of lake simulation layers. (GH#826
-
Added global parameter option to set the maximum number of (dynamic) lake simulation layers. (GH#826
-
Fixed bug causing ET to be 0 in pure bare soil tiles. (GH#823
VIC 5.1.0 rc1
Release date: (April 27, 2018)
Source code is available here:
This is a minor update from VIC 5.0.1. The VIC 5.1.0 includes new features, such as a new streamflow routing extension and extended parallelization using OpenMP. The release also includes a number of bug fixes for the CESM driver. See the VIC Github page for more details on the changes included in this release.
Model enhancement:
-
Improved calculation of drainage between soil layers (GH#656)
Drainage from upper layer to adjacent lower layer is calculated according to Brook & Corey curve (where drainage rate is a function of upper-layer soil moisture). In previous versions, a simple numerical solution is applied which uses the timestep-beginning upper-layer soil moisture to calculate drainage rate, and assume this constant rate over the entire timestep. This can cause unreasonably large drainage if the curve has a steep shape and when soil moisture is high. Now, the current version uses exact integral (instead of numerical solution) for layer drainage calculation.
-
Fixes for the CESM driver
- Using correct fill value datatypes in MPI Gather steps
- Updated state file name time step to be period-ending rather than period-beginning
- Set the state file name to the RASM case ID
- Removed decimal point for missing values for unsigned integers
- Create dummy forcings when initializing the model (so that there is forcing data for the first time step)
- Changed pressure units from kPa to Pa
- Fixed bug that prevented using the correct local domain grid cells in
cesm_put_data.c
- Changed reference temperature units from Celsius to Kelvin in
cesm_put_data.c
- Fix sign for latent heat fluxes passed from VIC to the coupler
- Fix sign for longwave radiation passed from VIC to the coupler
- Changes names of CESM driver functions
trim
andadvance_time
totrimstr
andadvance_vic_time
, respectively, to avoid conflicts with WRF functions with the same names when compiling RFR case.
- Fixes Julian day for the first timestep in the dmy struct for the CESM driver.
- Refactor the cesm_put_data.c routine in the CESM driver to use values from out_data directly, rather than computing them separately in cesm_put_data.c.
- Fixes initialization of coupler fields and calculates temperature and upwelling longwave to pass to WRF during initialization.
- Updates the cesm_put_data.c routine in the CESM driver to pass gridcell-averaged albedo to the coupler.
- Updates the cesm_put_data.c routine in the CESM driver to include the correct units for evap passed to the coupler.
- Updates the cesm_put_data.c routine in the CESM driver to include the correct units for sensible heat flux and updates the rofliq calculation to be correct (previously only OUT_BASEFLOW was being divided by global_param.dt).
- Updates the cesm_put_data.c routine in the CESM driver to include the correct signs for turbulent heat fluxes and evaporation. Previously we had switched the signs to agree with the image driver and they should instead be in accordance with the sign conventions for coupled models, which differ from those of land surface models. Also, eliminate populating the
l2x_Sl_ram1
field with aero_resist to agree with the VIC 4 implementation in RASM.
- Updates the cesm_put_data.c routine in the CESM driver to include the correct signs for the wind stresses and fixes a bug in calculating friction velocity (previously it was missing a square root).
- Updates the cesm_interface_c.c routine to include missing timers and the VIC RUN timer in the CESM driver.
- Updates the cesm_interface_c.c routine in the CESM driver to populate the nrecs, endyear, endmonth and endday fields in the global_param struct to make them available to vic_finalize for timing tables (specifically the secs/day columns).
- Updates the default namelist settings for the CESM driver to include output filenames consistent with the RASM naming conventions, default thermal nodes to 10,
FULL_ENERGY
toTRUE
, and sets defaults for daily and monthly mean output.
- Updates the default output variables for the CESM driver. Also updates the VIC5 parameter file location to be the RASM inputdata directory and updates the name of the VIC5 parameter file to the new VIC5 parameters.
- Adds support to the CESM driver for 25km resolution RASM runs.
- Adds initial state files to default 50km and 25km builds so that these are used by other groups running RASM rather than VIC5 starting up from a clean start.
- GH#880
--Adds option STATENAME_CESM to the option_struct so that statefiles in the CESM driver can be in accordance with RASM naming conventions for model components.
-
Speed up NetCDF operations in the image/CESM drivers (GH#684)
These changes speed up image driver initialization, forcing reads, and history writes by only opening and closing each input netCDF file once.
-
Added two new timers to measure time in I/O operations (GH#703)
These two timers count the CPU and WALL time spent in
vic_force
andvic_write
. The accumulated time from these timers is printed out at the end of each simulation in the timing table. See also GH#442. -
Added gridcell-averaged albedo (STATE_AVG_ALBEDO) as a state file variable (GH#712)
This is for use in the CESM driver for VIC to pass to WRF, but has been implemented in the core structure of VIC (in vic_run) for consistency with the classic and image drivers. Running VIC from a cold start now also includes calculation of gridcell-averaged albedo.
-
Cleanup of the initialization sections of the
image
andcesm
drivers (GH#701)Codified behavior in the initialization of the
image
andcesm
drivers that requires the parameter variablesAreaFract
,Pfactor
,zone_fract
, andCv
must sum exactly to 1.0. If using theSNOW_BAND
option, the area weightedelevation
must match the mean grid cell elevation (elev
). VIC will print warnings if any of these criteria are violated. -
Added thread paral...
VIC.5.1.0.rc2
VIC.5.1.0.rc2
VIC 5.1.0.rc1
VIC.5.1.0.rc1 VIC.5.1.0.rc1
VIC 5.0.1
Release date: (February 1, 2017)
This release contains a number of bug fixes.
Bug Fixes:
-
Fixed image driver history file name timestamp (GH#635)
After the fix, the timestamp appeared in the image driver output history filename is the beginning time of the time period in the file.
-
Fixed forceskip rounding bug (GH#639)
After the fix, the
forceskip
variable in the global parameter structure (i.e., the number of timesteps to skip in the forcing data for the simulatin period) is rounded correctly (before the fix, rounding error might cause 1-timestep offset in the simulation results). -
Fixed a problem with image restarts when using multiple processors (GH#638)
After the fix, only the master node is assigned the task of validating state file dimensions and coordinate variables. Multiprocessing was also added to the VIC testing framework.
-
Ensured that the mask variable in the input domain file must be integer type; otherwise an error is raised. (GH#645)
-
Fixed a bug related to
make_lastday
function (GH#647)Before the fix, the input arguments to function
make_lastday
are sometimes in a wrong order. The bug caused error when trying to write state file on a leap day. -
Fixed a bug related to writing two-dimensional lat/lon variables to a state file (GH#652)
Before the bug fix, two-dimensional lat/lon variables were not populated correctly and were written as fill values to a state file. Now two-dimensional lat/lon variables are correctly populated and written.
-
Fixed a bug related to
dz_node
andnode_depth
variables in image driver output state file (GH#657)Before the fix,
dz_node
andnode_depth
in image driver output state file were not spatially distributed, which was wrong. Now these two variables are spatially distributed in the output state file. -
Fixed a bug related to
run_cell
andmask
variables in image driver inputs (GH#662)Before the fix, active cell was controlled by
mask
variable in the domain file in image driver, andrun_cell
variable in the parameter file was not actually used. Nowrun_cell
variable in the parameter file controls active cells (run_cell
must be within the mask defined by the domain file). -
Fixed a time precision bug for long simulations (GH#668)
Before the fix, the timestamps of long VIC runs were incorrect in some cases due to precision issue in timestamp generation. This resulted in incorrect output timestamps after running for a long period of time, or output termination. Please refer to GH#668 for details on this bug fix.
-
Fixed a bug related to forcing and simulation start time (GH#671)
Before the fix, there would be an error if the simulation start time is later than the forcing start time that year AND the simulation spans multiple years. Fixed this bug.
VIC.5.0.0
VIC 5.0.0
Release date: (September 2, 2016)
Source code is available here:
This is a major update from VIC 4. The VIC 5.0.0 release aims to have nearly identical physics as VIC 4.2 while providing a clean, refactored code base supporting multiple drivers. There are a number of new features, bug fixes, and backward incompatible changes. See the VIC Github page for more details on the changes included in this release.
New Features:
-
"vic_run" (GH#7)
Although the physics and model behavior of VIC 5.0.0 should be nearly identical to VIC 4.2, the source code has undergone a major cleanup and reorganization. We have separated the physical core ("vic_run") from the driver source code. This work has improved the extensibility and readability of the model.
-
Classic Driver (GH#7)
The Classic Driver provides similar functionality as VIC 4, including ASCII and binary I/O, and a time-before-space evaluation loop order. The Classic Driver is maintained for two main reasons:
- to provide some level of backward compatibility for existing VIC users that wish to continue using VIC using a traditional approach, and,
- to allow VIC to be run at individual grid cells, without requiring the infrastructure needed by the Image Driver. Documentation for the Classic Driver can be found here.
-
Image Driver (GH#7)
The Image Driver adds a number of features to the user interface of the VIC model. Most notably, it uses a space-before-time evaluation loop order, netCDF I/O, and parallelization using MPI. Image Driver specific documentation can be found here.
-
Constants File (GH#192)
Earlier versions of VIC included many hard-coded parameters and constants. We have consolidated these constants into a single structure and developed an input file that allows users to modify parameters at run-time. See here for more information.
-
Logging (GH#173)
A set of logging Macros have been added to all drivers and
vic_run
. The logging level can be set in the driverMakefile
via theLOG_LVL
variable. The logging Macros provide the filename and line number in the source code to aid in debugging. Additionally, when compiler support is available, a traceback is printed when VIC exits during runtime. When theLOG_DIR
variable is provided in the global parameter file, VIC will write its log(s) to log files instead of printing to stdout. -
Sub-hourly Timestep (GH#188)
Previous versions of VIC were limited to a minimum timestep of one hour. The units of the VIC timestep have been changed from hours to seconds and the minimum timestep is now one second. If you intend on running VIC at a timestep of less than one hour, we suggest extensive testing.
-
Calendar Support (GH#188)
Earlier versions of VIC used the standard Gregorian calendar. Because many modern climate models use non-standard calendars, we have implemented all CF compliant calendars. The standard Gregorian calendar remains the VIC default. See the documentation for individual drivers for how to set the calendar option (e.g. classic.
-
Sample Datasets (GH#387)
The VIC_sample_data repository contains the necessary input datasets (forcings and parameters) to run short simulations of the VIC model for both the classic and image driver.
-
Tests Datasets (GH#79)
See #79 for more information. A temporary location of the test data is here: ftp://ftp.hydro.washington.edu/pub/gergel/VIC5_test_data/
-
Testing and Continuous Integration (GH#190)
A comprehensive testing platform has been implemented and is available for public use along with the VIC model. A small subset of the test platform is run on Travis-CI, which facilitates continuous integration of the VIC test platform. More information on the test platform is here.
-
Run-time profiling and timing (GH#442)
A timing module has been added to VIC in order to assess the computational cost and throughput of the VIC model. New output variables (
OUT_TIME_VICRUN_WALL
andOUT_TIME_VICRUN_CPU
) document the time spent invic_run
for each variable. Additionally, a timing table is printed toLOG_DEST
at the end of each simulation.
Backwards Incompatible Changes:
The format of ASCII forcing and output files has changed in VIC 5. These changes were motivated by the desire to improve simulation metadata tracking and reproducibility of VIC simulations.
- Output files now include a header with simulation metadata and variable names. The
PRT_HEADER
option has been deprecated.
- Classic Driver Global Parameter Options
A number of global parameter options have changed for the Classic Driver, relative to VIC 4.
TIME_STEP
(int, units: hours) has been changed toMODEL_STEPS_PER_DAY
(int)SNOW_STEP
(int, units: hours) has been changed toSNOW_STEPS_PER_DAY
(int)OUT_DT
(int, units: hours) has been changed toOUTPUT_STEPS_PER_DAY
(int)FORCE_DT
(int, units: hours) has been changed toFORCE_STEPS_PER_DAY
(int)BINARY_STATE_FILE
(TRUE or FALSE) has been changed toSTATE_FORMAT
(BINARY or ASCII)BINARY_OUTPUT
(TRUE or FALSE) has been changed toOUT_FORMAT
(BINARY or ASCII)
- State files now include seconds (GH#464)
- There is a new global parameter option,
STATESEC
. This specifies the time step at the end of which state will be saved, in units of seconds. In other words, if you have an hourly time step (3600 sec) and you want to save state at the end of the final time step of the day (which is 86400 seconds long), subtract 3600 from 86400 to get a STATESEC of 82800. This corresponds to the first second of the final time step. State will be saved at the end of that time step. - When the state save date is appended to state filenames, STATESEC will be included so that the date will have the format YYYYMMDD_SSSSS.
- Classic Driver Output Variables (GH#352)
Computation of potential evapotranspiration (PET) has been simplified, reducing the number of output variables from 6 to 1. The following output variables have been removed:
OUT_PET_SATSOIL
(potential evapotranspiration from saturated bare soil)OUT_PET_H2OSURF
(potential evapotranspiration from open water)OUT_PET_SHORT
(potential evapotranspiration (transpiration only) from short reference crop (grass))OUT_PET_TALL
(potential evapotranspiration (transpiration only) from tall reference crop (alfalfa))OUT_PET_NATVEG
(potential evapotranspiration (transpiration only) from current vegetation and current canopy resistance)OUT_PET_VEGNOCR
(potential evapotranspiration (transpiration only) from current vegetation and 0 canopy resistance)
These have been replaced by:
OUT_PET
(potential evapotranspiration, which = area-weighted sum of potential transpiration and potential soil evaporation; potential transpiration is computed using the Penman-Monteith equation with architectural resistance and LAI of the current veg cover)
Deprecated Features:
Previous versions of VIC used MTCLIM to generate missing forcing variables required to run VIC. This led to confusion by many users and considerably more complex code in the Classic Driver. VIC forcings are now required to be provided at the same time frequency as the model will be run at (SNOW_STEPS_PER_DAY
).
As part of this change, the following options have been removed from the Classic Driver:
LW_TYPE
LW_CLOUD
MTCLIM_SWE_CORR
VP_INTERP
VP_ITER
OUTPUT_FORCE
As part of this change, the following output variables have been removed from the Classic Driver:
OUT_COSZEN
OUT_TSKC
In the future, we would like to provide a stand-alone version of MTCLIM that produces subdaily meteorological forcings. We are looking for community support for this feature (GH#17)
3. Removed LONGWAVE
and SHORTWAVE
forcing types (GH#379).
Previous versions of VIC allowed users to specify either LONGWAVE
or LWDOWN
to denote the incoming longwave radiation flux and SHORTWAVE
or SWDOWN
to denote the incoming shortwave radiation flux. We have removed these duplicate options, standardizing on the more descriptive LWDOWN
and SWDOWN
.
Similarly, output variables OUT_NET_LONG
and OUT_NET_SHORT
have been replaced with OUT_LWNET
and OUT_SWNET
, resp...
VIC.5.0.0.rc2
This is the second release candidate of VIC 5.0.0.
Major new features in the VIC 5 series, compared to VIC 4
-
"vic_run" (GH#7)
Although the physics and model behavior of VIC 5.0.0 should be nearly identical to VIC 4.2, the source code has undergone a major cleanup and reorganization. We have separated the physical core ("vic_run") from the driver source code. This work has improved the extensibility and readability of the model.
-
Classic Driver (GH#7)
The Classic Driver provides similar functionality as VIC 4, including ASCII and binary I/O, and a time-before-space evaluation loop order. The Classic Driver is maintained for two main reasons:
- to provide some level of backward compatibility for existing VIC users that wish to continue using VIC using a traditional approach, and,
- to allow VIC to be run at individual grid cells, without requiring the infrastructure needed by the Image Driver. Documentation for the Classic Driver can be found here.
-
Image Driver (GH#7)
The Image Driver adds a number of features to the user interface of the VIC model. Most notably, it uses a space-before-time evaluation loop order, netCDF I/O, and parallelization using MPI. Image Driver specific documentation can be found here.
-
Constants File (GH#192)
Earlier versions of VIC included many hard-coded parameters and constants. We have consolidated these constants into a single structure and developed an input file that allows users to modify parameters at run-time. See here for more information.
-
Logging (GH#173)
A set of logging Macros have been added to all drivers and
vic_run
. The logging level can be set in the driverMakefile
via theLOG_LVL
variable. The logging Macros provide the filename and line number in the source code to aid in debugging. Additionally, when compiler support is available, a traceback is printed when VIC exits during runtime. When theLOG_DIR
variable is provided in the global parameter file, VIC will write its log(s) to log files instead of printing to stdout. -
Sub-hourly Timestep (GH#188)
Previous versions of VIC were limited to a minimum timestep of one hour. The units of the VIC timestep have been changed from hours to seconds and the minimum timestep is now one second. If you intend on running VIC at a timestep less that one hour, we suggest significant testing.
-
Calendar Support (GH#188)
Earlier versions of VIC used the standard Gregorian calendar. Because many modern climate models use non-standard calendars, we have implemented all CF compliant calendars. The standard Gregorian calendar remains the VIC default. See the documentation for individual drivers for how to set the calendar option (e.g. classic).
-
Sample Datasets (GH#387)
The VIC_sample_data repository contains the necessary input datasets (forcings and parameters) to run short simulations of the VIC model for both the classic and image driver.
-
Tests Datasets (GH#79)
See #79 for more information. A temporary location of the test data is here: ftp://ftp.hydro.washington.edu/pub/gergel/VIC5_test_data/
-
Testing and Continuous Integration (GH#190)
A comprehensive testing platform has been implemented and is available for public use along with the VIC model. A small subset of the test platform is run on Travis-CI, which facilitates continuous integration of the VIC test platform. More information on the test platform is here
-
Run-time profiling and timing (GH#442)
A timing module has been added to VIC in order to assess the computational cost and throughput of the VIC model. New output variables (
OUT_TIME_VICRUN_WALL
andOUT_TIME_VICRUN_CPU
) document the time spent invic_run
for each variable. Additionally, a timing table is printed toLOG_DEST
at the end of each simulation.
VIC.5.0.0.rc1
This is the first release candidate of VIC 5.0.0.
Major new features in the VIC 5 series, compared to VIC 4
-
"vic_run" (GH#7)
Although the physics and model behavior of VIC 5.0.0 should be nearly identical to VIC 4.2, the source code has undergone a major cleanup and reorganization. We have separated the physical core ("vic_run") from the driver source code. This work has improved the extensibility and readability of the model.
-
Classic Driver (GH#7)
The Classic Driver provides similar functionality as VIC 4, including ASCII and binary I/O, and a time-before-space evaluation loop order. The Classic Driver is maintained for two main reasons:
- to provide some level of backward compatibility for existing VIC users that wish to continue using VIC using a traditional approach, and,
- to allow VIC to be run at individual grid cells, without requiring the infrastructure needed by the Image Driver. Documentation for the Classic Driver can be found here.
-
Image Driver (GH#7)
The Image Driver adds a number of features to the user interface of the VIC model. Most notably, it uses a space-before-time evaluation loop order, netCDF I/O, and parallelization using MPI. Image Driver specific documentation can be found here.
-
Constants File (GH#192)
Earlier versions of VIC included many hard-coded parameters and constants. We have consolidated these constants into a single structure and developed an input file that allows users to modify parameters at run-time. See here for more information.
-
Logging (GH#173)
A set of logging Macros have been added to all drivers and
vic_run
. The logging level can be set in the driverMakefile
via theLOG_LVL
variable. The logging Macros provide the filename and line number in the source code to aid in debugging. Additionally, when compiler support is available, a traceback is printed when VIC exits during runtime. When theLOG_DIR
variable is provided in the global parameter file, VIC will write its log(s) to log files instead of printing to stdout. -
Sub-hourly Timestep (GH#188)
Previous versions of VIC were limited to a minimum timestep of one hour. The units of the VIC timestep have been changed from hours to seconds and the minimum timestep is now one second. If you intend on running VIC at a timestep less that one hour, we suggest significant testing.
-
Calendar Support (GH#188)
Earlier versions of VIC used the standard Gregorian calendar. Because many modern climate models use non-standard calendars, we have implemented all CF compliant calendars. The standard Gregorian calendar remains the VIC default. See the documentation for individual drivers for how to set the calendar option (e.g. classic).
-
Sample Datasets (GH#387)
The VIC_sample_data repository contains the necessary input datasets (forcings and parameters) to run short simulations of the VIC model for both the classic and image driver.
-
Tests Datasets (GH#79)
TODO: See #79 for more information.
-
Testing and Continuous Integration (GH#190)
A comprehensive testing platform has been implemented and is available for public use along with the VIC model. A small subset of the test platform is run on Travis-CI, which facilitates continuous integration of the VIC test platform. More information on the test platform is here
VIC 4.2.d
VIC 4.2.c
Release of VIC.4.2.b
***** Description of changes between VIC 4.2.a and VIC 4.2.b *****
Bug Fixes:
Fixed memory error in initialize atmos when OUTPUT_FORCE = TRUE.
Files Affected:
initialize_atmos.
Makefile
Description:
Previously, access to unitialized elements of the veg_con and veg_hist
structure was attempted when OUTPUT_FORCE = TRUE, causing a memory error
and the model to crash. This fix sets these elements inside a
`if (!options.OUTPUT_FORCE)` block allowing the OUTPUT_FORCE option to
work as expected.