Skip to content

Commit

Permalink
ROSCO 2.5.0 (#115)
Browse files Browse the repository at this point in the history
* FOCAL Updates (#64)

* Update headers

* fix bullets

* make uppercase

* Update turbine.py (#56)

* Update turbine.py

This add several lines for fixing the problem of repeated maximum values in the performance tables. This will cause the error (' the length of x and y is different.') of 'interpolate.interp1d.'

* Add comments and catch when there are multiple optimal pitch angles

Co-authored-by: dzalkind <dzalkind@nrel.gov>

* increment version

* Update for OpenFAST v3.0.0

* Update for OpenFAST v3.0.0

* Install OF3.0.0 for tests

* update for OF v3.0.0

* add publish to pypi on release

* Update to ROSCO v2.3.0

* Update Testing (#58)

* Update scripts to run on eagle

* Update IEA-15MW semi example: use peak shaving w/ ps_percen=0.8

* Add comparison plots to testing scripts

* Update submit script for testing

* Update for latest eagle runs

* Add future to install dependencies

* add TMax to self, define tmin in print_results

* run tests in CI

* generic ROSCO path

* default to overwrite

* fix path

* import platform

* separate run_testing

* cleanup, specify lite test

* don't run testing in after examples, oops.

Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com>
Co-authored-by: Nikhar Abbas <nikhar.abbas@colorado.edu>

* increment version

* Update for OpenFAST v3.0.0

* Install OF3.0.0 for tests

* update for OF v3.0.0

* add publish to pypi on release

* Update to ROSCO v2.3.0

* Increment Version, OF3.0 (#57)

* increment version

* Update for OpenFAST v3.0.0

* Install OF3.0.0 for tests

* update for OF v3.0.0

* add publish to pypi on release

* Update to ROSCO v2.3.0

* increment version

* Update for OpenFAST v3.0.0

* Install OF3.0.0 for tests

* update for OF v3.0.0

* add publish to pypi on release

* Update to ROSCO v2.3.0

* add ROSCO without submodule

* move ROSCO source to ROSCO folder

* Move cmake-related files to ROSCO

* Add back pesky ErrVar

* Remove parameters_files

* Merge ROSCO and _toolbox gitignore

* Fix .gitignore

* Remove Examples/DISCON.IN from git

* Fix and point example_01 to Tune_Cases/

* Update verbiage around using ofTools vs. weis

* Fix and point example_04 to Tune_Cases/

* Clean up example_06

* Clean up example_07

* Only check FlpCornerFreq if using Flp control, fixes example 05

* Make example_04 consistent with others

* Let example_05 run independently from 04

* Clean up example_05, wind files

* Add schema and update empty tuning yaml inputs, not connected yet

* Integrate schema into turbine, controller, and examples

* Only check Fl filter parameters if Fl_Mode > 0, fix example_05

* bump version to 2.3

* Compile ROSCO from ROSCO dir

* Rename to CI_rosco

* Add omega vs. windspeed functionality

* Fix tests: 5MW U_pc and 06 example dir

* Make _Toolbox vs_minspeed in rotor frame to match ROSCO

* Revert ServoDyn change

* change rotor speed constraint to be epsilon

* rename for clarity

* docs major refresh

* fix FA_AccF units in debug file

* docs that build locally

* Deallocate arrays in ROSCO, check in example_05

* Clean up comments

* remove gitmodules

* furo theme

* furo in requirements

* move readthedocs config file, remove furo import in conf.py

* add docs requirements file

* typo

* move index out of source folder

* trying to get furo to work

* import date

* fix versions and titles, cleanup readthedocs requirements

* typo fix, remove extras

* more cleanup

* bump version

* no furo extension, "hack" to load RT version

* proper toctree paths

* specify method

* add mock modules

* fix typos

* update python install requirements

* running locally

* move index to main docs dir again

* update to build locally

* error during warnings

* automated version

* cleanup

* remove old docs

* re-add docs

* simplify

* fix figure path

* try alabaster

* remove archived docs

* Add omega vs. windspeed functionality

* Fix tests: 5MW U_pc and 06 example dir

* more detailed sp.optimize settings

* run MBC3 in parallel

* restructure driver, run initialization doe for tuning

* Try new dlclose function

* Update example_05 to run simple simulation twice and check result

* Revert deallocation stuff

* Close discon library after every sim run

* Test examples on macOS and windows

* Run examples instead of testing on other platforms

* Skip examples in windows for now

* update paths and yaml load funciton

* Skip mac testing of examples

* provide default U_pc for single omega/zeta case

* allow for float or list-like pc tuning inputs

* Change name in setup.py

* WE_Vw unit fix

* Pass through kp_float, if desired

* Minor fixes: schema error and InputReader defaults

* cleeanup for improved stability

* check for doe_logs as string in load_DOE

* major restructure for rsched_driver class

* cleanup verbosity

* run serial by default

* load_parallel as linturb_option

* specific IEA15MW yaml for multi omega

* remove unused module imports

* fix error message types

* lin_file as input

* add comments on inputs to LinearTurbineModel init method

* remove relative file paths

* provide OpenFAST linearizations for IEA15MW UMaineSemi

* put plotting in specific function

* fix WE_lambda units

* add self in on a few necessary variables

* creaete example 12 for robust scheduling

* try a few mbc3 locations for import

* allow list-like or numpy arrays for omega_pc and zeta_pc schedules

* create and use recorder setup function

* Pass Through Kp_float (#57)

* Pass through kp_float, if desired

* Minor fixes: schema error and InputReader defaults

* fix setup_recorder to work for optimization driver too

* Allow pass through of Kp_float = 0

* cleanup om problems, update om0 calc

* doe levels as input

* negative k_float to account for OF conventions

* cleanup print statements

* variable name cleanup, use calculated k_float

* Add defaults to omega_,zeta_ pc and vs, allow to be numbers

* use standard tuning k_float as IC

* formatting update

* update problem setup methods

* cleanup add_dv, enable adding design variables after problem is setup

* change optimization step size

* more setup restructure

* update verbosity

* use sphinx-rtd-theme

* master doc and sphinx rtd theme

* index back to root folder

* only ignore install folders

* remove hidden toctree

* furo theme

* update paths

* convert rt version to string

* update sphinx settings

* move conf

* furo theme

* Mostly a docs update (#61)

* rename for clarity

* docs major refresh

* fix FA_AccF units in debug file

* docs that build locally

* remove gitmodules

* furo theme

* furo in requirements

* move readthedocs config file, remove furo import in conf.py

* add docs requirements file

* typo

* move index out of source folder

* trying to get furo to work

* import date

* fix versions and titles, cleanup readthedocs requirements

* typo fix, remove extras

* more cleanup

* bump version

* no furo extension, "hack" to load RT version

* proper toctree paths

* specify method

* add mock modules

* fix typos

* update python install requirements

* running locally

* move index to main docs dir again

* update to build locally

* error during warnings

* automated version

* cleanup

* remove old docs

* re-add docs

* simplify

* fix figure path

* try alabaster

* remove archived docs

* use sphinx-rtd-theme

* master doc and sphinx rtd theme

* index back to root folder

* only ignore install folders

* remove hidden toctree

* furo theme

* update paths

* convert rt version to string

* update sphinx settings

* move conf

* furo theme

* Pass through Kp_float = 0 (#59)

* Pass through kp_float, if desired

* Minor fixes: schema error and InputReader defaults

* Allow pass through of Kp_float = 0

* Add flp parameters to schema

* Change Fl_Mode default to 0

* Add defaults to omega_,zeta_ pc and vs, allow to be numbers

* Allow single pitch tuning values in code, default U_pc to 0

* use nac acceleration for floating feedback

* Fix TSR saturation for region 2.5operation

* Modify system for constant power operation

* Only modify pole for constant power above-rated

* Remove GenEff from K calc

* Update tuning, use constant power

* use load_rosco_yaml

* constant power

* Fix broken tests

* Include Fl_Mode=2 for nacelle pitching feedback

* Add FOCAL inputs
- hpf on floating feedback
- lpf on wind speed estimator
- associated schema updates

* Set notch and check frequencies when Fl_Mode = 1 (fixes bug)

* Skip filter step if there's an error

* Update IEA-15MW test case DISCON with focal inputs

* Allow Fl_Mode = 2 in ROSCO

* Pass through lpf frequency

* Add FOCAL tuning yaml

* Set Cp contour number of levels

* Add FOCAL params to various writers

* Update/tune focal yaml

* Add scripts for running FAST, tuning various parameters and cases

* Add notebook for FAST plotting

* Set up step case for testing

* Change doubles to C_doubles

* Define real and integer kinds, assign to all of ROSCO

* Add ADJUSTL to DISCON error message

* Fix Fl_Mode == 2

* Fix Fl_Mode == 2 again

* Call yaw, flap, and debug only if enabled in DISOCN.IN

* Make avrSWAP a ReKi and set constant kinds

* Add DISCONs for testing - revert this later

* Fix DISCON comparison, before DISCON's were overwritten by model

* Rename DEBUG2.dbg to RootName.dbg2

* Update TestCase DISCONs to new input file

* Add API change page in docs

* Add link to API change on main page

* Fix table headers

* Fix title underlines

* Fix tables again

* Fix tables again

* Fix version numbering in docs

* Simplify FAST_directory in run_FAST

* Versioning (#65)

* use sphinx-rtd-theme

* master doc and sphinx rtd theme

* index back to root folder

* only ignore install folders

* remove hidden toctree

* furo theme

* update paths

* convert rt version to string

* update sphinx settings

* move conf

* furo theme

* remove git versioning from cmake

* use hard coded rosco_version

* update intro write method

* set nowrap for intel compilers

* Add transfer of error message and clear message after each call

* update install instructions

* Catch nans in ROSCO at end of WSE

* fix conda install typo

* cleanup docs

* Rename DEBUG2.dbg to RootName.dbg2

* Fix Fl_Mode == 2

* Fix Fl_Mode == 2 again

* Allow Fl_Mode = 2 in ROSCO

* Set notch and check frequencies when Fl_Mode = 1 (fixes bug)

* Update FOCAL tuning yaml

* Update TSR

* Clean up and doc fix

* Remove publish to pypi

* Define all constant inputs to functions with kind typing

* Generate Test_Case/ inputs automatically

* Fix IEA15 DISCON path

* Fix example 11 paths

* Auto-generate tuning input yaml using schema

* Add toolbox_input to doc index

* Add toctree

* Re-name title of toolbox_input

Co-authored-by: Nikhar Abbas <nikhar.abbas@colorado.edu>
Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com>
Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com>

* update listcheck method for numpy arrays

* Open Loop Control (#98)

* create rosco types yaml

* Add more descriptions, add integer_c default, cleanup

* updates for allocatability and shapes

* python scripts to write ROSCO_types.f90

* reemove superfulous modules

* use types from ROSCO registry

* create rosco types yaml

* Add more descriptions, add integer_c default, cleanup

* updates for allocatability and shapes

* python scripts to write ROSCO_types.f90

* reemove superfulous modules

* use types from ROSCO registry

* Saturate inputs to WSE.  Needs some TLC, but seems to work

* Reduce saturation limits on speed, torque

* Re-organize, set saturation limits.  Working at 3 m/s

* Initial add of OL control to ROSCO: builds

* Update DISCONs with open loop inputs

* Fix file reading for OL_Filename

* Add open loop control generation and file writing

* Use DISCON_dict for more manageable DISCON file writing

* Add open loop example, fix constant timeseries

* Make open loop example generate power

* Handle relative paths and calling from outside the run directory:
- Some helper functions borrowed from OpenFAST, f/ext_control
- Updated file writing

* Clean up: versions, print statements

* Fix SysFiles paths in CMakeLists

* Tidy up Ext_DLL names

* More Ext_DLL name tidying

* Test write_registry.py

* Update for OL Control

* Move preprocessor lines

* add zenodo DOI

* Regenerated Types

* fix shape

* revert filepath change

* give all  types a size, ProcAddr size = 3

* update types

* test registry in compile step

* specify default shell

* update write_registry path

* remove default shell

* Document API changes, provide OL input example

* Fix example 14 (yaw input)

* Add error catching to yaw control

* Tidy up OL_Input Reading: error catching, generalize

* More yaw control fixes, to model

* Checkout develop CMakeLists for ROSCO

* Update DISCON.INs for TestCases/

* Revert "Checkout develop CMakeLists for ROSCO"

This reverts commit 87a4913.

* Revert windows cmake stuff to develop

* Fix CMake again

* Revert "Revert windows cmake stuff to develop"

This reverts commit 39df122.

* Make last cmake fix - hopefully

Co-authored-by: Nikhar Abbas <nikhar.abbas@colorado.edu>

* Restart & registry (#99)

* Convert WE saved variables to WE type

* Put restart flag in localvars

* Use saved filter params from LocalVar

* save pitcomt last

* Move IPC saved variables to localvars

* Saved pi controller variables to localvar

* Save RootMyb_Last to localvar

* ROSCO_IO - initial commit. Include restart and debug functions

* Use ROSCO IO and call restart functions

* Remove debug from function.f90

* Save ACC Infile info

* update for restart capabilities

* add rosco_io with restart and debug functions

* cleanup debug call

* use registry generate types and IO

* delete DFController

* fix timestep mismatch

* remove unnecessaray istatus check

* close files

* add reg test for restart

* add restart option to run_openfast

* add testing to CI, ignore generate files

* fix fastcall

* remove extra commas

* specify gfortran-10

* testing flag cleanup

* Use lv_strings to generate debug output

* Revert "testing flag cleanup"

This reverts commit 6f29556.

* Revert "specify gfortran-10"

This reverts commit 4c31544.

* minor cleanup

* Use kind from constants

* Add some comments for clarity

* put debug in if statements

* separate reg tests from oother tests

* Fl_Mode>0

* Remove hard coded values

* Add filtered signals and WE_Vw to debug varrs

* cd for regtest

* Check logging level before calling debug

* add fl_pitcom and pc_minpit to debugvars

Co-authored-by: dzalkind <dzalkind@nrel.gov>

* Break up if statement in open loop pitch (#100)

* Break up if statement in open loop pitch

* Make torque and yaw consistent with pitch: can start after some time

* add bld edgewise freq to robust dict_inputs

* Fix ccrotor inputs (#104)

* remove interpolation of blade chord and twist

* rename aerodynblade inputs

* Update surface and DISCON.INs

* Fix performance table paths

* Allow default inputs (#110)

* Allow defaults for AeroDyn inputs

* Allow AeroDyn inputs to be floats, too

* ipc (#105)

* remove interpolation of blade chord and twist

* rename aerodynblade inputs

* Update surface and DISCON.INs

* Fix performance table paths

* Add proportional control and cleanup IPC

* Add IPC and filtered RootMyc to registry

* Better logic for filtering RootMOOP and fix notch filter slopes bug

* Add cyclic flap conrol

* Fix comments in ColemanTransformInverse

* Addd IPC_KP to DISCON.IN

* Error checking foro flp or ipc

* add mutichannel plotting with tuples

* add CMakeFiles to gitignore

* Add IPC_KP to api changes

* numerical qualifiers for error handling

* add IPC gains to schema for pass-through ability

* fix variable names

* fix ipc gain printing bug

* make sure IPC_KP is positive

* Update Polars to point to coord files

* ignore dbg2 files

* Add IEA15MW_OL.yaml

* update coord reader/writer

* expand pitch_initial to 30 degrees

* Add example 13 for IPC

* Update cp surfaces and DISCONS

* add examples to readme

* cleanup and streaamline run_examples

* Add IPC tuning vars

* Allow IPC to command pitch value below peak shaving saturation limit

* shorten simulation time

* Fix Material parameter path

* Update DISCONs again

* Fix OL_Input reading

* Set wind speed, rotor speed IC in example 14

* Debug OL reading

* Add more debugging lines

* Add more debugging lines 2

* Clean up, hone in on debug call

* Disable logging level

* Update discons - resolve conflict

* Print when finished with ROSCO

* add control packageg

* Use PriPath and RootName to name dbg files

* Print AvrSWAP

* Revert "Use PriPath and RootName to name dbg files"

This reverts commit 062fcaa.

* Disable other examples

* Print OL inputs

* Allow logging level 3

* Print OL inputs

* Make example shorter

* Print more stuf

* Print shape

* Revert "Print OL inputs"

This reverts commit 8e2a642.

* Update ROSCO Simulink model with IPC example

* refactor flap tuning for normalization methods

* improved flap controller filtering

* delete extra F_FlpCornerFrerq

* Update inputs, reader, and writer for OF 3.1.0

* Make sigma default interp type for multi_sigma

* Use openfast 3.1.0 in CI

* Fix leak...maybe

* Use OF 3.1.0 in testing

* Use gfotran for compile

* Clean up print statements

* Re-enable all examples

* Update NREL-5MW AD file

* Only check airfoil controls if more than one table

* Update BAR models

* Revert "Use gfotran for compile"

This reverts commit 5a6e2b7.

* Install pyFAST for CI

* Fix some paths in ex12

* Disable example 12

* Fix example 12 linear path, re-enable

* Skip compilers install for mac

* Try gfortran-9, no compilers

* Try gfortran-10, no compilers

* Skip windows compile in pytools

* Re-enable windows, use gfortran as FC

* Unset FC in windows

* Set environment for windows when dependencies installed

* Try setting environment in installation

* Put conditional env setting in correct place

* Try in setup again

* Break up tasks: Windows vs. not

* Update DISCONs

* Update docs with new variables

* Add example documentation

* Update ROSCO Simulink model for 3.1.0

* Make IEA model float again

* Reduce IEA timestep

* Match DT to checkpoint time

Co-authored-by: dzalkind <dzalkind@nrel.gov>

* Increment version number

* Bladed docs (#116)

* Added image of Bladed control screen setup

* Delete Bladed control screen.png

* Adding image of Bladed control screen

* Add files via upload

* Minor edit 1

* Minor change 2

* Minor change 3

* Minor change 4

* Change 6

* Change 7

* Change 8

* Minor change 9

Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com>
Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com>

* Update version in API change docs

* Bladed readthedocs (#117)

* Added image of Bladed control screen setup

* Delete Bladed control screen.png

* Adding image of Bladed control screen

* Add files via upload

* Minor edit 1

* Minor change 2

* Minor change 3

* Minor change 4

* Change 6

* Change 7

* Change 8

* Minor change 9

* Tinker with characters in bladed instructions

* Add bladed instructions to index

* Change bladed toctree label

* Do underline stuff

* Make toctree label same as file

* Remove colons from headers

Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com>
Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com>

* Update docs to reflect CI process

Co-authored-by: Nikhar Abbas <nikhar.abbas@colorado.edu>
Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com>
Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com>
Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com>
  • Loading branch information
5 people authored Apr 1, 2022
1 parent 9646dbd commit ad15bcd
Show file tree
Hide file tree
Showing 130 changed files with 32,165 additions and 6,754 deletions.
29 changes: 15 additions & 14 deletions .github/workflows/CI_rosco-compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
fail-fast: true
matrix:
os: ["ubuntu-latest", "macOS-latest", "windows-latest"]
python-version: ["3.8"]
python-version: ["3.8"]

steps:
- name: Checkout repository
Expand All @@ -28,8 +28,21 @@ jobs:
miniconda-version: "latest"
channels: conda-forge, general
auto-update-conda: true
python-version: 3.8
environment-file: environment.yml


# Install ROSCO toolbox
- name: Install ROSCO toolbox
shell: bash -l {0}
run: |
python setup.py install
# Re-generate registry
- name: Generate Registry
shell: bash -l {0}
run: python ROSCO/rosco_registry/write_registry.py


- name: Add dependencies windows
if: true == contains( matrix.os, 'windows')
shell: bash -l {0}
Expand Down Expand Up @@ -59,15 +72,3 @@ jobs:
-G "MinGW Makefiles" \
..
cmake --build . --target install
# # Install ROSCO linux
# - name: Compile ROSCO linux
# if: false == contains( matrix.os, 'windows')
# working-directory: ${{runner.workspace}}/ROSCO/ROSCO/build

# # Install ROSCO windows
# - name: Compile ROSCO windows
# if: true == contains( matrix.os, 'windows')
# working-directory: ${{runner.workspace}}/ROSCO/ROSCO/build
# run: cmake --build . --target install -G "MinGW Makefiles"

44 changes: 33 additions & 11 deletions .github/workflows/CI_rosco-pytools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on: [push, pull_request]

# Specify FORTRAN compiler
env:
FC: gfortran
FC: gfortran-10

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
Expand Down Expand Up @@ -42,15 +42,25 @@ jobs:
if: true == contains( matrix.os, 'windows')
run: |
conda install -y m2w64-toolchain libpython
env:
FC: gfortran


- name: Add dependencies macOS specific
if: true == contains( matrix.os, 'macOS')
run: |
conda install compilers
# - name: Add dependencies macOS specific
# if: true == contains( matrix.os, 'macOS')
# run: |
# conda install compilers

# Install ROSCO toolbox
- name: Install ROSCO toolbox on Windows
if: true == contains( matrix.os, 'windows')
env:
FC: gfortran
run: |
python setup.py develop --compile-rosco
- name: Install ROSCO toolbox
if: false == contains( matrix.os, 'windows')
run: |
python setup.py develop --compile-rosco
Expand Down Expand Up @@ -93,6 +103,12 @@ jobs:
run: |
conda install -y m2w64-toolchain libpython
conda install -y wisdem
- name: Add pyFAST dependency
if: false == contains( matrix.os, 'windows')
run: |
git clone http://github.com/OpenFAST/python-toolbox
cd python-toolbox
python -m pip install -e .
# Install ROSCO toolbox
Expand All @@ -103,7 +119,7 @@ jobs:
# Install OpenFAST
- name: Install OpenFAST
run: |
conda install openfast==3.0.0
conda install openfast==3.1.0
# Run examples
- name: Run examples
Expand Down Expand Up @@ -154,10 +170,16 @@ jobs:
# Install OpenFAST
- name: Install OpenFAST
run: |
conda install openfast==3.0.0
conda install openfast==3.1.0
# Run Testing
- name: Run testing
# Run ROSCO Testing
- name: Run ROSCO testing
run: |
cd ROSCO_testing
python ROSCO_testing.py
# Regression testing
- name: Run regression testing
run: |
cd ROSCO_testing
python ROSCO_testing.py
python regtest.py
27 changes: 0 additions & 27 deletions .github/workflows/publish_to_pypi.yml

This file was deleted.

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ Source/Release/
*build*
Makefile
*/install/*
*test_out*
*CMakeFiles*

# Archive
Scripts/CompileDISCONHereCopyRun\.cmd
Expand Down Expand Up @@ -50,6 +52,7 @@ _build
*.sum
*.ech
*.dbg
*.dbg2
*.out
*.outb
*.dbg
Expand Down
Loading

0 comments on commit ad15bcd

Please sign in to comment.