Skip to content

Releases: UW-Hydro/VIC

Release of VIC 4.1.2

20 Aug 19:45
Compare
Choose a tag to compare

***** Description of changes from VIC 4.1.2 to VIC 4.1.2.a *****

Bug Fixes:

Incorrect timing of disaggregated radiation and air temperature when daily
forcings are supplied and off_gmt is 0.

Files Affected:

initialize_atmos.c

Description:

VIC was double-shifting the timeseries of subdaily radiation and
temperature in cases in which VIC was *not* given sub-daily incoming
shortwave as an input forcing *and* soil parameter "off_gmt" was not
set to the local time zone offset (i.e. not set to longitude*24/360).
This caused incorrect timing of the diurnal cycle of radiation and
air temperature.

This has been fixed.

Disaggregated radiation is constant throughout the day when daily incoming
shortwave radiation is supplied as an input forcing.

Files Affected:

initialize_atmos.c
mtclim_constants_vic.h
mtclim_vic.c
mtclim_wrapper.c

Description:

When VIC was supplied with *daily* incoming shortwave as an input
forcing variable, VIC would fail to disaggregate this correctly to
sub-daily time steps; it would simply repeat the daily average for
every sub-daily time step.  This has been fixed.  Now VIC will
compute a diurnal cycle whose daily average matches the supplied daily
average.

***** Description of changes from VIC 4.1.1 to VIC 4.1.2 *****

New Features:

Cleaned up the sample global parameter file

Files Affected:

get_global_param.c
global.param.sample
initialize_global.c

Description:

The large number of options available in VIC 4.1.2 has begun
to clutter the global parameter file, making it difficult for
users to determine which options need to be set.

Now the sample global parameter file groups the various options
into several categories, making a clear distinction between
those options that need to be changed by the user for each
simulation, and those that rarely need to be changed.  Those
options that rarely need to be changed are commented out, and VIC
now sets those options to the most commonly-used default values.

Removal of obsolete model options

    Files Affected:

    arno_evap.c
    canopy_evap.c
    close_files.c
    cmd_proc.c
    compute_zwt.c
    display_current_settings.c
    dist_prec.c
    frozen_soil.c
    full_energy.c
    func_canopy_energy_bal.c
    func_surf_energy_bal.c
    get_global_param.c
    global.h
    global.param.sample
    initialize_global.c
    initialize_lake.c
    initialize_model_state.c
    initialize_snow.c
    Makefile
    open_debug.c (removed)
    put_data.c
    read_lakeparam.c
    read_soilparam_arc.c
    read_soilparam.c
    read_veglib.c
    read_vegparam.c
    runoff.c
    store_moisture_for_debug.c (removed)
    surface_fluxes.c
    user_def.h
    vicerror.c
    vicNl.c
    vicNl_def.h
    vicNl.h
    write_atmosdata.c (removed)
    write_data.c
    write_debug.c (removed)

    Description:

We have removed some of the available model simulation options, due
to their being unrealistic or rarely used.  These include:

  GF_FULL value of GRND_FLUX_TYPE option.  This setting double-counted
    the effect of canopy attenuation of radiation.
  AR_COMBO value of AERO_RESIST_CANSNOW option.  This setting double-
    counted the effects of canopy snow on aerodynamic resistance.
  LINK_DEBUG option.  This user_def.h option would print out values of
    various water balance terms for debugging purposes, but was rarely
    used and difficult to maintain.

Overhaul of meteorological forcing processing

    Files Affected:

    alloc_atmos.c
    CalcBlowingSnow.c
calc_air_temperature.c
calc_longwave.c
display_current_settings.c
    get_force_type.c
    get_global_param.c
    global.param.sample
    initialize_atmos.c
    initialize_global.c
    Makefile
    mtclim_constants_vic.h (was mtclim42_vic.h)
    mtclim_parameters_vic.h (new file)
    mtclim_wrapper.c (was mtclim42_wrapper.c)
    mtclim_vic.c (was mtclim42_vic.c)
    output_list_utils.c
    put_data.c
    read_atmos_data.c
    read_soilparam.c
    vicNl_def.h
    vicNl.h
    write_forcing_file.c

    Description:

Numerous bug fixes and improvements to VIC's meteorological forcing
processing.

Bug fixes:

Two main bugs fixed, both primarily affecting high-latitude grid
cells:

1. On days having only 1 hour of darkness, the diurnal cycle
   of temperature was incorrect, skipping that day's minimum
   temperature and smoothly transitioning to the next day's
   maximum.

2. The seasonal evolution of the diurnal cycle of solar radiation
   was always 366 days long, so that the number of daylight hours got
   increasingly out of phase with the time of year (by one day per
   non-leap year) as the simulation progressed.  After 20-30 years,
   the diurnal cycle was substantially different from what it should
   be.  Above 60 N, the number of days having no sunlight was
   substantially longer than it should be.

Also fixed inconsistencies in the timing of meteorological variables
when sub-daily met variables were supplied by the user.  Now, we have
adopted the following convention:
      daily supplied forcings are assumed to start/end at midnight in
    local time; for these forcings, off_gmt in the soil parameter file
    is ignored
  sub-daily supplied forcings are assumed to occur relative to the time
    zone indicated by off_gmt in the soil parameter file

New features:

    Updated VIC's internal version of the MTCLIM forcing disaggregation
    functions from version 4.2 (Thornton and Running, 1999) to include
elements of version 4.3 (Thornton et al 2000).  

    This update includes 6 main changes to the forcing estimation scheme:

    1. Optional correction of downward shortwave for the effect of snow.
   In the presence of snow, incoming shortwave radiation has been
   observed to be higher than MTCLIM 4.2's estimates, due to
   scattering of light from the snow back into the atmosphere (and
   ultimately back to the ground again).  This correction is optional
   and is controlled by the new global parameter option MTCLIM_SWE_CORR.
   If this is set to TRUE, the correction is performed when snow is
   present on the ground (estimated by a simple degree-day model in
   the forcing pre-processor).  If FALSE, the correction is not
   performed (and shortwave is estimated as in previous versions of
   VIC).  The default value of MTCLIM_SWE_CORR is TRUE.

    2. Optional changes in the iteration between shortwave and VP
   estimates.  The algorithm for estimating shortwave requires
   observed VP as an input; the algorithm for estimating VP requires
   observed shortwave as an input.  Therefore, when neither quantity is
   observed, MTCLIM 4.2 (and previous versions of VIC) used the
   Tdew = Tmin approximation to supply the shortwave estimate with
   an estimate of daily vapor pressure.  Then the resulting shortwave
   estimate was used to compute a more accurate estimate of Tdew and
   vapor pressure.  MTCLIM 4.3 imposes an annual aridity criterion for
   performing this final step; for humid environments (annual PET <
   2.5 * annual precip) the scheme simply assumes daily Tdew = daily
   Tmin.  We have found that this behavior introduces a strong
   positive bias into vapor pressure, and have chosen to make it
   optional.  Therefore, we have introduced the new global
   parameter option VP_ITER to control the shortwave-vp iteration.  It
   can take on the following values:

     VP_ITER_NEVER = never perform the final update of Tdew and VP
     VP_ITER_ALWAYS = always perform the final update of Tdew and VP
     VP_ITER_ANNUAL = use the annual aridity criterion (annual PET <
                          2.5 * annual precip) do decide whether to perform
                      the final update
     VP_ITER_CONVERGE = continue iterating between shortwave and vp
                        until the two values stabilize (this tends
                        to give almost identical results to
                        VP_ITER_ALWAYS)

   The default value of VP_ITER is VP_ITER_ALWAYS.

3. To make the sub-daily values of VP more accurate, we have introduced
   another global parameter option: VP_INTERP.  If set to TRUE, VIC will
   assign the daily VP value computed by the MTCLIM functions to the
   time of sunrise on that day, and interpolate linearly between sunrise
   vapor pressure values of adjacent days.  If set to FALSE, VIC will
   hold vapor pressure constant over the entire day as in previous
   versions.  The default value of VP_INTERP is TRUE.

4. Alternative clear-sky longwave algorithms.  We have introduced a
   new global parameter option: LW_TYPE.  This option determines which
   algorithm is used to compute clear-sky longwave radiation.
   Choices are:

     LW_TVA = algorithm of Tennessee Valley Authority (TVA, 1972)
    (This is what all previous versions of VIC have used.  Our tests
    indicate that this algorithm is still the best when observed
    cloud fractions are unavailable and are estimated by MTCLIM,
    which is the current situation for VIC.)
     LW_ANDERSON = algorithm of Anderson (1964)
     LW_BRUTSAERT = algorithm of Brutseart (1975)
     LW_SATTERLUND = algorithm of Satterlund (1979)
     LW_IDSO = algorithm of Idso (1981)
     LW_PRATA = algorithm of Prata (1996) (Our tests indicate that
    this algorithm is best when observed cloud fractions are
    supplied as a forcing.)

   Default is set to LW_TVA.

5. Alternative cloud longwave emission algorithms.  We have introduced
   a new global parameter option: LW_CLOUD.  This option
   determines which algorithm is used to simulate the effect of
   cloudiness on incoming longwave radiation.  Choices are:

     LW_CLOUD_BRAS = algorithm composed of equations 2.29 and 2.43
    from the Bras textbook (Bras, R. L., "Hydrology, an
    introduction to hydrologic science", Addison-Wesley, Reading,
    Massachusetts, 1990).  This was the algorithm used in all
    previous releases of VIC. (Our tests indicate that this
    algorithm introduces substantial temperature-dependen...
Read more

Release of VIC 4.1.1

20 Aug 19:40
Compare
Choose a tag to compare

***** Description of changes from VIC 4.1.0 beta r5 to VIC 4.1.1 *****

New Features:

Modified reporting of aerodynamic resistance in output files.

Files Affected:

full_energy.c
func_canopy_energy_bal.c
func_surf_energy_bal.c
output_list_utils.c
put_data.c
surface_fluxes.c
vicNl_def.h
wetland_energy.c

Description:

Replaced the existing variables aero_resist_used and Ra_used with
arrays of two elements each; [0] corresponds to surface values
(bare soil or non-overstory veg; with snow or snow-free) and [1]
corresponds to overstory or non-overstory veg.  For non-overstory
veg, elements [0] and [1] are the same.

Added the following output variables to store the average aerodynamic
conductance and resistance of the grid cell corresponding to elements
[0] and [1], respectively: OUT_AERO_COND1, OUT_AERO_COND2,
OUT_AERO_RESIST1, and OUT_AERO_RESIST2.  Changed the computation
of OUT_AERO_COND and OUT_AERO_RESIST to be "scene" values, i.e.
veg tiles containing overstory contribute their overstory (element
[1]) values, and non-overstory veg tiles contribute their surface
(element [0]) values.  Earlier versions of VIC simply output the
values of AERO_COND and AERO_RESIST computed latest during the time
step (whether from surface or overstory).

Added AERO_RESIST_CANSNOW option.

Files Affected:

display_current_settings.c
func_canopy_energy_bal.c
get_global_param.c
global.param.sample
initialize_global.c
vicNl_def.h

Description:

This option allows the user to control how aerodynamic resistances
in the overstory are corrected for the presence of snow in the canopy.

Possible values are:
  AR_406: Multiply aerodynamic resistance by 10 for latent heat
      calculation but NOT for sensible heat, and do NOT apply
      stability correction, as in VIC 4.0.6 and earlier.
      Additionally, use surface aero_resist for ET when no
      no snow in canopy.
  AR_406_LS: Multiply aerodynamic resistance by 10 for both latent
      and sensible calculations, but do NOT apply stability
      correction.  Additionally, use surface aero_resist for
      ET when no no snow in canopy.
  AR_406_FULL: Multiply aerodynamic resistance by 10 for both latent
      and sensible calculations, but do NOT apply stability
      correction.  Always use canopy aero_resist for ET.
  AR_410: Apply stability correction but do not multiply by 10, as in
      VIC 4.1.0.  Always use canopy aero_resist for ET.
  AR_COMBO: Apply stability correction and multiply resulting resistance
      by 10.  Always use canopy aero_resist for ET.

VIC 4.1.0 differed from VIC 4.0.6 (and earlier) in the computation
of aerodynamic resistances in snow-filled canopy.  This new option
allows backwards-compatibility with both of these model versions, as
well as the new "AR_406_LS", "406_FULL" and "AR_COMBO" options, for
comparison.  The default is set to AR_410.

Reinstated the COMPUTE_TREELINE option, with option to supply the average July
air temperature.

Files Affected:

compute_treeline.c
display_current_settings.c
get_global_param.c
global.param.sample
initialize_atmos.c
initialize_global.c
read_snowband.c
read_soilparam_arc.c
read_soilparam.c
read_vegparam.c
user_def.h
vicNl.c
vicNl.h
vicNl_def.h

Description:

COMPUTE_TREELINE:

This option revives the treeline elevation computation that is a
current feature of VIC 4.0.x.  If set to TRUE this flag will
force the VIC model to compute the elevation of the tree line,
based on elevation at which the average annual July air temperature
is at or below 10C.  All snowbands above this evelation are then
assumed to be above the treeline, and vegetation types with
overstory are removed from the snow band average variables.  If no
non-overstory vegetation types exist in an above-treeline band,
the band will be treated as if it consists of a default vegetation
type, specified by the user.

To use this option, insert the following line into the global
parameter file:
  COMPUTE_TREELINE  n
where n is the id number of the desired default vegetation type to use
when no non-overstory vegetation types exist in the band.  To specify
bare soil, set n to a negative number.

To deactivate treeline calculation, change the line in the global
parameter file to
  COMPUTE_TREELINE FALSE
or remove the line from the global control file.

WARNING #1: Since the model does not store default root zone
distributions, the default vegetation type will use the
values from the last defined vegetation type for the current
grid cell (i.e. veg type N-1, prior to the addition of the
new vegetation type).

WARNING #2: If you are using GLOBAL_LAI, than the LAI and
dew storage terms for the default vegetation type will be set
to the values used by the last occurrence of the default
vegetation type.

JULY_TAVG_SUPPLIED:

The default behavior of VIC is to compute the average July temperature
from the meteorological input forcings, over the time span of the
simulation.  One drawback to this behavior is that, for short
simulations over different periods of time, the average July
temperature can vary enough to change which elevation bands are
considered to be above the treeline.

Therefore, if desired, the user can specify the average July
temperature for each grid cell by taking the following 2 steps:
  1. Add each grid cell's average July air temperature to the soil
     parameter file, as the final field on each line.
  2. Set JULY_AVGT_SUPPLIED = TRUE in the global parameter file

The JULY_AVG_SUPPLIED option is ignored if COMPUTE_TREELINE is FALSE.

Added OUT_VPD output variable.

Files Affected:

output_list_utils.c
put_data.c
vicNl_def.h
write_forcing_file.c

Description:

Added the output variable OUT_VPD to track vapor pressure deficit.

Added OUT_ASAT output variable.

Files Affected:

full_energy.c
output_list_utils.c
put_data.c
runoff.c
surface_fluxes.c
vicNl_def.h
vicNl.h
wetland_energy.c

Description:

Added the output variable OUT_ASAT to track saturated area.

New MIN_LIQ option, with fixes to min_liq formulation.

Files Affected:

arno_evap.c
display_current_settings.c
frozen_soil.c
get_global_param.c
global.param.sample
initialize_global.c
initialize_model_state.c
initialize_soil.c
lakes.eb.c
runoff.c
soil_conduction.c
vicNl_def.h
vicNl.h

Description:

Made use of min_liq (instead of residual moisture) optional, via
options.MIN_LIQ.  If MIN_LIQ is FALSE (or omitted) in global
parameter file, all equations that depend on liquid soil moisture
use residual moisture as their absolute minimum liquid water
content.  If MIN_LIQ is TRUE, all of these equations use min_liq
as their absolute minimum liquid water content.  Min_liq is
computed in soil_conduction.c as residual moisture multiplied
by the max_unfrozen_water content at the current temperature.

Made min_liq formulation more consistent across the model code.
Added min_liq to the layer_struct so that this temperature-dependent
quantity can be computed once per time step and communicated to all
functions that look at soil moisture.           TJB

New PLAPSE option, which lapses air pressure (and density) by grid cell average elevation.

Files Affected:

display_current_settings.c
global.param.sample
initialize_atmos.c
initialize_global.c
vicNl_def.h

Description:

Previously, when air pressure was not supplied in the input forcings,
VIC would set it equal to a constant 95.5 kPa.  Now, if options.PLAPSE
is TRUE, and if air pressure is not supplied, VIC computes it by
lapsing sea level pressure by grid cell average elevation.  Air
density is handled the same way.            TJB

New GRND_FLUX_TYPE option, with fixes to deltaH and fusion equations.

Files Affected:

display_current_settings.c
func_surf_energy_bal.c
get_global_param.c
global.param.sample
initialize_global.c
surface_fluxes.c
vicNl_def.h

Description:

Corrected deltaH and fusion terms of surface energy balance, by taking
surf_atten into account, as in Liang et al 1999.  Added GRND_FLUX_TYPE
option, to allow backwards compatibility with versions 4.0.6 and
4.1.0.

Possible values are:
  GF_406: use (flawed) formulas for ground flux, deltaH, and fusion
          from VIC 4.0.6 and earlier
  GF_410: use formulas from VIC 4.1.0 (ground flux is correct,
          but deltaH and fusion ignore surf_atten)
  GF_FULL: use correct ground flux formula from VIC 4.1.0 and
          also take surf_atten into account in deltaH and fusion
GF_FULL is the default value.

Added validation of Campbell's expt and bubble pressure.

Files Affected:

read_soilparam.c

Description:

Previously, VIC did not check to see if "nodata" values such as -9999
were supplied in the soil parameter file for the Campbell's expt and
bubble pressure parameters.  These values would produce "nan" in
computations of soil hydraulic conductivity and soil ice content.  This
is especially insidious in the case of bubble pressure, as it is not
needed for the water balance mode, and therefore users often set it to
"nodata" values for water balance mode runs.  Subsequently using such a
soil parameter file for a full-energy balance or frozen soil simulation
would cause the model to crash without the cause being clear.  Now, the
validation in read_soilparam() prevents this case.

Note: read_soilparam_arc() computes these quantities internally and
already validates their values.

Added TFALLBACK option, to continue with previous temperature when energy
balance iteration fails to converge.

Files Affected:

calc_atmos_energy_bal.c
calc_surf_energy_bal.c
dist_prec.c
display_current_settings.c
frozen_soil.c
func_surf_energy_bal.c
get_global_param.c
global.param.sample
ice_melt.c
initialize_global.c
initialize_lake.c
initialize_model_state.c
lakes.eb.c
output_list_utils.c
put_data.c
root_brent.c
snow_intercept.c
snow_melt.c
solve_snow.c
surface_fluxes.c
vicNl_def.h
vicNl.h

Description:

Added options.TFALLBACK, which can take the following values:
  TRUE: If energy balance solution fails to converge, ...
Read more

Release of VIC 4.1.0

20 Aug 19:43
Compare
Choose a tag to compare

***** Description of changes from VIC 4.1.0 beta r4 to VIC 4.1.0 beta r5 *****

New Features:

Updated lake model.

Files Affected:

full_energy.c
get_dist.c (new)
ice_melt.c
initialize_lake.c
lakes.eb.c
LAKE.h
Makefile
output_list_utils.c
put_data.c
read_initial_model_state.c
read_lakeparam.c
read_soilparam_arc.c
read_soilparam.c
vicNl_def.h
vicNl.c
vicNl.h
water_energy_balance.c
water_under_ice.c
wetland_energy.c
write_model_state.c

Description:

Merged Laura Bowling's latest lake model code into UW version.
Changes include:
  * Fixed lake snow physics to be consistent with land snow pack
  * Lake ice formation now takes into account availability of liquid water
  * Lake ice now explicitly tracked in water balance
  * Drainage now depends only on liquid water content, not total water+ice
  * Drainage now modeled as flow over broad-crested wier
  * New lake parameter file format - see read_lakeparam.c for details
  * Fixes for crashes in extreme cases; fixes for water balance errors
  * New output variable OUT_SOIL_TNODE_WL, the soil thermal node
    temperatures in the wetland tile
                                    LCB via TJB

New optional snow density computation.

Files Affected:

display_current_settings.c
get_global_param.c
initialize_global.c
snow.h
snow_utility.c
solve_snow.c
user_def.h
vicNl_def.h
vicNl.h

Description:

In addition to the previous algorithm (as a function of day of year,
based on a plot of seasonal variation of typical snow densities found
in Bras, figure 6.10, p 258), added a new algorithm that computes the
snow density based on swe and snow metamorphism.  The new algorithm is
taken from SNTHERM89, adjusted for an essentially single-layer model.
Introduced a new global parameter file option, SNOW_DENSITY, to choose
which of these density algorithms will be used.  If SNOW_DENSITY is set
to DENS_BRAS, the original algorithm is used.  If SNOW_DENSITY is set
to DENS_SNTHRM, the new algorithm is used.  The default value (i.e. if
SNOW_DENSITY is omitted) is DENS_BRAS.  Also moved snow-related
constants from user_def.h to snow.h, for consistency.           KMA via TJB

New optional snow albedo algorithm.

Files Affected:

display_current_settings.c
get_global_param.c
initialize_global.c
LAKE.h
lakes.eb.c
snow_utility.c
solve_snow.c
vicNl_def.h
vicNl.h

Description:

In addition to the previous algorithm (based on US Army Corps of
Engineers empirical snow albedo decay curves), added a new algorithm
based on Sun et al., 1999.  Introduced a new global parameter file
option, SNOW_ALBEDO, to choose which of these density algorithms will
be used.  If SNOW_ALBEDO is set to USACE, the original algorithm is
used.  If SNOW_ALBEDO is set to SUN1999, the new algorithm is used.
The default value (i.e. if SNOW_ALBEDO is omitted) is DENS_BRAS.    KAC via TJB

Bug Fixes:

Allow lakes to be empty or very shallow.

Files Affected:

initialize_lake.c
initialize_model_state.c
LAKE.h
lakes.eb.c
read_lakeparam.c
wetland_energy.c

Description:

Previously, lakes could not be initialized to be empty or with volume
below the minimum volume of 1 lake node.  This modification removes
that constraint.  In addition, the lake-specific get_* functions were
modified to return ErrorFlag values instead of aborting on error,
making them more consistent with the CONTINUEONERROR option.        KAC via TJB

Miscellaneous fixes to lake model

Files Affected:

lakes.eb.c
read_lakeparam.c
wetland_energy.c

Description:

Fixes for swe accounting errors and incorrect parsing of lake
parameter file.                             LCB via TJB

Lake snow and ice fixes

Files Affected:

LAKE.h
lakes.eb.c
vicNl_def.h

Description:

Modified to set lake ice fraction to 0 if new lake fraction is 0.
Previously lake ice was always adjusted by dividing old by new fractions,
which causes nans when the new fraction is 0.  Modified redistribution of
snow variables between wetland and lake ice.  Surface water is now stored
as a lake variable and used to reestablish surf_water at the start of a
new time step.                              KAC via TJB

Better validation of global parameter file options

Files Affected:
get_global_param.c
make_in_and_outfiles.c
parse_output_info.c
read_soilparam_arc.c
read_vegparam.c

Description:
Now, all options in the global parameter file involving input and
output files are checked to ensure that the filenames have been
specified.  In addition, SOIL_DIR and RESULT_DIR no longer require
a trailing "/"; a "/" is automatically appended when constructing
the soil parameter filename or results filename.  Also, makes sure
that N_OUTFILES matches number of output files actually defined in
the global param file.                          TJB

Incorrect soil ice fractions for the case when FROZEN_SOIL = TRUE and
options.SNOW_BAND > 1.

Files Affected:

full_energy.c
prepare_full_energy.c
surface_fluxes.c

Description:

Changed initial total and frozen moistures from scalars (moist and
ice0) to arrays (moist0 and ice0).  Previously, when
options.SNOW_BAND > 1, the values of moist and ice0 computed for
earlier bands were always overwritten by the values of moist and
ice0 computed for the final band (even if the final band had 0
area).                                  JS and KAC via TJB

Bad results when SNOW_STEP = 24 hours

Files Affected:

get_global_param.c
initialize_atmos.c

Description:

Fixed the criterion for deciding whether to store NET longwave or
INCOMING longwave in atmos[rec].longwave[NR].  Previously, VIC
stored NET lw if SNOW_STEP != global.dt, under the assumption that
this condition was equivalent to running in 24 h water balance mode.
However, this caused problems for users who unwittingly ran 24 h
water balance mode with SNOW_STEP = 24.  The new criterion is that
both FULL_ENERGY and FROZEN_SOIL must be FALSE.             TJB

Incorrect setting for NOFLUX option in calc_surf_energy_bal()

Files Affected:

calc_surf_energy_bal.c

Description:

Modified code to reset NOFLUX boundary to global option
value before computing final soil column temperatures.
Previously NOFLUX was set to FALSE for initial QUICK_SOLVE
estimates, but never reset to reflect actual bottom
boundary conditions for final pass through solver.          KAC

Removed -g from normal compiling options.

Files Affected:

Makefile

Description:

At some point, "-g" was added to the normal compiling options.
This has been removed.  To use the -g option, users should uncomment
the "debug" section of the makefile.                    TJB

Changed "vicInterp" to "vicDisagg".

Files Affected:

Makefile

Description:

Changed the name of the makefile option to compile vic with the
OUTPUT_FORCE option set to TRUE.  The term "disaggregate" is more
correct than the term "interpolate", so "vicDisagg" seems more
appropriate.  The usage of this option is as follows:

At command prompt, type
    make disagg

This will create the executable vicDisagg, which is simply vicNl
compiled with OUTPUT_FORCE set to TRUE in user_def.h.           TJB

Added end-of-file check to read_lakeparam.c

Files Affected:

read_lakeparam.c

Description:

Added check on !feof(lakeparam) to loop over lake param file, to
avoid infinite loop when current grid cell has no lakes and is not
mentioned in the lake param file.                   TJB

Compilation problems for QUICK_FS user_def.h option

Files Affected:

func_surf_energy_bal.c
get_global_param.c
initialize_model_state.c
read_lakeparam.c
water_energy_balance.c
wetland_energy.c

Description:

Previous updates for the EXCESS_ICE option had inadvertently introduced
bugs into the logic for the QUICK_FS option.  These included removal of
the logic that modifies calls to distribute_node_moisture_properties()
and estimate_layer_ice_content().                   TJB

OUT_SUB_BLOWING, OUT_SUB_SURFACE, and OUT_SUB_SNOW missing from default snow_*
output files.

Files Affected:

set_output_defaults.c

Description:

Added OUT_SUB_BLOWING, OUT_SUB_SURFACE, and OUT_SUB_SNOW to default
snow output file for case of options.BLOWING == TRUE.  This makes it
almost the same as previous versions of 4.1.0, (r3 and earlier) with
the exception that previous versions of 4.1.0 multiplied these terms
by 100 when saving to the snow file.                    TJB

Error in computation of initial water storage for DIST_PRCP = TRUE

Files Affected:

vicNl.c

Description:

Added dist_prcp fraction (mu) to the computation of initial water
storage terms.  Otherwise, when DIST_PRCP = TRUE, the water storage
terms for wet and dry fractions were added together with no weighting,
resulting in twice the storage as actually present.         TJB

Fixed various issues with uninitialized variables, un-freed arrays, NaN's, etc.

Files Affected:

dist_prec.c
put_data.c
read_vegparam.c
runoff.c
surface_fluxes.c
vicNl.h

Description:

put_data() was attempting to return an ErrorFlag but it was defined
as type int.  Therefore, changed the type of put_data() and changed
the call to put_data() in dist_prec.c.  read_vegparam() allocated
but never freed a temporary array vegarr[].  This was fixed.
In runoff(), top_moist could sometimes exceed top_max_moist due
to rounding errors, leading to NaN's in i_0 and A_0.  surface_fluxes()
was sending incorrectly-indexed displacement and roughness values to
CalcBlowingSnow().  These have all been fixed.      LCB via TJB

***** Description of changes from VIC 4.1.0 beta r3 to VIC 4.1.0 beta r4 *****

New Features:

Flexible output configuration & aggregation of output variables

    Files Affected:

    Makefile
alloc_atmos.c
calc_water_energy_balance_errors.c (new)
close_files.c
conv_force_vic2alma.c (removed)
conv_results_vic2alma.c (removed)
display_current_settings.c
dist_prec.c
full_energy.c
get_global_param.c
global.h
global.param.sample
IceEnergyBalance.c
initialize...
Read more

Release of VIC 4.0.4

20 Aug 19:34
Compare
Choose a tag to compare

June 4, 2003: VIC release 4.0.4beta r2

This covers bugs found during tests with the snow algorithm.

    solve_snow.c: Bug found by KAC
    Counter for number of days since last snowfall was 
    incremented twice in the MELTING update.  This has been
    fixed.
solve_snow.c: modification by KAC
    Added check so that MELTING flag is only TRUE if melt
    occurs in the melt season - currently this is defined
    between March 1 and October 1.  Otherwise the MELTING
    flag can trigger rapid very early season melt
write_model_state.c, read_initial_model_state.c, open_state_file.c,
check_state_file.c: Modification by KAC
    Modified to handle both ASCII and BINARY state files.
    NOTE: ASCII mode is designed to make it easier to create 
    a state file for initializing a point model.  It includes 
    all features of the Binary state file, but values are 
    truncated so the resulting restart will not be identical.
    If you need an exact restart, use the Binary files.  Also
    removed ice content from the state file as it is computed
    at the beginning of each time step, so storing its value
    is unnecessary.

April 23, 2003: VIC release 4.0.4beta r1

This covers bug fixes found by beta testers and fixed in the version of
the code bundled with this file.

surface_fluxes.c: (found by Ingjerd Haddeland)
    Indexing fix sent SNOW_STEP to calc_surf_energy_bal rather
    than the model time step, meaning that without snow the 
    evaporation was computed for SNOW_STEP hours rather than a
    full day.  This was fixed by introducing step_inc to 
    index the arrays, while step_dt keeps track of the correct
    time step. 

March 27, 2003: VIC release 4.0.4beta

This release covers patches for several bugs found in 4.0.3, which were
never formally released (i.e. the downloadable source code was modified,
but no major announcement was made). It also includes other fixes and
modifications that have been identified as being needed prior to releasing
version 4.1.0, which will involve several significant changes (including
lakes & wetlands, spatial snow & frost, and a closed canopy energy balance).

Modifications:

Snow albedo update: (found by Keith)
     In previous releases, the snow albedo function has been hyper 
     sensitive to trace amounts of snowfall during the melt period.  
     Whenever new snow falls or the cold content falls below 0, the 
     albedo is switched from the ablation curve to the accumulation 
     curve.  This curve is then followed until the cold content 
     exceeds 0, indicating it is in the spring melt season.  This is 
     fine when accounting for thin early season snowpacks or mid-
     season melt events, however, a cold snap or light dusting of 
     snow should not reset the snowpack albedo to much higher winter 
     values for days or weeks at a time.  This release of the model 
     monitors the state of pack with the variable MELTING.  This 
     flag keeps the snowpack on the ablation curve unless new snow-
     fall exceeds a threshold (TraceSnow in user_def.h) indicating 
     that the top of the snowpack should be represented by the albedo 
     of the new snow.
Model initialization: (found by Ulysses and Keith)
     In previous releases, the initialization of soil layer moist[] 
     and ice[] was within a second set of loops for band and 
     vegetation, using the same counters.  Because of the dual use
     of counters, initialization was not completed correctly.  The
     primary effect of this was that thermal node values beyond the
     first vegetation type were not correctly initialized, which 
     caused the model to crash during some simulations with full
         energy or frozen soils active.  Without frozen soil, most 
     simulations would compensate for the problem within their
     spin-up time, so it is unlikely that this bug impacts any 
     simulations not employing frozen soil.
Snow time step: (found by Andy, et al.)
     The snow algorithm needs to run sub-daily for the energy balance
     components to function properly.  This means that for daily 
     simulations, the snow model must be solved at a finer (sub-daily)
     time step.  In the previous release, initialize_atmos.c stored
     sub-daily met data in each days variable using positions (e.g. 
         0,1,..8 for 3 hour data).  In surface_fluxes.c the model indexed 
     the sub-daily time steps used by the snow algorithm with hours 
     (e.g. 0,3,6,...21 for three hour data).  This means the arrays
     were incorrectly indexed and the resulting model simulations 
     would be wrong.  The fix implemented here has been tested under 
     several model configurations and is deemed the official version.
     WARNING: There are several versions of this fix circulating,
     please update your code to this version - the previous fixes
     may not work in all circumstances!
FROZEN_SOIL active flag: (found by Ed and Justin)
     The cause of the problem is a bug in the code that occurs when 
     the global frozen soils flag (FROZEN_SOILS) is set to true but 
     the individual cell frozen soil flag (FS_ACTIVE) is set to 
     false. This causes the change in soil heat storage to be 
     calculated incorrectly.  This was fixed by adding additional
     conditions within frozen_soil.c and initialize_model_state.c,
     which verify the FS_ACTIVE is TRUE before running 
     estimate_layer_ice_content.  This avoids the problem of the 
     soil layer ice content being set to a positive value, ignored
     by the rest of the model.
Vapor pressure: (Keith)
     All internal vapor pressure calculations are now done in 
     Pascals.  Previous release versions, switched between Pa
     and kPa, so this simply removes the extra step.  The input
     file format is unchanged, so there should be no change to
     model output (model might run slightly faster, but it is
     also unlikely that this will be witnessed by a normal user).
Constant dew despite changing LAI: (Dave Peterson)
     The modification of read_vegparam.c to update LAI based on 
     a grid cell specific value did not change the values of Wdmax.  
     Wdmax values were computed in read_veglib.c based on the 
     default LAI values, so they did not necessarily reflect the 
     actually LAI values used for the grid cell.  Values for Wdmax 
     are now computed in read_vegparam.c whenever GLOBAL_LAI are 
     provided.  The effects of this change will change in magnitude
     based on how different the cell LAI values are from those in
     the default library file.
DRY_TIME error: (Reinur Schnur)
     DRY_TIME in dist_prcp.c was incremented by the time step in 
     hours.  Then to see if the current rain was part of the same 
     storm or the start of a new one, DRY_TIME was checked to see 
     if it was greater than or equal to 24/dt.  This compares 
     DRY_TIME in hours to the model time step.  The "/dt" has been 
     removed, so now DRY_TIME is checked versus the hours since the 
     last storm.
State file: (KAC)
     *** WARNING: This may require modifications to your global file ***
     The state file has been modified to account for model updates.
     It has also been converted to write binary files - this makes 
     them less convenient to edit, but means that model starts using
     the same forcing, soil and vegetation files will produce the
     exact same results.  There has also been a slight change in how
     the global file is set up to restart the model.  The global
     file should now have the same year, month, day and hour as the 
     original global file - the VIC model will compute the number of
     records to skip at the beginning to reach the point where the 
     model state was saved.  This means that calculations to yield
     sub-daily metrological forcings from daily forcings will produce 
     the exact same forcing values -> this also means that restarted
     simulations will be exactly the same as the original run.  Slight
     variations in the model results were also introduced because the
     method for storing soil node depths led to the possibility of 
     very small differences in dz_node for the restarted model.  
     Previous versions also did not store the snowpack cold content,
     this meant that for restarts during winter, the snowpack albedo
     might start on the ablation curve (as cold content was initialized
     to 0 and not to a value less than 0) rather than the accumulation
     curve.  This could lead to slight differences in the snowpack
     if no new snow fell and the snowpack was not melting - but
     after 10 years of simulations the differences were minor.  As 
     noted above the new version of the state file should allow the
     model to be restarted and to produce exactly the same results as
     the original complete result.  If there are cases where this is
     not true, please report.  If you edit the read/write model state
     functions - BE VERY CAREFUL to edit Nbytes to reflect any changes.
COMPUTE_TREELINE: (KAC and LCB)
     This is an added feature which computes the treeline elevation
     in the current grid cell and does not include vegetation 
     fractions with overstory in the grid cell averages for snow bands
     that exceed the treeline elevation.  This feature was added
     to the model to reduce the appearance of "glaciers" in high
     elevation snow bands.  It computes average annual July air
     temperatures using the temperature data from the atmospheric
     forcing files (WARNING - elevation of treeline may change if
     the period of forcing data used changes).  It then lapses the
     average annual July air temperature to locate the elevation 
     at which it equals 10C.  This is assumed to be the treeline,
     so vegetation types with overstory in snow bands with average 
     elevations higher than this, are excluded from the grid cell
     average varia...
Read more

Release of VIC 4.0.3

20 Aug 19:32
Compare
Choose a tag to compare

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

Release of VIC 4.0.2

20 Aug 19:31
Compare
Choose a tag to compare

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 returned without new data values.

Release of VIC 4.0.1

20 Aug 19:30
Compare
Choose a tag to compare

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.

Release of VIC 4.0.0

20 Aug 19:28
Compare
Choose a tag to compare

Date: May 16, 2000

From: Keith Cherkauer

Topic: Release of VIC 4.0.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/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
ftp://ftp.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.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.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.