Goto Hydrologic Models Page Goto CE Home Page Goto CE Home Page Goto UW Home Page
Goto VIC Model Home Page

VIC Bug Report, and Update Announcements

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:

  1. Run "grep Id *.c > ver_old.txt" in the directory with your current source code.
  2. Get the most recent version header file, if you did not download the entire source code package.
  3. Use xemacs file compare, sdiff, diff, or another file comparison package to compare the two header files for differences.
  4. Modified files can then either be directly substituted, or a compare can be run between the complete source files to identify the exact differences.

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

    

Goto VIC Model Home Page
Goto Hydrologic Models Page Goto CE Home Page Goto CE Home Page Goto UW Home Page


VIC Administrator
Last modified: Tue Aug 15 17:40:14 PDT 2000