Skip to content

Commit

Permalink
Save progress of changes
Browse files Browse the repository at this point in the history
  • Loading branch information
abhineet-gupta committed Jan 6, 2024
1 parent 7121f71 commit 2a43097
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 60 deletions.
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def __getattr__(cls, name):
"sphinx.ext.autosummary",
"sphinx.ext.intersphinx",
"sphinx.ext.graphviz",
"sphinx.ext.autosectionlabel",
# "sphinx.ext.autosectionlabel",
"sphinx_rtd_theme"
# "sphinxcontrib.bibtex",
]
Expand Down
80 changes: 23 additions & 57 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,79 +3,45 @@ ROSCO Documentation
:Version: |release|
:Date: |today|

NREL's Reference OpenSource Controller (ROSCO) tool-set for wind turbine applications designed to ease controller implementation for the wind turbine researcher. The purpose of these documents is to provide information for the use of the tool-set.
Reference OpenSource Controller (ROSCO) is a reference controller framework designed to facilitates turbine controller design and implementation for fixed and floating offshore wind turbines.
ROSCO provides a modular reference wind turbine controller that can be easily adapted to a wide variety of different wind turbines and can be used to run representative dynamic simulations using OpenFAST.

:numref:`fig-RT` shows the general workflow for the ROSCO tool-chain. with OpenFAST
The ROSCO framwork and toolset provides the following advantages:

.. _fig-RT:
.. figure:: /source/figures/ROSCO_toolbox.svg
:align: center
:width: 80%
- **Easy tuning process**: The tuning process for ROSCO controller is extremely simple where only a few tuning parameters need to be provided. The control designer need not run aeroelastic simulations or provide linearized state space models to obtain the controller.
- **Standard controller framwork**: ROSCO provides a single framework for designing controllers for onshore and offshore turbines of varying sizes. This helps researchers perform 'apples-to-apples' comparison of controller capabilities across turbines. ROSCO has been used to provide reference controllers for many recent reference turbines including the `IEA 3.4-MW <https://github.com/IEAWindTask37/IEA-3.4-130-RWT>`_ , `IEA 10-MW <https://github.com/IEAWindTask37/IEA-10.0-198-RWT>`_ , `IEA 15-MW <https://github.com/IEAWindTask37/IEA-15-240-RWT>`_ and the upcoming `IEA 22-MW <https://github.com/IEAWindTask37/IEA-22-280-RWT>`_ turbines. Engineers can design their own controllers and compare them with reference controller design using ROSCO for existing and new turbines.
- **MATLAB/SIMULINK implementation**: The ROSCO controller framework can be implemented in a MATLAB/SIMULINK environment and can be used along with OpenFAST's MATLAB/SIMULINK implementation to run dynamic simulations. This capability also help in dynamic prototyping of user defined controllers and quick comparision with reference controllers designed using ROSCO.
- **Advanced controller capabilities**: Apart from providing a simple baseline turbine controller, ROSCO includes advanced controller capabilities like distributed aerodynamic controls (e.g., via trailing edge flaps), peak-shaving control to reduce maximum rotor thrust etc. A list of the capabilities of the ROSCO controller is provided in XXX.

ROSCO toolchain general workflow


**ROSCO Toolbox**
The python-based toolbox primarily used for tuning the controller and writing the DISCON.IN.

* Generic tuning of NREL's ROSCO controller
* Simple 1-DOF turbine simulations for quick controller capability verifications
* Parsing of OpenFAST input and output files
* Linear model analysis capability

**ROSCO Controller**
The controller implementation itself. This is compiled to :code:`libdiscon.*` file, reads the DISCON.IN file, and interfaces with OpenFAST using the Bladed-style interface.

* Fortran based
* Follows Bladed-style control interface
* Modular

Standard Use
------------

For the standard use case in OpenFAST (or similar), ROSCO will need to be compiled. This is made possible via the instructions found in :ref:`install`. Once the controller is compiled, the turbine model needs to point to the compiled binary. In OpenFAST, this is ensured by changing the :code:`DLL_FileName` parameter in the ServoDyn input file.

Additionally, an additional input file is needed for the ROSCO controller. Though the controller only needs to be compiled once, each individual turbine/controller tuning requires an input file. This input file is generically dubbed "DISCON.IN''. In OpenFAST, the :code:`DLL_InFile` parameter should be set to point to the desired input file. The ROSCO toolbox is used to automatically generate the input file. These instructions are provided in the instructions for :ref:`standard_use`.

Technical Documentation
-----------------------
Technical Reference
^^^^^^^^^^^^^^^^^^^
A publication highlighting much of the theory behind the controller tuning and implementation methods can be found at:
https://wes.copernicus.org/preprints/wes-2021-19/

Survey
------
Please help us better understand the ROSCO user-base and how we can improve ROSCO through this brief survey:

.. raw:: html
.. Survey
.. ------
.. Please help us better understand the ROSCO user-base and how we can improve ROSCO through this brief survey:
..
.. .. raw:: html
..
.. <iframe width="640px" height= "480px" src= "https://forms.office.com/Pages/ResponsePage.aspx?id=fp3yoM0oVE-EQniFrufAgGWnC45k8q5Kl90RBkHijqBUN0JTNzBJT1QwMjIzNDhCWDlDTUZPWDdMWC4u&embed=true" frameborder= "0" marginwidth= "0" marginheight= "0" style= "border: none; max-width:100%; max-height:100vh" allowfullscreen webkitallowfullscreen mozallowfullscreen msallowfullscreen> </iframe>
<iframe width="640px" height= "480px" src= "https://forms.office.com/Pages/ResponsePage.aspx?id=fp3yoM0oVE-EQniFrufAgGWnC45k8q5Kl90RBkHijqBUN0JTNzBJT1QwMjIzNDhCWDlDTUZPWDdMWC4u&embed=true" frameborder= "0" marginwidth= "0" marginheight= "0" style= "border: none; max-width:100%; max-height:100vh" allowfullscreen webkitallowfullscreen mozallowfullscreen msallowfullscreen> </iframe>



License
-------
Copyright 2021 NREL

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Documentation Directory
^^^^^^^^^^^^^^^^^^^^^^^

.. toctree::
:maxdepth: 3
:maxdepth: 2
:numbered:

source/install.rst
source/standard_use.rst
source/install.rst
source/rosco_toolbox.rst
source/rosco.rst
source/advanced_control.rst
source/api_change.rst
source/toolbox_input.rst
source/ROSCO_instructions_for_Bladed.rst
source/license.rst

7 changes: 7 additions & 0 deletions docs/source/advanced_control.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

.. toctree::

.. _advanced_control:

ROSCO Advanced Capabilities
===========================
20 changes: 20 additions & 0 deletions docs/source/license.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
.. toctree::

.. _license:

License
=======

Copyright 2021 NREL

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
34 changes: 32 additions & 2 deletions docs/source/standard_use.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,40 @@

Standard ROSCO Workflow
=======================
This page outlines methods for reading turbine models, generating the control parameters of a :code:`DISCON.IN`: file, and running aeroelastic simulations to test controllers.
A set of `example scripts <https://github.com/NREL/ROSCO/tree/main/Examples>`_ demonstrate the functionality of the ROSCO toolbox and controller.
ROSCO toolset is modular and contains separate codes for controller tuning, controller implementation and OpenFAST integration.
The figure below shows the general workflow for the ROSCO tool-chain with OpenFAST.

.. _fig-RT:
.. figure:: figures/ROSCO_toolbox.svg
:align: center
:width: 80%

In order to design a controller for a turbine, ROSCO framework requires the OpenFAST model of the turbine and a set of tuning parameter in the form of a 'Tuning.yaml' file.


**ROSCO Controller**
The controller implementation itself. This is compiled to :code:`libdiscon.*` file, reads the DISCON.IN file, and interfaces with OpenFAST using the Bladed-style interface.

* Fortran based
* Follows Bladed-style control interface
* Modular

**ROSCO Toolbox**
The python-based toolbox primarily used for tuning the controller and writing the DISCON.IN.

* Generic tuning of NREL's ROSCO controller
* Simple 1-DOF turbine simulations for quick controller capability verifications
* Parsing of OpenFAST input and output files
* Linear model analysis capability

Standard Use
------------

For the standard use case in OpenFAST (or similar), ROSCO will need to be compiled. This is made possible via the instructions found in :ref:`install`. Once the controller is compiled, the turbine model needs to point to the compiled binary. In OpenFAST, this is ensured by changing the :code:`DLL_FileName` parameter in the ServoDyn input file.

Additionally, an additional input file is needed for the ROSCO controller. Though the controller only needs to be compiled once, each individual turbine/controller tuning requires an input file. This input file is generically dubbed "DISCON.IN''. In OpenFAST, the :code:`DLL_InFile` parameter should be set to point to the desired input file. The ROSCO toolbox is used to automatically generate the input file. These instructions are provided in the instructions for :ref:`standard_use`.

A set of `example scripts <https://github.com/NREL/ROSCO/tree/main/Examples>`_ demonstrate the functionality of the ROSCO toolbox and controller.
Reading Turbine Models
----------------------
Control parameters depend on the turbine model.
Expand Down

0 comments on commit 2a43097

Please sign in to comment.