Skip to content

Commit

Permalink
Merge pull request #295 from NREL/nrwal_integration
Browse files Browse the repository at this point in the history
Nrwal integration
  • Loading branch information
MRossol authored Apr 22, 2021
2 parents 06a31cd + e2c0c54 commit 287f588
Show file tree
Hide file tree
Showing 62 changed files with 5,989 additions and 14,029 deletions.
50 changes: 32 additions & 18 deletions examples/offshore_wind/README.rst
Original file line number Diff line number Diff line change
@@ -1,33 +1,47 @@
reV Offshore Wind Execution
===========================

This example includes configs to run a reV wind supply curve analysis for the
full CONUS extent including offshore wind. A few simplifications are made, most
notably that a single turbine is used for calculating generation at all sites.
This example includes configs to run a reV wind analysis for a small test
extent off the east coast. This example is only meant to demonstrate how to set
up an offshore wind LCOE analysis using reV + NRWAL. Note that some inputs and
configurations are purely fictitious and should not be used in a real analysis.
For example, this test case models the same turbine onshore and offshore. The
substructure for the offshore turbines are also assumed to always be a floating
semi-submersible which is not realistic, especially for shallow waters.

reV Offshore Module Description
-------------------------------

The pipeline includes the offshore module, which is run after the generation
module. The offshore module aggregates generation data (on the WTK resource
grid) to the offshore farm meta data (sparse). Offshore wind farms are
therefore represented by the mean capacity factor and windspeed of their
neighboring offshore resource pixels.
module. The offshore module takes the gross generation (gross capacity factor,
set offshore turbine losses to zero!) and uses NRWAL to calculate generation
losses and LCOE.

Offshore LCOE is calculated using ORCA. A seperate turbine technology input is
used with a few simple inputs like system capacity and sub structure type. Any
inputs in the turbine json are overwritten by the site-specific offshore data
csv where there are overlapping column names. A warning is printed if data is
overwritten in this way.
Example NRWAL configs slightly modified for use with reV can be seen in this
example. The primary modification for usage in reV is that NRWAL typically
calculates the grid connection cost with the "grid" equations. Currently, reV
uses NRWAL to calculate the array and export (to shore) tranmission costs and
then uses the supply curve transmission cost tables to calculate the grid
connection costs.

Treatment of Offshore Points in Supply Curve
--------------------------------------------

Each offshore wind farm point in the offshore data csv is assigned to its own
600 MW supply curve point. Offshore wind farms will always be 1-to-1 with
supply curve points.
Offshore points are treated identically to onshore points in the supply curve
(not run here). All resource pixels maintain their source resolution (usually
the 2km WTK resolution) until the reV aggregation step, where exclusions are
applied and the data is aggregated up to the supply curve grid. Supply curve
tranmission cost tables must include transmission costs for offshore supply
curve points. There is no seperate or special handling of offshore supply curve
transmission connection.

Offshore farms are assigned GID's that are 1e7 plus the wind farm id. The
offshore farm GID's are the same as their respective supply curve points.
Plots of the Example Offshore Output
------------------------------------

.. image:: sc_total_lcoe.png
.. image:: mean_cf.png

.. image:: mean_ws_mean-means.png

.. image:: mean_lcoe.png

.. image:: mean_depth.png
50 changes: 23 additions & 27 deletions examples/offshore_wind/config_aggregation.json
Original file line number Diff line number Diff line change
@@ -1,43 +1,39 @@
{
"cf_dset": "cf_mean-means",
"data_layers": {
"reeds_region": {
"dset": "reeds_regions",
"method": "mode"
},
"slope": {
"dset": "srtm_slope",
"method": "mean"
}
},
"directories": {
"log_directory": "./logs/",
"output_directory": "./conus_wind/"
},
"excl_dict": {
"naris_wind": {
"use_as_weights": true
}
"output_directory": "./"
},
"excl_dict": null,
"excl_fpath": "/projects/rev/data/exclusions/CONUS_Exclusions.h5",
"execution_control": {
"allocation": "rev",
"feature": "--qos=high",
"memory": 90,
"nodes": 1,
"feature": "-p debug",
"option": "eagle",
"walltime": 4.0
"walltime": 1.0
},
"gen_fpath": "PIPELINE",
"h5_dsets": [
"depth",
"dist_p_to_a",
"dist_a_to_s",
"dist_op_to_s",
"dist_p_to_s",
"dist_p_to_s_nolimit",
"dist_s_to_l",
"hs_average",
"fixed_downtime",
"floating_downtime",
"capital_cost",
"fixed_operating_cost",
"variable_operating_cost",
"fixed_charge_rate",
"ws_mean-means"
],
"lcoe_dset": "lcoe_fcr-means",
"log_level": "INFO",
"power_density": 3,
"res_class_bins": [
0,
8.0,
100
],
"res_class_dset": "ws_mean-means",
"resolution": 64,
"pre_extract_inclusions": false,
"resolution": 128,
"tm_dset": "techmap_wtk"
}
24 changes: 19 additions & 5 deletions examples/offshore_wind/config_collect.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,36 @@
"directories": {
"collect_directory": "PIPELINE",
"log_directory": "./logs/",
"output_directory": "./conus_wind/"
"output_directory": "./"
},
"dsets": [
"cf_mean",
"cf_profile",
"lcoe_fcr",
"ws_mean"
"ws_mean",
"depth",
"dist_p_to_a",
"dist_a_to_s",
"dist_op_to_s",
"dist_p_to_s",
"dist_p_to_s_nolimit",
"dist_s_to_l",
"hs_average",
"fixed_downtime",
"floating_downtime",
"capital_cost",
"fixed_operating_cost",
"variable_operating_cost",
"fixed_charge_rate"
],
"execution_control": {
"allocation": "rev",
"feature": "--qos=high",
"feature": "-p debug",
"option": "eagle",
"walltime": 4
"walltime": 1
},
"file_prefixes": "PIPELINE",
"log_level": "INFO",
"project_points": null,
"project_points": "./project_points_offshore_test.csv",
"purge_chunks": false
}
15 changes: 10 additions & 5 deletions examples/offshore_wind/config_gen.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
],
"directories": {
"log_directory": "./logs/",
"output_directory": "./conus_wind/"
"output_directory": "./"
},
"execution_control": {
"allocation": "rev",
"feature": "--qos=high",
"nodes": 20,
"nodes": 5,
"option": "eagle",
"sites_per_worker": 25,
"walltime": 4
Expand All @@ -20,12 +20,17 @@
"cf_mean",
"cf_profile",
"lcoe_fcr",
"ws_mean"
"ws_mean",
"capital_cost",
"fixed_operating_cost",
"variable_operating_cost",
"fixed_charge_rate"
],
"project_points": "./inputs/wtk_conus_project_points.csv",
"project_points": "./project_points_offshore_test.csv",
"resource_file": "/datasets/WIND/conus/v1.0.0/wtk_conus_{}.h5",
"sam_files": {
"default": "./inputs/t205.json"
"offshore": "./offshore.json",
"onshore": "./onshore.json"
},
"technology": "windpower"
}
24 changes: 19 additions & 5 deletions examples/offshore_wind/config_multi-year.json
Original file line number Diff line number Diff line change
@@ -1,23 +1,37 @@
{
"directories": {
"log_directory": "./logs/",
"output_directory": "./conus_wind/"
"output_directory": "./"
},
"execution_control": {
"allocation": "rev",
"feature": "--qos=high",
"memory": 90,
"feature": "-p debug",
"option": "eagle",
"walltime": 0.5
"walltime": 1
},
"groups": {
"none": {
"dsets": [
"cf_mean",
"cf_profile",
"lcoe_fcr",
"ws_mean"
],
"pass_through_dsets": [
"depth",
"dist_p_to_a",
"dist_a_to_s",
"dist_op_to_s",
"dist_p_to_s",
"dist_p_to_s_nolimit",
"dist_s_to_l",
"hs_average",
"fixed_downtime",
"floating_downtime",
"capital_cost",
"fixed_operating_cost",
"variable_operating_cost",
"fixed_charge_rate"
],
"source_dir": "./",
"source_files": "PIPELINE",
"source_prefix": ""
Expand Down
42 changes: 37 additions & 5 deletions examples/offshore_wind/config_offshore.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"directories": {
"log_directory": "./logs/",
"output_directory": "./conus_wind/"
"output_directory": "./"
},
"execution_control": {
"allocation": "rev",
Expand All @@ -10,10 +10,42 @@
"walltime": 1
},
"gen_fpath": "PIPELINE",
"log_level": "INFO",
"offshore_fpath": "./inputs/preliminary_orca_results_09042019_JN_gcb.csv",
"project_points": "./inputs/wtk_conus_project_points.csv",
"log_level": "DEBUG",
"nrwal_configs": {
"offshore": "./semi_8MW_2017.yaml"
},
"offshore_fpath": "./offshore_test_data_inputs.csv",
"offshore_meta_cols": [
"depth",
"dist_p_to_a",
"dist_a_to_s",
"dist_op_to_s",
"dist_p_to_s",
"dist_p_to_s_nolimit",
"dist_s_to_l",
"hs_average",
"fixed_downtime",
"floating_downtime"
],
"offshore_nrwal_keys": [
"depth",
"dist_p_to_a",
"dist_a_to_s",
"dist_op_to_s",
"dist_p_to_s",
"dist_p_to_s_nolimit",
"dist_s_to_l",
"hs_average",
"fixed_downtime",
"floating_downtime",
"capital_cost",
"fixed_operating_cost",
"variable_operating_cost",
"fixed_charge_rate"
],
"project_points": "./project_points_offshore_test.csv",
"sam_files": {
"default": "./inputs/6MW_offshore.json"
"offshore": "./offshore.json",
"onshore": "./onshore.json"
}
}
4 changes: 2 additions & 2 deletions examples/offshore_wind/config_pipeline.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
"multi-year": "./config_multi-year.json"
},
{
"aggregation": "./config_aggregation.json"
"supply-curve-aggregation": "./config_aggregation.json"
},
{
"supply-curve": "./config_supply-curve.json"
"qa-qc": "./config_qa-qc.json"
}
]
}
20 changes: 20 additions & 0 deletions examples/offshore_wind/config_qa-qc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"directories": {
"log_directory": "./logs/",
"output_directory": "./"
},
"execution_control": {
"allocation": "rev",
"feature": "-p debug",
"option": "eagle",
"walltime": 1.0
},
"log_level": "DEBUG",
"modules": {
"supply-curve-aggregation": {
"fpath": "PIPELINE",
"plot_type": "plot",
"sub_dir": "qa_agg"
}
}
}
28 changes: 0 additions & 28 deletions examples/offshore_wind/config_supply-curve.json

This file was deleted.

Binary file added examples/offshore_wind/inputs_outputs.zip
Binary file not shown.
Binary file added examples/offshore_wind/mean_cf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added examples/offshore_wind/mean_depth.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added examples/offshore_wind/mean_lcoe.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added examples/offshore_wind/mean_ws_mean-means.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed examples/offshore_wind/sc_total_lcoe.png
Binary file not shown.
4 changes: 2 additions & 2 deletions reV/batch/batch.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def __init__(self, config, verbose=False):
os.chdir(self._base_dir)

if 'logging' in self._config:
logging_kwargs = self._config.get('logging', {})
logging_kwargs = self._config.logging
if verbose:
logging_kwargs['log_level'] = 'DEBUG'

Expand Down Expand Up @@ -395,7 +395,7 @@ def _make_job_dirs(self):
for source_dir, _, filenames in os.walk(self._base_dir):

# do make additional copies of job sub directories.
skip = any([job_tag in source_dir for job_tag in self.job_tags])
skip = any(job_tag in source_dir for job_tag in self.job_tags)

if not skip:

Expand Down
2 changes: 1 addition & 1 deletion reV/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ def valid_econ_keys(ctx):
help='Flag to turn on debug logging.')
@click.pass_context
def offshore(ctx, verbose):
"""Offshore gen/econ aggregation with ORCA."""
"""Offshore gen/econ aggregation with NRWAL."""
if ctx.invoked_subcommand is None:
config_file = ctx.obj['CONFIG_FILE']
verbose = any([verbose, ctx.obj['VERBOSE']])
Expand Down
Loading

0 comments on commit 287f588

Please sign in to comment.