Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
bd623fd
drop support for python 3.9 and 3.10 due to wombat limits
ptrbortolotti Mar 6, 2026
c4127a7
Merge pull request #701 from NLRWindSystems/python3p11
Mar 6, 2026
396ed82
Remove potentially duplicate promotion
dzalkind Mar 18, 2026
7815a62
Enable relative joints for cylindrical coordinates
dzalkind Mar 27, 2026
d3bca7c
Merge remote-tracking branch 'origin/master' into rel_joints
dzalkind Mar 30, 2026
5d60a3c
Add test for relative joints
dzalkind Mar 30, 2026
4b323c8
Tidy comments in test
dzalkind Mar 30, 2026
c8efd9d
Merge pull request #702 from dzalkind/omdao_343
gbarter Mar 30, 2026
3ee40d3
fix tests with more stringest omdao checking
Mar 30, 2026
f6a1056
pinning moorpy for now
Mar 31, 2026
347c53a
Merge pull request #705 from NLRWindSystems/omdao343
ptrbortolotti Mar 31, 2026
94678bd
Merge remote-tracking branch 'origin/develop' into rel_joints
dzalkind Mar 31, 2026
20a9dd7
catch up to previously corrected bug that accounts for cone in blade …
Mar 31, 2026
492baa5
delete unit entries for unit-less quantities
Mar 31, 2026
1d43135
remove older windio syntax
Mar 31, 2026
a36c2ff
Merge branch 'develop' into bug_fixes
Apr 1, 2026
4f71d53
Merge pull request #704 from dzalkind/rel_joints
gbarter Apr 1, 2026
f6184eb
be sure to output the right cm
Apr 1, 2026
0b7a03b
Merge pull request #706 from NLRWindSystems/bug_fixes
gbarter Apr 1, 2026
6c84d93
allow for custom array layout in layout generation step
RHammond2 Apr 2, 2026
793f1c8
bump patch version
RHammond2 Apr 2, 2026
3badb26
add missing __version__ attribute
RHammond2 Apr 2, 2026
79b4ba4
update orbit min version for patch
RHammond2 Apr 2, 2026
ccc9974
update start and end nd arc in output yaml as blade shape gets optimized
ptrbortolotti Apr 3, 2026
d4912e0
correct RNA MoI moving from TT to CoM
Apr 5, 2026
535f84f
fix typo in iea10
ptrbortolotti Apr 6, 2026
b5de2db
best to increase max_pitch_perf_surfaces to 40 deg to avoid errors in…
ptrbortolotti Apr 8, 2026
df7ce12
hopefully one last sign correction
Apr 8, 2026
4132b0b
move pypi packages to conda in environment yamls
Apr 8, 2026
4dfb953
fix package name
Apr 8, 2026
9b59cb8
issue #709
ptrbortolotti Apr 8, 2026
45df5ad
changing up the windows compilers?
Apr 8, 2026
13cae4e
fix a couple of missing deg2rad, rad2deg
ptrbortolotti Apr 9, 2026
e2026de
add py314, drop py311 since numpy dropping support
Apr 9, 2026
6f1fcbb
fix example 09
ptrbortolotti Apr 9, 2026
fdf4e93
Merge pull request #711 from NLRWindSystems/conda-pip
gbarter Apr 9, 2026
7efe734
forgot one file...
ptrbortolotti Apr 9, 2026
25c8523
Merge pull request #712 from NLRWindSystems/update_yaml
gbarter Apr 10, 2026
dca2913
updating windows packages for install per conda forge updates
Apr 10, 2026
e0de90e
Merge pull request #707 from RHammond2/patch/orbit-layout-generation
gbarter Apr 10, 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: 4 additions & 4 deletions .github/workflows/CI_WISDEM.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
fail-fast: False
matrix:
os: [ubuntu-latest, macos-14, windows-latest]
python-version: ["3.11", "3.12", "3.13"]
python-version: ["3.12", "3.13", "3.14"]

steps:
- name: checkout repository
Expand Down Expand Up @@ -46,7 +46,7 @@ jobs:
- name: Add dependencies windows specific
if: contains( matrix.os, 'windows')
run: |
conda install -y m2w64-toolchain libpython
conda install -y gfortran gcc

- name: Debug config
run: |
Expand Down Expand Up @@ -75,7 +75,7 @@ jobs:

# Run coveralls
- name: Run coveralls
if: contains( matrix.os, 'ubuntu') && contains( matrix.python-version, '3.12')
if: contains( matrix.os, 'ubuntu') && contains( matrix.python-version, '3.13')
#uses: coverallsapp/github-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -94,7 +94,7 @@ jobs:
fail-fast: False
matrix:
os: [ubuntu-latest, windows-latest, macos-14] #mac-13 intel, mac-latest is arm
python-version: ["3.12"]
python-version: ["3.13"]

steps:
- name: Setup GNU Fortran
Expand Down
12 changes: 6 additions & 6 deletions environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ channels:

dependencies:
# NOTE: uncomment the OS-dependent lines below as needed
# - m2w64-toolchain # [win]
# - libpython # [win]
# - gfortran # [win]
# - gcc # [win]
# - gfortran # [osx] # only if not installed via homebrew or macports
- petsc4py # [unix]
- mpi4py # [unix] # only needed if local system has mpi built and is used
Expand All @@ -14,11 +14,12 @@ dependencies:
- jsonmerge
- jsonschema
- matplotlib
- moorpy>=1.2
- moorpy==1.2.1
- nlopt
- numpy
- openmdao
- openpyxl
- orbit-nrel>=1.2.5
- pandas
- pydoe3
- pyoptsparse
Expand All @@ -27,8 +28,7 @@ dependencies:
- sortedcontainers
- statsmodels>=0.14.5
- pip
- windIO>=2.1.1
- wombat>=0.13.1
- pip:
- orbit-nrel>=1.2.5
- wombat>=0.13.1
- dearpygui
- windIO
22 changes: 11 additions & 11 deletions environment_dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,23 @@ channels:

dependencies:
# NOTE: uncomment the OS-dependent lines below as needed
# - m2w64-toolchain # [win]
# - libpython # [win]
# - gfortran # [win]
# - gcc # [win]
# - gfortran # [osx] # only if not installed via homebrew or macports
# - petsc4py # [unix]
# - mpi4py # [unix] # only needed if local system has mpi built and is used
- cython
- docstring_parser
- jsonmerge
- jsonschema
- matplotlib
- moorpy>=1.2
- moorpy==1.2.1
- ninja
- nlopt
- numpy
- openmdao
- openpyxl
- orbit-nrel>=1.2.5
- pandas
- pydoe3
- pyoptsparse
Expand All @@ -35,13 +37,11 @@ dependencies:
- pytest
- pytest-cov
- pip
- sphinxcontrib-bibtex
- sphinx-copybutton
- sphinx-jsonschema
- sphinx_rtd_theme>=1.3
- windIO>=2.1.1
- wombat>=0.13.1
- pip:
- orbit-nrel>=1.2.5
- wombat>=0.13.1
- dearpygui
- windIO
- sphinxcontrib-bibtex
- sphinx_rtd_theme>=1.3
- sphinx-jsonschema
- sphinx-copybutton
- docstring-parser
2 changes: 1 addition & 1 deletion examples/02_reference_turbines/IEA-10-198-RWT.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,7 @@ components:
start_nd_arc:
anchor:
name: DP02_DP00_triax
handle: DP02_DP00_uniax
handle: start_nd_arc
end_nd_arc:
anchor:
name: TE
Expand Down
6 changes: 3 additions & 3 deletions examples/03_blade/analysis_options_aero.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ design_variables:
# corresponding to 'max_efficiency' or 'stall_margin'
n_opt: 8 # Number of control points along blade span. During inverse design,
# twist is smoothened with a spline with these
# max_decrease: 0.08722222222222221 # Maximum decrease for the twist
# max_decrease: 5 # Maximum decrease for the twist
# in [rad] at the n_opt locations. Only used if flag is set to True
# max_increase: 0.08722222222222221 # Maximum increase for the twist
# max_increase: 5 # Maximum increase for the twist
# in [rad] at the n_opt locations. Only used if flag is set to True
# index_start: 2 # Lock the first two DVs from blade root
# index_end: 8 # All DVs close to blade tip are active
Expand All @@ -40,7 +40,7 @@ constraints:
blade:
stall:
flag: False # Constraint on minimum stall margin
margin: 0.1 # Value of minimum stall margin in [rad]
margin: 5.0 # Value of minimum stall margin in [deg]
chord:
flag: True # Constraint max chord to its default value (4.75 m)
max: 4.75 # Max chord value
Expand Down
6 changes: 3 additions & 3 deletions examples/03_blade/analysis_options_aerostruct.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ design_variables:
flag: True # Flag to optimize the twist
inverse: False # Flag to determine twist from the user-defined desired margin to stall (defined in constraints)
n_opt: 4 # Number of control points along blade span
max_decrease: 0.08722222222222221 # Maximum decrease for the twist in [rad] at the n_opt locations
max_increase: 0.08722222222222221 # Maximum increase for the twist in [rad] at the n_opt locations
max_decrease: 5.0 # Maximum decrease for the twist in [deg] at the n_opt locations
max_increase: 5.0 # Maximum increase for the twist in [deg] at the n_opt locations
index_start: 2 # Lock the first two DVs from blade root
index_end: 4 # All DVs close to blade tip are active
chord:
Expand Down Expand Up @@ -67,7 +67,7 @@ constraints:
margin: 1.4175
stall:
flag: True # Constraint on minimum stall margin
margin: 0.087 # Value of minimum stall margin in [rad]
margin: 5.0 # Value of minimum stall margin in [deg]
moment_coefficient:
flag: True # Constraint on minimum stall margin
max: 0.16
Expand Down
6 changes: 3 additions & 3 deletions examples/03_blade/analysis_options_user.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ design_variables:
flag: True # Flag to optimize the twist
inverse: False # Flag to determine twist from the user-defined desired margin to stall (defined in constraints)
n_opt: 4 # Number of control points along blade span
max_decrease: 0.08722222222222221 # Maximum decrease for the twist in [rad] at the n_opt locations
max_increase: 0.08722222222222221 # Maximum increase for the twist in [rad] at the n_opt locations
max_decrease: 5.0 # Maximum decrease for the twist in [deg] at the n_opt locations
max_increase: 5.0 # Maximum increase for the twist in [deg] at the n_opt locations
index_start: 2 # Lock the first two DVs from blade root
index_end: 4 # All DVs close to blade tip are active
chord:
Expand Down Expand Up @@ -42,7 +42,7 @@ constraints:
blade:
stall:
flag: True # Constraint on minimum stall margin
margin: 0.087 # Value of minimum stall margin in [rad]
margin: 5.0 # Value of minimum stall margin in [deg]
chord:
flag: False # Constraint max chord to its default value (4.75 m)
root_circle_diameter:
Expand Down
5 changes: 2 additions & 3 deletions examples/09_floating/IEA-22-280-RWT_Floater.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1118,10 +1118,9 @@ components:
generator_rpm_efficiency_user:
grid: [1.98, 2.8, 3.47, 3.98, 4.31, 4.49, 5.1, 5.66, 6.39, 7.16]
values: [0.7878, 0.9071, 0.941, 0.9526, 0.9566, 0.9582, 0.9614, 0.9622, 0.9608, 0.9541]
elastic_properties_mb:
system_mass: 508040.0
length: 3.047
radius: 4.89
mass: 508040.0
airfoils:
- name: FFA-W3-211
coordinates:
Expand Down Expand Up @@ -1838,4 +1837,4 @@ control:
pitch_actuator_damping: 0.707
yaw_rate: 0.49847328176381617
max_allowable_blade_tip_speed: 95.0
peak_thrust_shaving: 1.0
peak_thrust_shaving: 1.0
4 changes: 2 additions & 2 deletions examples/09_floating/analysis_options_mooropt.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ merit_figure: mooring_mass
constraints:
floating:
operational_heel:
upper_bound: 0.08726646259971647 # 5 deg
upper_bound: 5.0
survival_heel:
upper_bound: 0.17453292519943295 # 10 deg
upper_bound: 10.0
max_surge:
flag: false
upper_bound: 0.1
Expand Down
4 changes: 2 additions & 2 deletions examples/09_floating/analysis_options_semiopt.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ merit_figure: LCOE
constraints:
floating:
operational_heel:
upper_bound: 0.08726646259971647 # 5 deg
upper_bound: 5.0
survival_heel:
upper_bound: 0.17453292519943295 # 10 deg
upper_bound: 10.0
max_surge:
flag: false
upper_bound: 0.1
Expand Down
4 changes: 2 additions & 2 deletions examples/09_floating/analysis_options_sparopt.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ merit_figure: platform_mass
constraints:
floating:
operational_heel:
upper_bound: 0.08726646259971647 # 5 deg
upper_bound: 5.0
survival_heel:
upper_bound: 0.17453292519943295 # 10 deg
upper_bound: 10.0
max_surge:
flag: false
upper_bound: 0.1
Expand Down
4 changes: 2 additions & 2 deletions examples/13_design_of_experiments/analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ design_variables:
flag: False # Flag to optimize the twist
inverse: False # Flag to determine twist from the user-defined desired margin to stall (defined in constraints)
n_opt: 8 # Number of control points along blade span
max_decrease: 0.08722222222222221 # Maximum decrease for the twist in [rad] at the n_opt locations
max_increase: 0.08722222222222221 # Maximum increase for the twist in [rad] at the n_opt locations
max_decrease: 5.0 # Maximum decrease for the twist in [deg] at the n_opt locations
max_increase: 5.0 # Maximum increase for the twist in [deg] at the n_opt locations
chord:
flag: True # Flag to optimize the chord
n_opt: 8 # Number of control points along blade span
Expand Down
6 changes: 3 additions & 3 deletions examples/16_inverse_design/analysis_options_rotor.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ design_variables:
twist:
flag: True # Flag to optimize the twist
n_opt: 4 # Number of control points along blade span
max_decrease: 0.08722222222222221 # Maximum decrease for the twist in [rad] at the n_opt locations
max_increase: 0.08722222222222221 # Maximum increase for the twist in [rad] at the n_opt locations
max_decrease: 5.0 # Maximum decrease for the twist in [deg] at the n_opt locations
max_increase: 5.0 # Maximum increase for the twist in [deg] at the n_opt locations
index_start: 2 # Lock the first two DVs from blade root
index_end: 4 # All DVs close to blade tip are active
chord:
Expand Down Expand Up @@ -95,7 +95,7 @@ constraints:
margin: 1.4175
stall:
flag: True # Constraint on minimum stall margin
margin: 0.087 # Value of minimum stall margin in [rad]
margin: 5.0 # Value of minimum stall margin in [deg]
moment_coefficient:
flag: True # Constraint on minimum stall margin
max: 0.16
Expand Down
6 changes: 3 additions & 3 deletions examples/18_rotor_tower_monopile/analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ design_variables:
flag: True # Flag to optimize the twist
inverse: False # Flag to determine twist from the user-defined desired margin to stall (defined in constraints)
n_opt: 6 # Number of control points along blade span
max_decrease: 0.08722222222222221 # Maximum decrease for the twist in [rad] at the n_opt locations
max_increase: 0.08722222222222221 # Maximum increase for the twist in [rad] at the n_opt locations
max_decrease: 5.0 # Maximum decrease for the twist in [deg] at the n_opt locations
max_increase: 5.0 # Maximum increase for the twist in [deg] at the n_opt locations
index_start: 1 # Lock the first DV at blade root
index_end: 5 # All DVs close to blade tip are active
chord:
Expand Down Expand Up @@ -71,7 +71,7 @@ constraints:
margin: 1.4175
stall:
flag: True # Constraint on minimum stall margin
margin: 0.05233 # Value of minimum stall margin in [rad]
margin: 5.0 # Value of minimum stall margin in [deg]
moment_coefficient:
flag: True
max: 0.16
Expand Down
6 changes: 3 additions & 3 deletions examples/19_rotor_drivetrain_tower/analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ design_variables:
flag: True
inverse: False
n_opt: 8
max_decrease: 0.08722222222222223
max_increase: 0.08722222222222223
max_decrease: 5.0
max_increase: 5.0
index_start: 2
index_end: 8
chord:
Expand Down Expand Up @@ -82,7 +82,7 @@ constraints:
blade:
stall:
flag: True
margin: 0.05233
margin: 5.0
chord:
flag: True
max: 4.3
Expand Down
10 changes: 4 additions & 6 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"

[project]
name = "wisdem"
version = "4.1.0"
version = "4.1.1"
description = "Wind-Plant Integrated System Design & Engineering Model"
readme = "README.md"
requires-python = ">=3.9"
requires-python = ">=3.11"
license = {text = "Apache-2.0"}
keywords = ["wind", "turbine", "mdao", "design", "optimization"]
authors = [
Expand All @@ -33,8 +33,6 @@ classifiers = [ # Optional
# that you indicate you support Python 3. These classifiers are *not*
# checked by "pip install". See instead "python_requires" below.
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
Expand All @@ -52,11 +50,11 @@ classifiers = [ # Optional
dependencies = [
"jsonmerge",
"jsonschema",
"moorpy>=1.2",
"moorpy==1.2.1",
"numpy",
"openmdao",
"openpyxl",
"orbit-nrel>=1.2.5",
"orbit-nrel>=1.2.6",
"pandas",
"pydoe3",
"pyyaml",
Expand Down
4 changes: 4 additions & 0 deletions wisdem/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
from importlib.metadata import version

from wisdem.glue_code.runWISDEM import run_wisdem

__version__ = version("wisdem")
4 changes: 2 additions & 2 deletions wisdem/ccblade/ccblade_component.py
Original file line number Diff line number Diff line change
Expand Up @@ -498,7 +498,7 @@ def compute(self, inputs, outputs, discrete_inputs, discrete_outputs):
cd = np.zeros(self.n_span)
alpha = np.zeros(self.n_span)
Emax = np.zeros(self.n_span)
margin2stall = self.options["opt_options"]["constraints"]["blade"]["stall"]["margin"] * 180.0 / np.pi
margin2stall = self.options["opt_options"]["constraints"]["blade"]["stall"]["margin"]
Re = np.array(Omega * inputs["r"] * inputs["chord"] * inputs["rho"][0] / inputs["mu"][0])
aoa_op = inputs["aoa_op"]
for i in range(self.n_span):
Expand Down Expand Up @@ -538,7 +538,7 @@ def compute(self, inputs, outputs, discrete_inputs, discrete_outputs):

# Cap twist root region to 20 degrees
for i in range(len(ccblade.theta)):
cap_twist_root = self.options["opt_options"]["design_variables"]["blade"]["aero_shape"]["twist"]["cap_twist_root"]
cap_twist_root = np.deg2rad(self.options["opt_options"]["design_variables"]["blade"]["aero_shape"]["twist"]["cap_twist_root"])
if ccblade.theta[-i - 1] > cap_twist_root:
ccblade.theta[0 : len(ccblade.theta) - i] = cap_twist_root
break
Expand Down
3 changes: 2 additions & 1 deletion wisdem/fixed_bottomse/monopile.py
Original file line number Diff line number Diff line change
Expand Up @@ -944,7 +944,7 @@ def setup(self):
"tower_torsion_modes",
"f1",
"f2",
"water_depth"
"water_depth",
],
)

Expand Down Expand Up @@ -1031,3 +1031,4 @@ def setup(self):
self.connect("soil.z_k", "monopile.z_soil")
self.connect("soil.k", "monopile.k_soil")

self.set_input_defaults("rho_water", 1025.0, units="kg/m**3")
2 changes: 2 additions & 0 deletions wisdem/floatingse/floating.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,3 +146,5 @@ def setup(self):

for var in ["z_global", "s_full", "s_all"]:
self.connect(f"member{k}_{kname}.{var}", f"memload{k}.{var}")

self.set_input_defaults("rho_water", 1025.0, units="kg/m**3")
Loading
Loading