Wind Integration National Dataset (WIND) Toolkit

Model

Wind resource data for North America was produced using the Weather Research and Forecasting Model (WRF). The WRF model was initialized with the European Centre for Medium Range Weather Forecasts Interim Reanalysis (ERA-Interm) data set with an initial grid spacing of 54 km. Three internal nested domains were used to refine the spatial resolution to 18, 6, and finally 2 km. The WRF model was run for years 2007 to 2014. While outputs were extracted from WRF at 5 minute time-steps, due to storage limitations instantaneous hourly time-step are provided for all variables while full 5 min resolution data is provided for wind speed and wind direction only.

The following variables were extracted from the WRF model data:

  • Wind Speed at 10, 40, 60, 80, 100, 120, 140, 160, 200 m

  • Wind Direction at 10, 40, 60, 80, 100, 120, 140, 160, 200 m

  • Temperature at 2, 10, 40, 60, 80, 100, 120, 140, 160, 200 m

  • Pressure at 0, 100, 200 m

  • Surface Precipitation Rate

  • Surface Relative Humidity

  • Inverse Monin Obukhov Length

Domains

The wind resource was produce using three distinct WRF domains shown below. The CONUS domain for 2007-2013 was run by 3Tier while 2014 as well as all years of the Canada and Mexico domains were run under NARIS. The data is provided in three sets of files:

  • CONUS: Extracted exclusively from the CONUS domain

  • Canada: Combined data from the Canada and CONUS domains

  • Mexico: Combined data from the Mexico and CONUS domains

Data Format

The data is provided in high density data file (.h5) separated by year. The variables mentioned above are provided in 2 dimensional time-series arrays (called “datasets” in h5 files) with dimensions (time x location). The temporal axis is defined by the time_index dataset, while the positional axis is defined by the meta dataset. We typically refer to a single site in the data with a gid, which is just the index of the site in the meta data (zero-indexed). For storage efficiency each variable has been scaled and stored as an integer. The scale_factor is provided in the scale_factor attribute. The units for the variable data is also provided as an attribute (units).

Data Access Examples

The easiest way to access and extract WTK and NSRDB data is by using the Resource eXtraction tool rex.

Example scripts to extract wave resource data using the command line or python are provided below.

If you are on the NREL Eagle supercomputer, you can use the example below, but change the filepath to the appropriate WTK or NSRDB file location on /datasets/ and set hsds=False. See the basic rex Resource handler examples for similar use examples.

You can use rex to access WTK and NSRDB data from your local computer using HSDS. In order to do so, you need to setup HSDS and h5pyd. See the rex-HSDS instructions for more details on how to do this.

Please note that the NREL-hosted HSDS API is for demonstration purposes only, if you would like to use HSDS for production runs of reV please setup your own service with the instructions here: https://nrel.github.io/rex/misc/examples.hsds.html

WINDX CLI

The WINDX command line utility provides the following options and commands:

WINDX --help

Usage: WINDX [OPTIONS] COMMAND [ARGS]...

  WindX Command Line Interface

Options:
  -h5, --wind_h5 PATH  Path to Resource .h5 file  [required]
  -o, --out_dir PATH   Directory to dump output files  [required]
  -v, --verbose        Flag to turn on debug logging. Default is not verbose.
  --help               Show this message and exit.

Commands:
  dataset     Extract a single dataset
  multi-site  Extract multiple sites given in '--sites' .csv or .json as...
  sam-file    Extract all datasets at the given hub height needed for SAM...

WindX python class

from rex import WindX

wtk_file = '/nrel/wtk/conus/wtk_conus_2014.h5'
with WindX(wtk_file, hsds=True) as f:
    meta = f.meta
    time_index = f.time_index
    wspd_100m = f['windspeed_100m', :, ::1000]

Note: WindX will automatically interpolate to the desired hub-height:

from rex import WindX

wtk_file = '/nrel/wtk/conus/wtk_conus_2014.h5'
with WindX(wtk_file, hsds=True) as f:
    print(f.datasets)  # not 90m is not a valid dataset
    wspd_90m = f['windspeed_90m', :, ::1000]

WindX also allows easy extraction of the nearest site to a desired (lat, lon) location:

from rex import WindX

wtk_file = '/nrel/wtk/conus/wtk_conus_2014.h5'
nwtc = (39.913561, -105.222422)
with WindX(wtk_file, hsds=True) as f:
    nwtc_wspd = f.get_lat_lon_df('windspeed_100m', nwtc)

or to extract all sites in a given region:

from rex import WindX

wtk_file = '/nrel/wtk/conus/wtk_conus_2014.h5'
state = 'Colorado'
with WindX(wtk_file, hsds=True) as f:
    date = '2014-07-04 18:00:00'
    wspd_map = f.get_timestep_map('windspeed_100m', date, region=region,
                                  region_col='state')

Lastly, WindX can be used to extract all variables needed to run SAM at a given location:

from rex import WindX

wtk_file = '/nrel/wtk/conus/wtk_conus_2014.h5'
nwtc = (39.913561, -105.222422)
with WindX(wtk_file, hsds=True) as f:
    nwtc_sam_vars = f.get_SAM_lat_lon(nwtc)

References

For more information about the WIND Toolkit please see the website. Users of the WIND Toolkit should use the following citations: