starting with wisdem™ · dynamic simulation. turbine dynamics. plant dynamics. machine...

34
Starting with WISDEM™ The Short Course Garrett Barter 5th Wind Energy Systems Engineering Workshop (WESE 2019) Pamplona, Spain, October 2-4, 2019

Upload: others

Post on 08-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

Starting with WISDEM™The Short Course

Garrett Barter5th Wind Energy Systems Engineering Workshop (WESE 2019) Pamplona, Spain, October 2-4, 2019

Page 2: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 3: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 4: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 5: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 6: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 7: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 8: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 9: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 10: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 11: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 12: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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”

Page 13: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 13

Page 14: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 14

Page 15: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 15

Use Shift+Enterto evaluate each block

Page 16: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 16

Page 17: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 17

Page 18: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 18

Page 19: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 20: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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’

Page 21: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 22: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 23: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 23

Page 24: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 24

Page 25: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 25

Page 26: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 26

Page 27: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 27

Page 28: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 28

Page 29: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 29

Page 30: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 30

Page 31: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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

Page 32: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 32

Page 33: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

NREL | 33

Page 34: Starting with WISDEM™ · Dynamic Simulation. Turbine Dynamics. Plant Dynamics. Machine Aeroelastic Properties & Controls. Turbine Loads & Energy Performance. Layout Design

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