Wind Array Sizing

Requires [OPF] for Pyomo CSS (optional Gurobi) or [LINEAR_ARRAY] for OR-Tools route MIP and CSS (see Installation).

Workflow

  1. Build a candidate inter-array grid from a turbine graph with create_grid_from_turbine_graph() (see Grid Creation), or load a bundled case such as pyf.cases['alpha_ventus']().

  2. Run sequential_CSS() — route MIP, then cable sizing on the fixed topology each iteration. Prefer enable_cable_types=False (sequential methodology) over a joint route+CSS MIP.

import pyflow_acdc as pyf
from pyflow_acdc.constants import PYOMO_LINEAR_SOLVERS

grid, res = pyf.cases["alpha_ventus"]()
print(grid.lines_AC_ct[0].cable_types)

solver = next(
    (name for name in PYOMO_LINEAR_SOLVERS if pyf.is_pyomo_solver_available(name)),
    None,
)
if solver is None:
    print("Skipped: no Pyomo MIP/CSS-L solver available")
else:
    pyf.sequential_CSS(
        grid,
        NPV=True,
        max_turbines_per_string=None,
        MIP_solver=solver,
        CSS_L_solver=solver,
        max_iter=None,
        time_limit=300,
        tee=False,
    )
    res.all()

Example cases

  • pyf.cases['alpha_ventus']()

  • pyf.cases['anholt']()

  • pyf.cases['barrow']()

  • pyf.cases['Borssele_3_and_4']()

  • pyf.cases['moray_east']()

  • pyf.cases['nordsee_one']()

  • pyf.cases['westermost_rough']()

See Usage Guide for the full catalogue.