Releases: pacificclimate/VIC
VIC Glacier
PCIC's heavily modified local version of VIC, which adds support for glacier mass balance calculation and output.
Minor fixes since last release:
- Fixed use of CF conventions time units for NetCDF output
- Fixed incorrect rounding off of 5th decimal place in netCDF output lat & lon (latitude & longitude) dimensions
VIC Glacier - usage notes
This document summarizes the changes in how the VIC Glacier release is invoked -- specifically changes to the global parameter file that the user needs to know about -- which has diverged somewhat from the original UW version.
Users can read the particular section pertaining to their current needs, or follow through this document from start to finish as an instructive example of how to carry out the following workflow:
-
read in forcing variables from a daily aggregated NetCDF forcing file, with standard variable names (with/without legacy type and multiplier parameters), and/or with custom names mapped to standard names
-
generate an hourly disaggregated forcing file, with/without custom output variable names
-
feed a previously generated hourly disaggregated forcing file into a VIC hydrological simulation
Some of the global parameter file snippets included show the new parameters related to glacier mass balance accumulation, which are fairly self-explanatory. To include additional available glacier-related variables in the NetCDF output of your hydrological simulation, add them to the Output Variables section of the global parameter file in the same way as other VIC variables. Documentation on the specifics of these output variables will be made available soon.
1. Reading in Standard and Custom Name-mapped Forcing File Variables
Users can now specify the variable names VIC should expect to see in a provided NetCDF forcing file (in case these are different from the 'standard' VIC input variable names). This applies to the read-in of both standard daily forcings and hourly disaggregated forcings (generated by VIC). This accomplished by using the following format for these particular parameters in the in the Forcing Files and Parameters section:
########################################################################
# Forcing Files and Parameters
########################################################################
# ...
# FORCING1 /path/to/forcing/file.nc
# FORCE_FORMAT NETCDF
# FORCE_ENDIAN LITTLE
# N_TYPES <number of forcing variables>
#
To provide legacy VIC forcings with integer types and scaling multipliers, and no input forcing variable name mapping:
# FORCE_TYPE <standard VIC varname> <type> <multiplier>
#e.g. FORCE_TYPE PREC UNSIGNED 40
Or, to provide legacy VIC forcings as above, along with input forcing variable name mapping:
# FORCE_TYPE <standard VIC varname> <type> <multiplier> <varname in forcing file>
#e.g. FORCE_TYPE TMIN SIGNED 100 tasmin
Or, to provide new VIC forcings (of float type by default), and no input forcing variable name mapping (this is likely the default case):
# FORCE_TYPE <standard VIC varname>
#e.g. FORCE_TYPE TMAX
Or, to provide new VIC forcings (of float type by default) with input forcing variable name mapping:
# FORCE_TYPE <standard VIC varname> <varname in forcing file>
#e.g. FORCE_TYPE AIR_TEMP ta
The default mappings within VIC of to expected variable names are as follows in Table 1.1:
Table 1.1: Default Forcing Variable Mappings
standard VIC varname | expected input forcing variable name | variable description | |
---|---|---|---|
AIR_TEMP | tas | air temperature | |
ALBEDO | ALBEDO | surface albedo | |
CHANNEL_IN | CHANNEL_IN | incoming channel flow | |
CAT_M | CAT_M | atmospheric CO2 mixing ratio | |
CRAINF | CRAINF | convective rainfall | |
CSNOWF | CSNOWF | convective snowfall | |
DENSITY | DENSITY | atmospheric density | |
FDIR | FDIR | fraction of incoming shortwave that is direct | |
LONGWAVE | rlds | incoming longwave radiation | |
LSRAINF | LSRAINF | large-scale rainfall | |
LSSNOWF | LSSNOWF | large-scale snowfall | |
PREC | pr | total precipitation | * |
PRESSURE | ps | atmospheric pressure | |
QAIR | huss | specific humidity | |
RAINF | RAINF | rainfall | |
REL_HUMID | rhs | relative humidity | |
SHORTWAVE | rsds | incoming shortwave radiation | |
SNOWF | prs | snowfall | |
TMAX | tasmax | maximum daily air temperature | * |
TMIN | tasmin | minimum daily air temperature | * |
TSKC | clt | cloud cover | |
VEGCOVER | VEGCOVER | partial vegetation cover fraction | |
VP | VP | atmospheric vapor pressures | |
WIND | wind | wind speed | * |
WIND_E | uas | east component of wind speed | |
WIND_N | vas | north component of wind speed |
- Default values marked with an asterisk (*) are the standard set of daily forcings provided in forcings_v2_1950-2006.nc.
2. Generating Disaggregated Forcings (OUTPUT_FORCE=TRUE)
In order to run VIC in meteorological disaggregation mode, i.e. to generate your own hourly forcing file, make the following changes to the global parameters file:
2.1
Move the OUTPUT_FORCE line to the bottom of the Simulation Parameters section and set it to TRUE (Note: old global files will have OUTPUT_FORCE located in the Output Files and Parameters section; cut and paste it from there to the end of Simulation Parameters, as the order that VIC reads global parameters now matters).
2.2
Change TIME_STEP to 1 (hourly), rather than 24, to indicate that the simulation will be run at hourly time steps.
For example:
########################################################################
# Simulation Parameters
########################################################################
TIME_STEP 1
SNOW_STEP 1
STARTYEAR 1960 # year to begin generating forcings for (this will be the start year in the output file)
END_YEAR 1995 # last year to generate forcings for
...
GLACIER_ID 22
GLACIER_ACCUM_START_YEAR 1970
GLACIER_ACCUM_START_MONTH 10
GLACIER_ACCUM_START_DAY 1
GLACIER_ACCUM_INTERVAL 1
OUTPUT_FORCE TRUE # indicates to VIC that it should only generate hourly forcing data, then exit (no hydrological simulation is executed)
2.3
In the Output Files and Parameters section, specify where you want the disaggregated forcings output file to be written, and optionally, the NETCDF_OUTPUT_FILENAME to give it in that location (if this parameter is not provided, the default filename will be results.nc). Specify the output time step size, OUT_STEP, as 1 for hourly, or 3 if you want output in 3-hour intervals, etc. (if this is left as 0, VIC will default to using the value given for the TIME_STEP parameter).
For example:
########################################################################
# Output Files and Parameters
########################################################################
RESULT_DIR /path/to/my/generated/disaggregated/forcing/file
NETCDF_OUTPUT_FILENAME hourly_disagg_forcings.nc
OUT_STEP 1
2.4
Optionally, provide mapping of output forcing variable names. If no mapped name is provided, the format will be used for the NetCDF variable name (e.g. OUT_WIND in the following example will result in the NetCDF variable name WIND in the output disaggregated forcings file). Note that N_OUTFILES, OUTFILE, and the value given are all ignored if the output file format is set to NetCDF, but still must be set correctly to the number of variables to be written (i.e. the number of OUTVAR lines to follow). These mapped forcings output variable names will be those that VIC will have to read in when you use the hourly forcings NetCDF file later as input to your simulation. If you choose the default mapping given in Table 1.1, VIC will recognize these as valid forcing inputs. If not, you will have to set the input forcing mappings accordingly, as shown in Section 3.2 (in this example, my_shortwave_varname would not be recognized by default as a valid forcing variable).
For example:
########################################################################
# Output Variables
#
# Format:
#
# N_OUTFILES <n_outfiles>
# OUTFILE <prefix> <nvars>
# OUTVAR <varname> [<output_varname>]
# OUTVAR <varname> [<output_varname>]
# OUTVAR <varname> [<output_varname>]
#########################################################################
For example:
# OUTFILE cell 8
# OUTVAR OUT_PREC pr
# OUTVAR OUT_AIR_TEMP ta
# OUTVAR OUT_SHORTWAVE my_shortwave_varname
# OUTVAR OUT_LONGWAVE rlds
# OUTVAR OUT_DENSITY DENSITY
# OUTVAR OUT_PRESSURE ps
# OUTVAR OUT_VP VP
# OUTVAR OUT_WIND # providing no mapping here will result in the standard VIC name "WIND" being used as the variable name in the output NetCDF. Note that the default forcing variable name VIC expects to read in is "wind". More on how to deal with this is given in Section 3.2.
3. Feeding Hourly Disaggregated Forcings into VIC
Time-major NetCDF forcing files generated by VIC in meteorological disaggregator mode (OUTPUT_FORCE=TRUE), being by default at hourly time steps, can be used as inputs to VIC in normal simulation run mode (OUTPUT_FORCE=FALSE).
To support reading of hourly disaggregated forcings into VIC, make the following modifications to the global parameter file:
3.1
In the Simulation Parameters section, declare the TIME_STEP (hourly forcings means hourly simulation time step, thus TIME_STEP=1) and start/end years of the simulation to be run, and provide the OUTPUT_FORCE (set to FALSE) parameter at the end of this section (**Note: old global files will have OUTPUT_FORCE in the...
VIC Glacier
First release of PCIC's heavily modified local version of VIC, which adds support for glacier mass balance calculation and output.