Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
07ffa51
Don't collect all outputs when running mpi
dzalkind Dec 17, 2025
0e66702
Add chapter 1 inputs and testing
dzalkind Jan 5, 2026
cfafa63
Add chapter 2, stage 2,3,3.5
dzalkind Jan 8, 2026
057b01d
Add stage 4
dzalkind Jan 12, 2026
6c056f6
Skip plot if in test mode
dzalkind Jan 12, 2026
fe260c5
Add chapter 3, no drivers
dzalkind Jan 12, 2026
7d16895
Update workshop functions
dzalkind Jan 12, 2026
2e76ec5
Clean up chapter 1, no drivers
dzalkind Jan 12, 2026
70c9a74
Add TI/class to turbsim file name
dzalkind Jan 15, 2026
b97598b
Clean up chapter 1, add readme, use optimized rosco in tuning yaml
dzalkind Jan 22, 2026
9c73153
Tidy up chapter 1 and 2 more
dzalkind Jan 22, 2026
3c7db16
Add all models/inputs for model creation
dzalkind Jan 22, 2026
453f786
Add stage 1 drivers/inputs
dzalkind Jan 23, 2026
239601b
Test notebooks in CI
dzalkind Jan 23, 2026
b0ea2d7
Test model creation drivers in CI
dzalkind Jan 23, 2026
7db6f31
Point to newly generated rosco yaml
dzalkind Jan 23, 2026
27cea92
Merge remote-tracking branch 'origin/develop' into workshop_scripts
dzalkind Jan 23, 2026
f55df08
Re-number model creation process examples to 11
dzalkind Jan 23, 2026
41d0d90
Fix path to model
dzalkind Jan 28, 2026
5d3761c
Add HubIner_Teeter to openfast_io
dzalkind Jan 30, 2026
f656038
Update OpenFAST inputs from IEA repo
dzalkind Jan 30, 2026
cf5375e
Don't use pre-computed results
dzalkind Feb 2, 2026
c633d4e
Reduce examples run for faster iteration (revert later)
dzalkind Feb 2, 2026
568c452
Fix output directory in chapter3
dzalkind Feb 2, 2026
6ca74ec
Enable tests required for viz testing
dzalkind Feb 2, 2026
83c5751
Fix bug that didn't quite use test mode with MPI
dzalkind Feb 2, 2026
ae4491e
Revert "Reduce examples run for faster iteration (revert later)"
dzalkind Feb 3, 2026
4d6545c
Clean up runFAST_pywrapper changes
dzalkind Feb 4, 2026
dbfc1ec
Clean up merge that repeated code
dzalkind Feb 4, 2026
b88e001
Revert skipping of RUN_EXHAUSTIVE on not linux
dzalkind Feb 4, 2026
7369b93
Use test_run in openfast doe to speed up CI
dzalkind Feb 4, 2026
261bbbd
Set TEST_RUN to false by default
dzalkind Feb 4, 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
8 changes: 8 additions & 0 deletions .github/workflows/CI_WEIS.yml
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,14 @@ jobs:
run: |
cd examples/09_preprocessing/fatigue
treon Fatigue_Setup.ipynb

- name: Test model creation notebooks and drivers
if: contains( matrix.os, 'ubuntu') && contains( github.event_name, 'pull_request')
run: |
cd examples/11_model_creation_process
treon 0_notebooks/chapter1.ipynb
treon 0_notebooks/chapter2.ipynb
treon 0_notebooks/chapter3.ipynb

# Run parallel script calling OpenFAST
- name: Run parallel cases
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
! Controller parameter input file for the IEA-15-240-RWT-Monopile wind turbine
! - File written using ROSCO version 2.10.0 controller tuning logic on 09/16/25
! - File written using ROSCO version 2.10.1 controller tuning logic on 10/24/25

!------- 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
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ True PtfmYDOF - Platform yaw rotation DOF (flag)
0.0 TipMass(3) - Tip-brake mass, blade 3 (kg) [unused for 2 blades]
69131 HubMass - Hub mass (kg)
969952 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)
1836784 GenIner - Generator inertia about HSS (kg m^2)
644857 NacMass - Nacelle mass (kg)
32929058 NacYIner - Nacelle inertia about yaw axis (kg m^2)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,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-defineAfC_phased from Bladed-style DLL}
---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface]
"/usr/share/miniconda3/envs/test/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]
"/home/runner/miniconda3/envs/test/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]
"IEA-15-240-RWT-Monopile_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
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ False Echo - Echo input data to <RootName>.ech (flag)
0 MSL2SWL - Offset between still-water level and mean sea level (m) [positive upward]
---------------------- INPUT FILES ---------------------------------------------
"IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat" EDFile - Name of file containing ElastoDyn input parameters (quoted string)
"../IEA-15-240-RWT/IEA-15-240-RWT_BeamDyn.dat" BDBldFile(1) - Name of file containing BeamDyn input parameters for blade 1 (quoted string)
"../IEA-15-240-RWT/IEA-15-240-RWT_BeamDyn.dat" BDBldFile(2) - Name of file containing BeamDyn input parameters for blade 2 (quoted string)
"../IEA-15-240-RWT/IEA-15-240-RWT_BeamDyn.dat" BDBldFile(3) - Name of file containing BeamDyn input parameters for blade 3 (quoted string)
"" BDBldFile(1) - Name of file containing BeamDyn input parameters for blade 1 (quoted string)
"" BDBldFile(2) - Name of file containing BeamDyn input parameters for blade 2 (quoted string)
"" BDBldFile(3) - Name of file containing BeamDyn input parameters for blade 3 (quoted string)
"../IEA-15-240-RWT/IEA-15-240-RWT_InflowFile.dat" InflowFile - Name of file containing inflow wind input parameters (quoted string)
"IEA-15-240-RWT-UMaineSemi_AeroDyn15.dat" AeroFile - Name of file containing aerodynamic input parameters (quoted string)
"IEA-15-240-RWT-UMaineSemi_ServoDyn.dat" ServoFile - Name of file containing control and electrical-drive input parameters (quoted string)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
! Controller parameter input file for the IEA-15-240-RWT-UMaineSemi wind turbine
! - File written using ROSCO version 2.10.0 controller tuning logic on 09/16/25
! - File written using ROSCO version 2.10.1 controller tuning logic on 10/24/25

!------- 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
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ True PtfmYDOF - Platform yaw rotation DOF (flag)
0 TipMass(3) - Tip-brake mass, blade 3 (kg) [unused for 2 blades]
69131 HubMass - Hub mass (kg)
969952 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)
1836784 GenIner - Generator inertia about HSS (kg m^2)
644857 NacMass - Nacelle mass (kg)
32929058 NacYIner - Nacelle inertia about yaw axis (kg m^2)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,4 +124,22 @@ False OutAll - Output all user-specified member and joint loa
"ES11.4e2" OutFmt - Output format for numerical results (quoted string) [not checked for validity!]
"A11" OutSFmt - Output format for header strings (quoted string) [not checked for validity!]
---------------------- OUTPUT CHANNELS -----------------------------------------
"B1WvsFxi"
"B1WvsFyi"
"B1WvsFzi"
"B1WvsMxi"
"B1WvsMyi"
"B1WvsMzi"
"B1WvsF1xi"
"B1WvsF1yi"
"B1WvsF1zi"
"B1WvsM1xi"
"B1WvsM1yi"
"B1WvsM1zi"
"B1WvsF2xi"
"B1WvsF2yi"
"B1WvsF2zi"
"B1WvsM2xi"
"B1WvsM2yi"
"B1WvsM2zi"
END of output channels and end of file. (the word "END" must appear in the first 3 columns of this line)
Original file line number Diff line number Diff line change
Expand Up @@ -69,16 +69,4 @@ False SeaStSum - Output a summary file [flag]
-10, -15 WaveKinzi - List of zi-coordinates for points where the wave kinematics can be output (meters) [NWaveKin points, separated by commas or white space; usused if NWaveKin = 0]
---------------------- OUTPUT CHANNELS -----------------------------------------
"Wave1Elev" - Wave elevation at the platform reference point ( 0, 0)
"WavesF1xi"
"WavesF1zi"
"WavesM1yi"
"WavesF2xi"
"WavesF2zi"
"WavesM2yi"
"WavesF2xi"
"WavesF2yi"
"WavesF2zi"
"WavesM2xi"
"WavesM2yi"
"WavesM2zi"
END of output channels and end of file. (the word "END" must appear in the first 3 columns of this line)
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,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]
"/usr/share/miniconda3/envs/test/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]
"/home/runner/miniconda3/envs/test/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]
"IEA-15-240-RWT-UMaineSemi_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
90 changes: 45 additions & 45 deletions examples/02_generate_openfast_model_for_dlcs/iea34_driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,48 +16,48 @@
test_run=TEST_RUN
)


import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm

X = wt_opt['sse_tune.aeroperf_tables.pitch_vector']
Y = wt_opt['sse_tune.aeroperf_tables.tsr_vector']
X, Y = np.meshgrid(X, Y)
pitch_schedule = wt_opt['rotorse.rp.powercurve.pitch']
tsr_schedule = wt_opt['rotorse.rp.powercurve.Omega'] / 30. * np.pi * wt_opt['rotorse.Rtip'] / wt_opt['rotorse.rp.powercurve.V']

# Plot the Cp surface
fig, ax = plt.subplots()
Z = wt_opt['sse_tune.aeroperf_tables.Cp']
cs = ax.contourf(X, Y, Z[:,:,0], cmap=cm.inferno, levels = [0, 0.1, 0.2, 0.3, 0.4, 0.44, 0.47, 0.50, 0.53, 0.56])
ax.plot(pitch_schedule, tsr_schedule, 'w--', label = 'Regulation trajectory')
ax.set_xlabel('Pitch angle (deg)', fontweight = 'bold')
ax.set_ylabel('Tip speed ratio (-)', fontweight = 'bold')
cbar = fig.colorbar(cs)
cbar.ax.set_ylabel('Aerodynamic power coefficient (-)', fontweight = 'bold')
plt.legend()

# Plot the Ct surface
fig, ax = plt.subplots()
Z = wt_opt['sse_tune.aeroperf_tables.Ct']
cs = ax.contourf(X, Y, Z[:,:,0], cmap=cm.inferno)
ax.plot(pitch_schedule, tsr_schedule, 'w--', label = 'Regulation trajectory')
ax.set_xlabel('Pitch angle (deg)', fontweight = 'bold')
ax.set_ylabel('Tip speed ratio (-)', fontweight = 'bold')
cbar = fig.colorbar(cs)
cbar.ax.set_ylabel('Aerodynamic thrust coefficient (-)', fontweight = 'bold')
plt.legend()

# Plot the Cq surface
fig, ax = plt.subplots()
Z = wt_opt['sse_tune.aeroperf_tables.Cq']
cs = ax.contourf(X, Y, Z[:,:,0], cmap=cm.inferno)
ax.plot(pitch_schedule, tsr_schedule, 'w--', label = 'Regulation trajectory')
ax.set_xlabel('Pitch angle (deg)', fontweight = 'bold')
ax.set_ylabel('Tip speed ratio (-)', fontweight = 'bold')
cbar = fig.colorbar(cs)
cbar.ax.set_ylabel('Aerodynamic torque coefficient (-)', fontweight = 'bold')
plt.legend()

plt.show()
if not TEST_RUN:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm

X = wt_opt['sse_tune.aeroperf_tables.pitch_vector']
Y = wt_opt['sse_tune.aeroperf_tables.tsr_vector']
X, Y = np.meshgrid(X, Y)
pitch_schedule = wt_opt['rotorse.rp.powercurve.pitch']
tsr_schedule = wt_opt['rotorse.rp.powercurve.Omega'] / 30. * np.pi * wt_opt['rotorse.Rtip'] / wt_opt['rotorse.rp.powercurve.V']

# Plot the Cp surface
fig, ax = plt.subplots()
Z = wt_opt['sse_tune.aeroperf_tables.Cp']
cs = ax.contourf(X, Y, Z[:,:,0], cmap=cm.inferno, levels = [0, 0.1, 0.2, 0.3, 0.4, 0.44, 0.47, 0.50, 0.53, 0.56])
ax.plot(pitch_schedule, tsr_schedule, 'w--', label = 'Regulation trajectory')
ax.set_xlabel('Pitch angle (deg)', fontweight = 'bold')
ax.set_ylabel('Tip speed ratio (-)', fontweight = 'bold')
cbar = fig.colorbar(cs)
cbar.ax.set_ylabel('Aerodynamic power coefficient (-)', fontweight = 'bold')
plt.legend()

# Plot the Ct surface
fig, ax = plt.subplots()
Z = wt_opt['sse_tune.aeroperf_tables.Ct']
cs = ax.contourf(X, Y, Z[:,:,0], cmap=cm.inferno)
ax.plot(pitch_schedule, tsr_schedule, 'w--', label = 'Regulation trajectory')
ax.set_xlabel('Pitch angle (deg)', fontweight = 'bold')
ax.set_ylabel('Tip speed ratio (-)', fontweight = 'bold')
cbar = fig.colorbar(cs)
cbar.ax.set_ylabel('Aerodynamic thrust coefficient (-)', fontweight = 'bold')
plt.legend()

# Plot the Cq surface
fig, ax = plt.subplots()
Z = wt_opt['sse_tune.aeroperf_tables.Cq']
cs = ax.contourf(X, Y, Z[:,:,0], cmap=cm.inferno)
ax.plot(pitch_schedule, tsr_schedule, 'w--', label = 'Regulation trajectory')
ax.set_xlabel('Pitch angle (deg)', fontweight = 'bold')
ax.set_ylabel('Tip speed ratio (-)', fontweight = 'bold')
cbar = fig.colorbar(cs)
cbar.ax.set_ylabel('Aerodynamic torque coefficient (-)', fontweight = 'bold')
plt.legend()

plt.show()
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,8 @@ constraints:
flag: False
max: 1.25 # Same as IEA-15MW with same DLCs
nacelle_acceleration:
flag: False
max: 0.4
flag: True
max: 2.0

merit_figure: structural_mass

Expand Down
3 changes: 2 additions & 1 deletion examples/06_parametric_analysis/openfast_doe_driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import os
from weis import weis_main

TEST_RUN = False # Not yet compatible with MPI
TEST_RUN = False # Set to True for quick testing

## File management
run_dir = os.path.dirname( os.path.realpath(__file__) ) + os.sep
Expand All @@ -24,4 +24,5 @@
wt_opt, modeling_options, opt_options = weis_main(fname_wt_input,
fname_modeling_options,
fname_analysis_options,
test_run=TEST_RUN,
)
Loading
Loading