Giter Club home page Giter Club logo

weis's Introduction

WEIS

Coverage Status Actions Status Documentation Status DOI

WEIS, Wind Energy with Integrated Servo-control, performs multifidelity co-design of wind turbines. WEIS is a framework that combines multiple NREL-developed tools to enable design optimization of floating offshore wind turbines.

Author: NREL WISDEM & OpenFAST & Control Teams

Documentation

See local documentation in the docs-directory or access the online version at https://weis.readthedocs.io/en/latest/

Packages

WEIS integrates in a unique workflow four models:

  • WISDEM is a set of models for assessing overall wind plant cost of energy (COE).
  • OpenFAST is the community model for wind turbine simulation to be developed and used by research laboratories, academia, and industry.
  • TurbSim is a stochastic, full-field, turbulent-wind simulator.
  • ROSCO provides an open, modular and fully adaptable baseline wind turbine controller to the scientific community.

In addition, three external libraries are added:

  • pCrunch is a collection of tools to ease the process of parsing large amounts of OpenFAST output data and conduct loads analysis.
  • pyOptSparse is a framework for formulating and efficiently solving nonlinear constrained optimization problems.

The core WEIS modules are:

  • aeroelasticse is a wrapper to call OpenFAST
  • control contains the routines calling ROSCO and the routines supporting distributed aerodynamic control devices, such trailing edge flaps
  • gluecode contains the scripts glueing together all models and libraries
  • multifidelity contains the codes to run multifidelity design optimizations
  • optimization_drivers contains various optimization drivers
  • schema contains the YAML files and corresponding schemas representing the input files to WEIS

Installation

On laptop and personal computers, installation with Anaconda is the recommended approach because of the ability to create self-contained environments suitable for testing and analysis. WEIS requires Anaconda 64-bit. However, the conda command has begun to show its age and we now recommend the one-for-one replacement with the Miniforge3 distribution, which is much more lightweight and more easily solves for the package dependencies. Sometimes, using mamba in place of conda with this distribution speeds up the installation process. WEIS is currently supported on Linux, MAC and Windows Sub-system for Linux (WSL). Installing WEIS on native Windows is not yet supported, but planned in 2024.

The installation instructions below use the environment name, "weis-env," but any name is acceptable. For those working behind company firewalls, you may have to change the conda authentication with conda config --set ssl_verify no. Proxy servers can also be set with conda config --set proxy_servers.http http://id:pw@address:port and conda config --set proxy_servers.https https://id:pw@address:port.

  1. On the DOE HPC system eagle, make sure to start from a clean setup and type

    module purge
    module load conda        
    
  2. Setup and activate the Anaconda environment from a prompt (WSL terminal on Windows or Terminal.app on Mac)

    conda config --add channels conda-forge
    conda install git
    git clone https://github.com/WISDEM/WEIS.git
    cd WEIS
    git checkout branch_name                         # (Only if you want to switch branches, say "develop")
    conda env create --name weis-env -f environment.yml
    conda activate weis-env                          # (if this does not work, try source activate weis-env)
    
  3. Add in final packages and install the software

     conda install -y petsc4py mpi4py pyoptsparse     # (Mac / Linux only)
     pip install -e .
    
  4. Instructions specific for DOE HPC system Eagle. Before executing the setup script, do:

     module load comp-intel intel-mpi mkl
     module unload gcc
     pip install --no-deps -e . -v
    

NOTE: To use WEIS again after installation is complete, you will always need to activate the conda environment first with conda activate weis-env (or source activate weis-env). On Eagle, make sure to reload the necessary modules

For Windows users, we recommend installing git and the m264 packages in separate environments as some of the libraries appear to conflict such that WISDEM cannot be successfully built from source. The git package is best installed in the base environment.

Developer guide

If you plan to contribute code to WEIS, please first consult the developer guide.

Feedback

For software issues please use https://github.com/WISDEM/WEIS/issues.

weis's People

Contributors

akey7 avatar amoratoc avatar athulkrishnasundarrajan avatar cfrontin avatar dakotaramos avatar davidheff avatar deepfriedderp avatar dzalkind avatar ebranlard avatar evan-gaertner avatar ewquon avatar gbarter avatar jakenunemaker avatar jennirinker avatar johnjasa avatar mayankchetan avatar nikhar-abbas avatar paulf81 avatar pe-meunier avatar ptrbortolotti avatar rafmudaf avatar seager1989 avatar spmulders avatar yonghoonlee avatar yqliaohk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

weis's Issues

Error when importing from attr

Hi, I am trying to get WEIS running on Debian. However, I am struggling to resolve the following error when running example 05 (and all the others I tried so far):

Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/alexander/Dokumente/Master/Masterarbeit/Code/WEIS/weis/glue_code/runWEIS.py", line 4, in <module>
    from weis.glue_code.gc_LoadInputs     import WindTurbineOntologyPythonWEIS
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
  File "/home/alexander/Dokumente/Master/Masterarbeit/Code/WEIS/weis/glue_code/gc_LoadInputs.py", line 5, in <module>
    import weis.inputs as sch
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
  File "/home/alexander/Dokumente/Master/Masterarbeit/Code/WEIS/weis/inputs/__init__.py", line 1, in <module>
    from weis.inputs.validation import *
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
  File "/home/alexander/Dokumente/Master/Masterarbeit/Code/WEIS/weis/inputs/validation.py", line 2, in <module>
    import jsonmerge
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/jsonmerge/__init__.py", line 4, in <module>
    from jsonmerge.resolver import LocalRefResolver
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/jsonmerge/resolver.py", line 2, in <module>
    from jsonschema.validators import RefResolver, urldefrag, urljoin
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/jsonschema/__init__.py", line 13, in <module>
    from jsonschema._format import FormatChecker
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/jsonschema/_format.py", line 11, in <module>
    from jsonschema.exceptions import FormatError
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/jsonschema/exceptions.py", line 14, in <module>
    from attrs import define
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
  File "/home/alexander/anaconda3/envs/weis-envir/lib/python3.9/site-packages/attrs/__init__.py", line 3, in <module>
    from attr import (
ImportError: cannot import name 'AttrsInstance' from 'attr' (/home/alexander/.local/lib/python3.9/site-packages/attr/__init__.py)
python-BaseException
Backend QtAgg is interactive backend. Turning interactive mode on.

I already reinstalled the environment about three times, with no effect.
Since the given command for creating the environment didn't work for me (SpecNotFound: Invalid name 'python=3.9', try the format: user/package), I downloaded the environment.yml and added python=3.9.* to the list instead. Other than that, I just followed the given instructions.
As far as I can tell, the installation of WEIS itself (running the setup.py) seems to work without any issue, though.
I would appreciate any help. Thank you.

Compile Issue for Windows environment

Installing WEIS on Linux works fine, but I was not successful on Windows yet.
Followed the instruction on the README.md well, but getting following error message:

CMake suite maintained and supported by Kitware (kitware.com/cmake).
C:\Users\ylee196\Anaconda3\envs\weis-env\Library\bin\cmake.exe -S C:\Users\ylee196\Dropbox\WorkingFolder\WEIS\ROSCO -B build\temp.win-amd64-3.8\Release_rosco -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=C:\Users\ylee196\Dropbox\WorkingFolder\WEIS\local -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE -G "MinGW Makefiles"
-- The Fortran compiler identification is GNU 5.3.0
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Check for working Fortran compiler: C:/Users/ylee196/Anaconda3/envs/weis-env/Library/mingw-w64/bin/gfortran.exe - skipped
-- Checking whether C:/Users/ylee196/Anaconda3/envs/weis-env/Library/mingw-w64/bin/gfortran.exe supports Fortran 90
-- Checking whether C:/Users/ylee196/Anaconda3/envs/weis-env/Library/mingw-w64/bin/gfortran.exe supports Fortran 90 - yes
-- CMAKE_Fortran_COMPILER_ID = GNU
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/ylee196/Dropbox/WorkingFolder/WEIS/build/temp.win-amd64-3.8/Release_rosco
C:\Users\ylee196\Anaconda3\envs\weis-env\Library\bin\cmake.exe --build build\temp.win-amd64-3.8\Release_rosco -j 8 --target install --config Release
Scanning dependencies of target discon
[ 11%] Building Fortran object CMakeFiles/discon.dir/src/Constants.f90.obj
[ 22%] Building Fortran object CMakeFiles/discon.dir/src/ROSCO_Types.f90.obj
[ 33%] Building Fortran object CMakeFiles/discon.dir/src/Filters.f90.obj
[ 44%] Building Fortran object CMakeFiles/discon.dir/src/Functions.f90.obj
C:\Users\ylee196\Dropbox\WorkingFolder\WEIS\ROSCO\src\Functions.f90:412:30:

         CPfunction = saturate(CPfunction, 0.001, 1.0)
                              1
Error: Type mismatch in argument 'inputvalue' at (1); passed REAL(4) to REAL(8)
CMakeFiles\discon.dir\build.make:158: recipe for target 'CMakeFiles/discon.dir/src/Functions.f90.obj' failed
mingw32-make.exe[2]: *** [CMakeFiles/discon.dir/src/Functions.f90.obj] Error 1
CMakeFiles\Makefile2:93: recipe for target 'CMakeFiles/discon.dir/all' failed
mingw32-make.exe[1]: *** [CMakeFiles/discon.dir/all] Error 2
Makefile:147: recipe for target 'all' failed
mingw32-make.exe: *** [all] Error 2
error: command 'C:\\Users\\ylee196\\Anaconda3\\envs\\weis-env\\Library\\bin\\cmake.exe' failed with exit status 2

No Flap Actuation in WEIS/examples/07_te_flaps example simulation

Description

Develop Branch, example 07_te_flaps appears to be incapable of producing flap actuation as currently set up.

Found by:

  • Plotting the FAST output (both .out and .outb) for BLFLAP[1 thru 3] for multiple simulation runs.
  • Verifying that the .out columns for BLFLAPs are all 0.000 for all simulation time, for multiple simulation runs.
  • Comparing results for Flp_Mode = 1 and Flp_Mode = 2. If the DLC, avg wind speed, and turbulence seed are the same, then the system response for all states in the .out files are exactly the same, indicating that changing flap control modes doesn't result in a change in flap behavior.
  • Inserting code into ROSCO/ROSCO/src/Controllers.F90 to print out the current LocalVar%Flp_Angle and elements 120-122 of avrSWAP after LocalVar%Flp_Angle is assigned to avrSWAP. This confirmed that flap actuation and assignment of non-zero flap angles to avrSWAP was occuring inside of the FlapControl subroutine, but somehow those changes were not showing up in the .out files or apparently affecting the simulation in any way.

Steps to reproduce issue

  1. Install from develop branch
  2. From WEIS/examples/07_te_flaps, run dac_driver.py to run simulation
  3. Validate claims from issue description using the .out and/or .outb files from the 07_te_flaps/temp directory.

Current behavior

  • BLFLAP[1 thru 3] is 0.000 for all points in output files
  • System responses are exactly the same for same DLC, same wind speed, same turbulence seed, different ROSCO Flp_Mode settings.

Expected behavior

  • BLFLAP[1 thru 3] are non-zero for some portion of time in the simulation .out/.outb files
  • System responses should be different for same DLC, same wind speed, same turbulence seeds, different ROSCO Flp_Mode settings, at least within the operating regions that would trigger flap actuation.

Running DLC in parallel has poor performance due to improper usage of cores

Description

Unexpected behaviors have been observed using mpiexec -n $nC --bind-to core python driver.py. E.g., with 23 wind speeds and 6 turbulence seeds (nC=N+1=139, with N=23*6)

  • Running current code with 4 nodes results in [N+36, 36, 36, 31] processes per node (instead of [36,36,36,31])
  • With fix, running without --bind-to core option: [36,36,36,36]
  • With fix, with --bind-to core option: [36,36,36,31]

The fix, courtesy of @nikhar-abbas :

diff --git a/weis/aeroelasticse/openmdao_openfast.py b/weis/aeroelasticse/openmdao_openfast.py
index 7de0f78..a417071 100644
--- a/weis/aeroelasticse/openmdao_openfast.py
+++ b/weis/aeroelasticse/openmdao_openfast.py
@@ -1013,7 +1013,7 @@ class FASTLoadCases(ExplicitComponent):
         fastBatch.overwrite_outfiles = True  #<--- Debugging only, set to False to prevent OpenFAST from running if the .outb already exists

         # Run FAST
-        if self.mpi_run and self.options['opt_options']['driver']['optimization']['flag']:
+        if self.mpi_run: #and self.options['opt_options']['driver']['optimization']['flag']:
             summary_stats, extreme_table, DELs, chan_time = fastBatch.run_mpi(self.mpi_comm_map_down)
         else:
             if self.cores == 1:
@@ -1123,7 +1123,7 @@ class FASTLoadCases(ExplicitComponent):
         iec.overwrite       = False # TODO: elevate these options to analysis input file
         iec.run_dir         = self.FAST_runDirectory

-        if self.mpi_run and self.options['opt_options']['driver']['optimization']['flag']:
+        if self.mpi_run: #and self.options['opt_options']['driver']['optimization']['flag']:
             iec.parallel_windfile_gen = True
             iec.mpi_run               = self.FASTpref['analysis_settings']['mpi_run']
             iec.comm_map_down         = self.FASTpref['analysis_settings']['mpi_comm_map_down']
diff --git a/weis/glue_code/runWEIS.py b/weis/glue_code/runWEIS.py
index 2f9d334..c565f5a 100644
--- a/weis/glue_code/runWEIS.py
+++ b/weis/glue_code/runWEIS.py
@@ -183,7 +183,7 @@ def run_weis(fname_wt_input, fname_modeling_options, fname_opt_options, overridd
             # Save data to numpy and matlab arrays
             fileIO.save_data(froot_out, wt_opt)

-    if MPI and modeling_options['Level3']['flag'] and opt_options['driver']['optimization']['flag']:
+    if MPI and modeling_options['Level3']['flag']: #and opt_options['driver']['optimization']['flag']:
         # subprocessor ranks spin, waiting for FAST simulations to run
         sys.stdout.flush()
         if rank in comm_map_up.keys():

Steps to reproduce issue

Using https://github.com/ewquon/WEIS/tree/powercurve_points, which tracks https://github.com/WISDEM/WEIS/tree/powercurve_points, run with modeling options:

  • openfast.analysis_settings.Analysis_level = 2
  • openfast.dlc_settings.run_IEC = True
  • openfast.dlc_settings.IEC:
        - DLC: 1.1
          U: [3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]
          Seeds: [13,17,19,23,29,37]
    

Error in Example 02 when AEP is selected for merit figure

Hello,

I am running Example 02 for controller optimization.
I wanted to compare the optimization results between three merit figures, which are AEP, DEL_RootMyb, and DEL_TwrBsMyt.
If I select DEL_RootMyb or DEL_TwrBsMyt, it works well, but if I select AEP, it has an error as below. Can you help me for removing this error?
Thank you for your time.

-----------------------------------------------------------------------------
Loading wind turbine data for NREL's ROSCO tuning and simulation processeses
-----------------------------------------------------------------------------
Loading FAST model: IEA-15-240-RWT-UMaineSemi.fst
Loading rotor performace data from text file: /home/hkim/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT/Cp_Ct_Cq.IEA15MW.txt
Traceback (most recent call last):
  File "/home/hkim/WEIS/examples/02_control_opt/weis_driver.py", line 15, in <module>
    wt_opt, modeling_options, opt_options = run_weis(fname_wt_input, fname_modeling_options, fname_analysis_options)
  File "/home/hkim/WEIS/weis/glue_code/runWEIS.py", line 147, in run_weis
    wt_opt.setup()
  File "/home/hkim/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/problem.py", line 958, in setup
    self._check_collected_errors()
  File "/home/hkim/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/problem.py", line 585, in _check_collected_errors
    raise exc_type('\n'.join(final_msg)).with_traceback(tback)
  File "/home/hkim/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 1500, in _setup
    self._problem_meta['relevant'] = self._init_relevance(mode)
  File "/home/hkim/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 2271, in _init_relevance
    responses = self.get_responses(recurse=True, get_sizes=False, use_prom_ivc=False)
  File "/home/hkim/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 3929, in get_responses
    raise RuntimeError(msg.format(self.msginfo, str(err)))
RuntimeError:
Collected errors for problem 'weis_driver':
   <model> <class Group>: Output not found for response 'rotorse.rp.AEP'.

Modes for ElastoDyn

See previous discussions in
OpenFAST/openfast#631

Note that the issue has been temporarily fixed, but not fully resolved.

Talking to Emmanuel, we foresee two paths forward:

  1. Longer term, but cleaner - ElastoDyn computes the modes internally integrating the simplified calculations of BModes. Emmanuel would be happy to implement this. The code of BModes seems to have gone lost, but we could send some emails and see if we are lucky
  2. We refresh some old Python codes from Emmanuel that compute the modes. It is to be seen whether the modes match with the ones produced by BModes

We are open for feedbacks

Example 05 fails in LandBOSSE

Description

From the latest develop branch (9a4c5ce), example 5 fails for me with this error:

(weis-env) >>mbp@~/Development/WEIS/examples/05_IEA-3.4-130-RWT (develop)$ python weis_driver.py 
Using weis.aeroelasticse in ROSCO_toolbox...
Traceback (most recent call last):
  File "/Users/rmudafor/Development/WEIS/examples/05_IEA-3.4-130-RWT/weis_driver.py", line 15, in <module>
    wt_opt, modeling_options, opt_options = run_weis(fname_wt_input, fname_modeling_options, fname_analysis_options)
  File "/Users/rmudafor/Development/WEIS/weis/glue_code/runWEIS.py", line 151, in run_weis
    wt_opt.setup(derivatives=False)
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/problem.py", line 954, in setup
    model._setup(model_comm, mode, self._metadata)
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 1474, in _setup
    self._setup_procs(self.pathname, comm, mode, self._problem_meta)
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/group.py", line 595, in _setup_procs
    subsys._setup_procs(subsys.pathname, sub_comm, mode, prob_meta)
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/group.py", line 595, in _setup_procs
    subsys._setup_procs(subsys.pathname, sub_comm, mode, prob_meta)
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/group.py", line 595, in _setup_procs
    subsys._setup_procs(subsys.pathname, sub_comm, mode, prob_meta)
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/component.py", line 218, in _setup_procs
    self.setup()
  File "/Users/rmudafor/Development/WEIS/WISDEM/wisdem/landbosse/landbosse_omdao/landbosse.py", line 57, in setup
    self.setup_discrete_inputs_that_are_dataframes()
  File "/Users/rmudafor/Development/WEIS/WISDEM/wisdem/landbosse/landbosse_omdao/landbosse.py", line 223, in setup_discrete_inputs_that_are_dataframes
    default_project_data = OpenMDAODataframeCache.read_all_sheets_from_xlsx("ge15_public")
  File "/Users/rmudafor/Development/WEIS/WISDEM/wisdem/landbosse/landbosse_omdao/OpenMDAODataframeCache.py", line 84, in read_all_sheets_from_xlsx
    xlsx = pd.ExcelFile(xlsx_filename, engine="openpyxl")
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/pandas/io/excel/_base.py", line 1695, in __init__
    self._reader = self._engines[engine](self._io, storage_options=storage_options)
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/pandas/io/excel/_openpyxl.py", line 557, in __init__
    super().__init__(filepath_or_buffer, storage_options=storage_options)
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/pandas/io/excel/_base.py", line 545, in __init__
    self.book = self.load_workbook(self.handles.handle)
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/pandas/io/excel/_openpyxl.py", line 568, in load_workbook
    return load_workbook(
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/openpyxl/reader/excel.py", line 346, in load_workbook
    reader.read()
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/openpyxl/reader/excel.py", line 303, in read
    self.parser.assign_names()
  File "/Users/rmudafor/miniconda3/envs/weis-env/lib/python3.10/site-packages/openpyxl/reader/workbook.py", line 109, in assign_names
    sheet.defined_names[name] = defn
AttributeError: 'ReadOnlyWorksheet' object has no attribute 'defined_names'

I noticed that it was beginning in the landbosse module, so I disabled the BOS flag in the modeling options and this allowed the example to run.

WISDEM:
    BOS:
        flag: False

Steps to reproduce issue

  1. Install WEIS from the develop branch at commit 9a4c5ce
  2. In examples/05_IEA-3.4-130-RWT, run python weis_driver.py
  3. ... this results in the error above
  4. Change the WISDEM/BOS flag to False from True
  5. Rerun python weis_driver.py and the example runs

Current behavior

Example 05 aborts with a failure

Expected behavior

Example 05 will run to completion with no failure

Code versions

  • Python 3.10.9
  • WEIS v1.1 at 9a4c5ce

How can I add multiple breakpoints in WEIS?

Hello,

Thank you for your time always.

Now I am following the paper below with WEIS.

Zalkind, D., Abbas, N.J., Jasa, J., Wright, A. and Fleming, P., 2022, May. Floating wind turbine control optimization. In Journal of Physics: Conference Series (Vol. 2265, No. 4, p. 042021). IOP Publishing.

In the paper, there is an explanation of the multiple breakpoints to define natural frequency (omega) and damping ratio (zeta).
I want to practice this in WEIS, but I couldn't find which input option is related to this.

Can you let me know which input option I can add or change for using the different number of breakpoints in WEIS?

Thank you.

HC Kim

mpirun

I'm getting an error when I use the mpirun command from the latest WEIS/dev build when running WISDEM/examples/03_blade:

$ mpirun -np 4 python blade_driver.py

Traceback (most recent call last):
File "blade_driver.py", line 15, in
wt_opt, modeling_options, analysis_options = run_wisdem(fname_wt_input, fname_modeling_options, fname_analysis_options_no_opt)
File "/Users/njohnso1/Documents/Projects/WEIS_dev/WISDEM/wisdem/glue_code/runWISDEM.py", line 41, in run_wisdem
raise ValueError("ERROR: please reduce the number of cores, currently set to " +
ValueError: ERROR: please reduce the number of cores, currently set to 4, to the number of finite differences 0, which is equal to the number of design variables DV for forward differencing and DV times 2 for central differencing, or the parallelization logic will not work

Thanks,
Nick

Warnings when running example 2

Description

I am new to WEIS and trying to run my first example. I am running 02_control_opt/weis_driver.py since it is on the list of reliable examples as suggested in #198. I get various warnings (related to mpi4py, Rosco components, OpenFAST NaNs, invalid values, AeroDyn nodal output not found, FAST UA and Mach number, and no optimization report) and an LCOE of zero, that makes me think something with my setup/install is wrong. Are these warnings expected?

Steps to reproduce issue

Please provide a minimum working example (MWE) if possible

  1. Clean install of main on WSL following README instructions, with the exception of using numpy=1.23 to get around #202
  2. cd WEIS/examples/02_control opt, python weis_driver.py

Current behavior

(weis-env) rmccabe@EN-MA-AMH2498-F:~/WEIS/examples/02_control_opt$ python weis_driver.py
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/pyoptsparse/pyOpt_MPI.py:68: UserWarning: mpi4py could not be imported. mpi4py is required to use the parallel gradient analysis and parallel objective analysis for non-gradient based optimizers. Continuing using a dummy MPI module from pyOptSparse.
  warnings.warn(warn)
Using weis.aeroelasticse in ROSCO_toolbox...
WARNING: Airfoils provided but no blades/rotor found or RotorSE deactivated
WARNING: Environment provided but no related component found found
Found existing potential model: examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT-UMaineSemi/HydroData/IEA-15-240-RWT-UMaineSemi
    - Trying to use this instead of running PyHAMS.
-----------------------------------------------------------------------------
Loading wind turbine data for NREL's ROSCO tuning and simulation processeses
-----------------------------------------------------------------------------
Loading FAST model: IEA-15-240-RWT-UMaineSemi.fst
Loading rotor performace data from text file: /home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT/Cp_Ct_Cq.IEA15MW.txt
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/n2_viewer/n2_viewer.py:168: OpenMDAOWarning:All-NaN slice encountered
Driver debug print for iter coord: rank0:NLopt_LN_COBYLA|0
----------------------------------------------------------
Design Vars
{'tune_rosco_ivc.Kp_float': array([-10.]),
 'tune_rosco_ivc.omega_pc': array([0.2, 0.2]),
 'tune_rosco_ivc.ptfm_freq': array([0.2]),
 'tune_rosco_ivc.zeta_pc': array([1., 1.])}

Warning: turbine_costsse_2015.py : TowerCost2015.compute : No tower mass provided.  Assuming $0 for tower cost, LCOE will be artificially low.
RuntimeWarning: /home/rmccabe/WEIS/weis/control/dac.py:734
invalid value encountered in double_scalars-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox
-----------------------------------------------------------------------------
Loading rotor performace data from text file: /home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT/Cp_Ct_Cq.IEA15MW.txt

 **************************************************************************************************
 TurbSim

 Copyright (C) 2023 National Renewable Energy Laboratory
 Copyright (C) 2023 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

  Running TurbSim (from OpenFAST-v1.1)


  Reading the input file "IEA15_NTM_U16.000000_Seed1501552846.0.in".
  Calculating the spectral and transfer function matrices:
     u-component matrices (IEC coherence method)
     v-component matrices (identity coherence)
     w-component matrices (identity coherence)
  Generating time series for all points:
     u-component
     v-component
     w-component
  Computing hub-height statistics
  Writing statistics to summary file
  Generating AeroDyn binary time-series file "IEA15_NTM_U16.000000_Seed1501552846.0.bts"

  Processing complete.  3.5469 CPU seconds used.

  TurbSim terminated normally.


 **************************************************************************************************
 TurbSim

 Copyright (C) 2023 National Renewable Energy Laboratory
 Copyright (C) 2023 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

  Running TurbSim (from OpenFAST-v1.1)


  Reading the input file "IEA15_NTM_U46.789000_Seed488200390.0.in".
  Calculating the spectral and transfer function matrices:
     u-component matrices (IEC coherence method)
     v-component matrices (identity coherence)
     w-component matrices (identity coherence)
  Generating time series for all points:
     u-component
     v-component
     w-component
  Computing hub-height statistics
  Writing statistics to summary file
  Generating AeroDyn binary time-series file "IEA15_NTM_U46.789000_Seed488200390.0.bts"

  Processing complete.  8.5781 CPU seconds used.

  TurbSim terminated normally.


 **************************************************************************************************
 TurbSim

 Copyright (C) 2023 National Renewable Energy Laboratory
 Copyright (C) 2023 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

  Running TurbSim (from OpenFAST-v1.1)


  Reading the input file "IEA15_NTM_U46.789000_Seed1693606511.0.in".
  Calculating the spectral and transfer function matrices:
     u-component matrices (IEC coherence method)
     v-component matrices (identity coherence)
     w-component matrices (identity coherence)
  Generating time series for all points:
     u-component
     v-component
     w-component
  Computing hub-height statistics
  Writing statistics to summary file
  Generating AeroDyn binary time-series file "IEA15_NTM_U46.789000_Seed1693606511.0.bts"

  Processing complete.  8.5625 CPU seconds used.

  TurbSim terminated normally.

Writing rotor performance text file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_0_Cp_Ct_Cq.txt
Writing new controller parameter file parameter file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_0_DISCON.IN.

 **************************************************************************************************
 OpenFAST

 Copyright (C) 2023 National Renewable Energy Laboratory
 Copyright (C) 2023 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

 OpenFAST-v1.1
 Compile Info:
  - Compiler: GCC version 9.4.0
  - Architecture: 64 bit
  - Precision: single
  - OpenMP: No
  - Date: Jan 30 2023
  - Time: 10:03:57
 Execution Info:
  - Date: 01/30/2023
  - Time: 10:35:06-0500

 OpenFAST input file heading:
     Generated with AeroElasticSE FAST driver

 Running ElastoDyn.
 Nodal outputs section of ElastoDyn input file not found or improperly formatted.
 Running AeroDyn.
 AD15 Nodal Outputs: Nodal output section of AeroDyn input file not found or improperly formatted.
 Skipping nodal outputs.
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 1, blade 1)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 2, blade 1)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 1, blade 2)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 2, blade 2)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 1, blade 3)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 2, blade 3)
 Running InflowWind.

    Reading a 25x25 grid (297.47 m wide, 4.88281E-04 m to 297.47 m above ground) with a
    characteristic wind speed of 16.149 m/s. This full-field file was generated by TurbSim (from
    OpenFAST-v1.1) on 30-Jan-2023 at 10:34:43.

    Processed 204 time steps of 20-Hz full-field data (period of 10.2 seconds).
 Running HydroDyn.
  WARNING:   The random number generator in use differs from the original code provided by NREL.
  This pRNG uses 8 seeds instead of the 2 in the input file.
  Generating incident wave kinematics and current time history.
  Calculating second order sum frequency wave kinematics.
  Reading in WAMIT output with root name
  "/home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT-UMain
  eSemi/HydroData/IEA-15-240-RWT-UMaineSemi".
  Computing radiation impulse response functions and wave diffraction forces.
 Running MoorDyn.
   MD_Init: Opening MoorDyn input file:  ./IEA15_0_MoorDyn.dat
   Creating mooring system.   3 fairleads, 3 anchors, 0 connects.
    Finalizing ICs using dynamic relaxation.

   t=60  FairTen 1: 2.43587E+06, 2.44120E+06, 2.43677E+06                                             Fairlead tensions did not converge within TMaxIC=60 seconds.
 Running ServoDyn.
 Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux).
 Using legacy Bladed DLL interface.

 FAST_InitializeAll:HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use
 differs from the original code provided by NREL. This pRNG uses 8 seeds instead of the 2 in the
 HydroDyn input file.

  Time: 0 of 10.1 seconds.

------------------------------------------------------------------------------
Running ROSCO-v2.6.0
A wind turbine controller framework for public use in the scientific field
Developed in collaboration: National Renewable Energy Laboratory
                            Delft University of Technology, The Netherlands
------------------------------------------------------------------------------
Generator speed:    7.6 RPM, Pitch angle:  15.0 deg, Power:     0.0 kW, Est. wind Speed:  15.9 m/s

 FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption2:RotCalcOutput:BEMT_CalcOutput(node 3,
 blade 3):UA_CalcOutput:UA_BlendSteady:Temporarily turning off UA due to high angle of attack or
 low relative velocity. This warning will not be repeated though the condition may persist.


 FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption2:RotCalcOutput:BEMT_CalcOutput(node 50,
 blade 3):UA_CalcOutput:Mach number exceeds 0.3. Theory is invalid. This warning will not be
 repeated though the condition may persist.

Generator speed:    8.1 RPM, Pitch angle:   6.4 deg, Power: 16087.0 kW, Est. wind Speed:  13.1 m/s

  Total Real Time:       68.817 seconds
  Total CPU Time:        22.016 seconds
  Simulation CPU Time:   9.875 seconds
  Simulated Time:        10.1 seconds
  Time Ratio (Sim/CPU):  1.0228

  OpenFAST terminated normally.

Runtime:        IEA15_0.fst = 69.09 s
Writing rotor performance text file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_1_Cp_Ct_Cq.txt
Writing new controller parameter file parameter file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_1_DISCON.IN.

 **************************************************************************************************
 OpenFAST

 Copyright (C) 2023 National Renewable Energy Laboratory
 Copyright (C) 2023 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

 OpenFAST-v1.1
 Compile Info:
  - Compiler: GCC version 9.4.0
  - Architecture: 64 bit
  - Precision: single
  - OpenMP: No
  - Date: Jan 30 2023
  - Time: 10:03:57
 Execution Info:
  - Date: 01/30/2023
  - Time: 10:36:16-0500

 OpenFAST input file heading:
     Generated with AeroElasticSE FAST driver

 Running ElastoDyn.
 Nodal outputs section of ElastoDyn input file not found or improperly formatted.
 Running AeroDyn.
 AD15 Nodal Outputs: Nodal output section of AeroDyn input file not found or improperly formatted.
 Skipping nodal outputs.
 Running InflowWind.

    Reading a 25x25 grid (297.47 m wide, 4.88281E-04 m to 297.47 m above ground) with a
    characteristic wind speed of 47.094 m/s. This full-field file was generated by TurbSim (from
    OpenFAST-v1.1) on 30-Jan-2023 at 10:34:47.

    Processed 204 time steps of 20-Hz full-field data (period of 10.2 seconds).
 Running HydroDyn.
  WARNING:   The random number generator in use differs from the original code provided by NREL.
  This pRNG uses 8 seeds instead of the 2 in the input file.
  Generating incident wave kinematics and current time history.
  Calculating second order sum frequency wave kinematics.
  Reading in WAMIT output with root name
  "/home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT-UMain
  eSemi/HydroData/IEA-15-240-RWT-UMaineSemi".
  Computing radiation impulse response functions and wave diffraction forces.
 Running MoorDyn.
   MD_Init: Opening MoorDyn input file:  ./IEA15_1_MoorDyn.dat
   Creating mooring system.   3 fairleads, 3 anchors, 0 connects.
    Finalizing ICs using dynamic relaxation.

   t=60  FairTen 1: 2.43587E+06, 2.44120E+06, 2.43677E+06                                             Fairlead tensions did not converge within TMaxIC=60 seconds.
 Running ServoDyn.
 Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux).
 Using legacy Bladed DLL interface.

 FAST_InitializeAll:HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use
 differs from the original code provided by NREL. This pRNG uses 8 seeds instead of the 2 in the
 HydroDyn input file.

  Time: 0 of 10.1 seconds.

------------------------------------------------------------------------------
Running ROSCO-v2.6.0
A wind turbine controller framework for public use in the scientific field
Developed in collaboration: National Renewable Energy Laboratory
                            Delft University of Technology, The Netherlands
------------------------------------------------------------------------------
Generator speed:    0.0 RPM, Pitch angle:  90.0 deg, Power:     0.0 kW, Est. wind Speed:  47.1 m/s
Generator speed:    0.2 RPM, Pitch angle:  70.0 deg, Power:     0.0 kW, Est. wind Speed: -20.6 m/s

  Total Real Time:       18.884 seconds
  Total CPU Time:        18.844 seconds
  Simulation CPU Time:   9.0625 seconds
  Simulated Time:        10.1 seconds
  Time Ratio (Sim/CPU):  1.1145

  OpenFAST terminated normally.

Runtime:        IEA15_1.fst = 18.92 s
Writing rotor performance text file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_2_Cp_Ct_Cq.txt
Writing new controller parameter file parameter file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_2_DISCON.IN.

 **************************************************************************************************
 OpenFAST

 Copyright (C) 2023 National Renewable Energy Laboratory
 Copyright (C) 2023 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

 OpenFAST-v1.1
 Compile Info:
  - Compiler: GCC version 9.4.0
  - Architecture: 64 bit
  - Precision: single
  - OpenMP: No
  - Date: Jan 30 2023
  - Time: 10:03:57
 Execution Info:
  - Date: 01/30/2023
  - Time: 10:36:36-0500

 OpenFAST input file heading:
     Generated with AeroElasticSE FAST driver

 Running ElastoDyn.
 Nodal outputs section of ElastoDyn input file not found or improperly formatted.
 Running AeroDyn.
 AD15 Nodal Outputs: Nodal output section of AeroDyn input file not found or improperly formatted.
 Skipping nodal outputs.
 Running InflowWind.

    Reading a 25x25 grid (297.47 m wide, 4.88281E-04 m to 297.47 m above ground) with a
    characteristic wind speed of 47.094 m/s. This full-field file was generated by TurbSim (from
    OpenFAST-v1.1) on 30-Jan-2023 at 10:34:55.

    Processed 204 time steps of 20-Hz full-field data (period of 10.2 seconds).
 Running HydroDyn.
  WARNING:   The random number generator in use differs from the original code provided by NREL.
  This pRNG uses 8 seeds instead of the 2 in the input file.
  Generating incident wave kinematics and current time history.
  Calculating second order sum frequency wave kinematics.
  Reading in WAMIT output with root name
  "/home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT-UMain
  eSemi/HydroData/IEA-15-240-RWT-UMaineSemi".
  Computing radiation impulse response functions and wave diffraction forces.
 Running MoorDyn.
   MD_Init: Opening MoorDyn input file:  ./IEA15_2_MoorDyn.dat
   Creating mooring system.   3 fairleads, 3 anchors, 0 connects.
    Finalizing ICs using dynamic relaxation.

   t=60  FairTen 1: 2.43587E+06, 2.44120E+06, 2.43677E+06                                             Fairlead tensions did not converge within TMaxIC=60 seconds.
 Running ServoDyn.
 Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux).
 Using legacy Bladed DLL interface.

 FAST_InitializeAll:HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use
 differs from the original code provided by NREL. This pRNG uses 8 seeds instead of the 2 in the
 HydroDyn input file.

  Time: 0 of 10.1 seconds.

------------------------------------------------------------------------------
Running ROSCO-v2.6.0
A wind turbine controller framework for public use in the scientific field
Developed in collaboration: National Renewable Energy Laboratory
                            Delft University of Technology, The Netherlands
------------------------------------------------------------------------------
Generator speed:    0.0 RPM, Pitch angle:  90.0 deg, Power:     0.0 kW, Est. wind Speed:  47.1 m/s
Generator speed:    0.2 RPM, Pitch angle:  70.0 deg, Power:     0.0 kW, Est. wind Speed: -20.6 m/s

  Total Real Time:       19.007 seconds
  Total CPU Time:        18.938 seconds
  Simulation CPU Time:   9.0938 seconds
  Simulated Time:        10.1 seconds
  Time Ratio (Sim/CPU):  1.1107

  OpenFAST terminated normally.

Runtime:        IEA15_2.fst = 19.04 s
WARNING: OpenFAST is run at a single wind speed. AEP cannot be estimated. Using average power instead.
########################################
Objectives
Turbine AEP: 0.0150820187 GWh
Blade Mass:  0.0000000000 kg
LCOE:        0.0000000000 USD/MWh
Tip Defl.:   0.0000000000 m
Pitch PI gain inputs: omega_pc[0] = 0.200, zeta_pc[0] = 1.000
Floating Feedback: Kp_float = -10.000, ptfm_freq = 0.200
IPC Ki1p = 0.000e+00
IPC Ki1p = 0.000e+00
DEL(TwrBsMyt): 224454450.0820847154 Nm
rotor_overspeed: 7.5571429760 %
########################################
Nonlinear constraints
{'aeroelastic.rotor_overspeed': array([0.07557143]),
 'sse_tune.tune_rosco.PC_Ki': array([-0.12552134]),
 'sse_tune.tune_rosco.PC_Kp': array([-1.20562287])}

Linear constraints
None

Objectives
{'aeroelastic.DEL_TwrBsMyt': array([224454.45008208])}

Driver debug print for iter coord: rank0:NLopt_LN_COBYLA|1
----------------------------------------------------------
Design Vars
{'tune_rosco_ivc.Kp_float': array([-10.]),
 'tune_rosco_ivc.omega_pc': array([0.2, 0.2]),
 'tune_rosco_ivc.ptfm_freq': array([0.2]),
 'tune_rosco_ivc.zeta_pc': array([1., 1.])}

Warning: turbine_costsse_2015.py : TowerCost2015.compute : No tower mass provided.  Assuming $0 for tower cost, LCOE will be artificially low.
RuntimeWarning: /home/rmccabe/WEIS/weis/control/dac.py:734
invalid value encountered in double_scalars-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox
-----------------------------------------------------------------------------
Loading rotor performace data from text file: /home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT/Cp_Ct_Cq.IEA15MW.txt
Writing rotor performance text file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_0_Cp_Ct_Cq.txt
Writing new controller parameter file parameter file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_0_DISCON.IN.

 **************************************************************************************************
 OpenFAST

 Copyright (C) 2023 National Renewable Energy Laboratory
 Copyright (C) 2023 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

 OpenFAST-v1.1
 Compile Info:
  - Compiler: GCC version 9.4.0
  - Architecture: 64 bit
  - Precision: single
  - OpenMP: No
  - Date: Jan 30 2023
  - Time: 10:03:57
 Execution Info:
  - Date: 01/30/2023
  - Time: 10:36:56-0500

 OpenFAST input file heading:
     Generated with AeroElasticSE FAST driver

 Running ElastoDyn.
 Nodal outputs section of ElastoDyn input file not found or improperly formatted.
 Running AeroDyn.
 AD15 Nodal Outputs: Nodal output section of AeroDyn input file not found or improperly formatted.
 Skipping nodal outputs.
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 1, blade 1)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 2, blade 1)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 1, blade 2)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 2, blade 2)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 1, blade 3)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 2, blade 3)
 Running InflowWind.

    Reading a 25x25 grid (297.47 m wide, 4.88281E-04 m to 297.47 m above ground) with a
    characteristic wind speed of 16.149 m/s. This full-field file was generated by TurbSim (from
    OpenFAST-v1.1) on 30-Jan-2023 at 10:34:43.

    Processed 204 time steps of 20-Hz full-field data (period of 10.2 seconds).
 Running HydroDyn.
  WARNING:   The random number generator in use differs from the original code provided by NREL.
  This pRNG uses 8 seeds instead of the 2 in the input file.
  Generating incident wave kinematics and current time history.
  Calculating second order sum frequency wave kinematics.
  Reading in WAMIT output with root name
  "/home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT-UMain
  eSemi/HydroData/IEA-15-240-RWT-UMaineSemi".
  Computing radiation impulse response functions and wave diffraction forces.
 Running MoorDyn.
   MD_Init: Opening MoorDyn input file:  ./IEA15_0_MoorDyn.dat
   Creating mooring system.   3 fairleads, 3 anchors, 0 connects.
    Finalizing ICs using dynamic relaxation.

   t=60  FairTen 1: 2.43587E+06, 2.44120E+06, 2.43677E+06                                             Fairlead tensions did not converge within TMaxIC=60 seconds.
 Running ServoDyn.
 Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux).
 Using legacy Bladed DLL interface.

 FAST_InitializeAll:HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use
 differs from the original code provided by NREL. This pRNG uses 8 seeds instead of the 2 in the
 HydroDyn input file.

  Time: 0 of 10.1 seconds.

------------------------------------------------------------------------------
Running ROSCO-v2.6.0
A wind turbine controller framework for public use in the scientific field
Developed in collaboration: National Renewable Energy Laboratory
                            Delft University of Technology, The Netherlands
------------------------------------------------------------------------------
Generator speed:    7.6 RPM, Pitch angle:  15.0 deg, Power:     0.0 kW, Est. wind Speed:  15.9 m/s

 FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption2:RotCalcOutput:BEMT_CalcOutput(node 3,
 blade 3):UA_CalcOutput:UA_BlendSteady:Temporarily turning off UA due to high angle of attack or
 low relative velocity. This warning will not be repeated though the condition may persist.


 FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption2:RotCalcOutput:BEMT_CalcOutput(node 50,
 blade 3):UA_CalcOutput:Mach number exceeds 0.3. Theory is invalid. This warning will not be
 repeated though the condition may persist.

Generator speed:    8.1 RPM, Pitch angle:   6.4 deg, Power: 16087.0 kW, Est. wind Speed:  13.1 m/s

  Total Real Time:       19.748 seconds
  Total CPU Time:        19.719 seconds
  Simulation CPU Time:   9.9531 seconds
  Simulated Time:        10.1 seconds
  Time Ratio (Sim/CPU):  1.0148

  OpenFAST terminated normally.

Runtime:        IEA15_0.fst = 19.78 s
Writing rotor performance text file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_1_Cp_Ct_Cq.txt
Writing new controller parameter file parameter file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_1_DISCON.IN.

 **************************************************************************************************
 OpenFAST

 Copyright (C) 2023 National Renewable Energy Laboratory
 Copyright (C) 2023 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

 OpenFAST-v1.1
 Compile Info:
  - Compiler: GCC version 9.4.0
  - Architecture: 64 bit
  - Precision: single
  - OpenMP: No
  - Date: Jan 30 2023
  - Time: 10:03:57
 Execution Info:
  - Date: 01/30/2023
  - Time: 10:37:17-0500

 OpenFAST input file heading:
     Generated with AeroElasticSE FAST driver

 Running ElastoDyn.
 Nodal outputs section of ElastoDyn input file not found or improperly formatted.
 Running AeroDyn.
 AD15 Nodal Outputs: Nodal output section of AeroDyn input file not found or improperly formatted.
 Skipping nodal outputs.
 Running InflowWind.

    Reading a 25x25 grid (297.47 m wide, 4.88281E-04 m to 297.47 m above ground) with a
    characteristic wind speed of 47.094 m/s. This full-field file was generated by TurbSim (from
    OpenFAST-v1.1) on 30-Jan-2023 at 10:34:47.

    Processed 204 time steps of 20-Hz full-field data (period of 10.2 seconds).
 Running HydroDyn.
  WARNING:   The random number generator in use differs from the original code provided by NREL.
  This pRNG uses 8 seeds instead of the 2 in the input file.
  Generating incident wave kinematics and current time history.
  Calculating second order sum frequency wave kinematics.
  Reading in WAMIT output with root name
  "/home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT-UMain
  eSemi/HydroData/IEA-15-240-RWT-UMaineSemi".
  Computing radiation impulse response functions and wave diffraction forces.
 Running MoorDyn.
   MD_Init: Opening MoorDyn input file:  ./IEA15_1_MoorDyn.dat
   Creating mooring system.   3 fairleads, 3 anchors, 0 connects.
    Finalizing ICs using dynamic relaxation.

   t=60  FairTen 1: 2.43587E+06, 2.44120E+06, 2.43677E+06                                             Fairlead tensions did not converge within TMaxIC=60 seconds.
 Running ServoDyn.
 Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux).
 Using legacy Bladed DLL interface.

 FAST_InitializeAll:HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use
 differs from the original code provided by NREL. This pRNG uses 8 seeds instead of the 2 in the
 HydroDyn input file.

  Time: 0 of 10.1 seconds.

------------------------------------------------------------------------------
Running ROSCO-v2.6.0
A wind turbine controller framework for public use in the scientific field
Developed in collaboration: National Renewable Energy Laboratory
                            Delft University of Technology, The Netherlands
------------------------------------------------------------------------------
Generator speed:    0.0 RPM, Pitch angle:  90.0 deg, Power:     0.0 kW, Est. wind Speed:  47.1 m/s
Generator speed:    0.2 RPM, Pitch angle:  70.0 deg, Power:     0.0 kW, Est. wind Speed: -20.6 m/s

  Total Real Time:       18.875 seconds
  Total CPU Time:        18.672 seconds
  Simulation CPU Time:   9.0312 seconds
  Simulated Time:        10.1 seconds
  Time Ratio (Sim/CPU):  1.1183

  OpenFAST terminated normally.

Runtime:        IEA15_1.fst = 18.91 s
Writing rotor performance text file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_2_Cp_Ct_Cq.txt
Writing new controller parameter file parameter file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_2_DISCON.IN.

 **************************************************************************************************
 OpenFAST

 Copyright (C) 2023 National Renewable Energy Laboratory
 Copyright (C) 2023 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

 OpenFAST-v1.1
 Compile Info:
  - Compiler: GCC version 9.4.0
  - Architecture: 64 bit
  - Precision: single
  - OpenMP: No
  - Date: Jan 30 2023
  - Time: 10:03:57
 Execution Info:
  - Date: 01/30/2023
  - Time: 10:37:37-0500

 OpenFAST input file heading:
     Generated with AeroElasticSE FAST driver

 Running ElastoDyn.
 Nodal outputs section of ElastoDyn input file not found or improperly formatted.
 Running AeroDyn.
 AD15 Nodal Outputs: Nodal output section of AeroDyn input file not found or improperly formatted.
 Skipping nodal outputs.
 Running InflowWind.

    Reading a 25x25 grid (297.47 m wide, 4.88281E-04 m to 297.47 m above ground) with a
    characteristic wind speed of 47.094 m/s. This full-field file was generated by TurbSim (from
    OpenFAST-v1.1) on 30-Jan-2023 at 10:34:55.

    Processed 204 time steps of 20-Hz full-field data (period of 10.2 seconds).
 Running HydroDyn.
  WARNING:   The random number generator in use differs from the original code provided by NREL.
  This pRNG uses 8 seeds instead of the 2 in the input file.
  Generating incident wave kinematics and current time history.
  Calculating second order sum frequency wave kinematics.
  Reading in WAMIT output with root name
  "/home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT-UMain
  eSemi/HydroData/IEA-15-240-RWT-UMaineSemi".
  Computing radiation impulse response functions and wave diffraction forces.
 Running MoorDyn.
   MD_Init: Opening MoorDyn input file:  ./IEA15_2_MoorDyn.dat
   Creating mooring system.   3 fairleads, 3 anchors, 0 connects.
    Finalizing ICs using dynamic relaxation.

   t=60  FairTen 1: 2.43587E+06, 2.44120E+06, 2.43677E+06                                             Fairlead tensions did not converge within TMaxIC=60 seconds.
 Running ServoDyn.
 Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux).
 Using legacy Bladed DLL interface.

 FAST_InitializeAll:HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use
 differs from the original code provided by NREL. This pRNG uses 8 seeds instead of the 2 in the
 HydroDyn input file.

  Time: 0 of 10.1 seconds.

------------------------------------------------------------------------------
Running ROSCO-v2.6.0
A wind turbine controller framework for public use in the scientific field
Developed in collaboration: National Renewable Energy Laboratory
                            Delft University of Technology, The Netherlands
------------------------------------------------------------------------------
Generator speed:    0.0 RPM, Pitch angle:  90.0 deg, Power:     0.0 kW, Est. wind Speed:  47.1 m/s
Generator speed:    0.2 RPM, Pitch angle:  70.0 deg, Power:     0.0 kW, Est. wind Speed: -20.6 m/s

  Total Real Time:       19.33 seconds
  Total CPU Time:        18.797 seconds
  Simulation CPU Time:   9.0625 seconds
  Simulated Time:        10.1 seconds
  Time Ratio (Sim/CPU):  1.1145

  OpenFAST terminated normally.

Runtime:        IEA15_2.fst = 19.36 s
WARNING: OpenFAST is run at a single wind speed. AEP cannot be estimated. Using average power instead.
########################################
Objectives
Turbine AEP: 0.0150820187 GWh
Blade Mass:  0.0000000000 kg
LCOE:        0.0000000000 USD/MWh
Tip Defl.:   0.0000000000 m
Pitch PI gain inputs: omega_pc[0] = 0.200, zeta_pc[0] = 1.000
Floating Feedback: Kp_float = -10.000, ptfm_freq = 0.200
IPC Ki1p = 0.000e+00
IPC Ki1p = 0.000e+00
DEL(TwrBsMyt): 224454450.0820847154 Nm
rotor_overspeed: 7.5571429760 %
########################################
Nonlinear constraints
{'aeroelastic.rotor_overspeed': array([0.07557143]),
 'sse_tune.tune_rosco.PC_Ki': array([-0.12552134]),
 'sse_tune.tune_rosco.PC_Kp': array([-1.20562287])}

Linear constraints
None

Objectives
{'aeroelastic.DEL_TwrBsMyt': array([224454.45008208])}

Driver debug print for iter coord: rank0:NLopt_LN_COBYLA|2
----------------------------------------------------------
Design Vars
{'tune_rosco_ivc.Kp_float': array([-10.]),
 'tune_rosco_ivc.omega_pc': array([0.3, 0.2]),
 'tune_rosco_ivc.ptfm_freq': array([0.2]),
 'tune_rosco_ivc.zeta_pc': array([1., 1.])}

Warning: turbine_costsse_2015.py : TowerCost2015.compute : No tower mass provided.  Assuming $0 for tower cost, LCOE will be artificially low.
RuntimeWarning: /home/rmccabe/WEIS/weis/control/dac.py:734
invalid value encountered in double_scalars-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox
-----------------------------------------------------------------------------
Loading rotor performace data from text file: /home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT/Cp_Ct_Cq.IEA15MW.txt
Writing rotor performance text file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_0_Cp_Ct_Cq.txt
Writing new controller parameter file parameter file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_0_DISCON.IN.

 **************************************************************************************************
 OpenFAST

 Copyright (C) 2023 National Renewable Energy Laboratory
 Copyright (C) 2023 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

 OpenFAST-v1.1
 Compile Info:
  - Compiler: GCC version 9.4.0
  - Architecture: 64 bit
  - Precision: single
  - OpenMP: No
  - Date: Jan 30 2023
  - Time: 10:03:57
 Execution Info:
  - Date: 01/30/2023
  - Time: 10:37:59-0500

 OpenFAST input file heading:
     Generated with AeroElasticSE FAST driver

 Running ElastoDyn.
 Nodal outputs section of ElastoDyn input file not found or improperly formatted.
 Running AeroDyn.
 AD15 Nodal Outputs: Nodal output section of AeroDyn input file not found or improperly formatted.
 Skipping nodal outputs.
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 1, blade 1)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 2, blade 1)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 1, blade 2)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 2, blade 2)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 1, blade 3)
 Warning: Turning off Unsteady Aerodynamics because UA parameters are not included in airfoil
 (airfoil has likely has constant polars). (node 2, blade 3)
 Running InflowWind.

    Reading a 25x25 grid (297.47 m wide, 4.88281E-04 m to 297.47 m above ground) with a
    characteristic wind speed of 16.149 m/s. This full-field file was generated by TurbSim (from
    OpenFAST-v1.1) on 30-Jan-2023 at 10:34:43.

    Processed 204 time steps of 20-Hz full-field data (period of 10.2 seconds).
 Running HydroDyn.
  WARNING:   The random number generator in use differs from the original code provided by NREL.
  This pRNG uses 8 seeds instead of the 2 in the input file.
  Generating incident wave kinematics and current time history.
  Calculating second order sum frequency wave kinematics.
  Reading in WAMIT output with root name
  "/home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT-UMain
  eSemi/HydroData/IEA-15-240-RWT-UMaineSemi".
  Computing radiation impulse response functions and wave diffraction forces.
 Running MoorDyn.
   MD_Init: Opening MoorDyn input file:  ./IEA15_0_MoorDyn.dat
   Creating mooring system.   3 fairleads, 3 anchors, 0 connects.
    Finalizing ICs using dynamic relaxation.

   t=60  FairTen 1: 2.43587E+06, 2.44120E+06, 2.43677E+06                                             Fairlead tensions did not converge within TMaxIC=60 seconds.
 Running ServoDyn.
 Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux).
 Using legacy Bladed DLL interface.

 FAST_InitializeAll:HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use
 differs from the original code provided by NREL. This pRNG uses 8 seeds instead of the 2 in the
 HydroDyn input file.

  Time: 0 of 10.1 seconds.

------------------------------------------------------------------------------
Running ROSCO-v2.6.0
A wind turbine controller framework for public use in the scientific field
Developed in collaboration: National Renewable Energy Laboratory
                            Delft University of Technology, The Netherlands
------------------------------------------------------------------------------
Generator speed:    7.6 RPM, Pitch angle:  15.0 deg, Power:     0.0 kW, Est. wind Speed:  15.9 m/s

 FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption2:RotCalcOutput:BEMT_CalcOutput(node 3,
 blade 3):UA_CalcOutput:UA_BlendSteady:Temporarily turning off UA due to high angle of attack or
 low relative velocity. This warning will not be repeated though the condition may persist.


 FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption2:RotCalcOutput:BEMT_CalcOutput(node 50,
 blade 3):UA_CalcOutput:Mach number exceeds 0.3. Theory is invalid. This warning will not be
 repeated though the condition may persist.

Generator speed:    8.1 RPM, Pitch angle:   6.4 deg, Power: 16087.0 kW, Est. wind Speed:  13.1 m/s

  Total Real Time:       20.541 seconds
  Total CPU Time:        20.125 seconds
  Simulation CPU Time:   10.234 seconds
  Simulated Time:        10.1 seconds
  Time Ratio (Sim/CPU):  0.98687

  OpenFAST terminated normally.

Runtime:        IEA15_0.fst = 20.57 s
Writing rotor performance text file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_1_Cp_Ct_Cq.txt
Writing new controller parameter file parameter file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_1_DISCON.IN.

 **************************************************************************************************
 OpenFAST

 Copyright (C) 2023 National Renewable Energy Laboratory
 Copyright (C) 2023 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

 OpenFAST-v1.1
 Compile Info:
  - Compiler: GCC version 9.4.0
  - Architecture: 64 bit
  - Precision: single
  - OpenMP: No
  - Date: Jan 30 2023
  - Time: 10:03:57
 Execution Info:
  - Date: 01/30/2023
  - Time: 10:38:20-0500

 OpenFAST input file heading:
     Generated with AeroElasticSE FAST driver

 Running ElastoDyn.
 Nodal outputs section of ElastoDyn input file not found or improperly formatted.
 Running AeroDyn.
 AD15 Nodal Outputs: Nodal output section of AeroDyn input file not found or improperly formatted.
 Skipping nodal outputs.
 Running InflowWind.

    Reading a 25x25 grid (297.47 m wide, 4.88281E-04 m to 297.47 m above ground) with a
    characteristic wind speed of 47.094 m/s. This full-field file was generated by TurbSim (from
    OpenFAST-v1.1) on 30-Jan-2023 at 10:34:47.

    Processed 204 time steps of 20-Hz full-field data (period of 10.2 seconds).
 Running HydroDyn.
  WARNING:   The random number generator in use differs from the original code provided by NREL.
  This pRNG uses 8 seeds instead of the 2 in the input file.
  Generating incident wave kinematics and current time history.
  Calculating second order sum frequency wave kinematics.
  Reading in WAMIT output with root name
  "/home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT-UMain
  eSemi/HydroData/IEA-15-240-RWT-UMaineSemi".
  Computing radiation impulse response functions and wave diffraction forces.
 Running MoorDyn.
   MD_Init: Opening MoorDyn input file:  ./IEA15_1_MoorDyn.dat
   Creating mooring system.   3 fairleads, 3 anchors, 0 connects.
    Finalizing ICs using dynamic relaxation.

   t=60  FairTen 1: 2.43587E+06, 2.44120E+06, 2.43677E+06                                             Fairlead tensions did not converge within TMaxIC=60 seconds.
 Running ServoDyn.
 Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux).
 Using legacy Bladed DLL interface.

 FAST_InitializeAll:HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use
 differs from the original code provided by NREL. This pRNG uses 8 seeds instead of the 2 in the
 HydroDyn input file.

  Time: 0 of 10.1 seconds.

------------------------------------------------------------------------------
Running ROSCO-v2.6.0
A wind turbine controller framework for public use in the scientific field
Developed in collaboration: National Renewable Energy Laboratory
                            Delft University of Technology, The Netherlands
------------------------------------------------------------------------------
Generator speed:    0.0 RPM, Pitch angle:  90.0 deg, Power:     0.0 kW, Est. wind Speed:  47.1 m/s
Generator speed:    0.2 RPM, Pitch angle:  70.0 deg, Power:     0.0 kW, Est. wind Speed: -20.6 m/s

  Total Real Time:       19.566 seconds
  Total CPU Time:        18.703 seconds
  Simulation CPU Time:   9.0938 seconds
  Simulated Time:        10.1 seconds
  Time Ratio (Sim/CPU):  1.1107

  OpenFAST terminated normally.

Runtime:        IEA15_1.fst = 19.60 s
Writing rotor performance text file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_2_Cp_Ct_Cq.txt
Writing new controller parameter file parameter file: /home/rmccabe/WEIS/examples/02_control_opt/outputs/02_control_opt/IEA15_2_DISCON.IN.

 **************************************************************************************************
 OpenFAST

 Copyright (C) 2023 National Renewable Energy Laboratory
 Copyright (C) 2023 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

 OpenFAST-v1.1
 Compile Info:
  - Compiler: GCC version 9.4.0
  - Architecture: 64 bit
  - Precision: single
  - OpenMP: No
  - Date: Jan 30 2023
  - Time: 10:03:57
 Execution Info:
  - Date: 01/30/2023
  - Time: 10:38:41-0500

 OpenFAST input file heading:
     Generated with AeroElasticSE FAST driver

 Running ElastoDyn.
 Nodal outputs section of ElastoDyn input file not found or improperly formatted.
 Running AeroDyn.
 AD15 Nodal Outputs: Nodal output section of AeroDyn input file not found or improperly formatted.
 Skipping nodal outputs.
 Running InflowWind.

    Reading a 25x25 grid (297.47 m wide, 4.88281E-04 m to 297.47 m above ground) with a
    characteristic wind speed of 47.094 m/s. This full-field file was generated by TurbSim (from
    OpenFAST-v1.1) on 30-Jan-2023 at 10:34:55.

    Processed 204 time steps of 20-Hz full-field data (period of 10.2 seconds).
 Running HydroDyn.
  WARNING:   The random number generator in use differs from the original code provided by NREL.
  This pRNG uses 8 seeds instead of the 2 in the input file.
  Generating incident wave kinematics and current time history.
  Calculating second order sum frequency wave kinematics.
  Reading in WAMIT output with root name
  "/home/rmccabe/WEIS/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT-UMain
  eSemi/HydroData/IEA-15-240-RWT-UMaineSemi".
  Computing radiation impulse response functions and wave diffraction forces.
 Running MoorDyn.
   MD_Init: Opening MoorDyn input file:  ./IEA15_2_MoorDyn.dat
   Creating mooring system.   3 fairleads, 3 anchors, 0 connects.
    Finalizing ICs using dynamic relaxation.

   t=60  FairTen 1: 2.43587E+06, 2.44120E+06, 2.43677E+06                                             Fairlead tensions did not converge within TMaxIC=60 seconds.
 Running ServoDyn.
 Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux).
 Using legacy Bladed DLL interface.

 FAST_InitializeAll:HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use
 differs from the original code provided by NREL. This pRNG uses 8 seeds instead of the 2 in the
 HydroDyn input file.

  Time: 0 of 10.1 seconds.

------------------------------------------------------------------------------
Running ROSCO-v2.6.0
A wind turbine controller framework for public use in the scientific field
Developed in collaboration: National Renewable Energy Laboratory
                            Delft University of Technology, The Netherlands
------------------------------------------------------------------------------
Generator speed:    0.0 RPM, Pitch angle:  90.0 deg, Power:     0.0 kW, Est. wind Speed:  47.1 m/s
Generator speed:    0.2 RPM, Pitch angle:  70.0 deg, Power:     0.0 kW, Est. wind Speed: -20.6 m/s

  Total Real Time:       19.507 seconds
  Total CPU Time:        18.844 seconds
  Simulation CPU Time:   9.0625 seconds
  Simulated Time:        10.1 seconds
  Time Ratio (Sim/CPU):  1.1145

  OpenFAST terminated normally.

Runtime:        IEA15_2.fst = 19.54 s
WARNING: OpenFAST is run at a single wind speed. AEP cannot be estimated. Using average power instead.
########################################
Objectives
Turbine AEP: 0.0150820187 GWh
Blade Mass:  0.0000000000 kg
LCOE:        0.0000000000 USD/MWh
Tip Defl.:   0.0000000000 m
Pitch PI gain inputs: omega_pc[0] = 0.300, zeta_pc[0] = 1.000
Floating Feedback: Kp_float = -10.000, ptfm_freq = 0.200
IPC Ki1p = 0.000e+00
IPC Ki1p = 0.000e+00
DEL(TwrBsMyt): 224454450.0820847154 Nm
rotor_overspeed: 7.5571429760 %
########################################
Nonlinear constraints
{'aeroelastic.rotor_overspeed': array([0.07557143]),
 'sse_tune.tune_rosco.PC_Ki': array([-0.28242301]),
 'sse_tune.tune_rosco.PC_Kp': array([-1.83322957])}

Linear constraints
None

Objectives
{'aeroelastic.DEL_TwrBsMyt': array([224454.45008208])}

/home/rmccabe/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/visualization/opt_report/opt_report.py:119: DriverWarning:The optimizer report is not applicable for Driver type 'NLoptDriver', which does not support optimization
Run time: 265.874547

Expected behavior

Runs without warnings with a nonzero LCOE result.

Code versions

List versions only if relevant

  • Python 3.10.8
  • numpy 1.23.5
  • weis 1.1

Error due to removed feature of numpy (numpy.warnings)

Description

The execution of WEIS is not possible with new install.

With the most recent installation instruction of WEIS, the following versions are installed:
python=3.9.15
numpy=1.24.1

It seems that numpy 1.24.1 does not have numpy.warnings any more.
I checked with a bit older version of numpy (1.21.1), and it did not create any problem, since older versions have numpy.warnings.

Steps to reproduce issue

Please provide a minimum working example (MWE) if possible

  1. Install WEIS by following the installation instruction on the README.md file (from develop branch)
  2. Run any example. I ran example 06.

Current behavior

~/work/WEIS/examples/06_IEA-15-240-RWT develop*
weis-env ❯ python weis_driver.py     
Traceback (most recent call last):
  File "/Users/yhlee/work/WEIS/examples/06_IEA-15-240-RWT/weis_driver.py", line 2, in <module>
    from weis.glue_code.runWEIS     import run_weis
  File "/Users/yhlee/work/WEIS/weis/glue_code/runWEIS.py", line 4, in <module>
    from weis.glue_code.gc_LoadInputs     import WindTurbineOntologyPythonWEIS
  File "/Users/yhlee/work/WEIS/weis/glue_code/gc_LoadInputs.py", line 5, in <module>
    import weis.inputs as sch
  File "/Users/yhlee/work/WEIS/weis/inputs/__init__.py", line 1, in <module>
    from weis.inputs.validation import *
  File "/Users/yhlee/work/WEIS/weis/inputs/validation.py", line 3, in <module>
    import wisdem.inputs
  File "/Users/yhlee/work/WEIS/WISDEM/wisdem/__init__.py", line 1, in <module>
    from wisdem.glue_code.runWISDEM import run_wisdem
  File "/Users/yhlee/work/WEIS/WISDEM/wisdem/glue_code/runWISDEM.py", line 16, in <module>
    np.warnings.filterwarnings("ignore", category=np.VisibleDeprecationWarning)
  File "/Users/yhlee/opt/anaconda3/envs/weis-env/lib/python3.9/site-packages/numpy/__init__.py", line 284, in __getattr__
    raise AttributeError("module {!r} has no attribute "
AttributeError: module 'numpy' has no attribute 'warnings'

Expected behavior

Code versions

List versions only if relevant

  • Python 3.9.15 (anaconda)
  • Conda 22.11.1
  • Numpy 1.24.1

Anaconda openmpi petsc4py version issue on mac

The most recent version of petsc4py is compatible only up to openmpi 4.0.x while anaconda version of openmpi is currently 4.1.x. Due to this issue WEIS did not run correctly on the recently-updated conda environment.

Resolution:

conda install -y openmpi=4.0

will resolve the issue, and I believe this will not be a problem later, when petsc4py is updated to have compatibility with openmpi 4.1.x.

Automatic writing of various DLC input files

Description of feature

Already, Is there any Python based script available that can be used to run a set of DLC's at one shot. For example, a script that can run NTM simulations from 3m/s to 25 m/s (basically create the input files for such a simulation) along with the cases like idling, idling above cut out etc.

Potential solution

A Python script that can create multiple input files or point to various files like controllers, brakes etc. for each of the simulations.

Best,
Karthik

06_IEA-15-240-RWT error

Hi

when I run the 06 example, the error is occurred like this:

> Using weis.aeroelasticse in ROSCO_toolbox...
> Traceback (most recent call last):
>   File "/home/default/WEIS/examples/06_IEA-15-240-RWT/weis_driver.py", line 2, in <module>
>     from weis.glue_code.runWEIS     import run_weis
>   File "/home/default/WEIS/weis/glue_code/runWEIS.py", line 7, in <module>
>     from weis.glue_code.glue_code         import WindPark
>   File "/home/default/WEIS/weis/glue_code/glue_code.py", line 22, in <module>
>     from weis.frequency.raft_wrapper import RAFT_WEIS
>   File "/home/default/WEIS/weis/frequency/raft_wrapper.py", line 6, in <module>
>     from raft.omdao_raft import RAFT_OMDAO
>   File "/home/default/WEIS/RAFT/raft/__init__.py", line 3, in <module>
>     import raft.raft_model as model
>   File "/home/default/WEIS/RAFT/raft/raft_model.py", line 11, in <module>
>     import raft.raft_fowt  as fowt
>   File "/home/default/WEIS/RAFT/raft/raft_fowt.py", line 8, in <module>
>     import pyhams.pyhams     as ph
> ModuleNotFoundError: No module named 'pyhams'
> 

Some examples do not run properly (getting error related to class FASTLoadCases)

Description

Hello, I am interested in using WEIS as a tool to generate and evaluate floating offshore turbine models/controllers based on design parameters (e.g., design parameters for blade shape, parameters for IPC controller), such that I can test design exploration/optimization methods.

As a starting point, I am currently playing with the examples included with WEIS, but some examples do not run properly with the error related to class FASTLoadCases. The examples mostly fail in the functions fast_init and initialize_routines where input files are organized, so I believe the main reasons from mismatching between the input formats. I wonder if something is missing in the official installation procedure, or if I need to use a different branch to resolve the issue. It would be also helpful to know what is the best environment (WSL, Linux, or macOS) in terms of compatibility.

Steps to reproduce issue

The list of the examples I found the issue. I modified modeling_option to have use_exe: False to find where I get the errors, but no additional modification has been made.

  1. 06_IEA-15-240-RWT/weis_driver_tower_DVs.py
  2. 09_design_of_experiments/doe_openfast.py
  3. 11_use_bem/weis_driver.py
  4. 12_linearization/doe_driver.py
  5. 14_level2ccd/weis_driver.py

Current behavior

The followings are the errors I got from each example:

  1. 06_IEA-15-240-RWT/weis_driver_tower_DVs.py
Traceback (most recent call last):
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/drivers/doe_driver.py", line 223, in _run_case
    self._problem().model.run_solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 3994, in run_solve_nonlinear
    self._solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/group.py", line 2560, in _solve_nonlinear
    self._nonlinear_solver._solve_with_cache_check()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py", line 26, in _solve_with_cache_check
    self.solve()  # don't use caching
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py", line 45, in solve
    self._gs_iter()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/solver.py", line 787, in _gs_iter
    subsys._solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 311, in _solve_nonlinear
    self._compute_wrapper()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 269, in _compute_wrapper
    with self._call_user_function('compute'):
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 2281, in _call_user_function
    raise err_type(
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 2275, in _call_user_function
    yield
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 285, in _compute_wrapper
    self.compute(*args)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/openmdao_openfast.py", line 605, in compute
    summary_stats, extreme_table, DELs, Damage, case_list, case_name, chan_time, dlc_generator  = self.run_FAST(inputs, discrete_inputs, fst_vt)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/openmdao_openfast.py", line 2051, in run_FAST
    summary_stats, extreme_table, DELs, Damage, chan_time = fastBatch.run_serial()
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/runFAST_pywrapper.py", line 361, in run_serial
    _name, _ss, _et, _dl, _dam, _ct = evaluate(c)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/runFAST_pywrapper.py", line 480, in evaluate
    return fast.execute()
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/runFAST_pywrapper.py", line 184, in execute
    openfastlib.fast_run()
  File "/mnt/c/CoDesignTurbineBlade/OpenFAST/glue-codes/python/openfast_library.py", line 226, in fast_run
    self.fast_init()
  File "/mnt/c/CoDesignTurbineBlade/OpenFAST/glue-codes/python/openfast_library.py", line 140, in fast_init
    raise RuntimeError(f"Error {_error_status.value}: {_error_message.value}")
RuntimeError: 'aeroelastic' <class FASTLoadCases>: Error calling compute(), Error 4: b'Error allocating turbine data.'
  1. 09_design_of_experiments/doe_openfast.py
Traceback (most recent call last):
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/drivers/doe_driver.py", line 223, in _run_case
    self._problem().model.run_solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 3994, in run_solve_nonlinear
    self._solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/group.py", line 2560, in _solve_nonlinear
    self._nonlinear_solver._solve_with_cache_check()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py", line 26, in _solve_with_cache_check
    self.solve()  # don't use caching
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py", line 45, in solve
    self._gs_iter()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/solver.py", line 787, in _gs_iter
    subsys._solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 311, in _solve_nonlinear
    self._compute_wrapper()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 269, in _compute_wrapper
    with self._call_user_function('compute'):
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 2281, in _call_user_function
    raise err_type(
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 2275, in _call_user_function
    yield
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 285, in _compute_wrapper
    self.compute(*args)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/openmdao_openfast.py", line 576, in compute
    fst_vt = self.update_FAST_model(fst_vt, inputs, discrete_inputs)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/openmdao_openfast.py", line 1235, in update_FAST_model
    fst_vt['SubDyn']['Rct_SoilFile'] = [""]*fst_vt['SubDyn']['NReact']
KeyError: "'aeroelastic' <class FASTLoadCases>: Error calling compute(), 'NReact'"
  1. 11_use_bem/weis_driver.py
Traceback (most recent call last):
  File "/mnt/c/CoDesignTurbineBlade/examples_test/11_use_bem/weis_driver.py", line 27, in <module>
    run()
  File "/mnt/c/CoDesignTurbineBlade/examples_test/11_use_bem/weis_driver.py", line 16, in run
    wt_opt, modeling_options, opt_options = run_weis(fname_wt_input, fname_modeling_options, fname_analysis_options)
  File "/mnt/c/CoDesignTurbineBlade/weis/glue_code/runWEIS.py", line 195, in run_weis
    wt_opt.run_model()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/problem.py", line 811, in run_model
    self.model.run_solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 3994, in run_solve_nonlinear
    self._solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/group.py", line 2560, in _solve_nonlinear
    self._nonlinear_solver._solve_with_cache_check()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py", line 26, in _solve_with_cache_check
    self.solve()  # don't use caching
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py", line 45, in solve
    self._gs_iter()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/solver.py", line 787, in _gs_iter
    subsys._solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 311, in _solve_nonlinear
    self._compute_wrapper()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 269, in _compute_wrapper
    with self._call_user_function('compute'):
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 2281, in _call_user_function
    raise err_type(
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 2275, in _call_user_function
    yield
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 285, in _compute_wrapper
    self.compute(*args)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/openmdao_openfast.py", line 605, in compute
    summary_stats, extreme_table, DELs, Damage, case_list, case_name, chan_time, dlc_generator  = self.run_FAST(inputs, discrete_inputs, fst_vt)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/openmdao_openfast.py", line 2051, in run_FAST
    summary_stats, extreme_table, DELs, Damage, chan_time = fastBatch.run_serial()
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/runFAST_pywrapper.py", line 361, in run_serial
    _name, _ss, _et, _dl, _dam, _ct = evaluate(c)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/runFAST_pywrapper.py", line 480, in evaluate
    return fast.execute()
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/runFAST_pywrapper.py", line 184, in execute
    openfastlib.fast_run()
  File "/mnt/c/CoDesignTurbineBlade/OpenFAST/glue-codes/python/openfast_library.py", line 226, in fast_run
    self.fast_init()
  File "/mnt/c/CoDesignTurbineBlade/OpenFAST/glue-codes/python/openfast_library.py", line 156, in fast_init
    raise RuntimeError(f"Error {_error_status.value}: {_error_message.value}")
RuntimeError: 'aeroelastic' <class FASTLoadCases>: Error calling compute(), Error 4: b'FAST_InitializeAll:HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use differs from the original code provided by NREL. This pRNG uses 8 seeds instead of the 2 in the HydroDyn input file.\nHydroDyn_Init:WAMIT_Init:OpenFInpFile:The input file, "/mnt/c/CoDesignTurbineBlade/examples_test/11_use_bem/temp/NREL5MW_OC3_spar/BEM/Output/Wamit_format/Buoy.hst", was not found.'
  1. 12_linearization/doe_driver.py
Traceback (most recent call last):
  File "/mnt/c/CoDesignTurbineBlade/examples_test/12_linearization/doe_driver.py", line 13, in <module>
    run()
  File "/mnt/c/CoDesignTurbineBlade/examples_test/12_linearization/doe_driver.py", line 10, in run
    wt_opt, modeling_options, analysis_options = run_weis(fname_wt_input, fname_modeling_options, fname_analysis_options)
  File "/mnt/c/CoDesignTurbineBlade/weis/glue_code/runWEIS.py", line 195, in run_weis
    wt_opt.run_model()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/problem.py", line 811, in run_model
    self.model.run_solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 3994, in run_solve_nonlinear
    self._solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/group.py", line 2560, in _solve_nonlinear
    self._nonlinear_solver._solve_with_cache_check()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py", line 26, in _solve_with_cache_check
    self.solve()  # don't use caching
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py", line 45, in solve
    self._gs_iter()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/solver.py", line 787, in _gs_iter
    subsys._solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 311, in _solve_nonlinear
    self._compute_wrapper()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 269, in _compute_wrapper
    with self._call_user_function('compute'):
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 2281, in _call_user_function
    raise err_type(
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 2275, in _call_user_function
    yield
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 285, in _compute_wrapper
    self.compute(*args)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/openmdao_openfast.py", line 605, in compute
    summary_stats, extreme_table, DELs, Damage, case_list, case_name, chan_time, dlc_generator  = self.run_FAST(inputs, discrete_inputs, fst_vt)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/openmdao_openfast.py", line 2051, in run_FAST
    summary_stats, extreme_table, DELs, Damage, chan_time = fastBatch.run_serial()
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/runFAST_pywrapper.py", line 361, in run_serial
    _name, _ss, _et, _dl, _dam, _ct = evaluate(c)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/runFAST_pywrapper.py", line 480, in evaluate
    return fast.execute()
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/runFAST_pywrapper.py", line 183, in execute
    openfastlib = FastLibAPI(self.FAST_lib, os.path.abspath(os.path.basename(writer.FAST_InputFileOut)))
  File "/mnt/c/CoDesignTurbineBlade/OpenFAST/glue-codes/python/openfast_library.py", line 29, in __init__
    self._initialize_routines()
  File "/mnt/c/CoDesignTurbineBlade/OpenFAST/glue-codes/python/openfast_library.py", line 58, in _initialize_routines
    self.FAST_AllocateTurbines.argtypes = [
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/ctypes/__init__.py", line 387, in __getattr__
    func = self.__getitem__(name)
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/ctypes/__init__.py", line 392, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: 'aeroelastic' <class FASTLoadCases>: Error calling compute(), python: undefined symbol: FAST_AllocateTurbines
  1. 14_level2ccd/weis_driver.py
Traceback (most recent call last):
  File "/mnt/c/CoDesignTurbineBlade/examples_test/14_level2ccd/weis_driver.py", line 14, in <module>
    wt_opt, modeling_options, opt_options = run_weis(fname_wt_input, fname_modeling_options, fname_analysis_options)
  File "/mnt/c/CoDesignTurbineBlade/weis/glue_code/runWEIS.py", line 193, in run_weis
    wt_opt.run_driver()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/utils/hooks.py", line 132, in execute_hooks
    ret = f(*args, **kwargs)
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/problem.py", line 857, in run_driver
    return self.driver.run()
  File "/mnt/c/CoDesignTurbineBlade/WISDEM/wisdem/optimization_drivers/nlopt_driver.py", line 234, in run
    model.run_solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 3994, in run_solve_nonlinear
    self._solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/group.py", line 2560, in _solve_nonlinear
    self._nonlinear_solver._solve_with_cache_check()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py", line 26, in _solve_with_cache_check
    self.solve()  # don't use caching
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py", line 45, in solve
    self._gs_iter()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/solvers/solver.py", line 787, in _gs_iter
    subsys._solve_nonlinear()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 311, in _solve_nonlinear
    self._compute_wrapper()
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 269, in _compute_wrapper
    with self._call_user_function('compute'):
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 2281, in _call_user_function
    raise err_type(
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/system.py", line 2275, in _call_user_function
    yield
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/core/explicitcomponent.py", line 285, in _compute_wrapper
    self.compute(*args)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/openmdao_openfast.py", line 605, in compute
    summary_stats, extreme_table, DELs, Damage, case_list, case_name, chan_time, dlc_generator  = self.run_FAST(inputs, discrete_inputs, fst_vt)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/openmdao_openfast.py", line 2051, in run_FAST
    summary_stats, extreme_table, DELs, Damage, chan_time = fastBatch.run_serial()
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/runFAST_pywrapper.py", line 361, in run_serial
    _name, _ss, _et, _dl, _dam, _ct = evaluate(c)
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/runFAST_pywrapper.py", line 480, in evaluate
    return fast.execute()
  File "/mnt/c/CoDesignTurbineBlade/weis/aeroelasticse/runFAST_pywrapper.py", line 183, in execute
    openfastlib = FastLibAPI(self.FAST_lib, os.path.abspath(os.path.basename(writer.FAST_InputFileOut)))
  File "/mnt/c/CoDesignTurbineBlade/OpenFAST/glue-codes/python/openfast_library.py", line 29, in __init__
    self._initialize_routines()
  File "/mnt/c/CoDesignTurbineBlade/OpenFAST/glue-codes/python/openfast_library.py", line 58, in _initialize_routines
    self.FAST_AllocateTurbines.argtypes = [
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/ctypes/__init__.py", line 387, in __getattr__
    func = self.__getitem__(name)
  File "/home/penelroid/anaconda3/envs/weis-env/lib/python3.10/ctypes/__init__.py", line 392, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: 'aeroelastic' <class FASTLoadCases>: Error calling compute(), python: undefined symbol: FAST_AllocateTurbines

Expected behavior

Should run without error

Code versions

  • The latest version from main branch (as of 10/18/2022), following the official install procedure
  • Tested with both Python 3.9 and 3.10
  • Tested with WSL (Ubuntu 22.04.1 LTS) as well as macOS 10.13.6

NLinTimes not Respected

Description

When the Linearize and the TrimCase flags are turned on, the Python call to OpenFAST does not respect the NLinTimes input, and runs never-ending linearization

Steps to reproduce issue

  1. Compile this repo https://github.nrel.gov/pbortolo/BDstab
  2. Change this WS to be nonzero (say 5 m/s) https://github.nrel.gov/pbortolo/BDstab/blob/0476fa12a34fa0b9ecaaf82d7fb13fb5f0dff1dd/run_OF/BAR0_ED.py#L24
  3. Run this script https://github.nrel.gov/pbortolo/BDstab/blob/master/run_OF/BAR0_ED.py
  4. OF will not stop at NLinTimes 12 https://github.nrel.gov/pbortolo/BDstab/blob/0476fa12a34fa0b9ecaaf82d7fb13fb5f0dff1dd/run_OF/BAR0_ED.py#L30
  5. Kill the job and run the .fst with a system call to OF from a terminal
  6. OF will stop after 12 linearization

Current behavior

The python call to OF is broken

Expected behavior

OF runs the requested number of linearization

Code versions

Latest WEIS develop

Minimum system requirements

Hello,

Inexperienced coder/GitHub user here, so please excuse any missing information or basic language (and keep any questions/answers dumbed down, please!).

I am trying to set up the WEIS develop branch on a WSL using Conda version 23.1.0, Python version 3.10, on a Windows 10 machine with 16GB RAM. The 'Solving environment' step of the conda env create --name weis-env -f https://raw.githubusercontent.com/WISDEM/WEIS/develop/environment.yml command keeps getting killed. I finally tried with only the WSL and Task Manager open to minimize memory use and see what's happening (no changes to backend functions), and saw that a couple minutes into the process, the memory is around 81% utilization, but the Disk capped out from the 'System' process and shortly thereafter the process was Killed.

I have tried running the command from Issue #171 without the pyoptsparse item, and it completed successfully. I have also then tried running the same command with only the pyoptsparse item and it also completed successfully, so that does not seem to be where the issue is, on the surface.

Are there minimum system requirements for this package that my computer doesn't meet, or is something else happening? I have hit the limits of my troubleshooting capabilities given the lack of any useful error message. Any thoughts on what's going wrong?

Runtime errors in Main branch

Description

Errors related to Numpy occur when attempting to run example 07_te_flaps within WEIS on the main branch.

Steps to reproduce issue

  1. Install main branch of weis per the readme instructions
  2. edit WEIS/examples/07_te_flaps/modeling_options.yaml to point to local xfoil executable
  3. call python dac_driver.py while in the WEIS/examples/07_te_flaps directory

Current behavior

agmotes@x86_64-apple-darwin13 07_te_flaps % python dac_driver.py
Traceback (most recent call last):
File "/Users/agmotes/gitRepos/WEIS-main/examples/07_te_flaps/dac_driver.py", line 1, in
from weis.glue_code.runWEIS import run_weis
File "/Users/agmotes/gitRepos/WEIS-main/weis/glue_code/runWEIS.py", line 4, in
from weis.glue_code.gc_LoadInputs import WindTurbineOntologyPythonWEIS
File "/Users/agmotes/gitRepos/WEIS-main/weis/glue_code/gc_LoadInputs.py", line 5, in
import weis.inputs as sch
File "/Users/agmotes/gitRepos/WEIS-main/weis/inputs/init.py", line 1, in
from weis.inputs.validation import *
File "/Users/agmotes/gitRepos/WEIS-main/weis/inputs/validation.py", line 3, in
import wisdem.inputs
File "/Users/agmotes/gitRepos/WEIS-main/WISDEM/wisdem/init.py", line 1, in
from wisdem.glue_code.runWISDEM import run_wisdem
File "/Users/agmotes/gitRepos/WEIS-main/WISDEM/wisdem/glue_code/runWISDEM.py", line 16, in
np.warnings.filterwarnings("ignore", category=np.VisibleDeprecationWarning)
File "/Users/agmotes/opt/anaconda3/envs/weis-env-main/lib/python3.10/site-packages/numpy/init.py", line 284, in getattr
raise AttributeError("module {!r} has no attribute "
AttributeError: module 'numpy' has no attribute 'warnings'. Did you mean: 'hanning'?

Expected behavior

Successful run with data

Enabling YawDOF for a monopile requires some PtfmYIner

Description

Need to set some dummy value for PtfmYIner. Refer to Roger's email on 9/15/22 for fix.

Steps to reproduce issue

Please provide a minimum working example (MWE) if possible

Current behavior

Expected behavior

Code versions

List versions only if relevant

  • Python

MKL issue on Eagle

Description

When running WEIS with the OpenFAST library, there is an MKL error. More details on this issue can be found in #152 .

A workaround is to use the executable by setting the following modeling options:

General:
    openfast_configuration:
        use_exe: True

WEIS/WISDEM not working

WISDEM included in the WEIS is not recognized.

After installing WEIS using
python setup.py develop
WISDEM is not recognized:

python
import wisdem
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'wisdem'

I tried to install WISDEM separately as:

cd WEIS/WISDEM
python setup.py develop

and exhibited following error after several warnings:

collect2: error: ld returned 1 exit status
error: Command "/Users/yonghoonlee/opt/anaconda3/envs/weis-env/bin/x86_64-apple-darwin13.4.0-gfortran -Wall -g -Wall -g -undefined dynamic_lookup -bundle -Wl,-pie -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib -L/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/wisdem/ccblade/_bemmodule.o build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/wisdem/ccblade/fortranobject.o build/temp.macosx-10.9-x86_64-3.8/wisdem/ccblade/src/bem.o -L/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/gcc/x86_64-apple-darwin13.4.0/7.3.0 -L/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/gcc/x86_64-apple-darwin13.4.0/7.3.0/../../.. -L/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/gcc/x86_64-apple-darwin13.4.0/7.3.0/../../.. -lgfortran -o wisdem/ccblade/_bem.cpython-38-darwin.so" failed with exit status 1

Linearization capability is broken in the current WEIS version.

When I try to run LinearFAST or my own linearization code, OpenFAST linearization exhibit segmentation faults with ????? messages. Since I have not been updating WEIS for long time, and recently updated, I do not know when it was broken. Would you be able to check if something is wrong in LinearFAST, @dzalkind ? Steady state calculation works well, but when it comes to the linearization stage, after TRIM condition reaches, segmentation fault occurs. Thank you.

Optimizers included in the pyoptsparse not working

Description

Optimizers (SLSQP, etc.) included in the pyoptsparse are not working.
When I install pyoptsparse separately (from official Michigan MDOLab's version) all the solvers work correctly.
However, pyoptsparse included in the WEIS does not work.

Steps to reproduce issue

  1. Install WEIS develop branch by running ```python setup.py develop'''
  2. Run examples included in the /pyoptsparse/examples and none of them works. Since SLSQP is included by default, I primarily tested with SLSQP.
  3. Note, the purpose of testing pyoptsparse included in the WEIS is to include IPOPT solver using the pyoptsparse. Currently, UIUC's development of benchmark cases heavily rely on IPOPT. Since WEIS already includes pyoptsparse, I am hoping that we can use the IPOPT through the pyoptsparse by adding IPOPT capability. However, it seems that pyoptsparse itself is currently not working well.

Current behavior

It fails to run compiled optimizers.

Expected behavior

It needs to run compiled optimizers.

Install issue

Hi,

When I install the WEIS following the guide, the error is occured like this.

I typed this command
conda install -y cmake cython control dill git jsonschema make matplotlib-base numpy openmdao openpyxl pandas pip pyoptsparse pytest python-benedict pyyaml ruamel_yaml scipy setuptools simpy slycot smt sortedcontainers swig

the error is

Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.

PackagesNotFoundError: The following packages are not available from current channels:

  - pyoptsparse

Current channels:

  - https://conda.anaconda.org/conda-forge/win-64
  - https://conda.anaconda.org/conda-forge/noarch
  - https://repo.anaconda.com/pkgs/main/win-64
  - https://repo.anaconda.com/pkgs/main/noarch
  - https://repo.anaconda.com/pkgs/free/win-64
  - https://repo.anaconda.com/pkgs/free/noarch
  - https://repo.anaconda.com/pkgs/r/win-64
  - https://repo.anaconda.com/pkgs/r/noarch
  - https://repo.anaconda.com/pkgs/msys2/win-64
  - https://repo.anaconda.com/pkgs/msys2/noarch

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.

How can I solve this?

06_IEA-15-240-RWT Errors

Hello, all

In example 06, If I run python weis_driver.py, it works well, but if I try python weis_driver_TMDs.py, then following errors occur. Can you help me to resolve this problem?

(weis-env) hkim@WSS4HZ3291:~/WEIS/examples/06_IEA-15-240-RWT$ python weis_driver_TMDs.py
Using weis.aeroelasticse in ROSCO_toolbox...
Found existing potential model: examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT-UMaineSemi/HydroData/IEA-15-240-RWT-UMaineSemi
   - Trying to use this instead of running PyHAMS.
 Traceback (most recent call last):
   File "/home/hkim/WEIS/WISDEM/wisdem/glue_code/gc_PoseOptimization.py", line 370, in set_driver
     from wisdem.optimization_drivers.nlopt_driver import NLoptDriver
   File "/home/hkim/WEIS/WISDEM/wisdem/optimization_drivers/nlopt_driver.py", line 12, in <module>
     from openmdao.utils.general_utils import simple_warning
 ImportError: cannot import name 'simple_warning' from 'openmdao.utils.general_utils' (/home/hkim/anaconda3/envs/weis-env/lib/python3.10/site-packages/openmdao/utils/general_utils.py)
 
 During handling of the above exception, another exception occurred:
 
 Traceback (most recent call last):
   File "/home/hkim/WEIS/examples/06_IEA-15-240-RWT/weis_driver_TMDs.py", line 15, in <module>
     wt_opt, modeling_options, opt_options = run_weis(fname_wt_input, fname_modeling_options, fname_analysis_options)
   File "/home/hkim/WEIS/weis/glue_code/runWEIS.py", line 129, in run_weis
     wt_opt = myopt.set_driver(wt_opt)
   File "/home/hkim/WEIS/WISDEM/wisdem/glue_code/gc_PoseOptimization.py", line 372, in set_driver
     raise ImportError(
 ImportError: You requested an optimization method from NLopt, but need to first install NLopt to use this method.

I installed WEIS in my work station following your instructions (Step 1, 2, and 3 on WSL). I am using WSL.
In step1, if I write a line as below, an error occurs, so I removed "python=3.9". Without "python=3.9", it works well.

conda env create --name weis-env -f https://raw.githubusercontent.com/WISDEM/WEIS/main/environment.yml python=3.9
->
conda env create --name weis-env -f https://raw.githubusercontent.com/WISDEM/WEIS/main/environment.yml

I think the environment is created using python 3.10.

(weis-env) hkim@WSS4HZ3291:~/WEIS/examples/06_IEA-15-240-RWT$ python --version
Python 3.10.10

step1
conda env create --name weis-env -f https://raw.githubusercontent.com/WISDEM/WEIS/main/environment.yml python=3.9
conda activate weis-env # (if this does not work, try source activate weis-env)
sudo apt update # (WSL only, assuming Ubuntu)

step2
conda config --add channels conda-forge
sudo apt install gcc g++ gfortran libblas-dev liblapack-dev -y # (WSL only, assuming Ubuntu)

step3
git clone https://github.com/WISDEM/WEIS.git
cd WEIS
python setup.py develop # (The common "pip install -e ." will not work here)

Thank you for your help!

Revise how WISDEM and WEIS schemas are combined or error-checked for merit_figures

Description

Currently, the merit_figures from WISDEM are not merged properly with the merit_figures from WEIS within the yaml schemas.
This has to do with the way the nested structures are not folded together when using jsonschema.
We could resolve this via the schemas or use error-checking at the Python level.

Steps to reproduce issue

If you try to use a merit_figure from the WISDEM level that's not in the WEIS analysis schema, you'll get an error.

Current behavior

Errors when trying to use merit_figure unique to WISDEM.

Expected behavior

Can use any merit_figure from either WISDEM or WEIS schemas within WEIS.

Please teach me about WEIS environment debugging.

I'm new to WEIS and have no prior knowledge of python or wsl, so it's not clear if I've finished activating the Anaconda environment (weis-env) under wsl this way.
I'm not sure if I've finished activating the Anaconda environment (weis-env) under wsl this way.
fde7c09b4cd44cec48a8903915039fa
When I run the calculation example, I also get this Error, No module.
image
Can anybody provide some information about WEIS runtime environment configuration or something like that?
Thanks,
Best regards.

Unable to install all packages for WEIS

Hi WEIS developers:
I was following the installation steps, but I'm stuck at installing the pyoptsparse package for some reason. I'm getting this message:

"PackagesNotFoundError: The following packages are not available from current channels:

To search for alternate channels that may provide the conda package you're
looking for, navigate to

https://anaconda.org"

When I check the packages in my environment, not even other packages were installed. Your help is deeply appreciated.

Thank you.

Develop branch readme instructions unclear

In the readme, step 1 says to setup the conda environment and install some packages, however, the way it is currently written, the following error occurs:

PackagesNotFoundError: The following packages are not available from current channels: - petsc4py

Upon further inspection of the main branch instructions, a missing command is needed in order to allow conda to install petsc4py:

conda config --add channels conda-forge

This is included in the main branch readme, but is missing from the develop branch readme.

GPL-v3 module usable?

WEIS is licensed under Apache license and is not compatible to include GPL-v3 code inside it.
However, in my understanding, just importing modules developed under GPL-v3 does not change WEIS itself.
So, I would like to see if using python module that is developed under GPL-v3 is possible under its license.
I would be more comfortable using LGPL, but GPL is more trickier.

OpenFAST Python Library Error Reporting

Description

When using the OpenFAST Python library, some errors are not reported.

Steps to reproduce issue

Please provide a minimum working example (MWE) if possible

  1. Set PtfmMass_Init: 0
  2. Set volume: 1.5e3( ) ( )
  3. Run python examples/03_NREL5MW_OC3_spar/weis_driver.py

Current behavior

The FOWT sinks and the OpenFAST library returns Error 0: b''

Expected behavior

If you use the executable: (set via the modeling options)

openfast:
    file_management:
        FAST_namingOut:    NREL5MW_OC3_spar         # Name of the OpenFAST output files
        FAST_runDirectory: fast_outputs         # Path to folder with the OpenFAST output files
        use_exe: True

OpenFAST returns:


 FAST_Solution:FAST_AdvanceStates:SolveOption2c_Inp2AD_SrvD:InflowWind_CalcOutput:CalcOutput:IfW_FF
 Wind_CalcOutput [position=(0.65225, -6.76065E-02, 0.98863)  in wind-file coordinates]: FF wind
 array boundaries violated. Grid too small in Z direction (height (Z=0.98863 m) is below the grid
 and no tower points are defined).

ROSCO Debug output shows some NaNs and Infitities with run_DLC.py test

I tested with the run_DLC.py from example/aeroelasticse folder.

For DLC 6.1 and 6.3, some of the ROSCO debug output variables show NaNs and Infinities in RO.dbg files.
I am not sure if these are anticipated output (since they are extreme wind speed cases), or simulation failures.

Also, could you confirm if it is right method to run testing script following way:

mpirun -n 8 python run_DLC.py

I was a bit concerned if it is running duplicated scripts for creating 8 identical simulations, since the computation time did not significantly reduced even with 8 threads.

Installation on WSL

I am struggling to install WEIS on Ubuntu with WSL.

Following the instructions in the readme document I get the following error report generated when creating the environment.
conda env create --name weis-env -f https://raw.githubusercontent.com/WISDEM/WEIS/main/environment.yml python=3.9

I am new to WSL and am unsure what this issue might be - is anyone able to help?

Error message below...

Collecting package metadata (repodata.json): failed

>>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

Traceback (most recent call last):
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/requests/adapters.py", line 456, in send
    conn = self.get_connection(request.url, proxies)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/requests/adapters.py", line 345, in get_connection
    proxy = prepend_scheme_if_needed(proxy, "http")
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/requests/utils.py", line 988, in prepend_scheme_if_needed
    parsed = parse_url(url)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/urllib3/util/url.py", line 397, in parse_url
    return six.raise_from(LocationParseError(source_url), None)
  File "<string>", line 3, in raise_from
urllib3.exceptions.LocationParseError: Failed to parse: https://id:pw@address:port

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/exceptions.py", line 1132, in __call__
    return func(*args, **kwargs)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda_env/cli/main.py", line 78, in do_call
    exit_code = getattr(module, func_name)(args, parser)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/notices/core.py", line 121, in wrapper
    return func(*args, **kwargs)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda_env/cli/main_create.py", line 152, in execute
    result[installer_type] = installer.install(prefix, pkg_specs, args, env)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda_env/installers/conda.py", line 53, in install
    unlink_link_transaction = solver.solve_for_transaction(
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/core/solve.py", line 134, in solve_for_transaction
    unlink_precs, link_precs = self.solve_for_diff(update_modifier, deps_modifier,
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/core/solve.py", line 177, in solve_for_diff
    final_precs = self.solve_final_state(update_modifier, deps_modifier, prune, ignore_pinned,
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/core/solve.py", line 282, in solve_final_state
    ssc = self._collect_all_metadata(ssc)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/common/io.py", line 84, in decorated
    return f(*args, **kwds)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/core/solve.py", line 449, in _collect_all_metadata
    index, r = self._prepare(prepared_specs)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/core/solve.py", line 1064, in _prepare
    reduced_index = get_reduced_index(self.prefix, self.channels,
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/core/index.py", line 267, in get_reduced_index
    new_records = SubdirData.query_all(spec, channels=channels, subdirs=subdirs,
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/core/subdir_data.py", line 169, in query_all
    result = tuple(chain.from_iterable(executor.map(subdir_query, channel_urls)))
  File "/home/georgee/anaconda3/lib/python3.10/concurrent/futures/_base.py", line 621, in result_iterator
    yield _result_or_cancel(fs.pop())
  File "/home/georgee/anaconda3/lib/python3.10/concurrent/futures/_base.py", line 319, in _result_or_cancel
    return fut.result(timeout)
  File "/home/georgee/anaconda3/lib/python3.10/concurrent/futures/_base.py", line 458, in result
    return self.__get_result()
  File "/home/georgee/anaconda3/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
    raise self._exception
  File "/home/georgee/anaconda3/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/core/subdir_data.py", line 158, in subdir_query
    return tuple(
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/core/subdir_data.py", line 174, in query
    self.load()
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/core/subdir_data.py", line 264, in load
    _internal_state = self._load()
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/core/subdir_data.py", line 366, in _load
    raw_repodata_str = self._repo.repodata(cache.state)  # type: ignore
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/conda/gateways/repodata/__init__.py", line 122, in repodata
    response: Response = session.get(
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/requests/sessions.py", line 600, in get
    return self.request("GET", url, **kwargs)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/requests/sessions.py", line 587, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/requests/sessions.py", line 701, in send
    r = adapter.send(request, **kwargs)
  File "/home/georgee/anaconda3/lib/python3.10/site-packages/requests/adapters.py", line 458, in send
    raise InvalidURL(e, request=request)
requests.exceptions.InvalidURL: Failed to parse: https://id:pw@address:port

$ /home/georgee/anaconda3/bin/conda-env create --name weis-env -f mnt/c/users/georgee/NEW_weis_env.yml

environment variables:
CIO_TEST=
CONDA_AUTO_UPDATE_CONDA=false
CONDA_DEFAULT_ENV=base
CONDA_EXE=/home/georgee/anaconda3/bin/conda
CONDA_PREFIX=/home/georgee/anaconda3
CONDA_PROMPT_MODIFIER=(base)
CONDA_PYTHON_EXE=/home/georgee/anaconda3/bin/python
CONDA_ROOT=/home/georgee/anaconda3
CONDA_SHLVL=1
CURL_CA_BUNDLE=
LD_PRELOAD=
PATH=/home/georgee/anaconda3/bin:/home/georgee/anaconda3/condabin:/usr/loca
l/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lo
cal/games:/usr/lib/wsl/lib:/mnt/c/Program Files/Common
Files/Oracle/Java/javapath:/mnt/c/Program Files (x86)/Common
Files/Intel/Shared Libraries/redist/ia32/mpirt:/mnt/c/Program Files
(x86)/Common Files/Intel/Shared
Libraries/redist/ia32/compiler:/mnt/c/Program Files (x86)/Common
Files/Intel/Shared Files/fortran/bin/ia32:/mnt/c/WINDOWS/system32:/mnt
/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/Window
sPowerShell/v1.0:/mnt/c/WINDOWS/System32/OpenSSH:/mnt/c/Program Files
(x86)/Microsoft SQL Server/160/DTS/Binn:/mnt/c/Program Files/Azure
Data Studio/bin:/mnt/c/Users/georgee/AppData/Local/Microsoft/WindowsAp
ps:/mnt/c/Program Files/CMake/bin:/mnt/c/Users/georgee/AppData/Local/P
rograms/Git/cmd:/mnt/c/MinGW/bin:/snap/bin
REQUESTS_CA_BUNDLE=
SSL_CERT_FILE=

 active environment : base
active env location : /home/georgee/anaconda3
        shell level : 1
   user config file : /home/georgee/.condarc

populated config files : /home/georgee/.condarc
conda version : 23.3.1
conda-build version : 3.24.0
python version : 3.10.9.final.0
virtual packages : __archspec=1=x86_64
__cuda=11.7=0
__glibc=2.35=0
__linux=5.15.90.1=0
__unix=0=0
base environment : /home/georgee/anaconda3 (writable)
conda av data dir : /home/georgee/anaconda3/etc/conda
conda av metadata url : None
channel URLs : https://conda.anaconda.org/conda-forge/linux-64
https://conda.anaconda.org/conda-forge/noarch
https://repo.anaconda.com/pkgs/main/linux-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/linux-64
https://repo.anaconda.com/pkgs/r/noarch
package cache : /home/georgee/anaconda3/pkgs
/home/georgee/.conda/pkgs
envs directories : /home/georgee/anaconda3/envs
/home/georgee/.conda/envs
platform : linux-64
user-agent : conda/23.3.1 requests/2.28.1 CPython/3.10.9 Linux/5.15.90.1-microsoft-standard-WSL2 ubuntu/22.04.2 glibc/2.35
UID:GID : 1000:1000
netrc file : None
offline mode : False

An unexpected error has occurred. Conda has prepared the above report.

If submitted, this report will be used by core maintainers to improve
future releases of conda.
Would you like conda to send this report to the core maintainers? [y/N]:
Timeout reached. No report sent.

pCrunch isn't behaving as expected with DLC outputs

Description

When attempting to use pCrunch on existing WEIS-originated DLC output to obtain fatigue data like DELs, a number of errors occur suggesting that arguments being passed between different functions within pCrunch are not the correct arguments that should be getting passed.

Steps to reproduce issue

A coworker and I are currently working on a modified fork of WEIS (Coworker on Linux, I am on MacOS), but another coworker has had the same issues with the main branch of NREL/WEIS using RHEL servers.

  1. Install WEIS per instructions
  2. Run an example in WEIS to generate output files for a DLC (1.3 or something)
  3. using WEIS/pCrunch/post_BatchRun.py
    3a. Line 12, ruamel.yaml throws errors, changing to ruamel_yaml fixes this issue.
    3b. edit line 24 to set output_dir to the directory containing the DLC output files from Step 2

Current behavior

  • Initially, there will be an error arising from WEIS/pCrunch/pCrunch/analysis.py, line 385,

AttributeError: 'int' object has no attribute 'lifetime'

----This is unusual, because the object fatparams in line 385 is supposed to be an instance of FatigueParams used in WEIS/weis/aeroelastice/openmdao_openfast.py (lines 1938, 1943, 1982, 2002, and 2020), and has the same input arguments as what is being checked in analysis.py, line 384 thru 387, where default values are being assigned, so the lifetime parameter should exist). Additionally, from the class definition of FatigueParams, the constructor method assigns default values to each parameter, so the parameter should exist in some form and not cause this error.
----Setting this up as a break point in VS Code, the argument fatparams appears to be an exact copy of fatigue_channels from line 43 of the post_BatchRun.py script, which is not a FatigueParams instance.
----This error shows up if we try to used the WEIS/pCrunch/batch_processing.ipynb notebook example on a series of DLC output files, showing that the error is not contained to just one example script.
----In order to get past this error to see if we could get the script running, we tried hard-coding the input arguments in analysis.py, lines 384 thru 387 to the default constructor values from the FatigueParams class definition. The next error is the next problem we ran into.

  • Next error:

File "post_BatchRun.py", line 78, in
windspeeds, seed, IECtype, cm_wind = get_windspeeds(cm, return_df=True)
File "WEIS/pCrunch/pCrunch/utility.py", line 217, in get_windspeeds
windspeed.append(float(obj[0]))
ValueError: could not convert string to float: '6.200000_Dn_S'

Without looking further into the format of the case matrix or the actual data assigned to the variable cmatrix in a debugging environment, I would assume that either something about the current format of the case matrix is different from the assumed format of the case matrix that is being made in WEIS/pCrunch/pCrunch/utility.py, lines 200 thru 225, or the input data being assigned to the variable cmatrix in lines 171, 192 or 195 is not actually a case matrix, since the assumed type of the data being operated on is incompatible with the operations being applied to it. This is the point where Ben and I decided that this was a bigger issue that should probably be looked at in-depth by the WEIS development team.

Expected behavior

I have not yet seen this version of crunch run through to completion, but I would expect a successful run inside of post_BatchRun.py to produce a results subdirectory within the DLC output directory that has a summary_stats.yaml file, and would successfully process through extreme loads, damage equivalent loads, etc. That could be accessed with minor changes to the post_BatchRun.py script.

ModuleNotFoundError: No module named 'wisdem.ccblade._bem'

Description

_ModuleNotFoundError: No module named 'wisdem.ccblade.bem'

Steps to reproduce issue

Please provide a minimum working example (MWE) if possible

  1. I run the "WEIS\examples\03_NREL5MW_OC3_spar\weis_driver.py"
  2. I didn't find this "ccblade._bem" in the downloaded file either

Current behavior

I just started to contact WEIS, I don't know how to solve this problem, it's not clear if the environment is not configured correctly.
I look forward to your reply, thank you very much!

Expected behavior

Code versions

List versions only if relevant

  • Python

New Turbulence Model for AEP Calculations

WEIS currently uses DLC 1.1/1.2 for AEP calculations.

DLC 1.1/1.2 uses the Normal Turbulence Model, which includes a turbulence standard deviation for the 90% quantile.

Therefore, the NTM as defined by IEC is still harsher turbulence than we would expect for a site that is characterized as ‘A’, ‘B’, ‘C’, etc.

WEIS could consider to use a new DLC for AEP calculations only, one that represents 50% quantile turbulence distribution. The new calculation will give more favorable results and would be more realistic.

The suggestion comes from the BAR external advisory board

DISCON.IN output of example 05

Hi,
I am currently working with the example 05 on the develop branch and noticed some discrepancies between the controller output (DISCON.IN) generated by WEIS and the one provided in the repository of the RWT.
Using the ROSCO toolbox and both DISCON.IN files, I generated the following plot:
image
My question is whether these differences are expected when using WEIS, or if there's a possibility to correct them?

Thanks in advance.
Kind regards,
Alex

Determine which dependencies should be required

Currently there are a huge number of dependencies due to the large number of projects installed as part of WEIS. Some of these may not be required for the core WEIS tools.

Resolution of this issue may require discussions about what should be considered core vs optional functionality of WEIS.

Changing hub height generates unexpected error

Description

For the example included in 06_IEA-15-240-RWT, changing hub height generates unexpected error.
When I changed hub height from 150 to 145, or 140, or other value, I see error messages attached below.

Steps to reproduce issue

Please provide a minimum working example (MWE) if possible

  1. change 150 to 145 at this line
  2. run weis driver using python weis_driver.py

Current behavior

Output:

 python weis_driver.py 
ORBIT library intialized at '/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/WISDEM/wisdem/library'
########################################
Objectives
Turbine AEP: 77.8472154096 GWh
Blade Mass:  72992.8524566243 kg
LCOE:        64.8302345413 USD/MWh
Tip Defl.:   23.7981448797 m
########################################
Cp-Ct-Cq surfaces completed at 20 %
Cp-Ct-Cq surfaces completed at 40 %
Cp-Ct-Cq surfaces completed at 60 %
Cp-Ct-Cq surfaces completed at 80 %
Cp-Ct-Cq surfaces completed at 100 %
-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox    
-----------------------------------------------------------------------------
EXECUTING TurbSim
Executable: 	 /Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/local/bin/turbsim
Run directory: 	 temp/IEA15
Input file: 	 /Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/examples/06_IEA-15-240-RWT/temp/IEA15/IEA15_IEC_NTM_U5.000000_Seed600.0.in
Exec string: 	 ['/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/local/bin/turbsim', '/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/examples/06_IEA-15-240-RWT/temp/IEA15/IEA15_IEC_NTM_U5.000000_Seed600.0.in']

 **************************************************************************************************
 TurbSim

 Copyright (C) 2021 National Renewable Energy Laboratory
 Copyright (C) 2021 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

  Running TurbSim a part of OpenFAST - -128-NOTFOUND
  linked with NWTC Subroutine Library


  Reading the input file
  "/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/examples/06_IEA-15-240-RWT/temp/IEA15/IEA15_IEC_NT
  M_U5.000000_Seed600.0.in".
  Calculating the spectral and transfer function matrices:
     u-component matrices (general coherence model)
     v-component matrices (general coherence model)
     w-component matrices (general coherence model)
  Generating time series for all points:
     u-component
     v-component
     w-component
  Computing hub-height statistics
  Writing statistics to summary file
  Generating AeroDyn binary time-series file
  "/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/examples/06_IEA-15-240-RWT/temp/IEA15/IEA15_IEC_NT
  M_U5.000000_Seed600.0.bts"

  Processing complete.  0.24003 CPU seconds used.

  TurbSim terminated normally.

COMPLETE TurbSim
EXECUTING TurbSim
Executable: 	 /Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/local/bin/turbsim
Run directory: 	 temp/IEA15
Input file: 	 /Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/examples/06_IEA-15-240-RWT/temp/IEA15/IEA15_IEC_NTM_U13.000000_Seed601.0.in
Exec string: 	 ['/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/local/bin/turbsim', '/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/examples/06_IEA-15-240-RWT/temp/IEA15/IEA15_IEC_NTM_U13.000000_Seed601.0.in']

 **************************************************************************************************
 TurbSim

 Copyright (C) 2021 National Renewable Energy Laboratory
 Copyright (C) 2021 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

  Running TurbSim a part of OpenFAST - -128-NOTFOUND
  linked with NWTC Subroutine Library


  Reading the input file
  "/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/examples/06_IEA-15-240-RWT/temp/IEA15/IEA15_IEC_NT
  M_U13.000000_Seed601.0.in".
  Calculating the spectral and transfer function matrices:
     u-component matrices (general coherence model)
     v-component matrices (general coherence model)
     w-component matrices (general coherence model)
  Generating time series for all points:
     u-component
     v-component
     w-component
  Computing hub-height statistics
  Writing statistics to summary file
  Generating AeroDyn binary time-series file
  "/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/examples/06_IEA-15-240-RWT/temp/IEA15/IEA15_IEC_NT
  M_U13.000000_Seed601.0.bts"

  Processing complete.  0.34544 CPU seconds used.

  TurbSim terminated normally.

COMPLETE TurbSim
EXECUTING TurbSim
Executable: 	 /Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/local/bin/turbsim
Run directory: 	 temp/IEA15
Input file: 	 /Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/examples/06_IEA-15-240-RWT/temp/IEA15/IEA15_IEC_NTM_U21.000000_Seed602.0.in
Exec string: 	 ['/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/local/bin/turbsim', '/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/examples/06_IEA-15-240-RWT/temp/IEA15/IEA15_IEC_NTM_U21.000000_Seed602.0.in']

 **************************************************************************************************
 TurbSim

 Copyright (C) 2021 National Renewable Energy Laboratory
 Copyright (C) 2021 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

  Running TurbSim a part of OpenFAST - -128-NOTFOUND
  linked with NWTC Subroutine Library


  Reading the input file
  "/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/examples/06_IEA-15-240-RWT/temp/IEA15/IEA15_IEC_NT
  M_U21.000000_Seed602.0.in".
  Calculating the spectral and transfer function matrices:
     u-component matrices (general coherence model)
     v-component matrices (general coherence model)
     w-component matrices (general coherence model)
  Generating time series for all points:
     u-component
     v-component
     w-component
  Computing hub-height statistics
  Writing statistics to summary file
  Generating AeroDyn binary time-series file
  "/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/examples/06_IEA-15-240-RWT/temp/IEA15/IEA15_IEC_NT
  M_U21.000000_Seed602.0.bts"

  Processing complete.  0.41912 CPU seconds used.

  TurbSim terminated normally.

COMPLETE TurbSim
Airfoil number 38 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 39 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 40 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 41 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 42 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 43 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 44 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 45 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 46 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 47 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 48 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 49 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 50 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 51 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 52 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 53 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 54 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 55 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 56 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 57 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 58 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Airfoil number 59 tab number 0 has the lift coefficient different between +-180 deg. This is changed to be the same now.
Writing rotor performance text file: temp/IEA15/IEA15_IEC_0_Cp_Ct_Cq.txt
Writing new controller parameter file parameter file: temp/IEA15/IEA15_IEC_0_DISCON.IN.

 **************************************************************************************************
 OpenFAST

 Copyright (C) 2021 National Renewable Energy Laboratory
 Copyright (C) 2021 Envision Energy USA LTD

 This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
 See the "LICENSE" file distributed with this software for details.
 **************************************************************************************************

 OpenFAST--128-NOTFOUND
 Compile Info:
  - Compiler: GCC version 9.3.0
  - Architecture: 64 bit
  - Precision: single
  - Date: Feb 12 2021
  - Time: 20:55:27
 Execution Info:
  - Date: 02/12/2021
  - Time: 23:55:34-0600

 OpenFAST input file heading:
     Generated with AeroElasticSE FAST driver

 Running ElastoDyn.
 Nodal outputs section of ElastoDyn input file not found or improperly formatted.
 Running AeroDyn.
 AD15 Nodal Outputs: Nodal output section of AeroDyn input file not found or improperly formatted.
 Skipping nodal outputs.
 Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 1, blade 1)
 Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 2, blade 1)
 Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 1, blade 2)
 Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 2, blade 2)
 Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 1, blade 3)
 Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 2, blade 3)
 Running InflowWind.

    Reading a 25x25 grid (288 m wide, 1 m to 289 m above ground) with a characteristic wind speed
    of 5 m/s. This full-field file was generated by TurbSim on 12-Feb-2021 at 23:55:32.

    Processed 20 time steps of 20-Hz full-field data (period of 1 seconds).
 Running ServoDyn.
 Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux, ).
 Using legacy Bladed DLL interface.
 Running HydroDyn.
  WARNING:   The random number generator in use differs from the original code provided by NREL.
  This pRNG uses 33 seeds instead of the 2 in the input file.
  Generating incident wave kinematics and current time history.
  Calculating second order difference frequency wave kinematics.
  Calculating second order sum frequency wave kinematics.
 Running SubDyn.
    Calculating Internal Modal Eigenvectors
Error 4: b'FAST_InitializeAll:HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use differs from the original code provided by NREL. This pRNG uses 33 seeds instead of the 2 in the HydroDyn input file.\nFAST_InitializeAll:InitModuleMappings:ED_2_AD_TowerMotion:MeshMapCreate:CreateMotionMap_L2_to_L2:CreateMapping_ProjectToLine2:Node 21 does not project onto any line2 element. Closest distance is 0.5 m.\nInitModuleMappings:ED_2_AD_BladeMotion(1):MeshMapCreate:CreateMotionMap_L2_to_L2:CreateMapping_ProjectToLine2:Found close value for node 60. (1.95274E-05 m)'
Traceback (most recent call last):
  File "/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/python3.8/site-packages/openmdao/core/system.py", line 2189, in _call_user_function
    yield
  File "/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/python3.8/site-packages/openmdao/core/explicitcomponent.py", line 261, in _solve_nonlinear
    self.compute(self._inputs, self._outputs, self._discrete_inputs,
  File "/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/weis/aeroelasticse/openmdao_openfast.py", line 361, in compute
    summary_stats, extreme_table, DELs, case_list, dlc_list  = self.run_FAST(inputs, discrete_inputs, fst_vt)
  File "/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/weis/aeroelasticse/openmdao_openfast.py", line 991, in run_FAST
    summary_stats, extreme_table, DELs, chan_time = fastBatch.run_serial()
  File "/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/weis/aeroelasticse/runFAST_pywrapper.py", line 259, in run_serial
    _name, _ss, _et, _dl, _ct = evaluate(c)
  File "/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/weis/aeroelasticse/runFAST_pywrapper.py", line 382, in evaluate
    FAST_Output = fast.execute()
  File "/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/weis/aeroelasticse/runFAST_pywrapper.py", line 171, in execute
    output_dict[channel] = openfastlib.output_values[:,i]
TypeError: 'NoneType' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "weis_driver.py", line 14, in <module>
    wt_opt, modeling_options, opt_options = run_weis(fname_wt_input, fname_modeling_options, fname_analysis_options)
  File "/Users/yonghoonlee/Dropbox/WorkingFolder/WEIS/weis/glue_code/runWEIS.py", line 172, in run_weis
    wt_opt.run_model()
  File "/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/python3.8/site-packages/openmdao/core/problem.py", line 625, in run_model
    self.model.run_solve_nonlinear()
  File "/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/python3.8/site-packages/openmdao/core/system.py", line 3785, in run_solve_nonlinear
    self._solve_nonlinear()
  File "/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/python3.8/site-packages/openmdao/core/group.py", line 2626, in _solve_nonlinear
    self._nonlinear_solver.solve()
  File "/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/python3.8/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py", line 37, in solve
    self._gs_iter()
  File "/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/python3.8/site-packages/openmdao/solvers/solver.py", line 750, in _gs_iter
    subsys._solve_nonlinear()
  File "/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/python3.8/site-packages/openmdao/core/explicitcomponent.py", line 264, in _solve_nonlinear
    self.compute(self._inputs, self._outputs)
  File "/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/python3.8/contextlib.py", line 131, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/yonghoonlee/opt/anaconda3/envs/weis-env/lib/python3.8/site-packages/openmdao/core/system.py", line 2195, in _call_user_function
    raise err_type(f"{self.msginfo}: Error calling {fname}(), {err}")
TypeError: 'aeroelastic' <class FASTLoadCases>: Error calling compute(), 'NoneType' object is not subscriptable

Expected behavior

Code versions

List versions only if relevant

WEIS/examples/07_te_flaps example does not run properly

Description

Some of the WEIS/examples do not run correctly as configured. The apparent cause is a mismatch between the format of the input yaml files (in my specific case, 07_te_flaps/modeling_options.yaml) and the modeling_schema.yaml (under WEIS/weis/inputs/) and toolbox_schema.yaml (under WEIS/ROSCO/ROSCO_toolbox/inputs/). I have not looked into other examples, so I can't speak to the extent of condition on this issue.

Steps to reproduce issue

Please provide a minimum working example (MWE) if possible

  1. under 07_te_flaps example directory, edit modeling_options.yaml xfoil path to point to the xfoil binary/executable
  2. run dac_driver.py

Current behavior

Traceback (most recent call last):
File "dac_driver.py", line 12, in
wt_opt, modeling_options, opt_options = run_weis(fname_wt_input, fname_modeling_options, fname_analysis_options)
File "/home/[userName]/gitRepos/WEIS/weis/glue_code/runWEIS.py", line 20, in run_weis
wt_initial = WindTurbineOntologyPythonWEIS(fname_wt_input, fname_modeling_options, fname_opt_options)
File "/home/[userName]/gitRepos/WEIS/weis/glue_code/gc_LoadInputs.py", line 26, in init
self.set_weis_data()
File "/home/[userName]/gitRepos/WEIS/weis/glue_code/gc_LoadInputs.py", line 134, in set_weis_data
raise Exception("A distributed aerodynamic control device is defined in the geometry yaml, but the path to XFoil in the modeling options is not defined correctly")
Exception: A distributed aerodynamic control device is defined in the geometry yaml, but the path to XFoil in the modeling options is not defined correctly

  • Edited python script (WEIS/weis/glue_code/gc_LoadInputs.py) to print out contents of "self.modeling_options['Level3']["xfoil"]["path"]", and it is empty, printed out results of bool(self.modeling_options['Level3']["xfoil"]["path"]), and returned false, indicating that entry is indeed empty.
  • checked modeling_schema.yaml, and xfoil parameters are not separate from Level3, as they are in the example, but listed underneath Level3 parameters.
  • Rearranged the example yaml to reflect the correct location for the xfoil parameters, and the error goes away the next time I call dac_driver.py
  • Am still getting errors related to ROSCO, because according to the schema yaml, the ROSCO params that are currently in the example modeling yaml have been moved to a toolbox_schema.yaml, and the example modeling yaml should only have one parameter that points to the toolbox yaml, I think.

Expected behavior

example runs without errors, or with errors that are dependent on user-specific paths and whatnot.

Code versions

  • Latest commit of main branch of repo
  • Python 3.8

TStart!=0 in OpenFAST introduces bugs into stats

Description

The Python call to OpenFAST generate statistics that are wrong when TStart!=0

Steps to reproduce issue

  1. Start from example 03 https://github.com/WISDEM/WEIS/tree/develop/examples/03_NREL5MW_OC3_spar
  2. Reduce the wind speeds to a single one (I kept 5 m/s) for faster debugging
    U: [5.0, 10.0] # If running turbulent power curve, can set U:[], and analysis will default to using the IEC - DLC 1.1 results. This can be used to prevent running redundant turbulent operational cases
  3. Check the stats generated at this line
    _name, _ss, _et, _dl, _ct = evaluate(c)
    by printing ss['NREL5MW_OC3_spar_powercurve_0']['RtAeroCp']. You will obtain
    {'abs': 75.4937515258789, 'integrated': -257.78151857376105, 'max': 0.0, 'mean': -17.638143743311133, 'min': -75.4937515258789, 'std': 20.531107334656}
  4. Check in the .outb file or in the figure below that the max of RtAeroCp is not 0 and the mean is not -17

RtAeroCp

Current behavior

The stats are wrong. My suspect is that between Time=0 and Time=TStart all channels are set to 0 and they are included in the statistics, while they should be left out.

Expected behavior

The stats should only include from TStart to the end of the time history

Code versions

Latest WEIS develop

Trouble Installing develop branch code in MacOS

Description

Attempting to install latest commit of develop branch, have successfully installed main branch as of last commit.

Current behavior

python setup.py develop returns the following error

ld: warning: -pie being ignored. It is only used when linking a main executable
ld: warning: object file (pyhams/hams.cpython-310-darwin.so.p/meson-generated..__hamsmodule.c.o) was built for newer macOS version (12.0) than being linked (11.5)
ld: warning: object file (pyhams/hams.cpython-310-darwin.so.p/fc6b8e8fd2203a6e30e2ed9e6b5cf4f4e5e23faf.._.._f2py_src_fortranobject.c.o) was built for newer macOS version (12.0) than being linked (11.5)
ld: can't map file, errno=22 file '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Accelerate.framework' for architecture x86_64
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /opt/anaconda3/envs/weis-env2/bin/ninja -C /Users/agmotes/gitRepos/WEIS-develop/pyHAMS/meson_build -v

Traceback (most recent call last):
File "/Users/agmotes/gitRepos/WEIS-develop/pyHAMS/setup.py", line 90, in
run_meson_build(staging_dir)
File "/Users/agmotes/gitRepos/WEIS-develop/pyHAMS/setup.py", line 60, in run_meson_build
raise OSError(
OSError: [Errno ['/opt/anaconda3/envs/weis-env2/bin/meson', 'compile', '-vC', 'meson_build']] The meson compile command failed! Check the log at meson_build/compile.log for more information.

Traceback (most recent call last):

File "/Users/agmotes/gitRepos/WEIS-develop/setup.py", line 136, in
subprocess.check_call([sys.executable, "setup.py", "develop"])
File "/opt/anaconda3/envs/weis-env2/lib/python3.10/subprocess.py", line 369, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/opt/anaconda3/envs/weis-env2/bin/python', 'setup.py', 'develop']' returned non-zero exit status 1.

Error message in meson_build.compile.log is

ld: warning: -pie being ignored. It is only used when linking a main executable
ld: warning: object file (pyhams/hams.cpython-310-darwin.so.p/meson-generated..__hamsmodule.c.o) was built for newer macOS version (12.0) than being linked (11.5)
ld: warning: object file (pyhams/hams.cpython-310-darwin.so.p/fc6b8e8fd2203a6e30e2ed9e6b5cf4f4e5e23faf.._.._f2py_src_fortranobject.c.o) was built for newer macOS version (12.0) than being linked (11.5)
ld: can't map file, errno=22 file '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Accelerate.framework' for architecture x86_64
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /opt/anaconda3/envs/weis-env2/bin/ninja -C /Users/agmotes/gitRepos/WEIS-develop/pyHAMS/meson_build -v

Code versions

  • MacOS Monterey (12.6.2)
  • Python 3.10.6

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.