This page contains information about the current status of the model. Bug fixes, and updates to the source code are listed with the most recent information at the top. Major releases of the model will be e-mailed to the vicusers list, minor changes and fixes, will be posted here. As changes are posted, the source code archive will be updated. Modified files will also be located in the BUG_fixes_and_CODE_updates subdirectory, so that users can just download the modified files. Also located in the BUG_fixes_and_CODE_updates subdirectory is a version header file. It contains the version Id strings from the top of each c file, providing the user with another way to check if they have the most recent version of any given subroutine.
To use the version header file to check your routines:
August 15, 2000: VIC release 4.0.3
This release fixes a problem with the implementation of va_arg that
causes run time errors on some systems. Previous releases of the code
worked correctly on the LINUX and freeBSD systems where it was tested.
However on some systems (including Sun Ultra-2s) character variables
passed with va_arg are changed into integers so reading a character from
the argument list does not produce the value sent to the routine. The
character flags used by VIC to indicate if there is snow present and if
the frozen soil algorithm has been activated have now been converted to
integers, which should make the va_arg call work on all systems.
Also fixed in this release was a check in dist_prec.c to see if it is
still raining which actually used the memory address of the
precipitation variable rather than the daily value in the check.
MODIFIED FILES:
read_atmos_data.c - Fixed input file time step check
write_forcing_files.c - Added free statements for pointers
calc_surf_energy_bal.c - Converted char flags to int
dist_prec.c - Fixed logical statement error
frozen_soil.c - Converted char flags to int
func_surf_energy_bal.c - Converted char flags to int
initialize_atmos.c - Added flag for output forcing
vicNl.h - Converted char flags to int
vicNl_def.h - Converted char flags to int
July 19, 2000: VIC release 4.0.2
Two new pre-processor options have been added to VIC as well as minor
modifications to two subroutines.
If set to TRUE the NO_REWIND pre-processor option stops the VIC model from
rewinding the soil and vegetation parameter input files for each new grid
cell. This reduces run times but requires that all input files are in the
same order as the soil parameter file.
If set TRUE the OUTPUT_FORCE pre-processor option blocks off the main
model and only reads the provided forcing files. Once VIC has estimated
the missing forcing parameters the full forcing data set for the defined
simulation period is output to a series of gridded forcing files. The
gridded forcing files are written to the RESULTS directory defined in the
global control file with the prefix "full_data_". The new files are in
Binary or ASCII depending on the setting of BINARY_OUTPUT.
The error messages in get_global_param.c have been modified so that the
correct file is referenced when telling the user to change values found in
the model source code.
In read_soilparam.c, the soil parameters are defined only if the current
grid cell is run, otherwise the line in the file is skipped and soil_con
is retruned without new data values.
May 30, 2000: VIC release 4.0.1
Increased use of the released VIC model code has lead to the discovery of
a couple of minor bugs. This release fixes those bugs as well as
introducing a improved precipitation correction algorithm based on
Yang et al. 1998. Unless you have encountered these problems or are
trying to correct precipitation undercatch due to wind, in the VIC
model, your results will not be impacted by these fixes.
MODIFIED FILES:
correct_precip.c - changed to WMO correction equation for NWS 8"
standard gauge.
full_energy.c - modified to handle WMO correction.
initialize_atmos.c - modified to handle WMO correction.
fixed error in estimating minimum daily
temperature from sub-daily temperatures.
make_in_and_outfiles.c - removed line that opened the state file
again for each new grid cell.
open_state_file.c - modified comments.
put_data.c - modified to handle WMO correction.
snow_utility.c - cleaned source code.
solve_snow.c - modified to handle WMO correction.
surface_fluxes.c - modified to handle WMO correction.
vicNl.h - modified to handle WMO correction.
vicNl_def.h - modified to handle WMO correction.
REFERENCE:
Yang, D., B. E. Goodison, J. R. Metcalfe, V. S. Golubev, R. Bates,
T. Pangburn, and C. L. Hanson, Accuracy of NWS 8" Standard
Nonrecording Precipitation Gauge: Results and Application of WMO
Intercomparison, J. Atmos. Oceanic Tech., 15, 54-68, 1998.
May 12, 2000: VIC release 4.0
The code for VIC release 4.0.0 has undergone several months of tests (as
VIC release 3.3.0 Beta) and has now been deemed ready for release to the
general public. This document is designed to provide information
concerning changes in the model between the last release version (3.2.1)
and the current version.
There is no formal users manual, information about how to use the current
version can be found at
http://www.hydro.washington.edu/Lettenmaier/Models/VIC_old/VIChome.html.
Information about the basic model design can be found in Liang, et al.
(1994), while the rewrite of the source code as well as the addition of
cold season processes is described in Cherkauer and Lettenmaier (1999).
The VIC macroscale hydrologic model was developed as a research tool. As
such it is the users responsibility to verify that it is working correctly
when applied to new situations. When using the VIC model reference should
be made to Liang, et al. (1994) and Cherkauer and Lettenmaier (1999) as
well as an acknowledgment that the code was received from the University
of Washington. Other important papers relating to the development of the
VIC model are included on the home page and in the source code.
Possible bugs in the code should be reported to
vicadmin@hydro.washington.edu. ALWAYS CHECK YOUR INPUT FILES! Most
"bugs" are actually caused by trying to run the model with bad parameters
or forcing data. The VIC model will run limited checks to find common
major errors but in most cases it will attempt to run with the bad values.
If after checking all of your input data you still believe you have found
a bug in the model, send an e-mail including the complete output from the
model as well as a description of the problem and the files necessary to
run the model to recreate the code (if files are large please put a
compressed tar file in
http://www.ce.washington.edu/pub/HYDRO/vicadmin/TEMP). Outdated and
modified versions of the code are the responsibility of the user to debug.
Modifications made to the code, which may improve the general model
performance, may be submitted to vicadmin@hydro.washington.edu for
possible inclusion in future versions of the code.
VIC release 4.0 represents a major change to the source code from
version 3.2.1. It is strongly recommended that if you were using version
3.2.1 or earlier versions that you update with a complete copy of the new
code.
Major changes from release version 3.2.1 to 4.0:
- Radiation Estimation Update: The routines to estimate shortwave and
longwave radiation as well as vapor pressure from daily minimum and
maximum temperature and precipitation have been updated to correspond to
the algorithm described by Thornton and Running (1999). These routines
provide significantly improved radiation estimates especially in regions
outside the continental United States.
- Model Core Update: The core of the VIC model was rewritten so that all
modes of the model (water balance, energy balance, etc.) make use of the
same model code. This makes it easier to modify the model and have
modifications apply to sll modes, it also allows the model to run with new
combinations of algorithms (i.e. full energy balance mode with the finite
difference ground heat flux solution).
- Soil Moisture Transport Update: The frozen and thawed sub-layers added
to the model for the original frozen soil algorithm have been removed.
This makes the soil drainage routine cleaner and faster. Frozen soils now
estimate full layer ice contents from the ice content at each soil thermal
node. Without being confined by sub-layers, the frozen soil algorithm can
now be applied to regions of permafrost.
- Forcing File Control Added: Version 4.0.0 moves controls of the forcing
file format and data types into the global control file. The model can
now handle most ASCII column and short int Binary files without writing
new subroutines and recompiling the source code.
- Pre-processor Options Added: There are now more option flags in the
source code headers to control which parts of the model are in fact
compiled. This allows the model functionality to be adjusted without the
addition of computationally intensive conditional switching statements.
- Model State File: With the release of version 4.0.0 separate snow and
soil initialization files have been combined into a single model state
file. The state file can be created outside the model for starting
simulations with prescribed initial conditions, or the model state can be
saved by VIC at a specified date. Note that currently there will be small
differences between a full and a warm started simulation because radiation
and vapor pressure are estimated using forcing data from the simulation
period, not from the full dataset included in the forcing file. It also
does not store wet and dry fraction information, when running with
distributed precipitation the model is restarted using average soil
conditions.
References:
Liang, X., D. P. Lettenmaier, E. F. Wood, and S. J. Burges, A simple
hydrologically based model of land surface water and energy fluxes for
GSMs, J. Geophys. Res., 99(D7), 14,415-14,428, 1994.
Cherkauer, K. A., and D. P. Lettenmaier, Hydrologic effects of frozen
soils in the upper Mississippi River basin, J. Geophys. Res., 104(D16),
19,599-19,610, 1999.
Thornton, P.E. and S.W. Running, An improved algorithm for estimating
incident daily solar radiation from measurements of temperature, humidity,
and precipitation, Ag. For. Met., 93, 211-228, 1999.
August 23, 1999 VIC release 3.2.1
MODIFIED FILES:
BUG REPORT:
UPDATE REPORT:
July 9, 1999 VIC release 3.2
Changes to this version of the model were driven primarily to
improve simulation times, and update the model user options.
MODIFIED FILES:
Almost all of the VIC model routines were impacted by this update,
so the user is encouraged to download the entire package.
UPDATE REPORT:
(1) Added ENDYEAR, ENDMONTH, and ENDDAY to the global control file
so that the user can now define the start and end dates of the
simulation (users can still define the start date and number of
records (NRECS), but if the end date is defined it will be used
instead of NRECS).
(2) Added FORCEYEAR, FORCEMONTH, FORCEDAY, and FORCEHOUR to the global
control file so that the user can define the starting date for the
meteorological forcing file(s) (NOTE: all forcing files must start
on the same date). Previously the forcing file and simulation had
start on the date defined by STARTYEAR, STARTMONTH, STARTDAY, and
STARTHOUR but if the FORCE date is defined the model will skip
over the start of the met data until the simulation start date.
(3) Added RGL, rad_atten, wind_atten, and trunk_ratio to the
vegetation library file. Previously these parameters were defined
as constants within the model code. For a description of what these
parameters are see the vegetation library page.
(4) Added VERBOSE, LINK_DEBUG, and QUICK_FS precompiler options
to user.h. If VERBOSE is set to TRUE the VIC model outputs all
runtime messages to the stdout, if set to FALSE only ERROR
messages will appear. If LINK_DEBUG is set to TRUE all debugging
code will be included in the compiled source code, if set to FALSE
debugging code is not included in the executable (NOTE: if FALSE
the model will not recognize the debugging options in the global
control file and WARNING messages will be sent to stderr - to
prevent this remove the debugging options from your control file).
If QUICK_FS is TRUE then the model uses a system of linear equations
to estimate unfrozen water content when using the frozen soil
algorithm, else the model uses the complete equation. The linear
system of equations significantly reduces simulation time, but
tends to overestimate ice content (see technical note).
(5) When the pow() function was used to raise a value to an integer
power (squared, cubed, etc.) it was removed, and replaced by
multiplying the value by itself the correct number of times.
This along with (6) reduced model run times (see technical note).
(6) Where possible, and especially in iterated routines, malloc
and calloc were replaced by hard coding array sizes. This along
with (5) reduces simulation times (see technical note). Four
parameters were added to vicNl_def.h: MAX_VEG which defines the
maximum number of vegetation types, MAX_LAYERS which defines the
maximum number of soil moisture layers, MAX_NODES which defines
the maximum number of soil thermal nodes, and MAX_BANDS which
defines the maximum number of snow bands. Before compiling the
code the user should determine if these values are large enough
for the current application (setting them too large will make the
executable larger than necessary).
(7) Modified all forcing file read routines to skip to the
simulation START date, and removed the code that made them read
the entire file to count the number of records before reading
the forcing data.
(8) Soil moisture transport for any model time step, has been
computed at an hourly time step. When the code in runoff.c was
cleaned the calculation for baseflow was put into the hourly
soil moisture transport calculations, whereas before it was
computed at the model time step. This results in minor changes
in the simulated baseflow record (<1%) while making the baseflow
calculation consistent for all model time scales. The original
daily baseflow calculation routine will be available for this
release in plane:/usr3/vicadmin/SOURCE/STORE_CODE. If you find
that your results are significantly different between the two
versions of runoff.c, please make a complete report to
cherkaue@hydro.washington.edu.
(9) Added more quality checks for input data, including checks for
valid soil parameter values estimated from sand and clay contents
when using the ARCINFO grid soil files, as well as checks to make
sure the user does not exceed the defined MAX values for number
of layers, vegetation types, etc.
(10) There have been a couple of bug fixes since version 3.1.2 which
were not incorporated in an official release. Those of you who
downloaded more recent version of the code from the vicadmin/SOURCE
directory may already have them.
(a) Evaporation from soil layers was not being properly
stored by the water balance model during partially snow covered
days. Tests of the model with and without this fix have shown
very little change in the simulation results.
(b) When cleaning up the runoff code it was determined that
when the soil column became saturated excess moisture would be
flushed through the system and come out as baseflow.
March 24, 1999 VIC release 3.1.2
Changes to the model in this release are focused primarily on
improving the frozen soil model. However, three parameters have
been moved to the end of vegetation library file (two were
previously set in the global control file) so that they can be
changed for each vegetation type.
MODIFIED FILES:
calc_snow_ground_flux.c
calc_surf_energy_bal.c
frozen_soil.c
full_energy.c
func_snow_ground_flux.c
func_surf_energy_bal.c
get_global_param.c
initialize_energy.c
modify_Ksat.c
read_soilparam.c
read_soilparam_arc.c
read_veglib.c
runoff.c
soil_conduction.c
soil_thermal_eqn.c
solve_snow.c
vicNl.c
vicNl.h
vicNl_def.h
UPDATE REPORT:
March 5, 1999 VIC release 3.1.1
There have been several minor fixes and changes to the model. For
the most part these changes impact only certain subsets of the main
model, and should not have a serious impact on simulation results
obtained using release 3.1.0.
MODIFIED FILES:
get_global_param.c
initialize_enegy.c
make_in_and_outfiles.c
read_soilparam_arc.c
soil_conduction.c
BUG REPORT:
(1) Snow initialization file was not opened when model was run in
water balance mode. Fixed conditionals in make_in_and_outfiles.c
so that snow initialization file is opened if defined, and if the
snow model is activated.
(2) Optimized model crashed when running with frozen soil and a
soil thermal initialization file. Removed all references to
thermdepths variable from initialize_energy.c. Variable was no
longer used in routine, but was still being freed even though it
was not allocated.
(3) Model crashed sometimes when run with frozen soil and dp was
set to a depth greater than the that of the total soil column.
Fixes were made to initialize_enegy.c and soil_conduction.c
routines to fixed the problem. Temporary solution in
read_soilparam_arc.c was removed.
(4) Corrected spelling error in screen output from get_global_param.c.
February 16, 1999 VIC release 3.1.0
This release incorporates a number of fixes and improvements to the
model code. It is strongly recommended that users with code more
than a month old download this version.
MODIFIED FILES:
Makefile
full_energy.c
get_global_param.c
initialize_atmos.c
initialize_energy.c
initialize_global.c
initialize_snow.c
penman.c
write_data.c
read_soilparam.c
read_soilparam_arc.c
read_veglib.c
snow_utility.c
solve_snow.c
vicNl.c
vicNl.h
NEW FILES:
read_initial_snow.c
read_initial_soil_thermal.c
MODEL UPDATE:
(a) VIC routines were fixed to correctly operate in Water Balance
mode at sub-daily time steps, and Energy Balance Mode at time steps
of greater than 1 hour. See Model Notes concerning time step issues.
(b) DAYFACTOR turned on in penman routine, so that vegetation
resistances show a daily cycle - evapotranspiration shuts off at
night.
(c) Annual average precipitation is now needs to be included
in the soil parameter file for estimation of dew point temperature.
(d) New file types have been added for the initialization of both
the snowpack, and the soil heat fluxes. Note the related
addition of parameters to the model global control file.
(e) Vegetation reference height is checked in read_veglib, the value
must be greater than the displacement height, or the model will
produce NaNs.
(f) Snow densification has been added, to improve the model's
simulation of snowpack depth in spring.
(g) Current model global parameters are printed out after being set
so that they can be saved to a model log file for later reference.
Previous print statements were located before parameters were set,
so values reflected defaults and not those used.
(h) A minimum wind speed was added to the model global control file.
Typically this is set to 0, but when running the model with hourly
wind speeds it may be necessary to set it to the minimum measurable
wind speed (usually 1 m/s), to prevent spikes in the ground heat
flux caused by having no wind under very dry conditions.
(i) The makefile was modified to incorporate the new files, and
it no longer runs clean before compiling the model in default mode.
January 21, 1999: These are notes concerning changes to input files for
the last version of the model, which appear to have been
left out of the last update.
MODIFIED FILES:
read_soilparam.c (2.6)
read_soilparam_arc.c (2.6)
MODEL UPDATE:
Soil parameter files now define a new parameter, the average annual
precipitation. This is used when estimating humidity from Tmax and
Tmin. Previously the model calculated the annual precipitation for
each year, however when the model is not run for complete years, this
caused problems. When given annual average precipitation (or a
negative value - see comments on the soil parameter page) the model
will produce the same results, regardless of whether the whole year
was run.
November 23, 1998
MODIFIED FILES:
calc_root_fraction.c (1.3)
BUG REPORT:
When the sum of root zone depths is equal to the depth between
two layers, rounding errors may cause there to be a very small
( ~ 1e-8 ) fraction of roots in the next lower layer. Since
the sum of root fractions above this point will be normalized to
sum to 1, it will cause a divide by 0 error in transpiration, under
certain conditions. All small root fractions ( < 1e-4 ) are now
set to 0 in calc_root_fraction.c.
November 20, 1998 VIC-nL release 2.12.3
MODIFIED FILES:
rad_and_vpd.h
rad_and_vpd.c (2.7)
priestley.c (2.3)
initialize_atmos.c (2.6)
vicNl.h
aurad.c (2.4)
calc_netshort (2.4)
cmd_proc.c (2.3)
BUG REPORT:
A units problem was found in the value of the psychrometric constant
defined in the file rad_and_vpd.h, GAMMA_PT should be 0.066. It was
also determined that the value for priestley evaporation used to
estimate daily dew point temperature was being multiplied by the
number of seconds in a day twice, this has been fixed in the
code rad_and_vpd.c (2.7) and priestley.c (2.3). Unused variables were
removed from both initialize_atmos.c (2.6) and rad_and_vpd.c. The
header file vicNl.h was updated to reflect the modified subroutine calls.
MODEL UPDATES:
The routines aurad.c (2.4) and calc_netshort (2.4) had their comment
blocks corrected. cmd_proc.c (2.3) now prints the usage message, and
exits the model, if the "-g" flag was not used to define the model
global control file.
November 4, 1998 VIC-nL release 2.12.2
BUG REPORT:
Allocation of layer array in the subroutine prepare_full_energy.c
did not work correctly when compiled with SUN cc compiler (works
correctly with gcc), and did not produce error messages. Problem
fixed, new code is full_energy.c (v. 2.13).
October 22, 1998 VIC-nL release 2.12.1
BUG REPORT:
A problem with the calculation of the snow pack temperature was
fixed. During melt, melt water was removed from the pack and
added to the surface layer. In most cases it drained through
without problem, but if it was recaptured by the pack layer, it
was readded to the cold content, causing the pack layer temperature
to become very cold. This should not significantly change snow
pack water content but will influence the energy balance when the
pack layer finally melts, and it's cold content is added to the
surface layer.
This version also fixes a few minor problems with output formats.
MODEL UPDATES:
Distributed precipitation exponential is now an option in the
model control file. Water density is no longer calculated in
the snow melt routines, instead it has been set to a constant
value. This has little effect on snow pack simulations, but
does reduce computational time.
*****************************************************************************
All notes from the release of version 2.11 to 10-22-98 have been
lost. It is recommended that all model users who have not updated
their version of the code since early October should get the latest
version. This will ensure that all users have all updates and
patches released in the last month.
*****************************************************************************
July 16, 1998 VIC-NL release 1.2.2
BUG REPORT:
The potential snow melt term needs to be divided by the density
of water, so in previous versions too little snow managed to
fall out of the tree and add to ground accumulation. Fix has been
incorporated into release 1.2.2, or the fixed version of
snow_intercept.c can be retrieved directly from the ftp-site.
July 14, 1998 VIC-NL release 1.2.2
BUG REPORT:
Missing brackets in vicNl.c may cause model to crash in Full Energy
balance mode.
UPDATE:
When root_brent fails to find a solution to the surface energy
balance equations, model now dumps all parameters used so that
they can be checked for invalid parameters or data values.
July 9, 1998
BUGS REPORT:
VIC-NL release 1.2.1: or patch files runoff.c, read_vegparam.c,
rad_and_vpd.c, full_energy.c and vicNl.c
a) Missing line in runoff.c causes a Bus Error since a variable
is not allocated. b) If vegetation fractions sum to 1. or
total coverage, sometimes computer rounding errors cause the
sum to be greater than 1, and model exited. Model now adjusts
vegetation fractions by dividing each by the coverage sum resulting
in a total vegetation coverage of 1. c) Occasionally the
routine rad_and_vpd.c may encounter a situation where the value
of deltat equals 0, which in turn will result in a NaN which will
propogate through the model. deltat is no longer allowed to equal 0.
d) Finished fix to vapor pressure deficit problems caused by rapidly
changing air temperature in daily time step water balance model.
e) Corrections were made to the header in vicNl.c.
July 8, 1998
UPDATE:
VIC-NL release 1.2 has been made available. It fixes problems
found in release 1.1 during tests in the Arctic basin, including
an improved algorithm for estimating hourly air temperature
from daily maximum and minimum temperature records. Model
should still not be run with both distributed precipitation
and full energy balance. Fixes for this problem, and the addition
of elevation bands into the snow model will be made available
with release 2.0, hopefully in the next couple of weeks. KAC