Wind Plant - Ard#
The intent of Ard is to be a modular, full-stack multi-disciplinary optimization tool for wind farms. By incorporating Ard in H2Integrate, we are able to draw on many wind technology models developed at the National Laboratory of the Rockies (NLR) and other institutions without managing them or their connections in Ard. Models connected in Ard include many parts of WISDEM, FLORIS, and OptiWindNet. Ard also provides constraint functions and wind farm layout generation capabilities among other things. Because Ard has been developed in a modular way, you may also extend Ard fairly easily to include other wind models of interest.
Ard is included in H2Integrate as an OpenMDAO sub-model, which means that Ard is treated as a distinct and separate OpenMDAO problem within the larger H2I OpenMDAO problem. In this way, the user can run an independent wind farm optimization within Ard, or allow H2Integrate to manage the wind farm design variables directly. One drawback of including Ard as a sub-model is that N2 diagrams made from the H2Integrate problems will show Ard only as a single black-box model, rather than showing all the subsystems within Ard. If you wish to view an N2 diagram of Ard, you will need to use the Ard problem instead. The Ard subproblem can be created using Ard as a standalone package (see the Ard documentation) or by accessing the Ard subproblem in the H2Integrate problem by running a command such as om.n2(h2i_model.prob.model.plant.wind.wind.ard_sub_prob._subprob), where the exact path of the ard_sub_prob may differ in your model depending on your config and names.
Required input files and information unique to using Ard in H2Integrate#
WindIO input file#
The WindIO input file is a yaml containing most of the information necessary to set up a wind farm simulation in Ard, including the wind turbine specifications, wind resource data, initial wind farm layout, substation positions, farm boundaries, etc. Other required information is passed to Ard in the H2Integrate tech_config.yaml. The WindIO input file may in turn be broken out into other yamls to be imported into the primary WindIO file as done in example 29_wind_ard. Detailed information for creating a WindIO input file can be found in the WindIO documentation. The WindIO filepath is provided to Ard via the tech_config.yaml as discussed below.
Ard system and data path#
When using Ard as a standalone model, an ard_system.yaml file is used and a data path is provided directly. When using Ard in H2Integrate, the data path and the ard_system.yaml contents are passed to Ard via the H2Integrate tech_config.yaml. The ard_data_path points to the directory containing all input files for Ard relative to working directory. The primary components of the ard_system inputs are: (1) the system which is a key-word relating to a pre-defined set of sub-models in Ard that the user needs to simulate their wind farm; (2) the modeling_options which contains the WindIO plant definition, or file path, along with initial variable values, cost information, and sub-model options; and (3) the analysis_options where Ard-specific analyses can be defined (like an optimization or a design of experiments).
An example of a technology config is shown below:
technologies:
wind:
model_inputs:
performance_model:
model: "ArdWindPlantModel"
cost_model:
model: "ArdWindPlantModel"
cost_parameters:
cost_year: 2024
performance_parameters:
ard_data_path: "./"
ard_system:
system: "onshore_batch"
modeling_options:
windIO_plant: !include ../ard_inputs/windio.yaml
layout:
N_turbines: 9
N_substations: 1
spacing_primary: 7.0
spacing_secondary: 7.0
angle_orientation: 0.0
angle_skew: 0.0
aero:
return_turbine_output: False
floris:
peak_shaving_fraction: 0.2
peak_shaving_TI_threshold: 0.0
collection:
max_turbines_per_string: 8
solver_name: "highs"
solver_options:
time_limit: 60
mip_gap: 0.02
model_options:
topology: "branched" # "radial", "branched"
feeder_route: "segmented"
feeder_limit: "unlimited"
offshore: false
floating: false
costs:
rated_power: 5000000.0 # W
num_blades: 3
rated_thrust_N: 823484.4216152605 # from NREL 5MW definition
gust_velocity_m_per_s: 70.0 # from https://github.com/WISDEM/WISDEM/blob/master/examples/02_reference_turbines/nrel5mw.yaml
blade_surface_area: 69.7974979
tower_mass: 620.4407337521
nacelle_mass: 101.98582836439
hub_mass: 8.38407517646
blade_mass: 14.56341339641
foundation_height: 0.0
commissioning_cost_kW: 44.0 # from https://github.com/WISDEM/WISDEM/blob/master/examples/02_reference_turbines/nrel5mw.yaml
decommissioning_cost_kW: 58.0 # from https://github.com/WISDEM/WISDEM/blob/master/examples/02_reference_turbines/nrel5mw.yaml
trench_len_to_substation_km: 50.0
distance_to_interconnect_mi: 4.97096954
interconnect_voltage_kV: 130.0 # from https://github.com/WISDEM/WISDEM/blob/master/examples/02_reference_turbines/nrel5mw.yaml
tcc_per_kW: 1300.00 # (USD/kW)
opex_per_kW: 44.00 # (USD/kWh)
analysis_options:
Some Key Capabilities of Ard (and the external models used)#
Highly modular to include alternate/new models and capabilities
Built using OpenMDAO
Wind farm layout optimization
Turbine locations
Ordered grid layouts
Continuous locations layouts
Boundaries
Single boundary
Multiple discrete boundary regions
Arbitrary polygonal boundaries shapes
Collection cable array optimization
OptiWindNet
Radial configurations
Branched configurations
Aerodynamics
FLORIS
Cost and finance
WISDEM
LandBOSSE
ORBIT
FinanceSE
Wind Resource#
The wind resource capabilities of H2Integrate are not yet connected with Ard, so the user must provide a wind resource file directly to the Ard model inputs. Ard is built on WindIO, so the wind resource must be specified in a way compatible with WindIO. The basic information required is a time stamp, wind speed (m/s), wind direction (deg.), and turbulence intensity (unitless), but other information may be included. See the WindIO documentation for details.
Examples#
For an example of using Ard in an H2Integrate model, see examples/29_wind_ard. Note that Ard uses a combination of input files, including a wind IO file.