Skip to content

Commit 0329215

Browse files
authored
Support for OpenFAST and openfast-io 4.1 (#455)
* Install openfast and io in environment yaml * Update iea openfast models to 4.1 * Update DISCONs, RM1 model for OF4.1 * Update IEA-15 tuning yamls with new Cp path * Update version numbering * Fix beamdyn file parsing * Increment version number * Update Cp file path * Ensure update file write to correct directory * Get correct rosco version into control message * Switch wrap_360 to wrap_180 for nacelle heading * Skip python 3.10 * Shorten IPC example * Skip more python 3.10 * Remove extra IEA-15 inputs * Simplify ElastoDynBlade logic
1 parent c6393f3 commit 0329215

35 files changed

Lines changed: 179 additions & 443 deletions

.github/workflows/CI_rosco-compile.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
fail-fast: false #true
1818
matrix:
1919
os: ["ubuntu-latest", "macOS-latest", "windows-latest"] #mac-13 intel, mac-14 arm
20-
python-version: ["3.10", "3.11", "3.12"]
20+
python-version: ["3.11", "3.12"]
2121

2222
steps:
2323
- name: Setup GNU Fortran
@@ -109,7 +109,7 @@ jobs:
109109
fail-fast: false #true
110110
matrix:
111111
os: ["ubuntu-latest", "macOS-13", "macOS-14", "windows-latest"] #mac-13 intel, mac-14 arm
112-
python-version: ["3.10", "3.11", "3.12"]
112+
python-version: ["3.11", "3.12"]
113113

114114
steps:
115115
- name: checkout repository
@@ -125,9 +125,9 @@ jobs:
125125
activate-environment: test
126126
auto-activate-base: false
127127

128-
- name: Install OpenFAST
129-
run: |
130-
conda install openfast>=4.0
128+
# - name: Install OpenFAST
129+
# run: |
130+
# conda install openfast>=4.0
131131

132132
- name: Add dependencies windows specific
133133
if: contains( matrix.os, 'windows')

Examples/12_tune_ipc.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
from rosco.toolbox.ofTools.case_gen.run_FAST import run_FAST_ROSCO
1919
from rosco.toolbox.ofTools.case_gen import CaseLibrary as cl
2020

21+
FULL_TEST = False
22+
2123
def main():
2224
this_dir = os.path.dirname(os.path.abspath(__file__))
2325
rosco_dir = os.path.dirname(this_dir)
@@ -45,6 +47,10 @@ def main():
4547
'both_dir': True,
4648
'vert_shear': 0.2
4749
}
50+
51+
if not FULL_TEST:
52+
r.wind_case_opts['t_start'] = 1
53+
r.wind_case_opts['t_end'] = 2
4854
r.case_inputs = case_inputs
4955
r.save_dir = run_dir
5056
r.rosco_dir = rosco_dir

Examples/Test_Cases/BAR_10/BAR_10_DISCON.IN

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
! Controller parameter input file for the BAR_10 wind turbine
2-
! - File written using ROSCO version 2.9.4 controller tuning logic on 01/27/25
2+
! - File written using ROSCO version 2.9.8 controller tuning logic on 07/18/25
33

44
!------- SIMULATION CONTROL ------------------------------------------------------------
55
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)}

Examples/Test_Cases/IEA-15-240-RWT/Cp_Ct_Cq.IEA15MW.txt

Lines changed: 0 additions & 99 deletions
This file was deleted.

Examples/Test_Cases/IEA-15-240-RWT/DISCON-UMaineSemi.IN

Lines changed: 0 additions & 198 deletions
This file was deleted.

Examples/Test_Cases/IEA-15-240-RWT/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_HydroDyn.dat

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -68,28 +68,44 @@ JointID Jointxi Jointyi Jointzi JointAxID JointOvrlp [JointOvrlp=
6868
(-) (m) (m) (m) (-) (switch)
6969
1 0.00000 0.00000 -30.1000 1 0
7070
2 0.00000 0.00000 15.0000 1 0
71-
---------------------- MEMBER CROSS-SECTION PROPERTIES -------------------------
72-
1 NPropSets - Number of member property sets (-)
71+
---------------------- CYLINDRICAL MEMBER CROSS-SECTION PROPERTIES -------------------------
72+
1 NPropSetsCyl - Number of cylindrical member property sets (-)
7373
PropSetID PropD PropThck
7474
(-) (m) (m)
7575
1 10.0 0.055341
76-
---------------------- SIMPLE HYDRODYNAMIC COEFFICIENTS (model 1) --------------
76+
---------------------- RECTANGULAR MEMBER CROSS-SECTION PROPERTIES -------------------------
77+
0 NPropSetsRec - Number of rectangular member property sets (-)
78+
PropSetID PropD PropThck
79+
(-) (m) (m)
80+
---------------------- SIMPLE CYLINDRICAL-MEMBER HYDRODYNAMIC COEFFICIENTS (model 1) --------------
7781
SimplCd SimplCdMG SimplCa SimplCaMG SimplCp SimplCpMG SimplAxCd SimplAxCdMG SimplAxCa SimplAxCaMG SimplAxCp SimplAxCpMG SimplCb SimplCbMG
7882
(-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
7983
1.00 1.00 1.00 1.00 1.00 1.00 1.00 0.00 0.00 1.00 1.00 1.00 1.00 1.00
80-
---------------------- DEPTH-BASED HYDRODYNAMIC COEFFICIENTS (model 2) ---------
81-
0 NCoefDpth - Number of depth-dependent coefficients (-)
84+
-------- SIMPLE RECTANGULAR-MEMBER HYDRODYNAMIC COEFFICIENTS (model 1) ---------
85+
SimplCdA SimplCdAMG SimplCdB SimplCdBMG SimplCaA SimplCaAMG SimplCaB SimplCaBMG SimplCp SimplCpMG SimplAxCd SimplAxCdMG SimplAxCa SimplAxCaMG SimplAxCp SimplAxCpMG SimplCb SimplCbMG
86+
(-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
87+
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
88+
---------------------- DEPTH-BASED CYLINDRICAL-MEMBER HYDRODYNAMIC COEFFICIENTS (model 2) ---------
89+
0 NCoefDpthCyl - Number of depth-dependent cylindrical-member coefficients (-)
8290
Dpth DpthCd DpthCdMG DpthCa DpthCaMG DpthCp DpthCpMG DpthAxCd DpthAxCdMG DpthAxCa DpthAxCaMG DpthAxCp DpthAxCpMG DpthCb DpthCbMG
8391
(m) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
84-
---------------------- MEMBER-BASED HYDRODYNAMIC COEFFICIENTS (model 3) --------
85-
0 NCoefMembers - Number of member-based coefficients (-)
92+
------ DEPTH-BASED RECTANGULAR-MEMBER HYDRODYNAMIC COEFFICIENTS (model 2) -------
93+
0 NCoefDpthRec - Number of depth-dependent rectangular member coefficients (-)
94+
Dpth DpthCdA DpthCdAMG DpthCdB DpthCdBMG DpthCaA DpthCaAMG DpthCaB DpthCaBMG DpthCp DpthCpMG DpthAxCd DpthAxCdMG DpthAxCa DpthAxCaMG DpthAxCp DpthAxCpMG DpthCb DpthCbMG
95+
(m) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
96+
---------------------- MEMBER-BASED CYLINDRICAL-MEMBER HYDRODYNAMIC COEFFICIENTS (model 3) --------
97+
0 NCoefMembersCyl - Number of member-based cylindrical-member coefficients (-)
8698
MemberID MemberCd1 MemberCd2 MemberCdMG1 MemberCdMG2 MemberCa1 MemberCa2 MemberCaMG1 MemberCaMG2 MemberCp1 MemberCp2 MemberCpMG1 MemberCpMG2 MemberAxCd1 MemberAxCd2 MemberAxCdMG1 MemberAxCdMG2 MemberAxCa1 MemberAxCa2 MemberAxCaMG1 MemberAxCaMG2 MemberAxCp1 MemberAxCp2 MemberAxCpMG1 MemberAxCpMG2 MemberCb1 MemberCb2 MemberCbMG1 MemberCbMG2
8799
(-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
88-
-------------------- MEMBERS -------------------------------------------------
100+
------ MEMBER-BASED RECTANGULAR-MEMBER HYDRODYNAMIC COEFFICIENTS (model 3) ------
101+
0 NCoefMembersRec - Number of member-based rectangular member coefficients (-)
102+
MemberID MemberCdA1 MemberCdA2 MemberCdAMG1 MemberCdAMG2 MemberCdB1 MemberCdB2 MemberCdBMG1 MemberCdBMG2 MemberCaA1 MemberCaA2 MemberCaAMG1 MemberCaAMG2 MemberCaB1 MemberCaB2 MemberCaBMG1 MemberCaBMG2 MemberCp1 MemberCp2 MemberCpMG1 MemberCpMG2 MemberAxCd1 MemberAxCd2 MemberAxCdMG1 MemberAxCdMG2 MemberAxCa1 MemberAxCa2 MemberAxCaMG1 MemberAxCaMG2 MemberAxCp1 MemberAxCp2 MemberAxCpMG1 MemberAxCpMG2 MemberCb1 MemberCb2 MemberCbMG1 MemberCbMG2
103+
(-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
104+
--------------------- MEMBERS -------------------------------------------------
89105
1 NMembers - Number of members (-)
90-
MemberID MJointID1 MJointID2 MPropSetID1 MPropSetID2 MDivSize MCoefMod MHstLMod PropPot [MCoefMod=1: use simple coeff table, 2: use depth-based coeff table, 3: use member-based coeff table] [ PropPot/=0 if member is modeled with potential-flow theory]
91-
(-) (-) (-) (-) (-) (m) (switch) (switch) (flag)
92-
1 1 2 1 1 0.5000 1 1 FALSE
106+
MemberID MJointID1 MJointID2 MPropSetID1 MPropSetID2 MSecGeom MSpinOrient MDivSize MCoefMod MHstLMod PropPot [MCoefMod=1: use simple coeff table, 2: use depth-based coeff table, 3: use member-based coeff table] [ PropPot/=0 if member is modeled with potential-flow theory]
107+
(-) (-) (-) (-) (-) (switch) (deg) (m) (switch) (switch) (flag)
108+
1 1 2 1 1 1 0 0.5000 1 1 FALSE
93109
---------------------- FILLED MEMBERS ------------------------------------------
94110
1 NFillGroups - Number of filled member groups (-) [If FillDens = DEFAULT, then FillDens = WtrDens; FillFSLoc is related to MSL2SWL]
95111
FillNumM FillMList FillFSLoc FillDens
@@ -113,5 +129,4 @@ False OutAll - Output all user-specified member and joint loa
113129
"ES11.4e2" OutFmt - Output format for numerical results (quoted string) [not checked for validity!]
114130
"A11" OutSFmt - Output format for header strings (quoted string) [not checked for validity!]
115131
---------------------- OUTPUT CHANNELS -----------------------------------------
116-
"Wave1Elev" - Wave elevation at the WAMIT reference point (0,0)
117132
END of output channels and end of file. (the word "END" must appear in the first 3 columns of this line)

Examples/Test_Cases/IEA-15-240-RWT/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SubDyn.dat

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -46,34 +46,34 @@ True SttcSolve - Solve dynamics about static equilibrium point
4646
1 NReact - Number of Joints with reaction forces; be sure to remove all rigid motion DOFs of the structure (else det([K])=[0])
4747
RJointID RctTDXss RctTDYss RctTDZss RctRDXss RctRDYss RctRDZss SSIfile [Global Coordinate System]
4848
(-) (flag) (flag) (flag) (flag) (flag) (flag) (string)
49-
1 1 1 1 1 1 1
49+
1 1 1 1 1 1 1 ""
5050
------- INTERFACE JOINTS: 1/0 for Locked (to the TP)/Free DOF @each Interface Joint (only Locked-to-TP implemented thus far (=rigid TP)) ---------
5151
1 NInterf - Number of interface joints locked to the Transition Piece (TP): be sure to remove all rigid motion dofs
5252
IJointID ItfTDXss ItfTDYss ItfTDZss ItfRDXss ItfRDYss ItfRDZss [Global Coordinate System]
5353
(-) (flag) (flag) (flag) (flag) (flag) (flag)
5454
19 1 1 1 1 1 1
5555
----------------------------------- MEMBERS --------------------------------------
5656
18 NMembers - Number of frame members
57-
MemberID MJointID1 MJointID2 MPropSetID1 MPropSetID2 MType COSMID ![MType={1:beam circ., 2:cable, 3:rigid, 4:beam arb.}. COMSID={-1:none}]
58-
(-) (-) (-) (-) (-) (-) (-)
59-
1 1 2 1 1 1
60-
2 2 3 1 1 1
61-
3 3 4 1 2 1
62-
4 4 5 2 2 1
63-
5 5 6 2 3 1
64-
6 6 7 3 3 1
65-
7 7 8 3 4 1
66-
8 8 9 4 4 1
67-
9 9 10 4 5 1
68-
10 10 11 5 5 1
69-
11 11 12 5 6 1
70-
12 12 13 6 6 1
71-
13 13 14 6 7 1
72-
14 14 15 7 7 1
73-
15 15 16 7 8 1
74-
16 16 17 8 8 1
75-
17 17 18 8 9 1
76-
18 18 19 9 9 1
57+
MemberID MJointID1 MJointID2 MPropSetID1 MPropSetID2 MType MSpin/COSMID ![MType={1c:beam circ., 1r:beam rect., 2:cable, 3:rigid, 4:beam arb., 5:spring}. COMSID={-1:none}]
58+
(-) (-) (-) (-) (-) (-) (deg/-)
59+
1 1 2 1 1 1c 0
60+
2 2 3 1 1 1c 0
61+
3 3 4 1 2 1c 0
62+
4 4 5 2 2 1c 0
63+
5 5 6 2 3 1c 0
64+
6 6 7 3 3 1c 0
65+
7 7 8 3 4 1c 0
66+
8 8 9 4 4 1c 0
67+
9 9 10 4 5 1c 0
68+
10 10 11 5 5 1c 0
69+
11 11 12 5 6 1c 0
70+
12 12 13 6 6 1c 0
71+
13 13 14 6 7 1c 0
72+
14 14 15 7 7 1c 0
73+
15 15 16 7 8 1c 0
74+
16 16 17 8 8 1c 0
75+
17 17 18 8 9 1c 0
76+
18 18 19 9 9 1c 0
7777
------------------ CIRCULAR BEAM CROSS-SECTION PROPERTIES -----------------------------
7878
9 NPropSets - Number of structurally unique cross-sections
7979
PropSetID YoungE ShearG MatDens XsecD XsecT
@@ -87,6 +87,10 @@ PropSetID YoungE ShearG MatDens XsecD X
8787
7 2.00000e+11 79.3e9 7800.0 10.0 0.043527
8888
8 2.00000e+11 79.3e9 7800.0 10.0 0.042242
8989
9 2.00000e+11 79.3e9 7800.0 10.0 0.041058
90+
----------------- RECTANGULAR BEAM CROSS-SECTION PROPERTIES ---------------------------
91+
0 NPropSets - Number of structurally unique cross-sections (if 0 the following table is ignored)
92+
PropSetID YoungE ShearG MatDens XsecA XsecB XsecT
93+
(-) (N/m2) (N/m2) (kg/m3) (m) (m) (m)
9094
----------------- ARBITRARY BEAM CROSS-SECTION PROPERTIES -----------------------------
9195
0 NXPropSets - Number of structurally unique non-circular x-sections (if 0 the following table is ignored)
9296
PropSetID YoungE ShearG2 MatDens XsecA XsecAsx XsecAsy XsecJxx XsecJyy XsecJ0

Examples/Test_Cases/IEA-15-240-RWT/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_DISCON.IN

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
! Controller parameter input file for the IEA-15-240-RWT-UMaineSemi wind turbine
2-
! - File written using ROSCO version 2.9.4 controller tuning logic on 01/27/25
2+
! - File written using ROSCO version 2.9.8 controller tuning logic on 07/18/25
33

44
!------- SIMULATION CONTROL ------------------------------------------------------------
55
2 ! 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)}
@@ -109,7 +109,7 @@
109109
1.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-]
110110
312456272.00000 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2]
111111
1.225 ! WE_RhoAir - Air density, [kg m^-3]
112-
"../Cp_Ct_Cq.IEA15MW.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) (absolute path or relative to this file)
112+
"../IEA-15-240-RWT/Cp_Ct_Cq.IEA15MW.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) (absolute path or relative to this file)
113113
36 26 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios
114114
60 ! WE_FOPoles_N - Number of first-order system poles used in EKF
115115
3.0000 3.2669 3.5338 3.8007 4.0676 4.3345 4.6014 4.8683 5.1352 5.4021 5.6690 5.9359 6.2028 6.4697 6.7366 7.0034 7.2703 7.5372 7.8041 8.0710 8.3379 8.6048 8.8717 9.1386 9.4055 9.6724 9.9393 10.2062 10.4731 10.7400 11.2153 11.6907 12.1660 12.6413 13.1167 13.5920 14.0673 14.5427 15.0180 15.4933 15.9687 16.4440 16.9193 17.3947 17.8700 18.3453 18.8207 19.2960 19.7713 20.2467 20.7220 21.1973 21.6727 22.1480 22.6233 23.0987 23.5740 24.0493 24.5247 25.0000 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s]

0 commit comments

Comments
 (0)