Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
f5f8502
Update RM1 model and control
Jan 16, 2026
d3470c4
Merge remote-tracking branch 'origin/main' into mhk_update
Jan 26, 2026
96b4c4f
Update RM1 tuning yaml and SeaState input
Jan 30, 2026
7e1cadf
Add discon parameter sweep to CaseLibrary
Jan 30, 2026
2a51a61
Make shorter MHK example
Jan 30, 2026
94439fd
Update inputs for openfast 4.2.0
Jan 30, 2026
f7dd730
Update openfast versions in environment
Jan 30, 2026
3e1ae7c
Merge remote-tracking branch 'origin/develop' into mhk_update
Feb 4, 2026
6e4c268
Disable cavitcheck, shutdown at 9999
Feb 4, 2026
2d08160
Merge branch 'of_420' into mhk_update
Feb 4, 2026
ecd6b23
Tidy MHK example
Feb 9, 2026
32c15a0
Increase generator inertia
Feb 9, 2026
09be286
Set new tuning parameters for RM1
Feb 9, 2026
596d054
Update DISCONs
Feb 9, 2026
84e0823
Merge remote-tracking branch 'origin/main'
Apr 24, 2026
d84d34d
Update input files to openfast v5
Apr 24, 2026
adbaa22
Update environment yaml
Apr 24, 2026
dcc5779
Add discon_param sweep to CaseLibrary
Apr 24, 2026
7db5a77
Update output file reader so it can grab partial lines without failing
Apr 24, 2026
55910bb
Read elastodyn file more robustly
Apr 24, 2026
6fd0886
Skip blade input reading, unused
May 4, 2026
8685505
Increase toml version
May 4, 2026
461789f
Re-generate discons
May 4, 2026
c03f087
Add note about getting pre-compiled libraries from conda
May 4, 2026
e3ac5fb
Re-generate registry
May 4, 2026
ebc3818
Merge remote-tracking branch 'origin/develop' into of_50
May 4, 2026
df1d984
Update NREL-5MW, RM1 models to OF 5.0
Jun 9, 2026
77371f0
Merge branch 'mhk_update' into of_50
Jun 9, 2026
85b0b9f
Update NREL 2.8 MW
Jun 10, 2026
67f9c14
Update toml, discons
Jun 10, 2026
c81b0d0
Update StC_DOF_MODE for OF5, add TEST_MODE
Jun 10, 2026
034835e
Update FAST.Farm for OF5.0
Jun 10, 2026
add7ca8
Pip install with no-deps
Jun 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/CI_rosco-compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ jobs:

- name: Conda Install ROSCO
run: |
python -m pip install -e . --no-build-isolation
python -m pip install -e . --no-build-isolation --no-deps

- name: Generate Registry
run: |
Expand Down
4 changes: 2 additions & 2 deletions Examples/17c_zeromq_fastfarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ def write_openfast_1():
r.wind_case_fcn = cl.power_curve
r.wind_case_opts = {
"U": [8],
"TMax": 25,
"TMax": 20,
}
run_dir = os.path.join(EXAMPLE_OUT_DIR, "17c_FASTFarm_OF1")
r.controller_params = {}
Expand Down Expand Up @@ -173,7 +173,7 @@ def write_openfast_2():
r.wind_case_fcn = cl.power_curve
r.wind_case_opts = {
"U": [8],
"TMax": 25,
"TMax": 20,
}
run_dir = os.path.join(EXAMPLE_OUT_DIR, "17c_FASTFarm_OF2")
r.save_dir = run_dir
Expand Down
4 changes: 3 additions & 1 deletion Examples/23_structural_control.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
from rosco.toolbox.inputs.validation import load_rosco_yaml
from rosco.toolbox.controller import OpenLoopControl

TEST_MODE = True # set to False to run full simulation, True runs a short test case for debugging

def main():
#directories
this_dir = os.path.dirname(os.path.abspath(__file__))
Expand Down Expand Up @@ -95,7 +97,7 @@ def main():
r.wind_case_fcn = cl.power_curve
r.wind_case_opts = {
'U': [9],
'TMax': t_max,
'TMax': t_max if not TEST_MODE else 10,
}
r.case_inputs = {}
r.fst_vt = reader.fst_vt
Expand Down
11 changes: 5 additions & 6 deletions Examples/26_marine_hydro.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from rosco.toolbox.ofTools.case_gen.run_FAST import run_FAST_ROSCO
from rosco.toolbox.ofTools.case_gen import CaseLibrary as cl

TEST_RUN = True

def main():
#directories
Expand All @@ -21,22 +22,20 @@ def main():
run_dir = os.path.join(example_out_dir,'26_MHK/0_baseline')
os.makedirs(run_dir,exist_ok=True)


# 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': [2.5],
'TMax': 100.0,
}
r.case_inputs = {}
# r.fst_vt = reader.fst_vt
# r.controller_params = controller_params
if TEST_RUN:
r.wind_case_opts['TMax'] = 1.0

r.save_dir = run_dir
r.rosco_dir = rosco_dir
# r.rosco_dll = '/Users/dzalkind/Tools/ROSCO-PRC/rosco/controller/build/libdiscon.dylib'
r.n_cores = 1

r.run_FAST()

Expand Down
150 changes: 79 additions & 71 deletions Examples/Test_Cases/5MW_Land_Simulink/5MW_Land_Simulink.fst

Large diffs are not rendered by default.

Large diffs are not rendered by default.

16 changes: 12 additions & 4 deletions Examples/Test_Cases/BAR_10/BAR_10.fst
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,28 @@ True Echo - Echo input data to <RootName>.ech (flag)
"FATAL" AbortLevel - Error level when simulation should abort (string) {"WARNING", "SEVERE", "FATAL"}
10.0 TMax - Total run time (s)
0.01 DT - Recommended module time step (s)
1 ModCoupling - Module coupling method (switch) {1=loose; 2=tight with fixed Jacobian updates (DT_UJac); 3=tight with automatic Jacobian updates}
2 InterpOrder - Interpolation order for input/output time history (-) {1=linear, 2=quadratic}
0 NumCrctn - Number of correction iterations (-) {0=explicit calculation, i.e., no corrections}
0.0 RhoInf - Numerical damping parameter for tight coupling generalized-alpha integrator (-) [0.0 to 1.0]
1e-4 ConvTol - Convergence iteration error tolerance for tight coupling generalized alpha integrator (-)
6 MaxConvIter - Maximum number of convergence iterations for tight coupling generalized alpha integrator (-)
99999.0 DT_UJac - Time between calls to get Jacobians (s)
1000000.0 UJacSclFact - Scaling factor used in Jacobians (-)
---------------------- FEATURE SWITCHES AND FLAGS ------------------------------
2 CompElast - Compute structural dynamics (switch) {1=ElastoDyn; 2=ElastoDyn + BeamDyn for blades}
1 CompInflow - Compute inflow wind velocities (switch) {0=still air; 1=InflowWind; 2=external from OpenFOAM}
2 CompAero - Compute aerodynamic loads (switch) {0=None; 1=AeroDyn v14; 2=AeroDyn v15}
1 NRotors - Number of rotors in turbine (-)
2 CompElast - Compute structural dynamics (switch) {1=ElastoDyn; 2=ElastoDyn + BeamDyn for blades; 3=Simplified ElastoDyn}
1 CompInflow - Compute inflow wind velocities (switch) {0=still air; 1=InflowWind; 2=external from ExtInflow}
2 CompAero - Compute aerodynamic loads (switch) {0=None; 1=AeroDisk; 2=AeroDyn; 3=ExtLoads}
1 CompServo - Compute control and electrical-drive dynamics (switch) {0=None; 1=ServoDyn}
0 CompSeaSt - Compute sea state information (switch) {0=None; 1=SeaState}
0 CompHydro - Compute hydrodynamic loads (switch) {0=None; 1=HydroDyn}
0 CompSub - Compute sub-structural dynamics (switch) {0=None; 1=SubDyn; 2=External Platform MCKF}
0 CompMooring - Compute mooring system (switch) {0=None; 1=MAP++; 2=FEAMooring; 3=MoorDyn; 4=OrcaFlex}
0 CompIce - Compute ice loads (switch) {0=None; 1=IceFloe; 2=IceDyn}
0 CompSoil - Compute soil-structural dynamics (switch) {0=None; 1=SoilDyn}
0 MHK - MHK turbine type (switch) {0=Not an MHK turbine; 1=Fixed MHK turbine; 2=Floating MHK turbine}
F MirrorRotor - Flag to reverse rotor rotation direction [1 to NRotors] {F=Normal, T=Mirror}
---------------------- ENVIRONMENTAL CONDITIONS --------------------------------
9.80665 Gravity - Gravitational acceleration (m/s^2)
1.225 AirDens - Air density (kg/m^3)
Expand All @@ -43,13 +50,14 @@ True Echo - Echo input data to <RootName>.ech (flag)
"unused" SubFile - Name of file containing sub-structural input parameters (quoted string)
"unused" MooringFile - Name of file containing mooring system input parameters (quoted string)
"unused" IceFile - Name of file containing ice input parameters (quoted string)
"unused" SoilFile - Name of the file containing the SoilDyn input parameters (quoted string)
---------------------- OUTPUT --------------------------------------------------
True SumPrint - Print summary data to "<RootName>.sum" (flag)
5.0 SttsTime - Amount of time between screen status messages (s)
99999.0 ChkptTime - Amount of time between creating checkpoint files for potential restart (s)
"default" DT_Out - Time step for tabular output (s) (or "default")
0.0 TStart - Time to begin tabular output (s)
2 OutFileFmt - Format for tabular (time-marching) output file (switch) {1: text file [<RootName>.out], 2: binary file [<RootName>.outb], 3: both}
2 OutFileFmt - Format for tabular (time-marching) output file (switch) {1: text file [<RootName>.out], 2: binary file [<RootName>.outb], 3: both 1 and 2, 4: uncompressed binary [<RootName>.outb], 5: both 1 and 4}
True TabDelim - Use tab delimiters in text tabular output file? (flag) {uses spaces if false}
"ES10.3E2" OutFmt - Format used for text tabular output, excluding the time channel. Resulting field should be 10 characters. (quoted string)
---------------------- LINEARIZATION -------------------------------------------
Expand Down
33 changes: 16 additions & 17 deletions Examples/Test_Cases/BAR_10/BAR_10_AeroDyn15.dat
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ False Echo - Echo the input to "<rootname>.AD.ech"? (fl
0 TwrShadow - Calculate tower influence on wind based on downstream tower shadow? (flag)
True TwrAero - Calculate tower aerodynamic loads? (flag)
False CavitCheck - Perform cavitation check? (flag) TRUE will turn off unsteady aerodynamics
False Buoyancy - Include buoyancy effects? (flag)
False NacelleDrag - Include Nacelle Drag effects? (flag)
False CompAA Flag to compute AeroAcoustics calculation [only used when WakeMod=1 or 2]
"AeroAcousticsInput.dat" AA_InputFile - Aeroacoustics input file
Expand Down Expand Up @@ -94,10 +93,10 @@ True UseBlCm - Include aerodynamic pitching moment in calc
"BAR_10_AeroDyn15_blade.dat" ADBlFile(1) - Name of file containing distributed aerodynamic properties for Blade #1 (-)
"BAR_10_AeroDyn15_blade.dat" ADBlFile(2) - Name of file containing distributed aerodynamic properties for Blade #2 (-) [unused if NumBl < 2]
"BAR_10_AeroDyn15_blade.dat" ADBlFile(3) - Name of file containing distributed aerodynamic properties for Blade #3 (-) [unused if NumBl < 3]
====== Hub Properties ============================================================================== [used only when Buoyancy=True]
====== Hub Properties ============================================================================== [used only when MHK=1 or 2]
0.0 VolHub - Hub volume (m^3)
0.0 HubCenBx - Hub center of buoyancy x direction offset (m)
====== Nacelle Properties ========================================================================== [used only when Buoyancy=True or NacelleDrag=True]
====== Nacelle Properties ========================================================================== [used only when MHK=1 or 2 or when NacelleDrag=True]
0 VolNac - Nacelle volume (m^3)
0.0, 0.0, 0.0 NacCenB - Position of nacelle center of buoyancy from yaw bearing in nacelle coordinates (m)
0, 0, 0 NacArea - Projected area of the nacelle in X, Y, Z in the nacelle coordinate system (m^2)
Expand All @@ -106,20 +105,20 @@ True UseBlCm - Include aerodynamic pitching moment in calc
====== Tail Fin Aerodynamics =======================================================================
False TFinAero - Calculate tail fin aerodynamics model (flag)
"unused" TFinFile - Input file for tail fin aerodynamics [used only when TFinAero=True]
====== Tower Influence and Aerodynamics ============================================================= [used only when TwrPotent/=0, TwrShadow=True, or TwrAero=True]
9 NumTwrNds - Number of tower nodes used in the analysis (-) [used only when TwrPotent/=0, TwrShadow=True, or TwrAero=True]
TwrElev TwrDiam TwrCd TwrTI TwrCb !TwrTI used only with TwrShadow=2, TwrCb used only with Buoyancy=True
(m) (m) (-) (-) (-)
2.740e+01 6.00000e+00 1.0e+00 1.0e-1 0.0
4.110e+01 6.00000e+00 1.0e+00 1.0e-1 0.0
5.480e+01 6.00000e+00 1.0e+00 1.0e-1 0.0
6.850e+01 6.00000e+00 1.0e+00 1.0e-1 0.0
8.220e+01 6.00000e+00 1.0e+00 1.0e-1 0.0
9.590e+01 6.00000e+00 1.0e+00 1.0e-1 0.0
1.096e+02 6.00000e+00 1.0e+00 1.0e-1 0.0
1.233e+02 5.89079e+00 1.0e+00 1.0e-1 0.0
1.370e+02 5.53032e+00 1.0e+00 1.0e-1 0.0
====== Tower Influence and Aerodynamics ============================================================= [used only when TwrPotent/=0, TwrShadow=True, or TwrAero=True]
====== Tower Influence and Aerodynamics ============================================================= [used only when TwrPotent/=0, TwrShadow/=0, TwrAero=True, or MHK=1 or 2]
9 NumTwrNds - Number of tower nodes used in the analysis (-) [used only when TwrPotent/=0, TwrShadow/=0, TwrAero=True, or MHK=1 or 2]
TwrElev TwrDiam TwrCd TwrTI TwrCb TwrCp TwrCa !TwrTI used only with TwrShadow=2, TwrCb/TwrCp/TwrCa used only with MHK=1 or 2
(m) (m) (-) (-) (-) (-) (-)
2.740e+01 6.00000e+00 1.0e+00 1.0e-1 0.0 0.0000000E+00 0.0000000E+00
4.110e+01 6.00000e+00 1.0e+00 1.0e-1 0.0 0.0000000E+00 0.0000000E+00
5.480e+01 6.00000e+00 1.0e+00 1.0e-1 0.0 0.0000000E+00 0.0000000E+00
6.850e+01 6.00000e+00 1.0e+00 1.0e-1 0.0 0.0000000E+00 0.0000000E+00
8.220e+01 6.00000e+00 1.0e+00 1.0e-1 0.0 0.0000000E+00 0.0000000E+00
9.590e+01 6.00000e+00 1.0e+00 1.0e-1 0.0 0.0000000E+00 0.0000000E+00
1.096e+02 6.00000e+00 1.0e+00 1.0e-1 0.0 0.0000000E+00 0.0000000E+00
1.233e+02 5.89079e+00 1.0e+00 1.0e-1 0.0 0.0000000E+00 0.0000000E+00
1.370e+02 5.53032e+00 1.0e+00 1.0e-1 0.0 0.0000000E+00 0.0000000E+00
====== Tower Influence and Aerodynamics ============================================================= [used only when TwrPotent/=0, TwrShadow/=0, TwrAero=True, or MHK=1 or 2]
True SumPrint - Generate a summary file listing input options and interpolated properties to "<rootname>.AD.sum"? (flag)
9 NBlOuts - Number of blade node outputs [0 - 9] (-)
4, 7, 10, 13, 16, 18, 21, 24, 27 BlOutNd - Blade nodes whose values will be output (-)
Expand Down
6 changes: 3 additions & 3 deletions Examples/Test_Cases/BAR_10/BAR_10_DISCON.IN
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
! Controller parameter input file for the BAR_10 wind turbine
! - File written using ROSCO version 2.10.1 controller tuning logic on 11/26/25
! - File written using ROSCO version 2.10.6 controller tuning logic on 06/09/26

!------- SIMULATION CONTROL ------------------------------------------------------------
1 ! LoggingLevel - 0: write no debug files, 1: write standard output .dbg-file, 2: LoggingLevel 1 + ROSCO LocalVars (.dbg2) 3: LoggingLevel 2 + complete avrSWAP-array (.dbg3)
Expand Down Expand Up @@ -189,8 +189,8 @@

!------- FLAP ACTUATION -----------------------------------------------------
0.000000000000 ! Flp_Angle - Initial or steady state flap angle [rad]
1.46450132e-08 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s]
1.46450132e-09 ! Flp_Ki - Flap displacement integral gain for flap control [-]
1.46476122e-08 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s]
1.46476122e-09 ! Flp_Ki - Flap displacement integral gain for flap control [-]
0.174500000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad]

!------- Open Loop Control -----------------------------------------------------
Expand Down
9 changes: 9 additions & 0 deletions Examples/Test_Cases/BAR_10/BAR_10_ElastoDyn.dat
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ False Echo - Echo input data to "<RootName>.ech" (flag)
True FlapDOF1 - First flapwise blade mode DOF (flag)
True FlapDOF2 - Second flapwise blade mode DOF (flag)
True EdgeDOF - First edgewise blade mode DOF (flag)
False PitchDOF - Blade pitch DOF (flag)
False TeetDOF - Rotor-teeter DOF (flag) [unused for 3 blades]
False DrTrDOF - Drivetrain rotational-flexibility DOF (flag)
True GenDOF - Generator DOF (flag)
Expand Down Expand Up @@ -66,11 +67,19 @@ False PtfmYDOF - Platform yaw rotation DOF (flag)
0.0 PtfmCMxt - Downwind distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters)
0.0 PtfmCMyt - Lateral distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters)
0.0 PtfmCMzt - Vertical distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters)
0 PtfmRefxt - Downwind distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform reference point (meters)
0 PtfmRefyt - Lateral distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform reference point (meters)
0.0 PtfmRefzt - Vertical distance from the ground level [onshore] or MSL [offshore] to the platform reference point (meters)
---------------------- MASS AND INERTIA ----------------------------------------
0.0 TipMass(1) - Tip-brake mass, blade 1 (kg)
0.0 TipMass(2) - Tip-brake mass, blade 2 (kg)
0.0 TipMass(3) - Tip-brake mass, blade 3 (kg) [unused for 2 blades]
0 PBrIner(1) - Pitch bearing inertia, blade 1 (kg m^2)
0 PBrIner(2) - Pitch bearing inertia, blade 2 (kg m^2)
0 PBrIner(3) - Pitch bearing inertia, blade 3 (kg m^2) [unused for 2 blades]
0 BlPIner(1) - Blade pitch inertia, blade 1 (kg m^2)
0 BlPIner(2) - Blade pitch inertia, blade 2 (kg m^2)
0 BlPIner(3) - Blade pitch inertia, blade 3 (kg m^2) [unused for 2 blades]
119991.18553379682 HubMass - Hub mass (kg)
894745.0292084403 HubIner - Hub inertia about rotor axis [3 blades] or teeter axis [2 blades] (kg m^2)
0 HubIner_Teeter - Hub inertia about teeter axis (2-blades) (kg m^2)
Expand Down
11 changes: 10 additions & 1 deletion Examples/Test_Cases/BAR_10/BAR_10_ServoDyn.dat
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,15 @@ False Echo - Echo input data to <RootName>.ech (flag)
---------------------- PITCH CONTROL -------------------------------------------
5 PCMode - Pitch control mode {0: none, 3: user-defined from routine PitchCntrl, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
0.0 TPCOn - Time to enable active pitch control (s) [unused when PCMode=0]
0 PitNeut(1) - Blade 1 neutral pitch position--pitch spring moment is zero at this pitch (degrees)
0 PitNeut(2) - Blade 2 neutral pitch position--pitch spring moment is zero at this pitch (degrees)
0 PitNeut(3) - Blade 3 neutral pitch position--pitch spring moment is zero at this pitch (degrees)
7.0e8 PitSpr(1) - Blade 1 pitch spring constant (N-m/rad)
7.0e8 PitSpr(2) - Blade 2 pitch spring constant (N-m/rad)
7.0e8 PitSpr(3) - Blade 3 pitch spring constant (N-m/rad)
2.3e5 PitDamp(1) - Blade 1 pitch damping constant (N-m/(rad/s))
2.3e5 PitDamp(2) - Blade 2 pitch damping constant (N-m/(rad/s))
2.3e5 PitDamp(3) - Blade 3 pitch damping constant (N-m/(rad/s))
9999.9 TPitManS(1) - Time to start override pitch maneuver for blade 1 and end standard pitch control (s)
9999.9 TPitManS(2) - Time to start override pitch maneuver for blade 2 and end standard pitch control (s)
9999.9 TPitManS(3) - Time to start override pitch maneuver for blade 3 and end standard pitch control (s) [unused for 2 blades]
Expand Down Expand Up @@ -74,7 +83,7 @@ True GenTiStp - Method to stop the generator {T: timed usin
---------------------- CABLE CONTROL -------------------------------------------
0 CCmode - Cable control mode {0: none, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface]
"../../../lib/libdiscon.so" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface]
"/Users/dzalkind/Tools/ROSCO-main/rosco/lib/libdiscon.dylib" DLL_FileName - Name/location of the dynamic library (.dll [Windows] or .so [Linux]) in the Bladed-DLL format (-) [used only with Bladed Interface]
"BAR_10_DISCON.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface]
"DISCON" DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface]
"default" DLL_DT - Communication interval for dynamic library (s) (or "default") [used only with Bladed Interface]
Expand Down
Loading
Loading