Code Monkey home page Code Monkey logo

nassircassamo / iodmd_sowfa Goto Github PK

View Code? Open in Web Editor NEW
22.0 1.0 3.0 40.17 MB

This repository contains all the work developed in the context of the Master Thesis dissertation entitled Model Predictive Control for Wake Steering: a Koopman Dynamic Mode Decomposition Approach. The repository includes all developed documentation (dissertation, extended abstract, poster and presentation) source code (MATLAB script and functions), datasets and results (animations, articles).

MATLAB 43.00% HTML 16.24% C 40.28% Batchfile 0.19% Makefile 0.23% Java 0.04% Mercury 0.01%
wind-farms dynamic-mode-decomposition koopman-operator model-predictive-control wind-farm-control thesis sowfa

iodmd_sowfa's Introduction

Koopman Dynamic Mode Decomposition for Wind Farm Control

Thesis to obtain the Master of Science Degree in Mechanical Engineering

Repository

This repository contains all the work developed in the context of the above mentioned Master Thesis dissertation. The main outcomes of this work have been segmented as follows:

  • Thesis.pdf: corresponds to the final dissertation, with an introduction to wind turbine control, wind farm control, data driven modelling within fluid dynamics, dynamic mode decomposition and variant algorithms suited for control. All results are also contained in this document.
  • Thesis_presentation.pdf: a presentation of the Thesis.pdf contents.
  • ExtendedAbstract.pdf: a 10 page summary, in two column format, of the Thesis.pdf.
  • poster_thesis.pdf: a poster format summary of the objectives and results in the Thesis.pdf.
  • KOPMAN_IODMD_1.0: the source code, developed in Matlab and making use of existing functions developed by the National Renewable Energy Laboratory (NREL), used to obtain the results in the Thesis.pdf.
  • animations: animations where the datasets can be visualised.
  • articles: articles published based on the work developed within the Thesis.
  • data: contains the datasets used to test the proposed algorithms in Thesis.pdf.

Thesis Abstract

Sitting wind turbines together in wind farms is economically advantageous. However, as the first turbine extracts energy from the wind, less power is available for downstream turbines. Current industry practices neglect the aerodynamic interaction, optimizing only at the individual turbine level, which leads to suboptimal behaviour of the total wind farm. Controlling wind farms as a whole is becoming increasingly important. Nevertheless, due to the fact that wind farms are high order systems whose dynamics are governed by nonlinear partial differential equations with no known analytical solution, the design and implementation of numerical optimal controllers in high fidelity simulators becomes computationally expensive and unsuitable for real time usage. Reduce order state models provide a possible route to the design and implementation of practical cooperative wind farm controllers. This thesis makes use of an innovative algorithm in the context of wind farm modelling - Input Output Dynamic Mode Decomposition - and the ideas of non linear dynamical system theory - the Koopman Operator - to find suitable reduced order models to be used for model predictive control. The wind farm control strategy of wake redirection control is studied. It is shown that a reduced state space model with 37 states can accurately reproduce the downstream turbine generator power dynamics with a variance accounted for of 88%, rebuild the upstream turbine wake with an average normalized root mean squared error of 4% and that controllers can be designed and implemented in a high fidelity simulator for a collective power reference tracking problem.

Source code

The source code is contained in KOPMAN_IODMD_1.0. For simplicity and organisational purposes, the code has been segmented in different folders, according to the final use of a certain function.

Nevertheless, all files should be added to the same directory (either Matlab's or a user created directory) to ensure the program runs smoothly.

Data sets

Two different data sets are contained in the drive mentioned in data, concerning simulations where axial induction control by collectively pitching the blades is used and another where wake redirection control by misaligning the rotor is used. Each folder contains flow field and turbine related information. A more detailed description is present in the folder data.

Application

The Matlab script Main.m contained in KOPMAN_IODMD_1.0 sets the relevant parameters and calls the appropriate functions.

The script functionalities are further described in the KOPMAN_IODMD_1.0 folder.

Author: Nassir Rodrigues Cassamo: [email protected]

October 2020

iodmd_sowfa's People

Contributors

nassircassamo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

iodmd_sowfa's Issues

Hello! Could I ask you a question about IODMD?

Dear Nassir,
Hello! My name is James Chen, a Chinese graduate student, and I read your codes about IODMD from github. There are something I don't quite understand. So I want to ask you for some advice.
First of all, Where should input parameters be modified? In addition, this script requires data in the following fashion:(1) 2 folders of name (2.1) steps_yaw and (2.2) steps_yaw_val, that contain the data non processed directly from CFD simulation from SOWFA. I don't understand what's means.Does it mean I should not run the data through SOWFA simulation. In addition, dirName{'/Users/nassircassamo/Documents/MATLAB/Master_Thesis/steps_yaw_20deg_10offset'};%directory for identification data, wake redirection control.Do I store the data in the path above? I can't find this program where to modify input parameters.
Your reply will be greatly appreciated.

    James Chen

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.