reVX Turbine Flicker
The reVX turbine flicker module computes shadow-flicker inclusion masks for wind siting workflows.
It can apply:
a generic flicker threshold (hours/year),
county-specific local regulations, or
both simultaneously (local values where available and generic elsewhere).
This guide is supplemental to the generated CLI/API docs and follows the same project-directory workflow
used by other reVX exclusions tools.
Computing turbine flicker exclusions
Inputs and prerequisites
Before running turbine flicker, make sure you have:
A template exclusions HDF5 file (
excl_fpath) that defines the output grid and contains:a techmap layer (default
techmap_wtk), or permissions to create it automatically, anda county FIPS layer (
cnty_fips) if your local regulations file is tabular (CSV without geometry).
A wind resource HDF5 file (
res_fpath) with hourly wind-direction data namedwinddirection_{hub_height}m.Building data referenced by
building_layer:either a layer name in
excl_fpathor a GeoTIFF path with the same shape/projection as
excl_fpath.
A Python environment with the flicker dependency installed:
$ pip install -e .[flicker]
Config file setup
Each turbine flicker project should be run from its own directory.
Create a new directory, move into it, and generate template config files:
$ exclusions template-configs
Then create or edit your turbine flicker config and include at least the required keys below:
{
"execution_control": {
"option": "local"
},
"log_directory": "./logs",
"log_level": "INFO",
"excl_fpath": "/path/to/exclusions.h5",
"res_fpath": "/path/to/wtk_resource.h5",
"building_layer": "buildings",
"hub_height": 116,
"rotor_diameter": 163,
"flicker_threshold": 30,
"tm_dset": "techmap_wtk",
"resolution": 128,
"grid_cell_size": 90,
"max_flicker_exclusion_range": "10x",
"regulations_fpath": null,
"building_threshold": 0,
"out_layer": null,
"replace": false,
"hsds": false
}
Key input notes
flicker_thresholdis the generic max allowable flicker in hours/year.regulations_fpathmay point to CSV or GeoPackage local regulations.If both are provided, local county values are used where available and
flicker_thresholdis used elsewhere.max_flicker_exclusion_rangeaccepts either:a numeric distance in meters (for example
5000), ora rotor-diameter multiplier string (for example
"10x").
out_layeris optional. If provided, results are also written toexcl_fpathin addition to GeoTIFF output.
Local regulations format
Local regulations must include, at minimum:
Feature TypeValue TypeValueFIPS(required for non-geometric/tabular regulations)
For turbine flicker rows:
Feature Typeshould resolve toShadow FlickerValue Typeshould resolve toHrs/YearValueshould be the numeric allowable flicker threshold
If your regulations are provided as a GeoPackage with valid geometries, county mapping can be done spatially.
If regulations are tabular, cnty_fips in excl_fpath is required for county matching.
Execution
When ready, run turbine flicker from the project directory:
$ exclusions turbine-flicker -c config_turbine_flicker.json
If successful, output will include:
a GeoTIFF named:
flicker_{hub_height}hh_{rotor_diameter}rd.tifoptionally, an HDF5 layer in
excl_fpathifout_layeris set
Output values are inclusion-style mask values:
1means included0means excluded due to excessive shadow flicker
Pipeline, batch, and status workflows
You can orchestrate turbine flicker runs using the generic exclusions CLI workflow commands. As with other exclusions projects, this is typically done by driving job steps from a pipeline config.
Pipeline
From the project directory:
$ exclusions pipeline
Repeat as needed to submit the next pending step or re-run incomplete steps.
Batch
To execute multiple turbine/scenario combinations, prepare a batch CSV that parameterizes turbine flicker
inputs (for example hub_height, rotor_diameter, flicker_threshold, and regulation file path), then run:
$ exclusions batch -c config_batch.csv
Job status
Check project job states with:
$ exclusions status
To display specific input metadata in the status table:
$ exclusions status -i node_file_path
Advanced topics
Generic-only vs local-only vs hybrid regulations
Generic-only: set
flicker_thresholdand leaveregulations_fpathasnull.Local-only: set
regulations_fpathand setflicker_thresholdtonull.Hybrid: provide both to use local rules where available with generic fallback elsewhere.
Building data as an external GeoTIFF
If building_layer is a file path instead of an HDF5 layer name, reVX reads that GeoTIFF directly.
The GeoTIFF grid must match the exclusions grid shape and projection.
Techmap behavior
If tm_dset is missing in excl_fpath, turbine flicker will attempt to create it.
This requires valid exclusions/resource inputs and write access.
Controlling memory/runtime
Larger values of max_flicker_exclusion_range increase memory and runtime.
Start with defaults (for example "10x") and increase only as needed.
Common troubleshooting
Missing wind-direction dataset
Ensure
res_fpathcontainswinddirection_{hub_height}m.
Layer shape mismatch
Ensure
building_layer(if GeoTIFF) exactly matches the exclusions grid.
Invalid max exclusion range
Use a numeric value or an
"Nx"string such as"10x".
No local regulations applied
Confirm regulations rows have the expected
Feature Type/Value Typevalues and valid county mapping data.