.. toctree:: .. _standard_use: Standard ROSCO Workflow ======================= .. _fig-RT: .. figure:: /images/ROSCOFramework.svg :align: center :width: 90% ROSCO toolchain general workflow :numref:`fig-RT` shows the general workflow for the ROSCO tool-chain with OpenFAST. For the standard use case in OpenFAST (or similar), ROSCO controller needs to be compiled. The controller is a fortran based module that follows the bladed-style control interface. Compiling the controller ouputs a dynamic-link library (or equivalent) called :code:`libdiscon.dll` for windows, :code:`libdiscon.so` for linux and, :code:`libdiscon.dylib` for mac-os. Instructions for the compilation are provided in :ref:`install`. Once the controller is compiled the turbine simulation tool must point to the compiled library. In OpenFAST, this is ensured by changing the :code:`DLL_FileName` parameter in the ServoDyn input file. This step enables communication between the ROSCO controller and OpenFAST. The compiled ROSCO controller library requires an input file (generally called :code:`DISCON.IN`). It stores several flags and parameters needed by the controller and is read by the compiled dynamic-link library. Several different :code:`DISCON.IN` files, for varous turbines and controller tunings, can use the same dynamic-link library. In OpenFAST, the :code:`DLL_InFile` parameter in the ServoDyn input file determines the desired input file. The ROSCO toolbox is used to tune the ROSCO controller and generate a :code:`DISCON.IN` input file. To tune the controller, ROSCO toolbox needs the OpenFAST model of the turbine and some user inputs in the form of a :code:`tuning.yaml` file. The functionality of ROSCO toolset can be best understood by following the set of included example scripts in :ref:`examplepage`. ROSCO toolset can be installed using the instructions provided in :ref:`install`.