Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
037b96b
Merge remote-tracking branch 'upstream/develop' into develop
cfrontin Nov 26, 2025
2958c9a
bugfix and some improvements to nsga2
cfrontin Nov 26, 2025
8abf49d
Merge branch 'develop' of github.com:WISDEM/WISDEM into develop
cfrontin Dec 2, 2025
0920494
Merge branch 'WISDEM:develop' into develop
cfrontin Dec 3, 2025
f07b209
remove debut statements
cfrontin Dec 3, 2025
a948e61
return to uncompiled numba and adjust a meant-to-be-subject-to-verbos…
cfrontin Dec 4, 2025
1122069
Merge pull request #684 from cfrontin/develop
gbarter Dec 4, 2025
c0a1f5c
make tower match openfast elastic props
ptrbortolotti Dec 9, 2025
e7f0ee1
update reg test
ptrbortolotti Dec 9, 2025
201525a
Use local inertia of variable ballast for output used in openfast
dzalkind Dec 9, 2025
bfd8413
Set custom mooring line properties
dzalkind Dec 9, 2025
da9c00b
remove outfitting factor, add elastic propos, refix reg test
ptrbortolotti Dec 10, 2025
214f888
no more macos-13 runners on github actions
ptrbortolotti Dec 10, 2025
39d9205
add and link more user defined mass entries for drivetrain components
ptrbortolotti Dec 10, 2025
6cf83d5
fix some tests
ptrbortolotti Dec 10, 2025
c9570f8
Merge pull request #686 from WISDEM/nrel5_tower
ptrbortolotti Dec 10, 2025
8cf3808
try again
ptrbortolotti Dec 10, 2025
7f11d43
again
ptrbortolotti Dec 11, 2025
e1da6cb
fix example 11
ptrbortolotti Dec 11, 2025
ae56338
match gearbox and generator efficiencies from openfast r-tests
ptrbortolotti Dec 11, 2025
40ca9e4
user-set yaw mass back to 0 kg in example
ptrbortolotti Dec 11, 2025
228b9d9
Merge branch 'develop' of https://github.com/WISDEM/WISDEM into user_…
ptrbortolotti Dec 11, 2025
1f49168
realigning with windio schema
gbarter Dec 12, 2025
685f8cd
moving drivetrain component before tower
gbarter Dec 12, 2025
b65ad53
aligning with windio schema for generator
gbarter Dec 12, 2025
86c31b6
fixing inconsistent EOL character
gbarter Dec 12, 2025
60d06b5
add blade structure layering to list of possible dataframe outputs
gbarter Dec 12, 2025
e9870a4
only looking for yaw user mass when drivetrain is being run
gbarter Dec 12, 2025
25814f2
sorting out the yaw logic
gbarter Dec 12, 2025
8317d09
reinstate yaw_system_mass_user
ptrbortolotti Dec 16, 2025
65ab283
forgot the empty default for yaw
ptrbortolotti Dec 16, 2025
209ebe8
Merge pull request #687 from WISDEM/user_defined_dt_masses
ptrbortolotti Dec 18, 2025
446302a
Merge pull request #688 from dzalkind/floating_bug_fixes
ptrbortolotti Dec 18, 2025
b99416b
Fix numpy casting
dzalkind Dec 29, 2025
5e23423
Merge branch 'fix_cast' of github.com:dzalkind/WISDEM into develop
ptrbortolotti Dec 29, 2025
1e0575a
prep for 4p0p5
ptrbortolotti Dec 29, 2025
e896eaf
fix some tests, a couple more remaining [skip ci]
ptrbortolotti Dec 30, 2025
662ba1c
tests should be passing now
ptrbortolotti Dec 30, 2025
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
10 changes: 1 addition & 9 deletions .github/workflows/Publish_WISDEM.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-13, macos-14, macos-15]
os: [ubuntu-latest, windows-latest, macos-14, macos-15]

steps:
- name: Set up QEMU
Expand Down Expand Up @@ -52,14 +52,6 @@ jobs:
CC: ${{ steps.install_cc.outputs.cc }}
CXX: ${{ steps.install_cc.outputs.cxx }}

- name: Build wheels mac-13
if: contains( matrix.os, 'macos-13')
uses: pypa/[email protected]
env:
CC: ${{ steps.install_cc.outputs.cc }}
CXX: ${{ steps.install_cc.outputs.cxx }}
CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET="13.0"

- name: Build wheels mac-14
if: contains( matrix.os, 'macos-14')
uses: pypa/[email protected]
Expand Down
2 changes: 1 addition & 1 deletion examples/01_nrel_csm/parametric.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@

# Compute Turbine capital cost using the NREL CSM (2015) and store the result
prob.run_model()
tcc[k] = float(prob["turbine_cost_kW"])
tcc[k] = prob["turbine_cost_kW"][0]

# Compute AEP using original CSM function and store result
aep_instance.compute(
Expand Down
112 changes: 56 additions & 56 deletions examples/02_reference_turbines/IEA-15-240-RWT.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -638,61 +638,6 @@ components:
hub_material: cast_iron
spinner_material: glass_uni
cd: 0.5
tower:
outer_shape:
outer_diameter:
grid: [0.0, 0.10047454902385111, 0.20094909804770222, 0.30142364707155334, 0.40189819609540445, 0.5023727451192556, 0.6028472941431067, 0.7033218431669578, 0.8037963921908089, 0.90427094121466, 1.0]
values: [10.0, 10.0, 9.926, 9.443, 8.833, 8.151, 7.39, 6.909, 6.748, 6.572, 6.5]
cd:
grid: [0.0, 1.0]
values: [0.5, 0.5]
structure:
outfitting_factor: 1.07
layers:
- name: tower_wall
material: steel
thickness:
grid: [0.0, 0.10047454902385111, 0.20094909804770222, 0.30142364707155334, 0.40189819609540445, 0.5023727451192556, 0.6028472941431067, 0.7033218431669578, 0.8037963921908089, 0.90427094121466, 1.0]
values: [0.039496, 0.039496, 0.033416, 0.034142, 0.030242, 0.031174, 0.027028, 0.027398, 0.02062, 0.021032, 0.026964]
reference_axis:
x:
grid: [0.0, 0.10047454902385111, 0.20094909804770222, 0.30142364707155334, 0.40189819609540445, 0.5023727451192556, 0.6028472941431067, 0.7033218431669578, 0.8037963921908089, 0.90427094121466, 1.0]
values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
y:
grid: [0.0, 0.10047454902385111, 0.20094909804770222, 0.30142364707155334, 0.40189819609540445, 0.5023727451192556, 0.6028472941431067, 0.7033218431669578, 0.8037963921908089, 0.90427094121466, 1.0]
values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
z:
grid: [0.0, 0.10047454902385111, 0.20094909804770222, 0.30142364707155334, 0.40189819609540445, 0.5023727451192556, 0.6028472941431067, 0.7033218431669578, 0.8037963921908089, 0.90427094121466, 1.0]
values: [15.0, 28.0, 41.0, 54.0, 67.0, 80.0, 93.0, 106.0, 119.0, 132.0, 144.386]
monopile:
transition_piece_mass: 100000.0
transition_piece_cost: 0.0
gravity_foundation_mass: 0.0
outer_shape:
outer_diameter:
grid: [0.0, 0.5, 0.6111111111111112, 0.7222222222222222, 0.8333333333333334, 0.9444444444444444, 1.0]
values: [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0]
cd:
grid: [0.0, 1.0]
values: [0.5, 0.5]
structure:
outfitting_factor: 1.07
layers:
- name: monopile_wall
material: steel
thickness:
grid: [0.0, 0.5, 0.6111111111111112, 0.7222222222222222, 0.8333333333333334, 0.9444444444444444, 1.0]
values: [0.055341, 0.055341, 0.055341, 0.047677, 0.047357, 0.039697, 0.042419]
reference_axis:
x:
grid: [0.0, 0.5, 0.6111111111111112, 0.7222222222222222, 0.8333333333333334, 0.9444444444444444, 1.0]
values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
y:
grid: [0.0, 0.5, 0.6111111111111112, 0.7222222222222222, 0.8333333333333334, 0.9444444444444444, 1.0]
values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
z:
grid: [0.0, 0.5, 0.6111111111111112, 0.7222222222222222, 0.8333333333333334, 0.9444444444444444, 1.0]
values: [-75.0, -30.0, -20.0, -10.0, 0.0, 10.0, 15.0]
drivetrain:
outer_shape:
uptilt: 6.0
Expand Down Expand Up @@ -793,6 +738,61 @@ components:
C_PM: 50.0
length: 2.15
type: PMSG_Outer
tower:
outer_shape:
outer_diameter:
grid: [0.0, 0.10047454902385111, 0.20094909804770222, 0.30142364707155334, 0.40189819609540445, 0.5023727451192556, 0.6028472941431067, 0.7033218431669578, 0.8037963921908089, 0.90427094121466, 1.0]
values: [10.0, 10.0, 9.926, 9.443, 8.833, 8.151, 7.39, 6.909, 6.748, 6.572, 6.5]
cd:
grid: [0.0, 1.0]
values: [0.5, 0.5]
structure:
outfitting_factor: 1.07
layers:
- name: tower_wall
material: steel
thickness:
grid: [0.0, 0.10047454902385111, 0.20094909804770222, 0.30142364707155334, 0.40189819609540445, 0.5023727451192556, 0.6028472941431067, 0.7033218431669578, 0.8037963921908089, 0.90427094121466, 1.0]
values: [0.039496, 0.039496, 0.033416, 0.034142, 0.030242, 0.031174, 0.027028, 0.027398, 0.02062, 0.021032, 0.026964]
reference_axis:
x:
grid: [0.0, 0.10047454902385111, 0.20094909804770222, 0.30142364707155334, 0.40189819609540445, 0.5023727451192556, 0.6028472941431067, 0.7033218431669578, 0.8037963921908089, 0.90427094121466, 1.0]
values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
y:
grid: [0.0, 0.10047454902385111, 0.20094909804770222, 0.30142364707155334, 0.40189819609540445, 0.5023727451192556, 0.6028472941431067, 0.7033218431669578, 0.8037963921908089, 0.90427094121466, 1.0]
values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
z:
grid: [0.0, 0.10047454902385111, 0.20094909804770222, 0.30142364707155334, 0.40189819609540445, 0.5023727451192556, 0.6028472941431067, 0.7033218431669578, 0.8037963921908089, 0.90427094121466, 1.0]
values: [15.0, 28.0, 41.0, 54.0, 67.0, 80.0, 93.0, 106.0, 119.0, 132.0, 144.386]
monopile:
transition_piece_mass: 100000.0
transition_piece_cost: 0.0
gravity_foundation_mass: 0.0
outer_shape:
outer_diameter:
grid: [0.0, 0.5, 0.6111111111111112, 0.7222222222222222, 0.8333333333333334, 0.9444444444444444, 1.0]
values: [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0]
cd:
grid: [0.0, 1.0]
values: [0.5, 0.5]
structure:
outfitting_factor: 1.07
layers:
- name: monopile_wall
material: steel
thickness:
grid: [0.0, 0.5, 0.6111111111111112, 0.7222222222222222, 0.8333333333333334, 0.9444444444444444, 1.0]
values: [0.055341, 0.055341, 0.055341, 0.047677, 0.047357, 0.039697, 0.042419]
reference_axis:
x:
grid: [0.0, 0.5, 0.6111111111111112, 0.7222222222222222, 0.8333333333333334, 0.9444444444444444, 1.0]
values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
y:
grid: [0.0, 0.5, 0.6111111111111112, 0.7222222222222222, 0.8333333333333334, 0.9444444444444444, 1.0]
values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
z:
grid: [0.0, 0.5, 0.6111111111111112, 0.7222222222222222, 0.8333333333333334, 0.9444444444444444, 1.0]
values: [-75.0, -30.0, -20.0, -10.0, 0.0, 10.0, 15.0]
airfoils:
- name: circular
coordinates:
Expand Down Expand Up @@ -1174,4 +1174,4 @@ control:
tsr: 9.0
max_torque_rate: 1500000.0
VS_minspd: 4.999999999999999
VS_maxspd: 7.559999999999999
VS_maxspd: 7.559999999999999
38 changes: 26 additions & 12 deletions examples/02_reference_turbines/nrel5mw.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -623,19 +623,30 @@ components:
tower:
outer_shape:
outer_diameter:
grid: &id002 [0.0, 0.167, 0.333, 0.5, 0.6667, 0.833, 1.0]
values: [6.0, 5.645, 5.29, 4.935, 4.58, 4.225, 3.87]
grid: [0, 0.097329909, 0.19466895, 0.291997717, 0.389326484, 0.486678082, 0.583995434, 0.681335616, 0.778664384, 0.876004566, 0.973378995, 1]
values: [6.0000, 5.7870, 5.5740, 5.3610, 5.1480, 4.9350, 4.7220, 4.5090, 4.2960, 4.0830, 3.8700, 3.8700]
cd:
grid: [0.0, 1.0]
values: [1.0, 1.0]
structure:
outfitting_factor: 1.07
outfitting_factor: 1.0
layers:
- name: tower_wall
material: steel
thickness:
grid: *id002
values: [0.027, 0.0254, 0.0238, 0.0222, 0.0206, 0.019, 0.019]
grid: [0.0, 0.167, 0.333, 0.5, 0.6667, 0.833, 1.0]
values: [0.0351, 0.033363, 0.031668, 0.0299, 0.028166, 0.026437, 0.0247]
elastic_properties:
stiffness_matrix:
grid: [0.0, 0.09732990899999999, 0.16700000000000004, 0.19466894999999998, 0.291997717, 0.333, 0.38932648400000003, 0.48667808199999996, 0.5, 0.583995434, 0.6667000000000001, 0.6813356160000001, 0.778664384, 0.8330000000000001, 0.876004566, 0.9733789949999999, 1.0]
K44: [573744514387.3353, 541299606339.42633, 491287223851.3091, 452563900448.7119, 409668534810.7792, 373584209889.72626, 338161698799.3511, 303086196156.88306, 277598623593.14874, 248043973738.8792, 220322157466.19775, 200317653180.92395, 177188068031.1449, 156909730175.72205, 139517960190.0795, 123039794248.80939, 116457080486.80852]
K55: [573744514387.3353, 541299606339.42633, 491287223851.3091, 452563900448.7119, 409668534810.7792, 373584209889.72626, 338161698799.3511, 303086196156.88306, 277598623593.14874, 248043973738.8792, 220322157466.19775, 200317653180.92395, 177188068031.1449, 156909730175.72205, 139517960190.0795, 123039794248.80939, 116457080486.80852]
K66: [441510064404.7304, 416542935164.0538, 378057216068.4359, 348258696726.2468, 315249691549.6282, 287481944372.2846, 260223478695.1197, 233232044280.72525, 213618750345.96588, 190875743600.96613, 169543145935.89313, 154149203590.65387, 136350437113.49057, 120745773316.17468, 107362392222.46118, 94682051193.3695, 89616496222.2298]
inertia_matrix:
grid: [0.0, 0.09732990899999999, 0.16700000000000004, 0.19466894999999998, 0.291997717, 0.333, 0.38932648400000003, 0.48667808199999996, 0.5, 0.583995434, 0.6667000000000001, 0.6813356160000001, 0.778664384, 0.8330000000000001, 0.876004566, 0.9733789949999999, 1.0]
mass: [5412.023211643849, 5262.198638949246, 5027.292008374488, 4835.64524252267, 4613.743836794133, 4418.204519306374, 4213.4627119680235, 4001.3942831580916, 3839.005717808319, 3639.449346117019, 3443.9468027855028, 3293.4124748187305, 3108.707478917324, 2938.1875141743553, 2780.646801666307, 2619.5247033357537, 2550.3995164924345]
structural_damping:
mu: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
reference_axis:
x:
grid: [0.0, 1.0]
Expand All @@ -645,15 +656,15 @@ components:
values: [0.0, 0.0]
z:
grid: [0.0, 0.167, 0.333, 0.5, 0.6667, 0.833, 1.0]
values: [0.0, 14.6, 29.2, 43.8, 58.4, 73.0, 87.6974416]
values: [0.0, 14.6292, 29.1708, 43.8, 58.40292, 72.9708, 87.6]
drivetrain:
outer_shape:
uptilt: 4.999629720311564
distance_tt_hub: 2.3
overhang: 5.0
gearbox:
gear_ratio: 96
efficiency: 0.975
gear_ratio: 97.0
efficiency: 1.0
damping_ratio: 0.01
gear_configuration: eep
planet_numbers: [3, 3, 0]
Expand All @@ -677,6 +688,9 @@ components:
mb2Type: SRB
uptower: true
generator:
generator_rpm_efficiency_user:
grid: [0., 1.]
values: [0.944, 0.944]
rated_rpm: 1200.0
rho_Fe: 7700.0
rho_Fes: 7850.0
Expand Down Expand Up @@ -939,14 +953,14 @@ materials:
roll_mass: 181.4368
manufacturing_id: 3
- name: steel
description: Steel of the tower and monopile ASTM A572 Grade 50
description: Steel of the tower and monopile ASTM A572 Grade 50, density artificially increased from 7800 to 8500 kg/m3
source: http://www.matweb.com/search/DataSheet.aspx?MatGUID=9ced5dc901c54bd1aef19403d0385d7f
orth: 0
rho: 7800
rho: 8500
alpha: 0.0
E: 200000000000.0
E: 210000000000.0
nu: 0.3
G: 79300000000.0
G: 80800000000.0
GIc: 0
GIIc: 0
alp0: 0.0
Expand Down
6 changes: 3 additions & 3 deletions examples/04_openmdao/sellar.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,8 @@ def setup(self):
prob.run_driver()

print("minimum found at")
print(float(prob["x"]))
print(prob["z"])
print('x: ', prob["x"])
print('z: ', prob["z"])
print("minimum objective")
print(float(prob["obj"]))
print(prob["obj"])
# --------
Original file line number Diff line number Diff line change
Expand Up @@ -664,10 +664,10 @@ components:
hub:
diameter: 7.94
cone_angle: 4.0
elastic_properties_mb:
system_mass: 69360.0
system_inertia: [973520.0, 619970.0, 619970.0]
system_center_mass: [0, 0, 0]
elastic_properties:
mass: 69360.0
inertia: [973520.0, 619970.0, 619970.0, 0.0, 0.0, 0.0]
location: [0, 0, 0]
drivetrain:
outer_shape:
uptilt: 6.0
Expand All @@ -679,35 +679,24 @@ components:
gearbox:
gear_ratio: 1.0
efficiency: 1.0
elastic_properties_mb:
system_mass: 675175.0
yaw_mass: 0
system_inertia: [9912933.0, 10862815.0, 10360761.0]
system_inertia_tt: [9912933.0, 10862815.0, 10360761.0]
system_center_mass: [-4.528, -0.14, 4.098]
elastic_properties:
mass: 675175.0
inertia: [9912933.0, 10862815.0, 10360761.0, 0.0, 0.0, 0.0]
inertia_tt: [9912933.0, 10862815.0, 10360761.0]
location: [-4.528, -0.14, 4.098]
spring_constant: 0.
damping_coefficient: 0.
generator:
elastic_properties_mb:
system_mass: 69360.0
rotor_inertia: [9912933.0, 10862815.0, 10360761.0]
nacelle:
drivetrain:
uptilt: 0.10471975511966002
distance_tt_hub: 5.614100000000008
overhang: 12.032
gear_ratio: 1
gearbox_efficiency: 1.0
elastic_properties_mb:
system_mass: 675175.0
yaw_mass: 0
system_inertia: [9912933.0, 10862815.0, 10360761.0]
system_inertia_tt: [9912933.0, 10862815.0, 10360761.0]
system_center_mass: [-4.528, -0.14, 4.098]
generator:
elastic_properties_mb:
system_mass: 69360.0
elastic_properties:
mass: 69360.0
rotor_inertia: [9912933.0, 10862815.0, 10360761.0]
inertia: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
location: [0.0, 0.0, 0.0]
yaw:
elastic_properties:
mass: 0.0
inertia: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
location: [0.0, 0.0, 0.0]
tower:
outer_shape:
outer_diameter:
Expand Down Expand Up @@ -1394,4 +1383,4 @@ control:
tsr: 9.0
max_torque_rate: 1500000.0
VS_minspd: 4.999999999999999
VS_maxspd: 7.559999999999999
VS_maxspd: 7.559999999999999
2 changes: 1 addition & 1 deletion examples/11_user_custom/nrel5mw-spar_oc3_user_mass.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -644,7 +644,7 @@ components:
mb1_mass_user: 1500.0
mb2_mass_user: 1350.0
generator:
mass_user: 19500.0
mass: 19500.0
rho_Fe: 7700.0
rho_Fes: 7850.0
rho_Copper: 8900.0
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "wisdem"
version = "4.0.4"
version = "4.0.5"
description = "Wind-Plant Integrated System Design & Engineering Model"
readme = "README.md"
requires-python = ">=3.9"
Expand Down
8 changes: 4 additions & 4 deletions wisdem/commonse/cylinder_member.py
Original file line number Diff line number Diff line change
Expand Up @@ -1975,8 +1975,8 @@ def add_rectangular_ballast_sections(self, inputs, outputs):
rho_ballast = inputs["ballast_density"]
V_ballast = inputs["ballast_volume"]
km_ballast = inputs["ballast_unit_cost"]
s_ghost1 = float(inputs["s_ghost1"])
s_ghost2 = float(inputs["s_ghost2"])
s_ghost1 = inputs["s_ghost1"][0]
s_ghost2 = inputs["s_ghost2"][0]
n_ballast = len(V_ballast)
if n_ballast == 0:
return
Expand Down Expand Up @@ -2448,8 +2448,8 @@ def setup(self):
def compute(self, inputs, outputs):
# Unpack variables
s_full = inputs["s_full"]
s_ghost1 = float(inputs["s_ghost1"])
s_ghost2 = float(inputs["s_ghost2"])
s_ghost1 = inputs["s_ghost1"][0]
s_ghost2 = inputs["s_ghost2"][0]
z_full = inputs["z_full"]
a = inputs["side_length_a_full"]
b = inputs["side_length_b_full"]
Expand Down
Loading
Loading