Basic Concepts
Climate input data is a fundamental requirement for any modeling effort using Flow. The specific details vary somewhat, depending
on what Flow plug you are using, but in general, there are current two ways of incorporating
climate data into a Flow model:
Both of the methods are discussed below. In both cases, we assume the HBV plug-in is being used to represent
the basic hydrologic processes to be modeled; if a different plug-in is used, the generaly approach will be the same,
but there may be slight variations on the minimum set of climate data required by the plug-in.
Using a Single Climate Station  
The simplest way to incorporate climate data into a Flow model is to use a time-series dataset
for a single representative climate station. In this case, the climate data is provided to Flow
in the form of a comma-separated (CSV) text file. The first row in this file consists of column headers (labels) describing the data,
and each successive row contains the climate data for a given day.
Note the following:
- The first column in the dataset should contain blanks - these value will be overwritten by Flow at runtime.
- The specific order of column in the file is not important, but the column labels are. While NOT case-sensitive, it is otherwise required
to match the spelling of the column name. Be sure there are no "hidden" blanks before or after the column labels in the CSV file.
- Flow assumes there 365 days per year (the extra Feb 29 on leap years should be excluded from the CSV file.
- Year values should span the range of values indicated in the model's start and end year (these are initially defined in the project (.envx) file <settings> section.
The format for this file is as follows:
Column Label | Description | Required? | Example |
Year | Year associated with the observation. Values should span the range of values indicated in the model's start and end year (these are initially defined in the project (.envx) file <settings> section. | Yes | 2012 |
Month | Month associated with the observation. This is a one-based numeric value; 1=January, 2=February,...,12=December | Yes | 1 |
Day | Day of the month associated with the observation. This is a one-based numeric value; 1=first day of the month, 2=second... | Yes | 1 |
Hour | Hour of the day (1-24) associated with the observation. For example, a value of 18 indicates 6:00pm | No | 18 |
Minute | Minute of the hour (1-60) associated with the observation. | No | 1 |
Precip | Precipitation (mm/day) | Yes | 12.3 |
TAvg | Average Daily Temperature (C) | Either TMean or both TMax and TMin, or all three, must be present | |
TMin | Minimum Daily Temperature (C) | |
TMax | Maximum Daily Temperature (C) | |
SRad | Solar Radiation (W/m2) | Yes | |
Windspd | Wind Speed (units???) | Yes | |
RelHumidity (check) | Relative Humidity | | |
SpHumidity (check) | Specific Humidity | | |
VPD (check) | Vapor Pressure Deficit | | |
To tell Flow to use climate station data, provide the entry below in your Flow Xml input file. The <scenarios>
tag allows you to define different climate datasets for different scenarios. The <climate> tag's 'type' attribute
must be set to "climate_station_data" for CSV-based data. The 'path' attribute indicates the CSV file containing
the climate data, formtted as described above. 'elev' indicates the elevation, in meters, that the weather station
is located at; this is used to adjust temperatures based on elevations.
<flow_model>
...
<scenarios default="0">
<scenario name="Station Data" id="0">
<climate type="climate_station_data" path="BoiseClimate.csv" elev="823" />
</scenario>
</scenarios>
...
</flow_model>
At this time, only a single weather station can be specified for a study area.
Using Spatially-explicit Time Series Data
Flow also supports the use of spatially-explicit climate data sets, formatted as NetCDF files.
NetCDF is a well-documented file format frequently used to capture time series of spatially explicit climate data, expressed on a raster (grid) geometry. It is
well-suited to capturing 3 dimensional data, in this case two space dimensions and time.
NetCDF-based climate datasets are generally organized to contain a single climate variable, arrayed over two dimensional space and time. Within Flow, the
specific data types are specified using the 'type' attribute of the <climate> tag - valid values are:
'type' Identifier | Data Type | Required? |
precip | Precipitation (mm/d) | Yes |
tavg | Average Daily Temperature (oC) | Either tavg or both tmax and tmin, or all three, must be present |
tmax | Maximum Daily Temperature (oC) |
tmin | Minimum Daily Temperature (oC) |
humidity | Relative Humidity | |
solrad | Solar Radiation (W/m2) | |
windspd | Wind Speed (units???) | |
vpd | Vapor Pressure Deficit (units???) | |
NetCDF Files can include multiple variables. Flow generally assumes each NetCDF file contains a single, floating point, named variable, arrayed over space, and containing daily values of that variable
for a single year. The variable name defined in each file is specified using the 'var_name' attribute of the <climate> tag, as shown in the example below. A complete set of
climate data files for a Flow simulation typically consists of one file for each year of the simulation (containing daily values), and for each variable (#years X #variables = total climate files).
When using NetCDF files, Flow assumes a naming convention related to the year depicted in a given NetCDF file, to allow automatical assembly of a multiyear sequence of data files. Note that in the example below,
a path is given to the climate datasets. The filenames given in this example (e.g. 'bigwood_CSIRO_pr') are only partial names, indicating the family of files to use. Actual file names on disk corresponding to the
'bigwood_CSIRO_pr' path entry are
'bigwood_CSIRO_pr_2010.nc','bigwood_CSIRO_pr_2011.nc', 'bigwood_CSIRO_pr_2012.nc' etc. Flow identifies the actual climate data files to used by taking the path
indicated in the <climate> tags 'path' attribute, and appending the year and file name extension to that path to locate a specific year's worth of data.
An example of the specification of climate data for this use case is provided below. Note that the data sources are specified within <scenario> tags, allowing different climate data sets to be associated with
different Envision scenarios. This is accomplished using the 'id' attribute of the <scenario> tag - the scenario ID is 'exposed' as an input (scenario) variable that can be set as part of a scenario
definition in Envision. In this case, four different climate scenarios are defined
An example
<flow_model>
...
<scenarios default="0">
<scenario name="CSIRO" id="0">
<climate type="precip" path="Climate\bigwood_CSIRO_pr" var_name="pr" />
<climate type="tavg" path="Climate\bigwood_CSIRO_tavg" var_name="tavg" />
<climate type="tmax" path="Climate\bigwood_CSIRO_tasmax" var_name="tasmax" />
<climate type="tmin" path="Climate\bigwood_CSIRO_tasmin" var_name="tasmin" />
<climate type="humidity" path="Climate\bigwood_CSIRO_huss" var_name="huss" />
<climate type="solrad" path="Climate\bigwood_CSIRO_rsds" var_name="rsds" />
<climate type="windspd" path="Climate\bigwood_CSIRO_was" var_name="was" />
</scenario>
<scenario name="GFDL" id="1">
<climate type="precip" path="Climate\bigwood_GFDL_pr" var_name="pr" />
<climate type="tavg" path="Climate\bigwood_GFDL_tavg" var_name="tavg" />
<climate type="tmax" path="Climate\bigwood_GFDL_tasmax" var_name="tasmax" />
<climate type="tmin" path="Climate\bigwood_GFDL_tasmin" var_name="tasmin" />
<climate type="humidity" path="Climate\bigwood_GFDL_huss" var_name="huss" />
<climate type="solrad" path="Climate\bigwood_GFDL_rsds" var_name="rsds" />
<climate type="windspd" path="Climate\bigwood_GFDL_was" var_name="was" />
</scenario>
<scenario name="HadGEM" id="2">
<climate type="precip" path="Climate\bigwood_HadGEM_pr_365" var_name="pr" />
<climate type="tavg" path="Climate\bigwood_HadGEM_tavg_365" var_name="tavg" />
<climate type="tmax" path="Climate\bigwood_HadGEM_tasmax_365" var_name="tasmax" />
<climate type="tmin" path="Climate\bigwood_HadGEM_tasmin_365" var_name="tasmin" />
<climate type="humidity" path="Climate\bigwood_HadGEM_huss_365" var_name="huss" />
<climate type="solrad" path="Climate\bigwood_HadGEM_rsds_365" var_name="rsds" />
<climate type="windspd" path="Climate\bigwood_HadGEM_was_365" var_name="was" />
</scenario>
<scenario name="Historic" id="3">
<climate type="precip" path="Climate\abat_bigwood_pr" var_name="pr" />
<climate type="tavg" path="Climate\abat_bigwood_tavg" var_name="tavg" />
<climate type="tmax" path="Climate\abat_bigwood_tasmax" var_name="tasmax" />
<climate type="tmin" path="Climate\abat_bigwood_tasmin" var_name="tasmin" />
<climate type="humidity" path="Climate\abat_bigwood_sph" var_name="sph" />
<climate type="solrad" path="Climate\abat_bigwood_rsds" var_name="rsds" />
<climate type="windspd" path="Climate\abat_bigwood_vas" var_name="vas" />
</scenario>
</scenarios>
...
</flow_model>