From 2a1c63a0fcc3e163b3a90b4ddabf40a37cbd4cd3 Mon Sep 17 00:00:00 2001 From: dzalkind Date: Tue, 13 Feb 2024 10:14:19 -0700 Subject: [PATCH 1/4] Add message about use case --- .github/ISSUE_TEMPLATE/bug_report.md | 33 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 14 ++++++++++ 2 files changed, 47 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..e142ac6f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,33 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +## Desired use case +_If you are able, please provide some background about your ROSCO use case. It helps guide our development and could help us better fix your issue._ + +## Description +_Describe the bug here_ + +### Steps to reproduce issue +_Please provide a minimum working example (MWE) if possible_ + +1. … +2. … +3. … + +### Current behavior +… + +### Expected behavior +… + + +### Code versions +_List versions only if relevant_ +- Python +- … \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..7cecc72c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,14 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +# Description of feature +Describe the feature here and provide some context. Under what scenario would this be useful? + +# Potential solution +Can you think of ways to implement this? \ No newline at end of file From 22f186f318edbf5b0b6200fd6b36c37d575638c2 Mon Sep 17 00:00:00 2001 From: dzalkind Date: Tue, 13 Feb 2024 10:56:19 -0700 Subject: [PATCH 2/4] Add pkg-config to environment --- environment.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/environment.yml b/environment.yml index c44181ad..ab4464f8 100644 --- a/environment.yml +++ b/environment.yml @@ -11,6 +11,7 @@ dependencies: - ninja - numpy - pandas + - pkg-config - pyYAML - pyparsing - pytest From 05161233d63a37ba1db1f7070e5d6f536f97acce Mon Sep 17 00:00:00 2001 From: Garrett Barter Date: Fri, 3 May 2024 08:48:52 -0600 Subject: [PATCH 3/4] Fix pypi (#342) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Print when finished with ROSCO * add control packageg * Add twr frequency exclusion zone * fix units for exclusion zone * Add exclusion zone mode to * Add exclusion zone to example * Update DISCONs * Fix print var type for WE_CP * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 * sigma + ipc (#125) * cleanup api change table * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * add sigma function * Use IPC_Vramp for IPC cut-in * Add IPC_Vramp DISCON inputs * update registry * Update DISCONs * Update docs for API change * Fix IPC_Vramp data type * update comments Co-authored-by: dzalkind * Flip Ct and Cq table allocation (#130) * Pitch Actuator and IPC updates (#123) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 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> * Fixed wrong formatting of list items (#122) extra newline required between list elements * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Flip Ct and Cq table allocation * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com> Co-authored-by: Nikhar Abbas Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com> Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com> Co-authored-by: Gustavo Hylander <74593034+ghylander@users.noreply.github.com> * Add OpenFAST channels that Simulink reads (#135) * RAAW Updates (#133) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 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> * Fixed wrong formatting of list items (#122) extra newline required between list elements * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Add Azimuth tracking controller in Simulink * Always enable GenDOF, add options for simp_step * Add sweep for IPC gains and FA damper * Fix NumCoords in FAST_writer * Add turbulent case to runFAST/CaseLibrary * Add peak shaving sweep function * Increase default IPC_IntSat, make input parameter in future * Flip Ct and Cq table allocation (#129) * Flip Ct and Cq table allocation * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change * Add user-defined hh case * Fix AddF0 and RayleighDamp in FAST_reader * Add max_torque_factor for constant power control, flexible upper limit * Make update discons relative to tuning yaml * Update AddF0 and NumCoords in FAST_reader/writer * Remove matlab/rotor position control stuff Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com> Co-authored-by: Nikhar Abbas Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com> Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com> Co-authored-by: Gustavo Hylander <74593034+ghylander@users.noreply.github.com> * Pass through (#136) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 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> * Fixed wrong formatting of list items (#122) extra newline required between list elements * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Add Azimuth tracking controller in Simulink * Always enable GenDOF, add options for simp_step * Add sweep for IPC gains and FA damper * Fix NumCoords in FAST_writer * Add turbulent case to runFAST/CaseLibrary * Add peak shaving sweep function * Increase default IPC_IntSat, make input parameter in future * Flip Ct and Cq table allocation (#129) * Flip Ct and Cq table allocation * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change * Add user-defined hh case * Fix AddF0 and RayleighDamp in FAST_reader * Add max_torque_factor for constant power control, flexible upper limit * Make update discons relative to tuning yaml * Update AddF0 and NumCoords in FAST_reader/writer * Remove matlab/rotor position control stuff * Add initial DISCON pass through schema * Add TODO items for pull requests * Add initial pass through capability, example * Add PassThrough example yaml * Make cp filename relative to FAST_directory throughout * Remove brackets, regen input docs * Add to PassThrough example yaml * Add example 15 to testing, fix yaml * Tidy comments in CaseLibrary Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com> Co-authored-by: Nikhar Abbas Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com> Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com> Co-authored-by: Gustavo Hylander <74593034+ghylander@users.noreply.github.com> * Robust control updates (#139) * change default interp type * improve nested MPI handling * fix cl bug, sm calc more robust, allow single plant for interp * add load from pickle capabilites * add re-try logic * save v_above_rated to controller object * fix BAR cp_ct_cq surface path * update discons * remove rogue DISCON * External Control Interface (#141) * Add ExtControl manually from f/ext_control, compiling * Fix Cp plots * Update multiple discons * Make FAST_Directory relative to yaml * Set control to ROSCO, sweep max torque * Fix c_float type in registry, building * Update DISCON writer, fix reader * Add example for running Ext control, running * Max example actually call extdll, update inputs, running * Add ExtControl module! * Add ROSCO_Helpers, GetNewUnit, shorten ReadSetParameters, Functions * Update write_registry with GetNewUnit * Tidy up RootName: remove hard-coded index * Close Cp file, fixes checkpoint test * Clean up examples, add 16 to CI testing * Change regtest name in CI * Update DISCONs * Add API change documentation * Add summary of API changes, finish external interface * Tidy code, point to location for using ExtDLL * F/zmq (#145) * cleanup api change table * zeromq client and f90 files - initia lcommit * add zmq install reqs * remove yaw-by-ipc * typo fix * add zeroMQ interface to registry and source - enable zeroMQ for yaw control * cleanup to compile, move ZMQ_Mode to flags, write DISCONS * only set ZMQ_Client if flag is enabled * fix bug in discons * minor updates and add sim with wind direction * change to dict inputs for control interface * add zmq example * Revert "remove yaw-by-ipc" This reverts commit 2ca2859884313aa6d8fdd217a7fede73802a5fcf. * Enable Yaw-by-ipc again * update and execute zeromq example * add zmq to dependencies * sudo for apt-get * libzmq3-dev typo * setup cmake * rename example 16 to 17 * read empty line * update types, regen discons * fix build path * remove non-ubuntu examples, type in cmake command * Set ROSCO=True * typo fix and update DISCONs * document API changes * newlines and in-text code * updated removed inputs, fix intext code syntax * run example 17 * Add description to example 17 * zeromq -> pyzmq, cleanup * better table for new/modified/removed * fix real(8) * cleanup zmqVar conventions and uses. Call zmq using a time period * Update DISCONS * run all examples * Fix Y_uSwitch description * update comm address example * execute with runpy instead of importlib * move zmq interface classes to control_interface * Properly shutdown ZMQ interface * add IEA15MW_ExtInterface.yaml * Incorporate runFAST stuff from WEIS, clean up * Remove specific rosco_dll * Publish artifacts from examples * Clean up examples following runFAST business * move archive artifacts * Fix build dir in example 17 * Switch install/develop in pytools CI * archive even if exampless fail * add zmq build instructions * cleanup and rename sim * Remove BITS_IN_ADDR stuff * Pass case_inputs and rosco_dll to runFAST object * Pass correct DLL_FileName for external control * Tidy example 15 commenting Co-authored-by: dzalkind * Update registry * update discons * Change TD_Mode to Twr_Mode * Clean up TwrControl_Mode * Update example 05 units * Add generator efficiency to power output of simple simulation * Update Windows install instructions * Add rotor speed tracking, test case * Update discons * Adding pitch actuator fault (#163) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Implement initial pitch actuator * Set up steps case * 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 * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Add Azimuth tracking controller in Simulink * Always enable GenDOF, add options for simp_step * Add sweep for IPC gains and FA damper * Fix NumCoords in FAST_writer * sigma + ipc (#125) * cleanup api change table * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * add sigma function * Use IPC_Vramp for IPC cut-in * Add IPC_Vramp DISCON inputs * update registry * Update DISCONs * Update docs for API change * Fix IPC_Vramp data type * update comments Co-authored-by: dzalkind * Add turbulent case to runFAST/CaseLibrary * Add peak shaving sweep function * Increase default IPC_IntSat, make input parameter in future * Flip Ct and Cq table allocation * Flip Ct and Cq table allocation (#130) * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change * Add user-defined hh case * Fix AddF0 and RayleighDamp in FAST_reader * Pitch Actuator and IPC updates (#123) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 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> * Fixed wrong formatting of list items (#122) extra newline required between list elements * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Flip Ct and Cq table allocation * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com> Co-authored-by: Nikhar Abbas Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com> Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com> Co-authored-by: Gustavo Hylander <74593034+ghylander@users.noreply.github.com> * Add max_torque_factor for constant power control, flexible upper limit * Make update discons relative to tuning yaml * Update AddF0 and NumCoords in FAST_reader/writer * Add OpenFAST channels that Simulink reads (#135) * RAAW Updates (#133) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 reg… * Various Bug Fixes (#167) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Implement initial pitch actuator * Set up steps case * 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 * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Add Azimuth tracking controller in Simulink * Always enable GenDOF, add options for simp_step * Add sweep for IPC gains and FA damper * Fix NumCoords in FAST_writer * sigma + ipc (#125) * cleanup api change table * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * add sigma function * Use IPC_Vramp for IPC cut-in * Add IPC_Vramp DISCON inputs * update registry * Update DISCONs * Update docs for API change * Fix IPC_Vramp data type * update comments Co-authored-by: dzalkind * Add turbulent case to runFAST/CaseLibrary * Add peak shaving sweep function * Increase default IPC_IntSat, make input parameter in future * Flip Ct and Cq table allocation * Flip Ct and Cq table allocation (#130) * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change * Add user-defined hh case * Fix AddF0 and RayleighDamp in FAST_reader * Pitch Actuator and IPC updates (#123) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 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> * Fixed wrong formatting of list items (#122) extra newline required between list elements * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Flip Ct and Cq table allocation * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com> Co-authored-by: Nikhar Abbas Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com> Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com> Co-authored-by: Gustavo Hylander <74593034+ghylander@users.noreply.github.com> * Add max_torque_factor for constant power control, flexible upper limit * Make update discons relative to tuning yaml * Update AddF0 and NumCoords in FAST_reader/writer * Add OpenFAST channels that Simulink reads (#135) * RAAW Updates (#133) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * … * Added feature to read AeroDyn 14 files also for the case without tower influence. (#177) closes #176 * Various Bug Fixes (#188) * Fix yaw threshold documentation in DISCON * Fix debug unit labels * Add nacelle heading error to DebugVar * Update ROSCO_IO and Types * Read NacHeading from OpenFAST * Update DISCONs * Fix ******s in dbg files * Allow single U in power_curve * Initialize floating feedback filters at 0, make optional input for filts * give dummy units if dbg units missing * Update FAST_wrapper.py Fix UnboundLocalError: local variable 'e' referenced before assignment * Update example_08.py Remove tmin so that entire simulation is plotted. Removing tmin=10 because with that setting only the final timestep of the simulation is loaded * Update linear_model handling for new pyFAST, will break with weis import * Try with conda installed compiler * Re-do filter initialization, reset value unused for now * Regen registry and discons * Enable run_FAST in setup install * Set default wind_dir in simp_step case * Add dll shutdown method to control_interface Co-authored-by: Alex Clerc * Update sim.py (#196) Fix gen_power in sim_ws_wd_series so it includes efficiency * Doc fix (#200) * Correction of Full ROSCO Installation document * Use numpy 1.23 until other things catch up, like openmdao Co-authored-by: sarijalou * OpenFAST v3.3.0 (#202) * Correction of Full ROSCO Installation document * Update FAST_reader, writer, input for 3.3.0 * Use numpy 1.23 until other things catch up, like openmdao * Tidy label to match OpenFAST reg-test * Use OpenFAST 3.3 in CI tests Co-authored-by: sarijalou * Tidy up merge with develop * Add VS_RefSpd and PC_RefSpd to LocalVars * Separate collective pitch command from total, use in SS * Tidy input writer * Add TRA example * Add Twr_GainFactor and Twr_GainTau * Allow Twr_Mode of 3 in tuning yaml * Fix default Twr_GainTau * Add example_19 to CI * Try compilers in macOS build * AWC First Version, collected changes * Compatibility with Numpy v1.24 (#208) * compatibility with numpy 1.24 * update CI to newest action, generic gfortran, and python 3.9 * install gfortran on macs * change slashes on windows? * revert slash and shell changes * more path fix * trying quotes * try bash again * specify source dir * trial and error. . . * trial and error. . . * try a different shell? * trial and error * trial and error * trial and error * Use new numpy * Add AWC parameters to registry, regenerate types * Apply DbKi to COMPLEX * Re-organize AWC pitch contribution, before actuator * Separate contribution to PitCom from mode calculation * Make AWC_complexangle a LocalVar for logging * Allow PA_Mode 1 (#213) * IPC Saturation Fix [RAAW] (#210) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Implement initial pitch actuator * Set up steps case * 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 * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Add Azimuth tracking controller in Simulink * Always enable GenDOF, add options for simp_step * Add sweep for IPC gains and FA damper * Fix NumCoords in FAST_writer * sigma + ipc (#125) * cleanup api change table * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * add sigma function * Use IPC_Vramp for IPC cut-in * Add IPC_Vramp DISCON inputs * update registry * Update DISCONs * Update docs for API change * Fix IPC_Vramp data type * update comments Co-authored-by: dzalkind * Add turbulent case to runFAST/CaseLibrary * Add peak shaving sweep function * Increase default IPC_IntSat, make input parameter in future * Flip Ct and Cq table allocation * Flip Ct and Cq table allocation (#130) * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change * Add user-defined hh case * Fix AddF0 and RayleighDamp in FAST_reader * Pitch Actuator and IPC updates (#123) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 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> * Fixed wrong formatting of list items (#122) extra newline required between list elements * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Flip Ct and Cq table allocation * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com> Co-authored-by: Nikhar Abbas Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com> Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com> Co-authored-by: Gustavo Hylander <74593034+ghylander@users.noreply.github.com> * Add max_torque_factor for constant power control, flexible upper limit * Make update discons relative to tuning yaml * Update AddF0 and NumCoords in FAST_reader/writer * Remove matlab/rotor position control stuff * Add OpenFAST channels that Simulink reads (#135) * Add collective blade pitch signal for WSE, shutdown * Clean up merge: two sigma functions, finish adding collective BP * Use IPC always in IEA-15MW case * Add IPC_SatMode input * Force IPC_SatMode to be an int in writer * Fix IPC_SatMode cherry pick * Fix IPC_SatMode/IntSat description, update DISCONs * Add new IPC_SatModes * Rate limit blade pitch on first time step * Update discons, registry * Move BlPitchC -> BlPitchCMeas(ured) * Update registry description * Remove old update_discons * Removed duplicate pitch assignment and removed MinPitch mods for AWC * Add script for updating DISCON versions (#214) * Allow PA_Mode 1 * Add update_discon_version function * Add update_rosco_discons to testing, add example for updating version * Fix tuning_yaml name in example_19 * Fixes to readsetparams and awc location * Adding NREL 2.8 127 for AWC testing * Rename examples (#215) * Allow PA_Mode 1 * Add update_discon_version function * Add update_rosco_discons to testing, add example for updating version * Rename and consolidate examples * Rename to test_examples.py to follow pytest convention * Fix tuning_yaml name in example_19 * Change to pytest for test_examples * Revert "Change to pytest for test_examples" This reverts commit 2f996d98b34a3f15e3f9333c52491f8b0d86a0ec. * Remove dev_branch input, clean up old code, fix reader * Fix load_from_fast in 09 * Update reader/writer/inputs for OpenFAST v3.4.0 * Finish updating inputs for 3.4.0 * Tidy up some more example naming * Fix airfoil reader * Remove remaining dev_branch references * Increment openfast version * Fix example paths * Fix ROSCO_walkthrough notebook * Include ROSCO_walkthrough outputs * V270 prep (#218) * Allow PA_Mode 1 * Add update_discon_version function * Add update_rosco_discons to testing, add example for updating version * Rename and consolidate examples * Rename to test_examples.py to follow pytest convention * Fix tuning_yaml name in example_19 * Change to pytest for test_examples * Revert "Change to pytest for test_examples" This reverts commit 2f996d98b34a3f15e3f9333c52491f8b0d86a0ec. * Remove dev_branch input, clean up old code, fix reader * Fix load_from_fast in 09 * Update reader/writer/inputs for OpenFAST v3.4.0 * Finish updating inputs for 3.4.0 * Tidy up some more example naming * Fix airfoil reader * Remove remaining dev_branch references * Increment openfast version * Increment version number * Update docs for API changes in 2.7.0 * Fix example paths * Fix ROSCO_walkthrough notebook * Include ROSCO_walkthrough outputs * Update toolbox_input in docs * Allow any numpy * Fix array casting not allowed in new numpy version * Make check of cmake install dir better * Add case generation updates * Add initial AWC example, needs OF3.4 * Add AWC_Mode and move AWC into subroutine * Update example to point to correct inputs * Remove LocalVar%PC_MinPit = CntrPar%PC_MinPit, breaking setpoint smoother * Set min pitch for AWC * Tidy up input additions * Update other DISCONs * Add AWC to toolbox schema * Tidy example * Update AWC example with instructions/theory * Formatting fixes * Prep for more modes * Update 20_active_wake_control.py * Fix units in schema * Test all AWC cases in example 20 * Tidy up DISCON file writing * Revert setup directory * Update 20_active_wake_control.py Documentation update: -added type of input, either integer or float -added suggested ranges for input variables (only one of these ranges is a hard rule that might break something if not followed, which is that AWC_NumModes>=0) -added more description of what the azimuthal mode number is Note to Dan: I didn't follow exactly if the units in the code changed between rad and deg - can you check that the units in rows 14-16 are correct? Also, let's have Lawrence review these additions. * Update NREL-2p8-127_DISCON.IN Updating units. * Update Controllers.f90 Update units. * Update ROSCO_Types.f90 Update units. * Update ReadSetParameters.f90 Update units. * Update 20_active_wake_control.py Update units and documentation. * Update toolbox_schema.yaml Update units. * Update utilities.py Update AWC descriptions and units. * Update rosco_types.yaml Update AWC units. * Added NREL-developed AWC-implementation * Undo unintentional changes to wrie_registry.py * Fix file writing in AWC section * Update all DISCONs * Add 20_awc to test_examples * Add 2.8 to update_discons, regenerate DISCON Should match closely to original DISCON * Update AWC_Mode descriptions * Updated Coleman Transformation based AWC * Platform control and Optional Inputs (#227) * Fix yaw threshold documentation in DISCON * Fix debug unit labels * Add nacelle heading error to DebugVar * Update ROSCO_IO and Types * Read NacHeading from OpenFAST * Update DISCONs * Fix ******s in dbg files * Allow single U in power_curve * Initialize floating feedback filters at 0, make optional input for filts * give dummy units if dbg units missing * Update FAST_wrapper.py Fix UnboundLocalError: local variable 'e' referenced before assignment * Update example_08.py Remove tmin so that entire simulation is plotted. Removing tmin=10 because with that setting only the final timestep of the simulation is loaded * Update linear_model handling for new pyFAST, will break with weis import * Try with conda installed compiler * Re-do filter initialization, reset value unused for now * Regen registry and discons * Read optional MoorDyn control input * Add cable control index values and initial implementation for opt inputs * Add CC_Mode input, use schema description in file writing * Add initial cable control module, tidy and expand dbg3 output * Output first index of LocalVar for nonspecified length arrays * Add initial line kinematics * Add initial line kinematics - part 2 * Generalize actuator time constant, make input * Move input line reading to start * Fix CC_ActTau * Apply line kinematics to avrSWAP * Add StC readers/writers * Update reader/writer/inputs for OpenFAST v3.4.0 * Add StC control inputs, fix allocation location for CC * Add initial structural control * Add platform motion signals as ROSCO inputs * Fix StC in reader * Update ParseInAry_Opt to set default, ready to copy * Copy ParseInAry_Opt to double instance * Add ParseInput_Int_Opt, ready for copy * Add ParseInput_Dbl_Opt, fix others * Switch back to logical flag for default, make FindLine subroutine * Add optional string parsing subroutine * Refactor ReadSetParameters for optional inputs * Filter FA_AccHPF only when used, per optional inputs * Offset WSE input saturation from 0 if necessary * Move CurDate to Helpers * Make ptfm control local vars not allocatable * Tidy file writing when rosco_vt read from another input * Update input files in Test_Cases * Add Echo file writing and input to ROSCO * Check for failure after each input section, tidy OL default * Init and read OL inputs after checking inputs * Close echo file so it all shows up * Remove return after not finding line * Remove a few more returns, specify default array length properly * Tidy up error messages around array length * Fix string reading * Skip array parsing if line not found * Increase max word size for long file paths * Fix example headers * Add defaults logic for filters * Skip ExtController call if failed * Tidy up CheckInputs based on optional input testing * Add example for testing optional inputs * Tidy input file formatting * Fix expected result in 21_optional_inputs * Add cable control example * Fix openfast exe * Enable CCmode, MD outputs, set channel ID in example 22 * Add structural control example, not in CI due to OF reqs * Add input yaml for StC example * Tidy comments, file closing * Remove default CC_* params from DISCON_dict * Tidy example 23 readme * Add StC indices of avrswap to dbg3 * Tidy utilities and example 23 * Add API changes to docs * Update toolbox input * Delay DLC 1.4 start, use AFAeroMod of 1 * Disable UA for all tests --------- Co-authored-by: Alex Clerc * Tidy print statements, file writing * Remove duplicate PF_Offsets input read * Rename methods in readme * Tidy input writing, remove `future` references * Force AWC_n into int * Force AWC_n into int better * Make AWC_n a list, too * Fix input file writing, force into int in write_array * Run ROSCO_testing from anywhere * Dylib -> so in Test_Cases * Updated AWC input parameters. * Added checks for AWC inputs. * Fixed bug in added AWC input checks. * Update error message * Tidy up IPC, allow AWC and IPC with warning * Remove AWC references from IPC * Remove lingering comment * Tidy file writing * Clean up comments * Allow more than 99 local variables in dbg2 * Update api_change.rst Added AWC inputs * Update 20_active_wake_control.py * Add optimized NREL2p8 controller input * Parallelize output processing * Add IPC gain to NREL2p8 * Finish merge with inputs and registry * Update IPC example for testing sat modes * Add latest plot_FAST notebook * Add PRC example * Finish merge with awc inputs and registry * Active Wake Control (#230) * AWC First Version, collected changes * Add AWC parameters to registry, regenerate types * Apply DbKi to COMPLEX * Re-organize AWC pitch contribution, before actuator * Separate contribution to PitCom from mode calculation * Make AWC_complexangle a LocalVar for logging * Removed duplicate pitch assignment and removed MinPitch mods for AWC * Fixes to readsetparams and awc location * Adding NREL 2.8 127 for AWC testing * Add case generation updates * Add initial AWC example, needs OF3.4 * Add AWC_Mode and move AWC into subroutine * Update example to point to correct inputs * Remove LocalVar%PC_MinPit = CntrPar%PC_MinPit, breaking setpoint smoother * Set min pitch for AWC * Tidy up input additions * Update other DISCONs * Add AWC to toolbox schema * Tidy example * Update AWC example with instructions/theory * Formatting fixes * Prep for more modes * Update 20_active_wake_control.py * Fix units in schema * Test all AWC cases in example 20 * Tidy up DISCON file writing * Revert setup directory * Update 20_active_wake_control.py Documentation update: -added type of input, either integer or float -added suggested ranges for input variables (only one of these ranges is a hard rule that might break something if not followed, which is that AWC_NumModes>=0) -added more description of what the azimuthal mode number is Note to Dan: I didn't follow exactly if the units in the code changed between rad and deg - can you check that the units in rows 14-16 are correct? Also, let's have Lawrence review these additions. * Update NREL-2p8-127_DISCON.IN Updating units. * Update Controllers.f90 Update units. * Update ROSCO_Types.f90 Update units. * Update ReadSetParameters.f90 Update units. * Update 20_active_wake_control.py Update units and documentation. * Update toolbox_schema.yaml Update units. * Update utilities.py Update AWC descriptions and units. * Update rosco_types.yaml Update AWC units. * Added NREL-developed AWC-implementation * Undo unintentional changes to wrie_registry.py * Fix file writing in AWC section * Update all DISCONs * Add 20_awc to test_examples * Add 2.8 to update_discons, regenerate DISCON Should match closely to original DISCON * Update AWC_Mode descriptions * Updated Coleman Transformation based AWC * Tidy print statements, file writing * Remove duplicate PF_Offsets input read * Rename methods in readme * Tidy input writing, remove `future` references * Force AWC_n into int * Force AWC_n into int better * Make AWC_n a list, too * Fix input file writing, force into int in write_array * Run ROSCO_testing from anywhere * Dylib -> so in Test_Cases * Updated AWC input parameters. * Added checks for AWC inputs. * Fixed bug in added AWC input checks. * Update error message * Tidy up IPC, allow AWC and IPC with warning * Remove AWC references from IPC * Remove lingering comment * Tidy file writing * Clean up comments * Allow more than 99 local variables in dbg2 * Update api_change.rst Added AWC inputs * Update 20_active_wake_control.py --------- Co-authored-by: Nathaniel deVelder Co-authored-by: kbrown1snl <66843135+kbrown1snl@users.noreply.github.com> Co-authored-by: jfrederik-nrel Co-authored-by: jfrederik-nrel <120053750+jfrederik-nrel@users.noreply.github.com> * Update example with ramp, reference * Various bug fixes (#233) * Allow optional UAStart/EndRad * Re-wind file read if the input is not there * Set avrSWAP(79) to 4 to follow Bladed API * Update documentation with new example names * Init PC_RefSpeed if no PRC * Revert openfast changes * Add note about offset * Open loop platform control (#236) * Add open loop cable example * Add open loop cable and StC control in ROSCO * Add open loop cable control in toolbox * Init Ind_Cable/Struct Control * Add openfast_exe as run_FAST attribute * Tidy input writing * Regenerate DISCONs * Update API change docs * Tidy example output * Increment version number * Update TRA example * Remove old TD_Mode references * Increment version number * Yaw Rate Bug Fix (#239) * Add back open loop yaw rate control * Check OL outputs in example * Update CI to use mamba, first attempt * Install extras when environment first set up * Remove potential libpython typo * Remove more potential typos * Use mamba in compile, too * Use environment.yml file * Remove conda installs from rosco-compile * Clean up CI scripts * Update mamba install in CI * Remove petsc and mpi * Revert CI back to conda * OpenFAST 3.5.0 (#246) * Add back open loop yaw rate control * Check OL outputs in example * Update CI to use mamba, first attempt * Install extras when environment first set up * Remove potential libpython typo * Remove more potential typos * Use mamba in compile, too * Use environment.yml file * Remove conda installs from rosco-compile * Clean up CI scripts * Update BAR_10_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update IEA-15-240-RWT_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NRELOffshrBsline5MW_InflowWind.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update BAR_10_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NREL-2p8-127_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NREL-2p8-127_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update IEA-15-240-RWT_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NRELOffshrBsline5MW_InflowWind.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NREL-2p8-127_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update StC-Force-Col1.dat adjusted comment on StC_DOF_MODE * Update StC-Force-Col2.dat adjusted comment on StC_DOF_MODE * Update StC-Force-Col3.dat adjusted comment on StC_DOF_MODE * Update FAST_reader.py added parsing of cubic interpolation for velocity and LIDAR parameters in read_InflowWind method for the InflowWind data file * Update FAST_writer.py added writing of cubic interpolation for velocity and LIDAR parameters in write_InflowWind method for the InflowWind data file * Update mamba install in CI * Remove petsc and mpi * Revert CI back to conda * Sync FAST_reader/writer with WEIS versions * Increment openfast version in CI * Add nodes to FAST_vars_out * Add nodes to vartree * Remove duplicated F_NotchType check * Sync FAST_vars_out more * Add MoorDyn outlist params to FstOutput * Remove numpy from DISCON_dict * Add open loop control of StCs * Remove numpy from read_DISCON * Add struct control example to CI * Remove openfast_exe used locally * Fix run_dir naming in 23_ example --------- Co-authored-by: Rudy <107142607+Yuksel-Rudy@users.noreply.github.com> * Floating Feedback Gain Scheduling (#241) * Add back open loop yaw rate control * Check OL outputs in example * Update CI to use mamba, first attempt * Install extras when environment first set up * Remove potential libpython typo * Remove more potential typos * Use mamba in compile, too * Use environment.yml file * Remove conda installs from rosco-compile * Clean up CI scripts * added yaml file in folder tune_cases * additional yaml files added to tune_cases * additional yaml * additional yaml * further additions * various changes to add KPfloat gain scheduling * updating ROSCO toolbox files and ROSCO source code for KPfloat gain scheduling * Update BAR_10_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update IEA-15-240-RWT_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NRELOffshrBsline5MW_InflowWind.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update BAR_10_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NREL-2p8-127_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Remove CCT9 at rated model * Remove CCT above rated model * Remove extra tuning yamls * Update NREL-2p8-127_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update IEA-15-240-RWT_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NRELOffshrBsline5MW_InflowWind.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NREL-2p8-127_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update StC-Force-Col1.dat adjusted comment on StC_DOF_MODE * Update StC-Force-Col2.dat adjusted comment on StC_DOF_MODE * Update StC-Force-Col3.dat adjusted comment on StC_DOF_MODE * Update FAST_reader.py added parsing of cubic interpolation for velocity and LIDAR parameters in read_InflowWind method for the InflowWind data file * Update FAST_writer.py added writing of cubic interpolation for velocity and LIDAR parameters in write_InflowWind method for the InflowWind data file * Update mamba install in CI * Remove petsc and mpi * Revert CI back to conda * Give Fl_Kp own gain scheduling, separate from pitch control * Remove duplicate AWC entries in registry * Sync FAST_reader/writer with WEIS versions * Set default Kp_float and U_Fl for non-floating cases * Increment openfast version in CI * Add nodes to FAST_vars_out * Add nodes to vartree * Remove duplicated F_NotchType check * Sync FAST_vars_out more * Update DISCONs with new Fl_* inputs * Make Fl_n an int when writing DISCON * Add MoorDyn outlist params to FstOutput * Add floating feedback example * Fix schema for Kp_float * Update run_FAST to work in weis environment * Pull some FAST_reader improvements in Beam/SubDyn * Simplify example 05, most moved to 24_floating_feedback * Make rotor_performance_filename relative to tuning yaml * Update paths with new Cp location * Add api change and update toolbox input for docs * Update installation docs with wisdem note * Update documentation regarding pyFAST in 11_robust_tuning.py * Update DISCON schema with new inputs --------- Co-authored-by: dzalkind Co-authored-by: Wright, Alan Co-authored-by: Rudy <107142607+Yuksel-Rudy@users.noreply.github.com> Co-authored-by: dzalkind <65573423+dzalkind@users.noreply.github.com> * Fix relative Cp filepaths * Regen registry, discons * Fix relative Cp filepaths * Regenerate registry, inputs * Rotor Position Control (#255) * testing flag cleanup * Use lv_strings to generate debug output * Revert "testing flag cleanup" This reverts commit 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Implement initial pitch actuator * Set up steps case * 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 * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Add Azimuth tracking controller in Simulink * Always enable GenDOF, add options for simp_step * Add sweep for IPC gains and FA damper * Fix NumCoords in FAST_writer * sigma + ipc (#125) * cleanup api change table * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * add sigma function * Use IPC_Vramp for IPC cut-in * Add IPC_Vramp DISCON inputs * update registry * Update DISCONs * Update docs for API change * Fix IPC_Vramp data type * update comments Co-authored-by: dzalkind * Add turbulent case to runFAST/CaseLibrary * Add peak shaving sweep function * Increase default IPC_IntSat, make input parameter in future * Flip Ct and Cq table allocation * Flip Ct and Cq table allocation (#130) * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change * Add user-defined hh case * Fix AddF0 and RayleighDamp in FAST_reader * Pitch Actuator and IPC updates (#123) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 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> * Fixed wrong formatting of list items (#122) extra newline required between list elements * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Flip Ct and Cq table allocation * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com> Co-authored-by: Nikhar Abbas Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com> Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com> Co-authored-by: Gustavo Hylander <74593034+ghylander@users.noreply.github.com> * Add max_torque_factor for constant power control, flexible upper limit * Make update discons relative to tuning yaml * Update AddF0 and NumCoords in FAST_reader/writer * Remove matlab/rotor position control stuff * Add OpenFAST channels that Simulink reads (#135) * RAAW Updates (#133) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 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> * Fixed wrong formatting of list items (#122) extra newline required between list elements * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Add Azimuth tracking controller in Simulink * Always enable GenDOF, add options for simp_step * Add sweep for IPC gains and FA damper * Fix NumCoords in FAST_writer * Add turbulent case to runFAST/CaseLibrary * Add peak shaving sweep function * Increase default IPC_IntSat, make input parameter in future * Flip Ct and Cq table allocation (#129) * Flip Ct and Cq table allocation * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change * Add user-defined hh case * Fix AddF0 and RayleighDamp in FAST_reader * Add max_torque_factor for constant power control, flexible upper limit * Make update discons relative to tuning yaml * Update AddF0 and NumCoords in FAST_reader/writer * Remove matlab/rotor position control stuff Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com> Co-authored-by: Nikhar Abbas Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com> Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com> Co-authored-by: Gustavo Hylander <74593034+ghylander@users.noreply.github.com> * Pass through (#136) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 a… * Update .readthedocs.yaml to remove use of 'system_packages' as it is being depreciated by readthedocs (#258) * Extend ROSCO for MHK (#257) * Select airfoil by reynolds_ref in turbine params * Select density based on main Fst file * Update FAST reader/writer * Add MHK example * MHK updates * Extend the number of notch filters on the generator speed and tower-top motion, and update OpenFAST input files for RM1 system * update tuning yaml for RM1 * minox fix in tuning yaml * Run run_FAST from weis more easily * Add documentation for new below rated genspeed reference * Change ROSCO version in setup.py * Line removal in ReadSetParameters * Don't change Notch type if already set and floating * Tidy up MHK example, input * Add example to CI testing * Add VS_ConstPower to simplify VS_ControlModes * Update MHK with constant power * Update WAMIT input to be same as openfast/r-test * minor change for Hydrodyn.dat * minor updates to the tuning yaml and the discon file * Add separate notch filters for Gen speed, tower top * Add start of filtering toolbox in matlab * Update DISCON files, "tune" filters using F_NotchType control param * Read notch filter inds only if N > 0 * Clean up example 26 * Update minimal DISCON inputs for test * Make GenSpdNotch inds optional based on GenSpdNotch_N * Add logic for updating discons * Clean up tune * Clean up DISCON formatting * Fix rgn2k, consistent with TSR opt now * Add filter on GenPwr for setpoint, add VS_RefSpd to LocalVars * Set initial VS_GenPwr like torque * Update 2.8 input file * Add TSR to standard outputs * Set RM1 model DT_out, ICs * Review notch filters in more depth * Add factor for fine-tuning rgn2k gain * Add function for sweeping any controller_param * Update API documentation * Tidy comments * Allow VS_ConstPowr to be optional * Declare dummy partials in robust_scheduling * Tidy edited code in turbine.py --------- Co-authored-by: dzalkind Co-authored-by: AthulKrishnaSundarrajan * Rename power ref example * Shorten PRC example * Use updated DISCON writing functions for PRC inputs * Revert run_FAST cases * Tidy example documentation, output * Bring back new VS_ControlMode that merge lost * Add LPF on WSE for speed selection, use gen speed rather than rotor * Document API changes * Bring back saturation of torque reference speed * Update PRC example with PRC_GenSpeeds * Remove pCrunch notebook * Re-work exclusion zone with simpler implementation * Clean up types, make band total width of band * Increase max file unit (#253) * Add back open loop yaw rate control * Check OL outputs in example * Update CI to use mamba, first attempt * Install extras when environment first set up * Remove potential libpython typo * Remove more potential typos * Use mamba in compile, too * Use environment.yml file * Remove conda installs from rosco-compile * Clean up CI scripts * Update BAR_10_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update IEA-15-240-RWT_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NRELOffshrBsline5MW_InflowWind.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update BAR_10_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NREL-2p8-127_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NREL-2p8-127_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update IEA-15-240-RWT_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NRELOffshrBsline5MW_InflowWind.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update NREL-2p8-127_InflowFile.dat added VelInterpCubic and LiDAR Parameters to the InflowFile * Update StC-Force-Col1.dat adjusted comment on StC_DOF_MODE * Update StC-Force-Col2.dat adjusted comment on StC_DOF_MODE * Update StC-Force-Col3.dat adjusted comment on StC_DOF_MODE * Update FAST_reader.py added parsing of cubic interpolation for velocity and LIDAR parameters in read_InflowWind method for the InflowWind data file * Update FAST_writer.py added writing of cubic interpolation for velocity and LIDAR parameters in write_InflowWind method for the InflowWind data file * Update mamba install in CI * Remove petsc and mpi * Revert CI back to conda * Sync FAST_reader/writer with WEIS versions * Increment openfast version in CI * Add nodes to FAST_vars_out * Add nodes to vartree * Remove duplicated F_NotchType check * Sync FAST_vars_out more * Add MoorDyn outlist params to FstOutput * Increase max unit, number of allowed open files * Close debug files * Remove numpy from DISCON_dict * Ensure a new-ish version of WISDEM is being used Part of effort to transition to yaml install of conda environment * Remove numpy from DISCON_dict * Add open loop control of StCs * Remove numpy from read_DISCON * Add struct control example to CI * Revert unnecessary changes --------- Co-authored-by: Rudy <107142607+Yuksel-Rudy@users.noreply.github.com> * Remove TD_Mode, regen inputs, docs * Add Twr_Mode error catching and warnings * Clean up more old TD_Modes * Update API docs * Add types to scalars (#264) * Add missing types to scalars * Add mamba option for when CI is slow * Skip mac for now * Add mamba option to pytools, too * Try macos with Mambaforge * Use mamba for pytools * Use mamba for examples * Use mamba for testing --------- Co-authored-by: dzalkind * Update api_change.rst formatting * Update .readthedocs.yaml with build.os * Update .readthedocs.yaml with other build options * Update .readthedocs.yaml with python 3.9 * Update .readthedocs.yaml with new python version * Update .readthedocs.yaml with another python version * Update .readthedocs.yaml with version key * Update .readthedocs.yaml * Update .readthedocs.yaml remove old python version * Better Open Loop Control Error Catching (#273) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Implement initial pitch actuator * Set up steps case * 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 * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Add Azimuth tracking controller in Simulink * Always enable GenDOF, add options for simp_step * Add sweep for IPC gains and FA damper * Fix NumCoords in FAST_writer * sigma + ipc (#125) * cleanup api change table * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * add sigma function * Use IPC_Vramp for IPC cut-in * Add IPC_Vramp DISCON inputs * update registry * Update DISCONs * Update docs for API change * Fix IPC_Vramp data type * update comments Co-authored-by: dzalkind * Add turbulent case to runFAST/CaseLibrary * Add peak shaving sweep function * Increase default IPC_IntSat, make input parameter in future * Flip Ct and Cq table allocation * Flip Ct and Cq table allocation (#130) * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change * Add user-defined hh case * Fix AddF0 and RayleighDamp in FAST_reader * Pitch Actuator and IPC updates (#123) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * 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 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * 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 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * 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 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * 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 * 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 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> * Fixed wrong formatting of list items (#122) extra newline required between list elements * Regenerate types, IO with registry * Update registry so first timestep is printed * Update inverted notch to move frequency properly * Saturate inv notch corner frequency at 0 * Add tower damper mode flag * Flip Ct and Cq table allocation * Regen types * Remove print statements used for debugging * Update input files: IEA model has pitch actuator * Add back flap control (no idea when it was deleted) * Update discons, docs with API change Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com> Co-authored-by: Nikhar Abbas Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com> Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com> Co-authored-by: Gustavo Hylander <74593034+ghylander@users.noreply.github.com> * Add max_torque_factor for constant power control, flexible upper limit * Make update discons relative to tuning yaml * Update AddF0 and NumCoords in FAST_reader/writer * Remove matlab/rotor position control stuff * Add OpenFAST channels that Simulink reads (#135) * RAAW Updates (#133) * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * Turn runFAST into a class * Refactor/simplify CaseLibrary * Implement initial pitch actuator * Set up steps case * Add actuator variable * Print first time step in debug outs * Fix FOCAL yaml * Set actuator to 0.25 Hz bandwidth * ROSCO 2.5.0 (#115) * 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 * 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 * 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 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 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas * 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 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * 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 * A… * Modified ZeroMQ interface to include pitch offsets (#261) * Modified ZeroMQ interface to include pitch setpoints * Fixed zeromq time limit issue * Fixed simulation restart bug when using zeromq * Light formatting changes * Remove specific ZeroMQ data structure, add to LocalVars, rename * Full remove ZMQ_Variables * Tidy NREL5MW tuning yaml and control_interface * Raise exception in control_interface if DLL returns an error * Fix name of debug file * Combine ZMQ examples, check outputs * Check ZMQ update period based on simulation update period * Initialize ZMQ local vars * Make tuning yaml, zmq example consistent with others * Update DISCONs * Let DISCON in control_interface be initialized even if there's an error * Remove extra zmq example --------- Co-authored-by: dzalkind * Rate limit set point, needs clean up * Clean up Twr_ variables and names names * Clean up inputs further * Update toolbox docs * Try apt-get update * Revert PC_PitComC to T * Update API docs * Wind Farm Control Interface (#280) * Add script for auto-generating zmq interface * Add torque offset because we needed to fill the setpoint slot * Add a working example to help further development of ZMQ for farm control * Use setpoints/measurements on python side * Complete merge with ZMQ_Indentifier * Standardize setpoints on zmq server side, now attr of class * Rename zeromq examples * Set up multi_openfast example with run_FAST routines * Add ZMQ_* inputs to schema, input writer * Set relative path to wfc_interface file * Rename ZMQ_Identifier to ZMQ_ID * Rename turbine_zmq_server and make setpoints/measurements a list * Try apt-get update * Rename zmq examples in test script * Modify ZeroMQ wind farm control interface and example to more object oriented code * Fix update period logic for ZMQ client * Update DISCONs * Cast ZMQ_ID as int * Add various features and tests to ZeroMQ wind farm control implementation (#282) * Add tests to example-17b * Add logging to zmq server for wind farm control * Small changes to zeromq interface to make the code more descriptive and robust * Modify example-17a to work with new zeromq wind farm control interface and some minor changes * Add helpful comment about logging level --------- Co-authored-by: AbhineetGupta * Set up TRA example * Clean up PRC example * Add PC_RefSpd interim signals * Add signals to IO and Types * Change guidance in api reference * Add clarification on fastcall * Add ZMQ_ID to api change * Rename TRA example, add to CI testing * Separate TD and TRA control modes * Remove extra update_discons * Revert IEA yaml * Update toolbox input rst * Skip upload of artifacts * Reorganize Repo (#294) * Move Test and Tune_Cases into Examples * Move ROSCO controller and registry to controller * Remove _temp from rosco dir * Move ROSCO_Testing to rosco/test * Move ROSCO_toolbox into rosco/toolbox * Rename ROSCO_Toolbox throughout * Fix paths to tune yamls * Update library path * Update CI paths * Add python to registry call in CI * Add init in top rosco folder * Fix more paths * Update install paths * Update a few more paths * Update rosco walkthrough notebook * Change dir for testing, library location * Fix walkthrough notebook again * Modernize setup and CI (#297) * Add Ext_Interface flag * Update rosco dylib dir * F_NumNotchFilts is not allowed to have a default value * Fix checkpoint testing paths * simplify and modernize the setup and test experience * fix path to zmq.c file * Update api_change.rst formatting slightly * Update version numbers * Add more descriptions to API docs * Update api_change.rst formatting * combine tests * trying with build directory * really think build issues should be fixed now. .. * see if cmake find is more robust * fix path to libdiscon in notebook * trying more robust package search * elevate pyzmq to be installed before extension is built, but also remove option and make it something that works if it is found * forgotten init file I think * testing build * fix environment file issue on windows * remove 3.12 * suppressing problem areas for now * update library path in examples * fixing case ambiguity * fix paths in servodyn files * still chasing paths in all of the files * hopefully find pyzmq libs better now * try that again * fix library link * add openfast_toolbox * remove imports of old pyFAST * restrict examples to ubuntu * fix typo * avoid circular dependecies with WEIS * renable tests for all platforms * make sure it works from any path * prep for pypi release * restrict full regression testing to linux * restricting further * Skip pip windows test for now --------- Co-authored-by: AbhineetGupta Co-authored-by: Garrett Barter Co-authored-by: Garrett Barter * switch to cmake-build-extension and logic for finding rosco library path * hopefully caught everything * fixes for windows * V2.9.0 Prep (#299) * Add more error checking in checkpoint file I/O * Don't check ZMQ period if no ZMQ_Mode * Update v2.9.0 documentation (#303) * Finalize v2.9.0 documentation * Add ruamel.yaml as a requirement in pyproject.toml * Re-add wisdem in pyproject.toml * Revise docs slightly * Add developer documentation * Fix small typo with documentation --------- Co-authored-by: dzalkind --------- Co-authored-by: Abhineet Gupta * improvements for conda file structure on windows * switch to newer openfast * removing compilers from env file * debug * reverting * more robust pypi packaging * mimicking other codes * trying to add zeromq to pip builds --------- Co-authored-by: dzalkind Co-authored-by: Nikhar Abbas Co-authored-by: dzalkind <65573423+dzalkind@users.noreply.github.com> Co-authored-by: Nikhar J. Abbas <40865984+nikhar-abbas@users.noreply.github.com> Co-authored-by: WillC-DNV <100850534+WillC-DNV@users.noreply.github.com> Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com> Co-authored-by: Gustavo Hylander <74593034+ghylander@users.noreply.github.com> Co-authored-by: Mayank Chetan <4620557+mayankchetan@users.noreply.github.com> Co-authored-by: Mayank Chetan Co-authored-by: verlivkra <92805931+verlivkra@users.noreply.github.com> Co-authored-by: Alex Clerc Co-authored-by: sarijalou Co-authored-by: Nathaniel deVelder Co-authored-by: kbrown1snl <66843135+kbrown1snl@users.noreply.github.com> Co-authored-by: jfrederik-nrel Co-authored-by: jfrederik-nrel <120053750+jfrederik-nrel@users.noreply.github.com> Co-authored-by: Rudy <107142607+Yuksel-Rudy@users.noreply.github.com> Co-authored-by: alandwright <56039708+alandwright@users.noreply.github.com> Co-authored-by: Wright, Alan Co-authored-by: Abhineet Gupta Co-authored-by: Athul Krishna Sundarrajan <59715652+AthulKrishnaSundarrajan@users.noreply.github.com> Co-authored-by: AthulKrishnaSundarrajan Co-authored-by: Abhineet Gupta Co-authored-by: Regis Thedin Co-authored-by: mvanv <92317608+mvanv@users.noreply.github.com> --- .../cibw_repair_wheel_command_windows.sh | 10 ++++ .github/workflows/CI_rosco-compile.yml | 55 ++++++++++++++----- .github/workflows/Publish_ROSCO.yml | 55 +++++++++++++++---- pyproject.toml | 18 +++++- 4 files changed, 112 insertions(+), 26 deletions(-) create mode 100644 .github/tools/cibw_repair_wheel_command_windows.sh diff --git a/.github/tools/cibw_repair_wheel_command_windows.sh b/.github/tools/cibw_repair_wheel_command_windows.sh new file mode 100644 index 00000000..22e7352b --- /dev/null +++ b/.github/tools/cibw_repair_wheel_command_windows.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -e +set -x + +WHEEL=$1 +DEST_DIR=$2 + +python -m pip install delvewheel +python -m delvewheel show "$WHEEL" && python -m delvewheel repair -w "$DEST_DIR" "$WHEEL" --no-mangle-all diff --git a/.github/workflows/CI_rosco-compile.yml b/.github/workflows/CI_rosco-compile.yml index bc89b4d7..f5a1135c 100644 --- a/.github/workflows/CI_rosco-compile.yml +++ b/.github/workflows/CI_rosco-compile.yml @@ -16,24 +16,59 @@ jobs: strategy: fail-fast: false #true matrix: - os: ["ubuntu-latest", "macOS-latest", "windows-latest"] - python-version: ["3.9", "3.10", "3.11"] + os: ["ubuntu-latest", "macOS-13", "windows-latest"] #mac-13 intel, mac-14 arm + python-version: ["3.9", "3.10", "3.11", "3.12"] steps: - name: Setup GNU Fortran - # if: false == contains( matrix.os, 'windows') + if: false == contains( matrix.os, 'windows') uses: awvwgk/setup-fortran@v1 #modflowpy/install-intelfortran-action@v1 # + + - name: Install compiler + if: false == contains( matrix.os, 'windows') + id: install_cc + uses: rlalik/setup-cpp-compiler@master + with: + compiler: clang + + - name: Install mingw-w64 on Windows + if: contains( matrix.os, 'windows') + uses: msys2/setup-msys2@v2 + with: + path-type: inherit + install: | + mingw-w64-x86_64-gcc + mingw-w64-x86_64-gcc-fortran + mingw-w64-x86_64-zeromq + mingw-w64-x86_64-cmake + mingw-w64-x86_64-pkg-config + + - name: Install zeromq ubuntu + if: contains( matrix.os, 'ubuntu') + run: | + sudo apt install libzmq3-dev libzmq5 libczmq-dev libczmq4 + - name: Install zeromq mac + if: contains( matrix.os, 'mac') + run: | + brew install zeromq + - name: checkout repository uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 id: cp with: python-version: ${{ matrix.python-version }} update-environment: true + - name: Set compilers + if: false == contains( matrix.os, 'windows') + run: | + echo "CC=${{ steps.install_cc.outputs.cc }}" >> $GITHUB_ENV + echo "CXX=${{ steps.install_cc.outputs.cxx }}" >> $GITHUB_ENV + #- name: Setup tmate session # if: contains( matrix.os, 'windows') # uses: mxschmitt/action-tmate@v3 @@ -71,8 +106,8 @@ jobs: strategy: fail-fast: false #true matrix: - os: ["ubuntu-latest", "macOS-latest", "windows-latest"] - python-version: ["3.9", "3.10", "3.11"] + os: ["ubuntu-latest", "macOS-13", "windows-latest"] #mac-13 intel, mac-14 arm + python-version: ["3.9", "3.10", "3.11", "3.12"] steps: - name: checkout repository @@ -113,13 +148,7 @@ jobs: - name: Install OpenFAST run: | - conda install openfast==3.5.2 - - #- name: Check OpenFAST - # # if: contains( matrix.os, 'windows') - # run: | - # openfast -v - # which openfast + conda install openfast==3.5.3 - name: Generate Registry run: | diff --git a/.github/workflows/Publish_ROSCO.yml b/.github/workflows/Publish_ROSCO.yml index c6d7ba46..0f5e5c96 100644 --- a/.github/workflows/Publish_ROSCO.yml +++ b/.github/workflows/Publish_ROSCO.yml @@ -1,31 +1,66 @@ name: Build and upload to PyPI # https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml +# Best comparable example: https://github.com/pdfo/pdfo -# Build on every branch push, tag push, and pull request change: -#on: [push, pull_request] -# Alternatively, to publish when a (published) GitHub Release is created, use the following: -on: - release: - types: - - published +# Build on every pull request (no need for every push) and release change: +on: [pull_request, release] jobs: build_wheels: name: Build wheels on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: - os: [ubuntu-latest, windows-latest, macos-latest] + os: [ubuntu-latest, windows-latest, macos-13, macos-14] steps: - name: Setup GNU Fortran + if: false == contains( matrix.os, 'windows') uses: awvwgk/setup-fortran@v1 + + - name: Install compiler + if: false == contains( matrix.os, 'windows') + id: install_cc + uses: rlalik/setup-cpp-compiler@master + with: + compiler: clang + + - name: Install mingw-w64 on Windows + if: contains( matrix.os, 'windows') + uses: msys2/setup-msys2@v2 + with: + path-type: inherit + install: | + mingw-w64-x86_64-gcc + mingw-w64-x86_64-gcc-fortran + mingw-w64-x86_64-zeromq + mingw-w64-x86_64-cmake + mingw-w64-x86_64-pkg-config + + - name: Install zeromq ubuntu + if: contains( matrix.os, 'ubuntu') + run: | + sudo apt install libzmq3-dev libzmq5 libczmq-dev libczmq4 + + - name: Install zeromq mac + if: contains( matrix.os, 'mac') + run: | + brew install zeromq - name: Checkout uses: actions/checkout@v4 - - name: Build wheels - uses: pypa/cibuildwheel@v2.16.2 + - name: Build wheels mac and linux + if: false == contains( matrix.os, 'windows') + uses: pypa/cibuildwheel@v2.17.0 + env: + CC: ${{ steps.install_cc.outputs.cc }} + CXX: ${{ steps.install_cc.outputs.cxx }} + + - name: Build wheels windows + if: contains( matrix.os, 'windows') + uses: pypa/cibuildwheel@v2.17.0 - uses: actions/upload-artifact@v4 with: diff --git a/pyproject.toml b/pyproject.toml index ce80267c..5b0f21cf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "rosco" -version = "2.9.0" +version = "2.9.2" description = "A reference open source controller toolset for wind turbine applications." readme = "README.md" requires-python = ">=3.9" @@ -36,6 +36,7 @@ classifiers = [ # Optional "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Fortran", ] @@ -135,5 +136,16 @@ atomic = true #src_paths=isort,test [tool.cibuildwheel] -skip = ["cp36-*", "cp37-*", "cp38-*", "*-win32"] -build-frontend = "build" +skip = ["pp*", "cp36-*", "cp37-*", "cp38-*", "*-win32", "*-win_arm64"] #, "*-musllinux*"] +build-frontend = { name = "build", args = ["-w","-n"] } +before-build = "pip install setuptools cmake numpy pyzmq cmake-build-extension" +build-verbosity = "3" + +# https://github.com/pdfo/pdfo +[[tool.cibuildwheel.overrides]] +select = "*-win_amd64" +environment = { PKG_CONFIG_PATH="c:/opt/64/lib/pkgconfig" } + +[tool.cibuildwheel.windows] +repair-wheel-command = "bash .github/tools/cibw_repair_wheel_command_windows.sh {wheel} {dest_dir}" + From c760f882395d74b1efd10f9f53bc3b661586ec42 Mon Sep 17 00:00:00 2001 From: "Marc T. Henry de Frahan" Date: Fri, 3 May 2024 08:52:27 -0600 Subject: [PATCH 4/4] Add intel llvm to compilers (#338) * Increment version * Add intel llvm to compilers --------- Co-authored-by: dzalkind <65573423+dzalkind@users.noreply.github.com> Co-authored-by: dzalkind --- rosco/controller/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rosco/controller/CMakeLists.txt b/rosco/controller/CMakeLists.txt index 0d290851..46705c25 100644 --- a/rosco/controller/CMakeLists.txt +++ b/rosco/controller/CMakeLists.txt @@ -11,7 +11,7 @@ endif() message(STATUS "CMAKE_Fortran_COMPILER_ID = ${CMAKE_Fortran_COMPILER_ID}") if(APPLE OR UNIX) # Enable .dll export -if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel") +if (CMAKE_Fortran_COMPILER_ID MATCHES "^Intel") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DIMPLICIT_DLLEXPORT -r8 -double-size 64 -cpp -no-wrap-margin") else() set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DIMPLICIT_DLLEXPORT -ffree-line-length-0 -fdefault-real-8 -fdefault-double-8 -cpp")