VIC: Model Overview Ted Bohn UW Surface Water Hydrology Seminar November 15, 2012 Outline VIC Overview VIC Web Site How to Run VIC How to Run the Routing Model Future Development Conclusions VIC Model Overview What is VIC? Large-scale hydrologic model (Liang et al, 1994) Simulates water & energy storages and fluxes Inputs: daily or sub-daily meteorological drivers Precipitation Air temperature Wind speed etc Model time step length = daily or sub-daily VIC Model Overview VIC is intended for Large regions (> 100,100 km2) Monthly flows and landatmosphere fluxes Coupling with GCMs VIC Model Overview VIC Makes Some Approximations: Land surface = grid of large (>1km), flat, uniform cells Equations derived for small, uniform cases are applied to very large heterogeneous areas Sub-grid heterogeneity is handled via statistical distributions Elevation Land cover Water can only enter a grid cell via the atmosphere Non-channel flow between grid cells is ignored MOST runoff reaches local channel network before reaching grid cell boundary Once water reaches the channel network, it is assumed to stay in the channel (it cannot flow back into the soil) Grid cells are simulated independently of each other Routing of stream flow is performed separately from the land surface simulation, using a separate model (Lohmann et al., 1996 and 1998) VIC Model Features Validity of these assumptions? 1. Uniform grid cells/small-scale equations Depends on: Linearity of the processes (does average land surface produce average results?) Statistical independence of processes (no correlations/interactions) 2. Runoff goes to local channels/ doesn’t come back/independence of grid cells Depends on: Grid cell size Channel network density Rule of thumb: Grid cell size > spacing between channels (or big enough to contain typical hill or mountain) Groundwater flow must be small VIC Model Features Meteorological Inputs VIC can accept any combination of daily or subdaily met. variables At minimum, VIC requires daily Prcp, Tmin, Tmax, and Wind Speed VIC uses MTCLIM algorithms to compute daily (and hourly) incoming shortwave radiation and daily humidity VIC uses Prata algorithm to compute daily incoming longwave algorithm VIC uses cubic spline to interpolate diurnal cycle of T From diurnal T, computes sub-daily values of other forcings Prcp and Wind held constant throughout day VIC Model Features Land Cover “Tiles” Each tile is homogeneous Each type of vegetation gets 1 tile Optional lake/wetland tile Spatial distribution ignored Trees have same height, LAI, etc Each tile modeled separately Fluxes and storages from the tiles are averaged together (weighted by area fraction) to give grid-cell average for output VIC Model Features Evapotranspiration (ET) From canopy storage From soil via transpiration OR bare soil evap If veg present, no bare soil evap If overstory, no understory evap 6 types of Potential Evap (PET) Open water Wet soil Natural Veg with no soil moisture limitation (but other resistances intact) Natural Veg with no environmental limitations Short reference crop Tall reference crop VIC Model Features Penman-Monteith formulation = f(radiation, humidity, wind, surface roughness, architectural resistance, stomatal resistance) Architectural Resistance Stomatal Resistance = Penman-Monteith with stomatal resistance set to 0 Transpiration Stomata: pores in leaves for transport of H2O, CO2 Plants actively change stomatal opening to optimize photosynthesis and retain moisture = f(radiation, temperature, humidity, soil moisture, LAI) Evap of canopy storage (dew on leaves) Shape of canopy; impedance to turbulent transport = f(LAI, canopy structure) = Penman-Monteith Bare soil evap = Penman-Monteith with architectural and stomatal resistance set to 0 Only applied to saturated soil fraction VIC Model Features Soil Typically 3 soil layers Infiltration into the top-most layers controlled by variable infiltration capacity (VIC) parameterization Top-most layers can lose moisture to evapotranspiration Gravity-driven flow from upper layers to lower layers Q = f(soil moisture, Ksat) ARNO baseflow formulation for drainage from bottom layer Optional organic content in soil parameter file Optional water table position computed via Van Genuchten curve VIC Model Features Soil T profile 1. QUICK_FLUX approximation 2. Finite element scheme (QUICK_FLUX TRUE in global parameter file) Assumes exponential decay towards “deep temperature” with depth (QUICK_FLUX FALSE in global parameter file) Heat diffusion equation Anywhere from 3 to 50 “nodes” Hydro soil layer average T can be output (as of VIC 4.1.2) Optional soil freeze/thaw: FROZEN_SOIL TRUE in global parameter file Finite element + Frozen Soil is computationally expensive Only recommended where soil freezing is important process VIC Model Features Soil T heterogeneity Option: SPATIAL_FROST (user_def.h) Linear (uniform) distribution of soil T around mean Allows some moisture movement in soil when avg T below freezing VIC Model Features Snow 2-layer formulation Precip, Sublimation and melt Albedo decay Energy balance Need diurnal radiation to get snowmelt rate right SNOW_STEP in global parameter file Partial snow cover can also be considered (affects melt rate) (SPATIAL_SNOW TRUE in user_def.h) VIC Model Features Elevation Bands Snow pack size depends non-linearly on altitude, via precipitation and temperature In temperate mountainous regions, with seasonally-varying snow line, using the average elevation, temperature, and precipitation over the entire grid cell gives wrong answer How it works: Subdivide grid cell into arbitrary number of elevation bands Within each band, meteorologic forcings are lapsed from grid cell average elevation to band's elevation Geographic locations or configurations of elevation bands are not considered; VIC lumps all areas of same elevation range into 1 band Fluxes and storages from the bands are averaged together (weighted by area fraction) to give grid-cell average for writing to output files Specify in global parameter file Less necessary when running VIC at high resolution (1/16 degree) VIC Model Features Dynamic Lake/Wetland Model (Bowling, 2002, 2009) •Multi-layer lake model of Hostetler et al. 2000 •Energy-balance model •Mixing, radiation attenuation, variable ice cover •Dynamic lake area (taken from topography) allows seasonal inundation of adjacent wetlands •1 composite lake per cell •Lakes can (as of VIC 4.1.2) receive input from upstream channel network: •Requires running upstream cells first •One option: run entire basin without lakes, then route flows, then simulate lake as single grid cell •Note: lake parameters (bathymetry, wfrac, mindepth, etc) not available on global scale; so far calibrating case-by-case VIC Model Features River Routing Routing of stream flow is performed separately from the land surface simulation, using a separate model, typically the routing model of Lohmann, et al. (1996; 1998) Each grid cell is represented by a node in the channel network The total runoff and baseflow from each grid cell is first convolved with a unit hydrograph representing the distribution of travel times of water from its points of origin to the channel network Then, each grid cell's input into the channel network is routed through the channel using linearized St. Venant's equations A lot of slop here: we typically don’t calibrate the unit hydrograph, channel velocities, etc. Errors are small when looking at monthly flows from large basins Outline VIC Overview VIC Web Site How to Run VIC How to Run the Routing Model Future Development Conclusions VIC Web Site www.hydro.washington.edu/Lettenmaier/Models/VIC/ Outline VIC Overview VIC Web Site How to Run VIC How to Run the Routing Model Future Development Conclusions How to Run VIC 1. 2. 3. 4. Download source code Compile (via “make”) Prepare input files Run VIC vicNl –g global_parameter_file >& log.file.txt Other Usage: To see version info: vicNl –v To see compile-time option settings: vicNl –o Global Parameter File Global Parameter File = Master Input File Names/locations of all other input/output files Contents/formatting of input forcing and output files Settings of most simulation options You can make whatever output files you want Start/stop dates Model time step Water Balance v. Full Energy mode Etc Options and their allowed values are listed in vicNl_def.h Other Parameter Files ASCII text 1+ line(s) per grid cell Formats described on VIC web site Optionally, soil parameters can be specified in Arc/INFO grid format Met. Forcing Files ASCII or binary Can be traditional units (e.g. mm) or ALMA convention (e.g. m3/sec) You MUST describe file contents in the global parameter file ALMA = standard for atmospheric models Variables Start date Time step Measurement height Usually 1 file per grid cell Optionally a 2nd file Can have different variables, time step, start date than first file New input forcing variable, CHANNEL_IN, is only used for input into a lake Can be the routed runoff of upstream cells State Files Can be ASCII or Binary Initial state file has same format as final state file Initial state file can be the final state file from a previous VIC run Output Files Can be ASCII or Binary Units can be traditional or ALMA convention 1+ file(s) per grid cell You can either: Specify the files’ names and contents in the global parameter file Or omit this information and have VIC create default output files You can either: Specify the output time step (n-hourly or daily) Or omit this and the output time step will = model time step VIC Simulation Mode Settings 2 types of settings: Run-time Most options are of this type Set in global parameter file Examples of most available in global.param.sample Compile-time Only a few options Set in user_def.h Values in user_def.h may be misleading, if it has been edited since the last “make” To see their current values, type vicNl –o To change these: 1. 2. 3. Edit user_def.h Make clean Make vicNl_def.h Describes Most Model Options Input Forcing Variables /***** Forcing Variable #define N_FORCING_TYPES #define AIR_TEMP 0 /* */ #define ALBEDO 1 /* #define CHANNEL_IN 2 /* Types *****/ 24 air temperature per time step [C] (ALMA_INPUT: [K]) surface albedo [fraction] */ incoming channel flow [m3] (ALMA_INPUT: [m3/s]) */ Output Forcing Variables /***** Output Variable Types *****/ #define N_OUTVAR_TYPES 160 // Water Balance Terms - state variables #define OUT_ASAT 0 /* Saturated Area Fraction */ #define OUT_LAKE_AREA_FRAC 1 /* lake surface area as fraction of the grid cell area [fraction] */ #define OUT_LAKE_DEPTH 2 /* lake depth (distance between surface and deepest point) [m] */ vicNl_def.h Describes Most Model Options Simulation Modes: options_struct typedef struct { // simulation modes int AboveTreelineVeg; /* Default veg type to use above treeline; Negative number indicates bare soil. */ char AERO_RESIST_CANSNOW; /* "AR_406" = multiply aerodynamic resistance … } option_struct •Example global parameter file •Included in code distribution •To make global parameter file for your project, copy this file and edit it •Contains most options, set to ####################################################################### default values # VIC Model Parameters - 4.1.x Global.param.sample ####################################################################### # $Id: global.param.sample,v 5.7.2.28 2012/04/15 05:39:10 vicadmin Exp $ ####################################################################### # Simulation Parameters ####################################################################### NLAYER 3 # number of soil layers NODES 10 # number of soil thermal nodes TIME_STEP 3 # model time step in hours (set to 24 if FULL_ENERGY = FALSE, set to < 24 if FULL_ENERGY = TRUE) SNOW_STEP 3 # time step in hours for which to solve the snow model (should = TIME_STEP if TIME_STEP < 24) STARTYEAR 2000 # year model simulation starts STARTMONTH 01 # month model simulation starts STARTDAY 01 # day model simulation starts STARTHOUR 00 # hour model simulation starts ENDYEAR 2000 # year model simulation ends ENDMONTH 12 # month model simulation ends ENDDAY 31 # day model simulation ends FULL_ENERGY TRUE # TRUE = calculate full energy balance; FALSE = compute water balance only FROZEN_SOIL TRUE # TRUE = calculate frozen soils ####################################################################### # Soil Temperature Parameters Outline VIC Overview VIC Web Site How to Run VIC How to Run the Routing Model Future Development Conclusions How to Run the Routing Model 1. 2. 3. 4. Download source code Compile (via “make”) Prepare input files Run rout rout input_file >& log.file.txt Input Files “Input” File = Master Input File Names/locations of all other input/output files Settings of simulation options Start/stop dates Etc Unit Hydrograph File Distribution of overland travel times for a pulse of runoff to reach the channel (impulse response) ASCII text Format: time(h) flow_fraction Station Location File ASCII text List row,column coordinates of station(s) for which you want a hydrograph Input Files Flow Direction File ASCII Arc/INFO Numeric code indicates pixel’s flow direction Flow Fraction File ASCII Arc/INFO Fraction of pixel’s runoff that enters channel network Usually = fraction of pixel that’s in the basin Input Files Other Optional ASCII Arc/INFO Files: (You can either specify a filename or just a single value that will be used in all pixels) Flow Velocity File Diffusivity File Input Files Runoff Files ASCII Text (or NetCDF, in surface water monitor) ASCII: require the following format Year Month Day (data) (data) Runoff Baseflow Extra columns at the end of the line are allowed (and ignored) VIC’s default output “fluxes” files have this format Daily runoff and baseflow will be added together Output Files Daily, Monthly, Annual flow files Units depend on settings in main input file Outline VIC Overview VIC Web Site How to Run VIC How to Run the Routing Model Future Development Conclusions Future Development Possible additions: NetCDF Input/Output Complete Carbon Cycle (port from my work) Lakebottom heat flux (port from my work) Distrib water table (port from my work) Methane? More user-friendly lake model Multiple soil types per cell Replace (veg tile, snow band) array with “patches”, each with own soil, veg, elevation, etc characteristics Flow routing within VIC Suggestions? Large-Scale Modeling: Challenges How to Validate Model Results? Large-scale simulations vs. point measurements Streamflow is our friend! Soil moisture extremely heterogeneous One point is NOT representative of entire grid cell Aggregates the runoff of the entire basin above the gauge How would we do this with other hydrologic variables? Satellites can measure things visible at surface Problem: lateral extent (e.g. snow cover) not equal to total storage (e.g. snow depth) Conclusions Goals of large-scale models not the same as hillslope-scale models Different assumptions & approximations Large-scale behavior may look different from small-scale Non-linearities Interactions Fine-scale variations, where important, represented by statistical distributions Validation of large-scale models requires largescale observations, special techniques Thank You More information at VIC web site: www.hydro.washington.edu/Lettenmaier/Models/VIC/ Large-Scale Modeling: Overview What is a model? (Idealized) Representation of some aspect of natural world Aid to understanding the real world (Usually) Simpler than the real world Captures most important features of the system Less important features may be omitted or approximated Large-Scale Modeling: Overview Types of Models: Numerical (computer) Analytical (equations) Penman-Monteith Transpiration Newton’s Gravity Conceptual (need not be mathematical) Role model Fashion model Model airplane Etc VIC = Large-Scale Land Surface Hydrology Model Captures important features of large hydrologic systems Coarse resolution (why?) Spatial: 1/16- to 2-degree (5-200 km) Temporal: generally analyze outputs at monthly scales Inputs Sub-continental to global systems >100,000 km2 Meteorology Soil, vegetation, topography Outputs Water & energy storages and fluxes (snowpack, streamflow, soil moisture, etc) Large-Scale Modeling: Overview Why use a large-scale hydrologic model? Estimating continental/global: Allocation of international water resources water budgets land-atmosphere energy fluxes Drinking water Agriculture Hydropower Environmental Hydrologic impacts of large-scale climate variations/change El Nino, Pacific Decadal Oscillation, etc Global Warming (These all have signatures that vary over large spatial scales) Land surface component of global climate model Large-Scale Modeling: Overview Why Coarse Resolution? Computational Efficiency Large-scale questions don’t require fine resolution Uncertainties at fine resolution Observations Model Equations Large-Scale Modeling: Overview Primary Analysis Needs: Availability of water resources River discharge Soil moisture Snow pack & Reservoir storage Large areas Historical and projected Seasonal averages Interannual variability & trends Generally, coarse outputs (monthly data, at 1/8degree or larger resolution), are sufficient Room for slop… Large-Scale Modeling: Overview What are the largest sources of uncertainty in hydrologic modeling? Observations ΔS = P – ET – R R: Moderately well-observed (at surface) at large scale (but not everywhere) P: Well-sampled only in populated affluent areas ET: Very poorly sampled S (Snow, Soil Moisture, Lakes/Reservoirs): Very poorly sampled Meteorologic inputs are a substantial component of uncertainty Model equations Equations from “pure” lab settings applied to large, heterogeneous areas Usually can’t predict “effective” parameters of these equations a priori Must calibrate them by comparing model outputs to observations Model behaviors generally not sufficiently constrained by observations Errors in S can be compensated by errors in ET Aggregating these over larger scales reduces errors (at the expense of precision) Large-Scale Modeling: Overview Therefore, large-scale models may use different equations from what you might expect on the hillslope scale…