-
Notifications
You must be signed in to change notification settings - Fork 98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fixed-Pitch Torque Control in Region 3 #347
Open
dstockhouse
wants to merge
267
commits into
NREL:develop
Choose a base branch
from
dstockhouse:r3-fixed-pitch
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 158 commits
Commits
Show all changes
267 commits
Select commit
Hold shift + click to select a range
0575d75
Re-organize AWC pitch contribution, before actuator
dzalkind 974e271
Separate contribution to PitCom from mode calculation
dzalkind 515da17
Make AWC_complexangle a LocalVar for logging
dzalkind be28641
Allow PA_Mode 1 (#213)
dzalkind e554c1d
IPC Saturation Fix [RAAW] (#210)
dzalkind c51ed30
Removed duplicate pitch assignment and removed MinPitch mods for AWC
ndevelder 3155b63
Add script for updating DISCON versions (#214)
dzalkind 0c0e466
Fixes to readsetparams and awc location
ndevelder 20c9c9d
Adding NREL 2.8 127 for AWC testing
ndevelder a1cf97b
Rename examples (#215)
dzalkind 42525a9
V270 prep (#218)
dzalkind f5c3c1e
Add case generation updates
dzalkind a471783
Add initial AWC example, needs OF3.4
dzalkind 2f941e3
Merge remote-tracking branch 'upstream/main' into develop
dzalkind d05ef6c
Merge branch 'develop' into rosco_awc_merge
dzalkind 80bd691
Add AWC_Mode and move AWC into subroutine
dzalkind b102b34
Update example to point to correct inputs
dzalkind 5c5333b
Remove LocalVar%PC_MinPit = CntrPar%PC_MinPit, breaking setpoint smoo…
dzalkind da46fac
Set min pitch for AWC
dzalkind cc4080d
Tidy up input additions
dzalkind 1201a66
Update other DISCONs
dzalkind 1693602
Add AWC to toolbox schema
dzalkind 2bb0176
Tidy example
dzalkind d93d443
Update AWC example with instructions/theory
ndevelder 3c40565
Formatting fixes
ndevelder 83022e5
Prep for more modes
dzalkind a7d3303
Merge remote-tracking branch 'upstream/main' into develop
dzalkind f6d061f
Update 20_active_wake_control.py
kbrown1snl 1824f99
Fix units in schema
dzalkind cabbb2a
Merge pull request #1 from kbrown1snl/patch-1
ndevelder de16ecd
Test all AWC cases in example 20
dzalkind de3a6fe
Tidy up DISCON file writing
dzalkind 87b3f09
Revert setup directory
dzalkind 46e7168
Update 20_active_wake_control.py
kbrown1snl 32dc9fd
Update NREL-2p8-127_DISCON.IN
kbrown1snl ae5090b
Update Controllers.f90
kbrown1snl 5c878ad
Update ROSCO_Types.f90
kbrown1snl baaa8db
Update ReadSetParameters.f90
kbrown1snl b141c4e
Update 20_active_wake_control.py
kbrown1snl 826ca01
Update toolbox_schema.yaml
kbrown1snl 797e554
Update utilities.py
kbrown1snl ff0ce39
Update rosco_types.yaml
kbrown1snl 3bc2185
Added NREL-developed AWC-implementation
jfrederik-nrel 687b760
Undo unintentional changes to wrie_registry.py
jfrederik-nrel 70d5771
Fix file writing in AWC section
dzalkind b24f07b
Merge remote-tracking branch 'upstream/develop' into awc
dzalkind a9ec14e
Update all DISCONs
dzalkind 4604ebb
Add 20_awc to test_examples
dzalkind b17f350
Add 2.8 to update_discons, regenerate DISCON
dzalkind b2fdfbc
Update AWC_Mode descriptions
dzalkind e899600
Updated Coleman Transformation based AWC
jfrederik-nrel 1ccc1b3
Platform control and Optional Inputs (#227)
dzalkind 87cde8c
Merge remote-tracking branch 'upstream/develop' into awc
dzalkind 8ea0a4c
Merge remote-tracking branch 'jfred/AWC_NREL' into awc
dzalkind daf77e9
Merge remote-tracking branch 'ndev/rosco_awc_merge' into awc
dzalkind ca7c44d
Tidy print statements, file writing
dzalkind 4e2a778
Remove duplicate PF_Offsets input read
dzalkind 74c7fcb
Rename methods in readme
dzalkind e4d7ec2
Tidy input writing, remove `future` references
dzalkind 4194da4
Force AWC_n into int
dzalkind c1e4be7
Force AWC_n into int better
dzalkind 5e75601
Make AWC_n a list, too
dzalkind de8d228
Fix input file writing, force into int in write_array
dzalkind e1379de
Run ROSCO_testing from anywhere
dzalkind 2947b4f
Dylib -> so in Test_Cases
dzalkind cae3f17
Updated AWC input parameters.
jfrederik-nrel bd4d7d5
Added checks for AWC inputs.
jfrederik-nrel 1e25c88
Fixed bug in added AWC input checks.
jfrederik-nrel 50f4191
Update error message
dzalkind 50bd08c
Tidy up IPC, allow AWC and IPC with warning
dzalkind e02379d
Remove AWC references from IPC
dzalkind 3851a6b
Remove lingering comment
dzalkind 9d7e18d
Tidy file writing
dzalkind 7f12c9c
Clean up comments
dzalkind 8e4cf8b
Allow more than 99 local variables in dbg2
dzalkind bc33417
Update api_change.rst
jfrederik-nrel 17ce1a5
Merge remote-tracking branch 'jfred/patch-1' into awc
dzalkind 728c61d
Update 20_active_wake_control.py
kbrown1snl 820aa66
Merge pull request #2 from kbrown1snl/patch-2
dzalkind 90c4041
Add optimized NREL2p8 controller input
dzalkind 5afb385
Parallelize output processing
dzalkind fbb44c4
Add IPC gain to NREL2p8
dzalkind fe24704
Merge remote-tracking branch 'upstream/develop' into power_ref_tracking
dzalkind 52e3708
Finish merge with inputs and registry
dzalkind 1e38c90
Update IPC example for testing sat modes
dzalkind e49f383
Add latest plot_FAST notebook
dzalkind 9e5fd58
Add PRC example
dzalkind f1037ec
Merge remote-tracking branch 'origin/awc' into power_ref_tracking
dzalkind 099532b
Finish merge with awc inputs and registry
dzalkind 5a7046f
Active Wake Control (#230)
dzalkind 8a39f3c
Update example with ramp, reference
dzalkind 7669419
Merge remote-tracking branch 'upstream/develop' into power_ref_tracking
dzalkind de15e52
Various bug fixes (#233)
dzalkind ac14b17
Init PC_RefSpeed if no PRC
dzalkind 60b366d
Revert openfast changes
dzalkind 24bded0
Add note about offset
dzalkind 585e2c8
Open loop platform control (#236)
dzalkind 339ad53
Tidy example output
dzalkind 79426f7
Increment version number
dzalkind 90357a2
Merge remote-tracking branch 'upstream/develop' into power_ref_tracking
dzalkind 12f8fdb
Merge remote-tracking branch 'upstream/main' into develop
dzalkind 5fd97e2
Increment version number
dzalkind e5b1af5
Yaw Rate Bug Fix (#239)
dzalkind c701f67
OpenFAST 3.5.0 (#246)
dzalkind 2f069da
Floating Feedback Gain Scheduling (#241)
alandwright 9de385b
Merge remote-tracking branch 'upstream/develop' into power_ref_tracking
dzalkind d9547dd
Fix relative Cp filepaths
dzalkind 178217b
Regenerate registry, inputs
dzalkind c641b54
Rotor Position Control (#255)
dzalkind 31332d9
Update .readthedocs.yaml to remove use of 'system_packages' as it is …
abhineet-gupta 63bcb0d
Extend ROSCO for MHK (#257)
AthulKrishnaSundarrajan 716b2e4
Merge remote-tracking branch 'upstream/develop' into power_ref_tracking
dzalkind b27629b
Rename power ref example
dzalkind ea55560
Shorten PRC example
dzalkind b5eb5c0
Use updated DISCON writing functions for PRC inputs
dzalkind 24052dc
Revert run_FAST cases
dzalkind 3092e38
Tidy example documentation, output
dzalkind b817a5c
Bring back new VS_ControlMode that merge lost
dzalkind 38f27de
Add LPF on WSE for speed selection, use gen speed rather than rotor
dzalkind d9a31fb
Document API changes
dzalkind 32292e5
Bring back saturation of torque reference speed
dzalkind 3b0bde0
Update PRC example with PRC_GenSpeeds
dzalkind e75baa2
Remove pCrunch notebook
dzalkind 989ce5b
Merge pull request #170 from dzalkind/power_ref_tracking
abhineet-gupta 2c76747
Increase max file unit (#253)
dzalkind b66cd11
Add types to scalars (#264)
rthedin 0e80094
Update api_change.rst formatting
dzalkind f2a624d
Update .readthedocs.yaml with build.os
dzalkind 6f1ccfa
Update .readthedocs.yaml with other build options
dzalkind 80973fe
Update .readthedocs.yaml with python 3.9
dzalkind 04d3f52
Update .readthedocs.yaml with new python version
dzalkind c479034
Update .readthedocs.yaml with another python version
dzalkind 328d29e
Update .readthedocs.yaml with version key
dzalkind 8693d4b
Update .readthedocs.yaml
dzalkind dd01047
Update .readthedocs.yaml remove old python version
dzalkind a610e55
Better Open Loop Control Error Catching (#273)
dzalkind c75738e
Modified ZeroMQ interface to include pitch offsets (#261)
mvanv 1961f95
Merged upstream/develop
6ceb155
Add initial torque/speed power controllers
dzalkind 3a5c59a
Add power control via pitch
dzalkind 0ddbf0d
Merge remote-tracking branch 'upstream/develop' into develop
f846f17
Initial implementation of fixed blade pitch control for MHK turbines.…
748d975
Remove extra test_cases
dzalkind 2787ff9
Expanded test script and made cc-blade Cp surface generation extend t…
c15e869
Merged and regenerated rotor performance in the right place
32ecfc8
updated DISCONs
8c57a31
Remove extra RefSpd localvars
dzalkind 4c1202c
Merge remote-tracking branch 'ds/r3-fixed-pitch' into r3-fixed-pitch
dzalkind de4f6a7
Added overspeed config option and expanded Cp surface again
ae07303
Add constants for various VS_Control modes
dzalkind 2df9e54
Regen registry
dzalkind 8eab998
Cleaned up fixed pitch example script
38e28cf
Merge remote-tracking branch 'ds/r3-fixed-pitch' into r3-fixed-pitch
dzalkind 1008cc6
Added comments to fixed pitch controller tuning, rearranged torque co…
25001e0
Finished renaming FBP variables and VS ref speed filter
822b731
Regenerated DISCONs
e639706
Merge remote-tracking branch 'ds/r3-fixed-pitch' into r3-fixed-pitch
dzalkind 7726f0d
Disable the pitch controller at the DISCON level
dzalkind 01121e2
Working on overspeed operating schedule, still not yet giving stable …
be58bbb
Merge branch 'r3-fixed-pitch' of https://github.com/dstockhouse/ROSCO…
ab7a1f8
Update .readthedocs.yaml
dzalkind 7870a01
Implement open loop PRC inputs
dzalkind b8559fa
Add ZMQ PRC inputs, defaults in wfc setpoints
dzalkind 7546879
Update to latest scipy functions
dzalkind 86cf9f6
Update max_torque_rates
dzalkind 105dc45
Switch constants to integers
dzalkind c9895f6
Merge remote-tracking branch 'origin/fix_scipy' into power_control
dzalkind 8b62b85
Let R_Speed affect below rated ref speed (based on TSR)
dzalkind ed1522a
Merge branch 'main' into docs
dzalkind a83e4bb
Docs: Fix small bug in docs that caused errors with links
abhineet-gupta 3cc17b3
Add open loop control with wind speed breakpoints
dzalkind a2255a1
Add checks for power control
dzalkind 102286d
Considerable cahnges to fixed-blade-pitch (FBP) operation for marine …
541fe81
Start using automatic documentation for examples (#371)
abhineet-gupta df133ee
Added autodocumentation template for all examples
abhineet-gupta ead419d
Merge remote-tracking branch 'upstream/develop' into develop
f0debea
Merged branch upstream/develop
6216972
Fixed bug in FBP control with VS_RefSpd turning to NaN if GenTq ever …
ce1b0eb
Revised usage of generator and gearbox efficiencies in toolbox contro…
b12e499
Re-enable previous PRC_Mode
dzalkind 0b569e4
Update 5MW yamls for constant power
dzalkind a24f157
Edit comments
dzalkind c5c2920
Merge remote-tracking branch 'origin/develop' into power_control
dzalkind 860182d
Merge remote-tracking branch 'origin/docs' into power_control
dzalkind 9456ef2
Check for IPC openfast flag when using AWC
dzalkind 87f681e
Merge remote-tracking branch 'origin/main' into power_control
dzalkind 9124f93
Update discons
dzalkind 44703b6
Modified comments related to GBoxEff in rng2K calculation
3327225
Fix GB and gen efficiencies
dzalkind 552a434
Merge remote-tracking branch 'origin/develop' into vbf
dzalkind 27476f9
Allow updating of Ind_BldPitch from int to array
dzalkind ac73dde
Remove print statement
dzalkind bdc1c3e
Add power control example
dzalkind 5eb81de
Fix issue where PRC_Mode 2 was not setting PC_RefSpeed_PRC
dzalkind 008c154
Add offset to sine_timeseries
dzalkind 5c94207
Clean up power control example
dzalkind d77ba20
Restructured some controller code related to saturation, attempted to…
6d79062
Added more precise calculation of Cp-optimizing pitch and updated the…
2ec41dd
Disable WSE automatically outside normal operation
dzalkind 302a6ba
Fix OL_BP_FiltFreq input writing
dzalkind 0c0e423
Check breakpoints of open loop control against maxima
dzalkind f249520
Account for rating command in setpoint smoother
dzalkind 90ccdd8
Set up PRC demos and documentation
dzalkind 26fe47c
Elaborate old PRC documentation
dzalkind 82413fc
Update some example documentation
dzalkind d1021ff
Update example list in docs
dzalkind b450185
Fix old open loop nomenclature
dzalkind 7882913
Fix error message in ol control
dzalkind ee2b46a
Configure PRC example for CI
dzalkind 8b304cf
Add docs images
dzalkind aa1694d
Add a note about building docs
dzalkind 8778c79
Fix global variables in Example 17a and 17b
abhineet-gupta b0aa0e4
Merge remote-tracking branch 'origin/docs' into docs
dzalkind 16551d0
Merge remote-tracking branch 'origin/docs' into power_control
dzalkind f075c80
Try numpy<2.0
dzalkind 4486d7a
Fixed bug where TRA_LastRefSpd was set to a generator speed not the L…
BenClaytonARUP e6cc03a
Merge remote-tracking branch 'origin/docs' into power_control
dzalkind ca57895
Merge remote-tracking branch 'origin/vbf' into power_control
dzalkind 7a958ac
Merge remote-tracking branch 'origin/develop' into power_control
dzalkind 4055eeb
Document PRC API changes
dzalkind 914ea41
Merge branch 'power_control' into r3-fixed-pitch
dzalkind 7bb60d4
Merge remote-tracking branch 'origin/develop' into r3-fixed-pitch
dzalkind 849dcfd
Regenerate DISCONs
dzalkind f39b6e4
Regenerate Types/IO
dzalkind e51ff1f
Fix VS_MaxTq logic
dzalkind 91bea8c
Tidy PC_State logic
dzalkind 80a0117
Sync vs ref and wse filters
dzalkind 6f29db0
Regenerate discons
dzalkind b60e925
Tidy up DISCON formatting
dzalkind 33a3a36
Tidy up some code comments
dzalkind 8be8713
Rename example
dzalkind ed159ed
Add F_VSRefSpdCornerFreq to minimal DISCON inputs, it's required
dzalkind aa34445
Start documentation of fixed pitch example
dzalkind f69d11a
Let user specify configuration of controller in fixed pitch example
dzalkind e755276
Update max torque limit logic
dzalkind 05c4f37
Add checks on fixed blade pitch control and other modes
dzalkind 7390267
Add fixed pitch control example docs
dzalkind c1d32f2
Update images in ex 30 docs
dzalkind daf36bc
Add mpi_tools to rosco
dzalkind 8ae616d
Merge remote-tracking branch 'origin/develop' into r3-fixed-pitch
dzalkind fd29747
Merge remote-tracking branch 'origin/develop' into r3-fixed-pitch
dzalkind 3900637
Finish merge: regen discons, registry
dzalkind 2b00bbb
Rename fixed pitch example, add to tests
dzalkind 395c681
Fix typo in example test
dzalkind fa51fab
Use WSE filter as default ref speed filter, Check updated discon
dzalkind 840fa79
Tidy imports
dzalkind 8891a86
Increment ROSCO version
dzalkind fa1aa7e
Do not set default wind_case_fcn
dzalkind 8671afa
Set up ex31 to simulate each config easily
dzalkind 334e94c
Simplify save_dir
dzalkind File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
''' | ||
----------- 26_marine_hydro ------------------------ | ||
Run openfast with ROSCO and a MHK turbine | ||
----------------------------------------------- | ||
|
||
|
||
''' | ||
|
||
import os | ||
from rosco.toolbox.ofTools.case_gen.run_FAST import run_FAST_ROSCO | ||
from rosco.toolbox.ofTools.case_gen import CaseLibrary as cl | ||
from rosco.toolbox.ofTools.fast_io import output_processing | ||
from rosco.toolbox import controller as ROSCO_controller | ||
from rosco.toolbox import turbine as ROSCO_turbine | ||
from rosco.toolbox.utilities import write_DISCON | ||
from rosco.toolbox.inputs.validation import load_rosco_yaml | ||
import matplotlib.pyplot as plt | ||
|
||
''' | ||
Run MHK turbine in OpenFAST with ROSCO torque controller | ||
|
||
|
||
''' | ||
|
||
|
||
#directories | ||
this_dir = os.path.dirname(os.path.abspath(__file__)) | ||
rosco_dir = os.path.dirname(this_dir) | ||
example_out_dir = os.path.join(this_dir,'examples_out') | ||
os.makedirs(example_out_dir,exist_ok=True) | ||
|
||
def main(): | ||
|
||
# Input yaml and output directory | ||
parameter_filename = os.path.join(this_dir,'Tune_Cases/RM1_MHK_FBP.yaml') | ||
run_dir = os.path.join(example_out_dir,'29_MHK/0_baseline') | ||
os.makedirs(run_dir,exist_ok=True) | ||
|
||
inps = load_rosco_yaml(parameter_filename) | ||
path_params = inps['path_params'] | ||
turbine_params = inps['turbine_params'] | ||
controller_params = inps['controller_params'] | ||
|
||
# Instantiate turbine, controller, and file processing classes | ||
turbine = ROSCO_turbine.Turbine(turbine_params) | ||
controller = ROSCO_controller.Controller(controller_params) | ||
|
||
# Load turbine data from OpenFAST and rotor performance text file | ||
cp_filename = os.path.join(this_dir,path_params['rotor_performance_filename']) | ||
turbine.load_from_fast( | ||
path_params['FAST_InputFile'], | ||
os.path.join(this_dir,path_params['FAST_directory']), | ||
rot_source='txt',txt_filename= cp_filename | ||
) | ||
|
||
# Tune controller | ||
controller.tune_controller(turbine) | ||
|
||
# Write parameter input file | ||
param_file = os.path.join(run_dir,'DISCON.IN') | ||
write_DISCON(turbine, | ||
controller, | ||
param_file=param_file, | ||
txt_filename=cp_filename | ||
) | ||
|
||
# # Plot operating schedule | ||
# fig, ax = plt.subplots(2,2,constrained_layout=True,sharex=True) | ||
# ax = ax.flatten() | ||
# ax[0].plot(controller.v[len(controller.v_below_rated)+1:], controller.omega_pc_U) | ||
# ax[0].set_ylabel('omega_pc') | ||
|
||
# ax[1].plot(controller.v[len(controller.v_below_rated)+1:], controller.zeta_pc_U) | ||
# ax[1].set_ylabel('zeta_pc') | ||
|
||
# ax[2].plot(controller.v[len(controller.v_below_rated)+1:], controller.pc_gain_schedule.Kp) | ||
# ax[2].set_xlabel('Wind Speed') | ||
# ax[2].set_ylabel('Proportional Gain') | ||
|
||
# ax[3].plot(controller.v[len(controller.v_below_rated)+1:], controller.pc_gain_schedule.Ki) | ||
# ax[3].set_xlabel('Wind Speed') | ||
# ax[3].set_ylabel('Integral Gain') | ||
|
||
# plt.suptitle('Pitch Controller Gains') | ||
|
||
|
||
# simulation set up | ||
r = run_FAST_ROSCO() | ||
r.tuning_yaml = parameter_filename | ||
# r.wind_case_fcn = cl.simp_step # single step wind input | ||
r.wind_case_fcn = cl.power_curve | ||
r.wind_case_opts = { | ||
'U': [3.5], | ||
'TMax': 100.0, | ||
} | ||
r.case_inputs = {} | ||
# r.fst_vt = reader.fst_vt | ||
# r.controller_params = controller_params | ||
r.save_dir = run_dir | ||
r.rosco_dir = rosco_dir | ||
|
||
r.run_FAST() | ||
|
||
op = output_processing.output_processing() | ||
fast_out = op.load_fast_out([os.path.join(run_dir,'RM1_MHK_FBP/power_curve/base/RM1_MHK_FBP_0.out')], tmin=0) | ||
fig, axs = plt.subplots(4,1) | ||
axs[0].plot(fast_out[0]['Time'],fast_out[0]['Wind1VelX'],label='Flow Speed') | ||
axs[1].plot(fast_out[0]['Time'],fast_out[0]['GenSpeed'],label='Gen Speed') | ||
axs[2].plot(fast_out[0]['Time'],fast_out[0]['GenTq'],label='Gen Torque') | ||
axs[3].plot(fast_out[0]['Time'],fast_out[0]['GenPwr'],label='Gen Power') | ||
|
||
|
||
# op = output_processing.output_processing() | ||
# op2 = output_processing.output_processing() | ||
|
||
# md_out = op.load_fast_out([os.path.join(run_dir,'IEA15MW_cable/power_curve/base/IEA15MW_cable_0.MD.Line1.out')], tmin=0) | ||
# local_vars = op2.load_fast_out([os.path.join(run_dir,'IEA15MW_cable/power_curve/base/IEA15MW_cable_0.RO.dbg2')], tmin=0) | ||
|
||
# fig, axs = plt.subplots(4,1) | ||
# axs[0].plot(local_vars[0]['Time'],local_vars[0]['CC_DesiredL'],label='CC_DesiredL') | ||
# axs[1].plot(local_vars[0]['Time'],local_vars[0]['CC_ActuatedL'],label='CC_ActuatedL') | ||
# axs[2].plot(local_vars[0]['Time'],local_vars[0]['CC_ActuatedDL'],label='CC_ActuatedDL') | ||
# axs[3].plot(md_out[0]['Time'],md_out[0]['Seg20Lst'],label='Seg20Lst') | ||
|
||
# [a.legend() for a in axs] | ||
# [a.grid() for a in axs] | ||
|
||
# if False: | ||
# plt.show() | ||
# else: | ||
# plt.savefig(os.path.join(example_out_dir,'22_cable_control.png')) | ||
|
||
# # Check that the last segment of line 1 shrinks by 10 m | ||
# # np.testing.assert_almost_equal(md_out[0]['Seg20Lst'][-1] - md_out[0]['Seg20Lst'][0], line_ends[0], 2) | ||
|
||
|
||
|
||
if __name__=="__main__": | ||
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
--- # ---------------------NREL Generic controller tuning input file ------------------- | ||
# Written for use with ROSCO_Toolbox tuning procedures | ||
# Turbine: RM1 Marine Turbine | ||
# ------------------------------ OpenFAST PATH DEFINITIONS ------------------------------ | ||
path_params: | ||
FAST_InputFile: 'MHK_RM1_Floating.fst' # Name of *.fst file | ||
FAST_directory: '../Test_Cases/MHK_RM1' # Main OpenFAST model directory, where the *.fst lives | ||
# Optional | ||
rotor_performance_filename: '../Test_Cases/MHK_RM1/MHK_RM1_Cp_Ct_Cq.txt' # Filename for rotor performance text file (if it has been generated by ccblade already) | ||
|
||
# -------------------------------- TURBINE PARAMETERS ----------------------------------- | ||
turbine_params: | ||
rotor_inertia: 92169 # Rotor inertia [kg m^2], {Available in Elastodyn .sum file} | ||
rated_rotor_speed: 1.204 # 11.5 rpm # Rated rotor speed [rad/s] | ||
v_min: 0.5 # Cut-in wind speed [m/s] | ||
v_rated: 2.0 # Rated wind speed [m/s] | ||
v_max: 4.0 # Cut-out wind speed [m/s], -- Does not need to be exact (JUST ASSUME FOR NOW) | ||
max_pitch_rate: 0.1745 # Maximum blade pitch rate [rad/s] | ||
max_torque_rate: 1500000. # Maximum torque rate [Nm/s], {~1/4 VS_RtTq/s} | ||
rated_power: 500000 # Rated Power [W] | ||
bld_edgewise_freq: 60.2831853 # Blade edgewise first natural frequency [rad/s] | ||
bld_flapwise_freq: 0.0 # Blade flapwise first natural frequency [rad/s] | ||
reynolds_ref: 8e6 | ||
# Optional | ||
# TSR_operational: # None # Desired below-rated operational tip speed ratio (Cp-maximizing TSR is used if not defined) | ||
#------------------------------- CONTROLLER PARAMETERS ---------------------------------- | ||
controller_params: | ||
# Controller flags | ||
LoggingLevel: 2 # {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file | ||
F_LPFType: 1 # {1: first-order low-pass filter, 2: second-order low-pass filter}, [rad/s] (currently filters generator speed and pitch control signals) | ||
F_NotchType: 1 # Notch filter on generator speed and/or tower fore-aft motion (for floating) {0: disable, 1: generator speed, 2: tower-top fore-aft motion, 3: generator speed and tower-top fore-aft motion} | ||
IPC_ControlMode: 0 # Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P reductions} | ||
VS_ControlMode: 4 # Generator torque control mode in above rated conditions {0: constant torque, 1: constant power, 2: TSR tracking PI control} | ||
VS_ConstPower: 0 # Generator torque control mode in above rated conditions {0: constant torque, 1: constant power, 2: TSR tracking PI control} | ||
PC_ControlMode: 0 # Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control} | ||
Y_ControlMode: 0 # Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} | ||
SS_Mode: 1 # Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} | ||
WE_Mode: 0 # Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Immersion and Invariance Estimator (Ortega et al.)} | ||
PS_Mode: 0 # Pitch saturation mode {0: no pitch saturation, 1: peak shaving, 2: Cp-maximizing pitch saturation, 3: peak shaving and Cp-maximizing pitch saturation} | ||
SD_Mode: 0 # Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} | ||
Fl_Mode: 1 # Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} | ||
Flp_Mode: 0 # Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} | ||
# Controller parameters | ||
U_pc: [2.3,2.5] | ||
interp_type: sigma | ||
zeta_pc: [0.7,0.7] # Pitch controller desired damping ratio [-] | ||
omega_pc: [0.9,0.9] # Pitch controller desired natural frequency [rad/s] | ||
zeta_vs: 1.0 # Torque controller desired damping ratio [-] | ||
omega_vs: 0.8 # Torque controller desired natural frequency [rad/s] | ||
twr_freq: 3.3404 # Tower natural frequency [rad/s] # 0.4499 (old value) 3.3404(new value) | ||
# twr_freq: 0.061009 # 2P | ||
ptfm_freq: 0.6613 # Platform natural frequency [rad/s] (OC4Hywind Parameters, here) 0.2325 (old value) 0.6613879263 (new value) | ||
# Optional | ||
ps_percent: 0.80 # Percent peak shaving [%, <= 1 ], {default = 80%} | ||
sd_maxpit: 0.4363 # Maximum blade pitch angle to initiate shutdown [rad], {default = bld pitch at v_max} | ||
Kp_float: -0.3897 | ||
max_torque_factor: 5 | ||
FBP_ref_mode: 1 | ||
FBP_P_mode: 0 | ||
FBP_U: [2.0, 4.0] | ||
FBP_P: [1.0, 1.0] | ||
DISCON: | ||
F_NumNotchFilts: 0 | ||
F_NotchFreqs: [1.0, 2.4200] # 2P | ||
F_NotchBetaNum: [0.0, 0.0] | ||
F_NotchBetaDen: [0.25, 0.25] | ||
F_GenSpdNotch_N: 0 | ||
F_GenSpdNotch_Ind: [1,2] | ||
F_TwrTopNotch_N: 0 | ||
F_TwrTopNotch_Ind: [1,2] | ||
F_NotchCornerFreq_GS: [2.42] | ||
F_FlHighPassFreq: 1.5 | ||
VS_PwrFiltF: 0.05 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's happening with these commented pieces of code?