Flow - Using Climate Data
Skip Navigation Links

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.

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 LabelDescriptionRequired?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. Yes2012
Month Month associated with the observation. This is a one-based numeric value; 1=January, 2=February,...,12=DecemberYes1
Day Day of the month associated with the observation. This is a one-based numeric value; 1=first day of the month, 2=second...Yes1
Hour Hour of the day (1-24) associated with the observation. For example, a value of 18 indicates 6:00pmNo18
Minute Minute of the hour (1-60) associated with the observation. No1
Precip Precipitation (mm/day)Yes12.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.


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' IdentifierData 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:
<?xml version="1.0" encoding="UTF-8"?>
<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>