Starting with WISDEM™The Short Course
Garrett Barter5th Wind Energy Systems Engineering Workshop (WESE 2019) Pamplona, Spain, October 2-4, 2019
NREL | 2
NREL has both turbine- and plant/system-focused research programs
OpenFASTComputer engineering tool for simulating the coupled dynamic response of wind turbines
Flagship software product
Turbine Focused
WISDEM™Wind-plant Integrated System Design and Engineering Model
FOCUS
System Focused
FLORISA controls-oriented engineering wake modelFAST.FarmWindSENALUFOCUS
Farm Focused
NREL | 3
• (Brief) Introduction to WISDEM and OpenMDAO
• WISDEM installation (essentials only)
• Tutorial 1: Run a simple WISDEM calculation with Jupyter Notebooks
• Some more detail on OpenMDAO
• Tutorial 2: Finding the Betz Limit through OpenMDAO optimization
• Tutorial 3: Sellar problem for putting multiple models together
• Tutorial 4: Modeling a whole turbine and plant LCOE
Agenda
NREL | 4
(Brief) Introduction to WISDEM and OpenMDAO
• (Brief) Introduction to WISDEM and OpenMDAO
• WISDEM installation (essentials only)
• Tutorial 1: Run a simple WISDEM calculation with Jupyter Notebooks
• Some more detail on OpenMDAO
• Tutorial 2: Finding the Betz Limit through OpenMDAOoptimization
• Tutorial 4: Modeling a whole turbine and plant
NREL | 5
WISDEM: Creates a virtual, vertically integrated wind plant from components to operations
Turbine Capital Costs
Component Cost Models
Plant Cost Modeling Onshore Balance
of Station
Onshore Operational System Cost
Analysis
Financing
Annual Energy ProductionPlant Layout and
Energy Production
Dynamic SimulationTurbine
Dynamics
Plant Dynamics
Machine AeroelasticProperties & Controls
Turbine Loads & Energy Performance
Layout Design
Energy ProductionPlant CostsTurbine Costs
Power, Thrust, Noise Curves
Specific Flow Plant Energy Output
Component Mass Properties, Materials & Geometry / Dimensions
Offshore Balance of Station
Offshore Operational
Turbine Design
Tower Rotor Substructure
Rotor Aerodynamics
GeneratorDrivetrain
Turbine Structure Turbine Performance
Substructure
Floating Substructure
Onshore foundation
Offshore Jacket
WISDEM: Wind-Plant Integrated System Design & Engineering Model• Integrated turbine design (e.g. rotor aero-structure, full turbine optimization)• Integrated plant design and operations (e.g. wind plant controls and layout optimization)• Integrated turbine and plant optimization (e.g. site-specific turbine design)
Modular design allows “plug-and-play” with external (3rd party) component modules
NREL | 6
• Most WISDEM modules are developed in Python using the OpenMDAO library– Underlying analysis may be in C,
C++ or Fortran
OpenMDAO (openmdao.org)• Open-source, python-based
platform for systems analysis and multidisciplinary optimization
• Provides ”glue code” and “drivers/wrappers”
• Enables– Model decomposition– Ease of development and
maintenance– Tightly coupled solutions and
parallel methods
Software platform is built with Python using the OpenMDAO library
Phython
NREL | 7
WISDEM installation (essentials only)
• (Brief) Introduction to WISDEM and OpenMDAO
• WISDEM installation (essentials only)
• Tutorial 1: Run a simple WISDEM calculation with Jupyter Notebooks
• Some more detail on OpenMDAO
• Tutorial 2: Finding the Betz Limit through OpenMDAOoptimization
• Tutorial 4: Modeling a whole turbine and plant
NREL | 8
• Key steps1. Download and install Anaconda3 64-bit from https://www.anaconda.com/distribution2. Setup new “conda environment” (provides digital sandbox to explore WISDEM without impacting any
other part of your system) 3. Install WISDEM and its dependencies4. Download WISDEM source code from GitHub
• We want to install the code like a simple user but take a peek at the files like a developer• Open the Anaconda Power Shell (Windows) or Terminal App (Mac) and do:
conda config --add channels conda-forgeconda create -y --name wisdem-env python=3.7conda activate wisdem-envconda install –y wisdem git jupytergit clone https://github.com/WISDEM/WISDEM.git
WISDEM install (essentials only): For full instructions see nwtc.nrel.gov/wisdem
NREL | 9
Tutorial 1: Run a simple WISDEM calculation with Jupyter Notebooks
• (Brief) Introduction to WISDEM and OpenMDAO
• WISDEM installation (essentials only)
• Tutorial 1: Run a simple WISDEM calculation with Jupyter Notebooks
• Some more detail on OpenMDAO
• Tutorial 2: Deriving the Betz Limit through OpenMDAOoptimization
• Tutorial 4: Modeling a whole turbine and plant
NREL | 10
• WISDEM has multiple levels of fidelity, we will operate at the simplest level: “spreadsheet”-type calculation of component masses and cost
• We will: Populate inputs, execute model, list all the model inputs and outputs– Will reveal some of the backend layers of OpenMDAO building blocks– Will ignore OpenMDAO syntax for now
Use WISDEM as a calculator to estimate component masses and costs from simple scaling relationships
WISDEM Cost and Scaling Model
(regression based)
Turbine classMachine ratingRotor diameter
Hub heightNumber of blades
Max tip speedDrivetrain efficiency
Number of main bearings
User overrides of scaling coefficients
Component massesComponent costsSummary massesSummary costs
NREL | 11
There are many ways to run WISDEM (and python) beyond Jupyter Notebooks
Command line from Anaconda Prompt or Terminal App
Spyder for a Matlab-style Desktop PyCharm or other IDE
NREL | 12
• Jupyter Notebook is a web application that connects with your local python shell
• Allows for creating and sharing documents with– Live code– Equations– Visualizations– Narrative text
• To get started with the WISDEM Jupyter Notebook tutorials we have to navigate to the right directory and start Jupyter
• Open the Anaconda Prompt (Windows) or Terminal App (Mac) and do:
cd WISDEM/tutorial-notebooksjupyter notebook
Jupyter Notebook: Interacting with the Python “shell” through a browser in a live code “diary”
NREL | 13
NREL | 14
NREL | 15
Use Shift+Enterto evaluate each block
NREL | 16
NREL | 17
NREL | 18
NREL | 19
Some more detail on OpenMDAO
• (Brief) Introduction to WISDEM and OpenMDAO
• WISDEM installation (essentials only)
• Tutorial 1: Run a simple WISDEM calculation with Jupyter Notebooks
• Some more detail on OpenMDAO
• Tutorial 2: Deriving the Betz Limit through OpenMDAOoptimization
• Tutorial 4: Modeling a whole turbine and plant
NREL | 20
Problem
Model = Top Level Group
OpenMDAO building blocks and concepts
Driver (optimization or analysis)•Design variables •Objective(s) •Constraints
Recorder
ComponentInputs
Outputs
ComponentInputs
Outputs
Group
ComponentInputs
Outputs
ComponentInputs
Outputs
IndepVar
Outputs
Connection: Explicit or same-name “promotes”
Subsystem, ‘B’
Subsystem, ‘C’
Subsystem, ‘A’
NREL | 21
Tutorial 2: Finding the Betz Limit through OpenMDAOoptimization
• (Brief) Introduction to WISDEM and OpenMDAO
• WISDEM installation (essentials only)
• Tutorial 1: Run a simple WISDEM calculation with Jupyter Notebooks
• Some more detail on OpenMDAO
• Tutorial 2: Finding the Betz Limit through OpenMDAOoptimization
• Tutorial 4: Modeling a whole turbine and plant
NREL | 22
OpenMDAO model building steps applied to the Betz Problem
Component Steps• Create an OpenMDAO Component• Add the actuator disk inputs and
outputs• Use declare_partials() to declare
derivatives– Finite difference or exact analytic
options are available• Create a compute() method to
compute outputs from inputs• Create a compute_partials()
method for the derivatives
Group and Problem Steps• Create an OpenMDAO Group.
– Add a subsystem of independent variables
– Add the disk Component as a subsystem
– Connect variables through connect() statements or same name promotion
• Create an OpenMDAO Problem– Set the model = Group instance– Add optimization Driver– Add design variables– Add the objective
• Setup and run problem driver
NREL | 23
NREL | 24
NREL | 25
NREL | 26
NREL | 27
NREL | 28
NREL | 29
NREL | 30
NREL | 31
Tutorial 4: Modeling a whole turbine and plant
• (Brief) Introduction to WISDEM and OpenMDAO
• WISDEM installation (essentials only)
• Tutorial 1: Run a simple WISDEM calculation with Jupyter Notebooks
• Some more detail on OpenMDAO
• Tutorial 2: Finding the Betz Limit through OpenMDAOoptimization
• Tutorial 4: Modeling a whole turbine and plant
NREL | 32
NREL | 33
www.nrel.gov
This work was authored by the National Renewable Energy Laboratory, operated by Alliance for Sustainable Energy, LLC, for the U.S. Department of Energy (DOE) under Contract No. DE-AC36-08GO28308. Funding provided by U.S. Department of Energy Office of Energy Efficiency and Renewable Energy Wind Energy Technologies Office. The views expressed in the article do not necessarily represent the views of the DOE or the U.S. Government. The U.S. Government retains and the publisher, by accepting the article for publication, acknowledges that the U.S. Government retains a nonexclusive, paid-up, irrevocable, worldwide license to publish or reproduce the published form of this work, or allow others to do so, for U.S. Government purposes.
Thank you
NREL/PR-5000-75659