NREL / ROSCO

A Reference Open Source Controller for Wind Turbines
https://rosco.readthedocs.io/en/latest/
Apache License 2.0
116 stars 93 forks source link

Errors in example06.py and example13.py #216

Closed Latons452 closed 1 year ago

Latons452 commented 1 year ago

Hello, I'm trying to run example06.py and example13.py, and I get these errors.

Edit: Additional information I forgot:

In example06.py it seems the model .fst has errors in that the buoyancy is not defined:

Using ofTools in ROSCO_toolbox...
-----------------------------------------------------------------------------
Loading wind turbine data for NREL's ROSCO tuning and simulation processeses
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox
-----------------------------------------------------------------------------
Loading FAST model: IEA-15-240-RWT-UMaineSemi.fst
Loading rotor performace data from text file: c:\Users\Latons\Documents\Codigo\ROSCO\Test_Cases\IEA-15-240-RWT-UMaineSemi\Cp_Ct_Cq.IEA15MW.txt
Loading rotor performace data from text file: c:\Users\Latons\Documents\Codigo\ROSCO\Examples\../Test_Cases/IEA-15-240-RWT-UMaineSemi\Cp_Ct_Cq.IEA15MW.txt
-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox
-----------------------------------------------------------------------------
Writing new controller parameter file parameter file: c:\Users\Latons\Documents\Codigo\ROSCO\Examples\DISCON.IN.
Using IEA-15-240-RWT-UMaineSemi.fst to run OpenFAST simulation
Running OpenFAST simulation for IEA-15-240-RWT-UMaineSemi.fst through the ROSCO toolbox...

**************************************************************************************************
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-v3.4.0
Compile Info:
 - Compiler: Intel(R) Fortran Compiler 2021
 - Architecture: 64 bit
 - Precision: single
 - OpenMP: No
 - Date: Jan 13 2023
 - Time: 11:00:06
Execution Info:
 - Date: 01/31/2023
 - Time: 19:18:34+0100

OpenFAST input file heading:
    IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform

Running ElastoDyn.
Nodal outputs section of ElastoDyn input file not found or improperly formatted.
Running AeroDyn.

FAST_InitializeAll:AD_Init:ParsePrimaryFileInfo:ParseLoVar:
 >> A fatal error occurred when parsing data from ".\IEA-15-240-RWT_AeroDyn15.dat".
 >> The variable "Buoyancy" was not found on line #13.

 OpenFAST encountered an error during module initialization.
 Simulation error level: FATAL ERROR

 Aborting OpenFAST.

Traceback (most recent call last):
  File "c:\Users\Latons\Documents\Codigo\ROSCO\Examples\example_06.py", line 87, in <module>
    run_openfast(
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\site-packages\ROSCO_toolbox\utilities.py", line 554, in run_openfast
    subprocess.run([fastcall, os.path.join(fastfile)], check=True, cwd=cwd)
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\subprocess.py", line 524, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['openfast_x64.exe', 'IEA-15-240-RWT-UMaineSemi.fst']' returned non-zero exit status 1.

In example13.py it seems it is a numpy error:

Using ofTools in ROSCO_toolbox...
-----------------------------------------------------------------------------
Loading wind turbine data for NREL's ROSCO tuning and simulation processeses
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox
-----------------------------------------------------------------------------
Loading FAST model: BAR_10.fst
Loading rotor performace data from text file: c:\Users\Latons\Documents\Codigo\ROSCO\Test_Cases\BAR_10\Cp_Ct_Cq.BAR_10.txt
Traceback (most recent call last):
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\site-packages\ROSCO_toolbox\ofTools\case_gen\CaseGen_General.py", line 159, in CaseGen_General
    matrix_out = np.asarray(matrix_out, dtype=str)
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (1, 109) + inhomogeneous part.     

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\Users\Latons\Documents\Codigo\ROSCO\Examples\example_13.py", line 81, in <module>
    case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=run_dir, namebase='ipc_example')
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\site-packages\ROSCO_toolbox\ofTools\case_gen\CaseGen_General.py", line 161, in CaseGen_General
    matrix_out = np.asarray(matrix_out)
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (1, 109) + inhomogeneous part.

I am a really new user in OpenFAST, so I don't know how to really solve the issue in example06.py.

dzalkind commented 1 year ago

Hi,

Our file writers for OpenFAST are compatible with version 3.3.0. You can download that version of OpenFAST and example_06 should work.

I'm not sure about the numpy issue. What version of numpy do you have installed?

Dan

dzalkind commented 1 year ago

Oh, if you're using the main branch, you'll need to depreciate to numpy v1.23 or use the develop branch, which is compatible with the latest numpy.

Latons452 commented 1 year ago

I was editing my original issue with the NumPy version just as you wrote the response, sorry about forgetting that!

Attaching my entire enviroment.yml just in case, deprecated the version of NumPy:

name: openFast
channels:
  - conda-forge
dependencies:
  - python=3.10.6
  - dash=2.7.1
  - dash-bootstrap-components=1.3.0
  - pandas=1.5.2
  - scipy=1.10.0
  - numpy=1.23.*
  - pip
  - sympy=1.11.1
  - matplotlib=3.6.2
  - ROSCO
  - mpi4py
  - wisdem
  - simpy
  - pip:
      - -e git+https://github.com/OpenFAST/python-toolbox.git#egg=pyFAST
      - dash-bootstrap-templates==1.0.7
      - git+https://github.com/NREL/ROSCO
      - dearpygui
      - ruamel.yaml
      - marmot-agents

Now in example_06.py I get this error. Which seems related to #199 from a quick view.

Using ofTools in ROSCO_toolbox...
-----------------------------------------------------------------------------
Loading wind turbine data for NREL's ROSCO tuning and simulation processeses
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox    
-----------------------------------------------------------------------------
Loading FAST model: IEA-15-240-RWT-UMaineSemi.fst 
Loading rotor performace data from text file: c:\Users\Latons\Documents\Codigo\ROSCO\Test_Cases\IEA-15-240-RWT-UMaineSemi\Cp_Ct_Cq.IEA15MW.txt
Loading rotor performace data from text file: c:\Users\Latons\Documents\Codigo\ROSCO\Examples\../Test_Cases/IEA-15-240-RWT-UMaineSemi\Cp_Ct_Cq.IEA15MW.txt
-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox    
-----------------------------------------------------------------------------
Writing new controller parameter file parameter file: c:\Users\Latons\Documents\Codigo\ROSCO\Examples\DISCON.IN.
Using IEA-15-240-RWT-UMaineSemi.fst to run OpenFAST simulation
Running OpenFAST simulation for IEA-15-240-RWT-UMaineSemi.fst through the ROSCO toolbox...

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

Copyright (C) 2022 National Renewable Energy Laboratory
Copyright (C) 2022 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-v3.3.0
Compile Info:
 - Compiler: Intel(R) Fortran Compiler 1900
 - Architecture: 64 bit
 - Precision: single
 - OpenMP: No
 - Date: Nov 02 2022
 - Time: 14:07:06
Execution Info:
 - Date: 01/31/2023
 - Time: 19:36:52+0100

OpenFAST input file heading:
    IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform

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.
Running HydroDyn.
  Setting WaveTMax to 0.0 since WaveMod = 0
  WARNING:  The requested output channel is invalid: WavesF1xi
  WARNING:  The requested output channel is invalid: WavesF1zi
  WARNING:  The requested output channel is invalid: WavesM1yi
  WARNING:  The requested output channel is invalid: WavesF2xi
  WARNING:  The requested output channel is invalid: WavesF2zi
  WARNING:  The requested output channel is invalid: WavesM2yi
  WARNING:  The requested output channel is invalid: WavesF2xi
  WARNING:  The requested output channel is invalid: WavesF2yi
  WARNING:  The requested output channel is invalid: WavesF2zi
  WARNING:  The requested output channel is invalid: WavesM2xi
  WARNING:  The requested output channel is invalid: WavesM2yi
  WARNING:  The requested output channel is invalid: WavesM2zi
 Calculating second order difference frequency wave kinematics.
 Reading in WAMIT output with root name ".\HydroData/IEA-15-240-RWT-UMaineSemi".
 Computing radiation impulse response functions and wave diffraction forces.
 Calculating second order difference-frequency force using the full quadratic transfer function.
Running MoorDyn (v2.a27, 2022-07-20).
   This is an alpha version of MoorDyn-F v2, with significant input file changes from v1.
   Copyright: (C) 2021 National Renewable Energy Laboratory, (C) 2019 Matt Hall
   Parsing MoorDyn input file: .\IEA-15-240-RWT-UMaineSemi_MoorDyn.dat

FAST_InitializeAll:HydroDyn_Init:HydroDynInput_ProcessInitData: A requested output channel is
invalid
FAST_InitializeAll:MD_Init: Unable to parse Line type 1 on row 7 in input file. Row has wrong
number of columns. Must be 10 columns.

 OpenFAST encountered an error during module initialization.
 Simulation error level: FATAL ERROR

 Aborting OpenFAST.

Traceback (most recent call last):
  File "c:\Users\Latons\Documents\Codigo\ROSCO\Examples\example_06.py", line 87, in <module>
    run_openfast(
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\site-packages\ROSCO_toolbox\utilities.py", line 554, in run_openfast
    subprocess.run([fastcall, os.path.join(fastfile)], check=True, cwd=cwd)
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\subprocess.py", line 524, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['openfast_x64.exe', 'IEA-15-240-RWT-UMaineSemi.fst']' returned non-zero exit status 1.

Example_13.py also outputs an error:

Using ofTools in ROSCO_toolbox...
-----------------------------------------------------------------------------
Loading wind turbine data for NREL's ROSCO tuning and simulation processeses
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox
-----------------------------------------------------------------------------
Loading FAST model: BAR_10.fst
Loading rotor performace data from text file: c:\Users\Latons\Documents\Codigo\ROSCO\Test_Cases\BAR_10\Cp_Ct_Cq.BAR_10.txt
FutureWarning: C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\site-packages\ROSCO_toolbox\ofTools\case_gen\CaseGen_General.py:122
elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparisonFutureWarning: C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\site-packages\ROSCO_toolbox\ofTools\case_gen\CaseGen_General.py:124
elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparisonLoading rotor performace data from text file: C:\Users\Latons\Documents\Codigo\ROSCO\Test_Cases\BAR_10\Cp_Ct_Cq.BAR_10.txt
Writing rotor performance text file: c:\Users\Latons\Documents\Codigo\ROSCO\Examples\examples_out\13_ipc_sim\ipc_example_0_Cp_Ct_Cq.txt
Writing new controller parameter file parameter file: c:\Users\Latons\Documents\Codigo\ROSCO\Examples\examples_out\13_ipc_sim\ipc_example_0_DISCON.IN.
Traceback (most recent call last):
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\site-packages\ROSCO_toolbox\ofTools\fast_io\FAST_wrapper.py", line 45, in execute
    subprocess.run(exec_str, check=True)
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\subprocess.py", line 501, in run
    with Popen(*popenargs, **kwargs) as process:
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\subprocess.py", line 969, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\subprocess.py", line 1438, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] El sistema no puede encontrar el archivo especificado

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\Users\Latons\Documents\Codigo\ROSCO\Examples\example_13.py", line 98, in <module>
    fastBatch.run_serial()
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\site-packages\ROSCO_toolbox\ofTools\case_gen\runFAST_pywrapper.py", line 317, in run_serial
    evaluate(c)
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\site-packages\ROSCO_toolbox\ofTools\case_gen\runFAST_pywrapper.py", line 436, in evaluate
    return fast.execute()
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\site-packages\ROSCO_toolbox\ofTools\case_gen\runFAST_pywrapper.py", line 171, in execute
    failed = wrapper.execute()
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\site-packages\ROSCO_toolbox\ofTools\fast_io\FAST_wrapper.py", line 58, in execute
    print('OpenFAST Failed: {}'.format(e))
UnboundLocalError: local variable 'e' referenced before assignment

Thanks for the response! Will try to use Openfast 3.2.0 now. If not I'll use the develop branch.

Latons452 commented 1 year ago

Version 3.2.0 seems to work with example_06.py but there is another error, same error with example_13.py.

The problem in example_06.py seems to be related to the operating system:

Using ofTools in ROSCO_toolbox...
-----------------------------------------------------------------------------
Loading wind turbine data for NREL's ROSCO tuning and simulation processeses
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox
-----------------------------------------------------------------------------
Loading FAST model: IEA-15-240-RWT-UMaineSemi.fst
Loading rotor performace data from text file: c:\Users\Latons\Documents\Codigo\ROSCO\Test_Cases\IEA-15-240-RWT-UMaineSemi\Cp_Ct_Cq.IEA15MW.txt
Loading rotor performace data from text file: c:\Users\Latons\Documents\Codigo\ROSCO\Examples\../Test_Cases/IEA-15-240-RWT-UMaineSemi\Cp_Ct_Cq.IEA15MW.txt
-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox
-----------------------------------------------------------------------------
Writing new controller parameter file parameter file: c:\Users\Latons\Documents\Codigo\ROSCO\Examples\DISCON.IN.
Using IEA-15-240-RWT-UMaineSemi.fst to run OpenFAST simulation
Running OpenFAST simulation for IEA-15-240-RWT-UMaineSemi.fst through the ROSCO toolbox...

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

Copyright (C) 2022 National Renewable Energy Laboratory
Copyright (C) 2022 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-v3.2.0
Compile Info:
 - Compiler: Intel(R) Fortran Compiler 1900
 - Architecture: 64 bit
 - Precision: single
 - OpenMP: No
 - Date: Jul 13 2022
 - Time: 09:58:55
Execution Info:
 - Date: 01/31/2023
 - Time: 20:42:06+0100

OpenFAST input file heading:
    IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform

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.
Running HydroDyn.
  Setting WaveTMax to 0.0 since WaveMod = 0
  WARNING:  The requested output channel is invalid: WavesF1xi
  WARNING:  The requested output channel is invalid: WavesF1zi
  WARNING:  The requested output channel is invalid: WavesM1yi
  WARNING:  The requested output channel is invalid: WavesF2xi
  WARNING:  The requested output channel is invalid: WavesF2zi
  WARNING:  The requested output channel is invalid: WavesM2yi
  WARNING:  The requested output channel is invalid: WavesF2xi
  WARNING:  The requested output channel is invalid: WavesF2yi
  WARNING:  The requested output channel is invalid: WavesF2zi
  WARNING:  The requested output channel is invalid: WavesM2xi
  WARNING:  The requested output channel is invalid: WavesM2yi
  WARNING:  The requested output channel is invalid: WavesM2zi
 Calculating second order difference frequency wave kinematics.
 Reading in WAMIT output with root name ".\HydroData/IEA-15-240-RWT-UMaineSemi".
 Computing radiation impulse response functions and wave diffraction forces.
 Calculating second order difference-frequency force using the full quadratic transfer function.
Running MoorDyn.
  MD_Init: Opening MoorDyn input file:  .\IEA-15-240-RWT-UMaineSemi_MoorDyn.dat
Warning: invalid output specifier FX.  Starting character must be C or L.
Warning: invalid output specifier FY.  Starting character must be C or L.
Warning: invalid output specifier FZ.  Starting character must be C or L.
   Creating mooring system.   3 fairleads, 3 anchors, 0 connects.
   Finalizing ICs using dynamic relaxation.
   t=60  FairTen 1: 2.76325E+06, 2.75740E+06, 2.76559E+06
   Fairlead tensions did not converge within TMaxIC=60 seconds.
Running ServoDyn.
Running ServoDyn Interface for Bladed Controllers (using Intel Visual Fortran for Windows).

FAST_InitializeAll:HydroDyn_Init:HydroDynInput_ProcessInitData: A requested output channel is
invalid
FAST_InitializeAll:SrvD_Init:BladedInterface_Init:The dynamic library
.\../../ROSCO/install/lib/libdiscon.so could not be loaded. Check that the file exists in the
specified location and that it is compiled for 64-bit applications.

 OpenFAST encountered an error during module initialization.
 Simulation error level: FATAL ERROR

 Aborting OpenFAST.

Traceback (most recent call last):
  File "c:\Users\Latons\Documents\Codigo\ROSCO\Examples\example_06.py", line 87, in <module>
    run_openfast(
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\site-packages\ROSCO_toolbox\utilities.py", line 554, in run_openfast
    subprocess.run([fastcall, os.path.join(fastfile)], check=True, cwd=cwd)
  File "C:\Users\Latons\Documents\Codigo\TFMOpenFast\env\lib\subprocess.py", line 524, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['openfast_x64.exe', 'IEA-15-240-RWT-UMaineSemi.fst']' returned non-zero exit status 1.

Now, I have libdiscon.dll in what seems the correct location, although I haven't compiled it, I've used the binary provided by the Anaconda package. Also I've tried in linux and while it loads the correct library now, it outputs another error.

Using ofTools in ROSCO_toolbox...
-----------------------------------------------------------------------------
Loading wind turbine data for NREL's ROSCO tuning and simulation processeses
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox    
-----------------------------------------------------------------------------
Loading FAST model: IEA-15-240-RWT-UMaineSemi.fst 
Loading rotor performace data from text file: /home/latons/ROSCO/Test_Cases/IEA-15-240-RWT-UMaineSemi/Cp_Ct_Cq.IEA15MW.txt
Loading rotor performace data from text file: /home/latons/ROSCO/Examples/../Test_Cases/IEA-15-240-RWT-UMaineSemi/Cp_Ct_Cq.IEA15MW.txt
-----------------------------------------------------------------------------
   Tuning a reference wind turbine controller using NREL's ROSCO toolbox    
-----------------------------------------------------------------------------
Writing new controller parameter file parameter file: /home/latons/ROSCO/Examples/DISCON.IN.
Using IEA-15-240-RWT-UMaineSemi.fst to run OpenFAST simulation
Running OpenFAST simulation for IEA-15-240-RWT-UMaineSemi.fst through the ROSCO toolbox...

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

 Copyright (C) 2022 National Renewable Energy Laboratory
 Copyright (C) 2022 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 10.3.0
  - Architecture: 64 bit
  - Precision: single
  - OpenMP: No
  - Date: Jul 13 2022
  - Time: 22:34:36
 Execution Info:
  - Date: 01/31/2023
  - Time: 20:36:09+0100

 OpenFAST input file heading:
     IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform

 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.
 Running HydroDyn.
   Setting WaveTMax to 0.0 since WaveMod = 0
  WARNING:  The requested output channel is invalid: WavesF1xi
  WARNING:  The requested output channel is invalid: WavesF1zi
  WARNING:  The requested output channel is invalid: WavesM1yi
  WARNING:  The requested output channel is invalid: WavesF2xi
  WARNING:  The requested output channel is invalid: WavesF2zi
  WARNING:  The requested output channel is invalid: WavesM2yi
  WARNING:  The requested output channel is invalid: WavesF2xi
  WARNING:  The requested output channel is invalid: WavesF2yi
  WARNING:  The requested output channel is invalid: WavesF2zi
  WARNING:  The requested output channel is invalid: WavesM2xi
  WARNING:  The requested output channel is invalid: WavesM2yi
  WARNING:  The requested output channel is invalid: WavesM2zi
  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.
  Calculating second order difference frequency wave kinematics.
  Reading in WAMIT output with root name "./HydroData/IEA-15-240-RWT-UMaineSemi".
  Computing radiation impulse response functions and wave diffraction forces.
  Calculating second order difference-frequency force using the full quadratic transfer function.
 Running MoorDyn.
   MD_Init: Opening MoorDyn input file:  ./IEA-15-240-RWT-UMaineSemi_MoorDyn.dat
 Warning: invalid output specifier FX.  Starting character must be C or L.
 Warning: invalid output specifier FY.  Starting character must be C or L.
 Warning: invalid output specifier FZ.  Starting character must be C or L.
   Creating mooring system.   3 fairleads, 3 anchors, 0 connects.
    Finalizing ICs using dynamic relaxation.

   t=60  FairTen 1: 2.76325E+06, 2.75740E+06, 2.76559E+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:HydroDynInput_ProcessInitData: A requested output channel is
 invalid

  Time: 0 of 10 seconds.

------------------------------------------------------------------------------
Running ROSCO--128-NOTFOUND
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   
------------------------------------------------------------------------------
 ROSCO:SetParameters:ReadControlParameterFileSub: >> A fatal error occurred when parsing data from "./DISCON-UMaineSemi.IN".
 >> The variable "Flp_Mode" was not assigned a valid value on line #19.

 FAST_Solution0:CalcOutputs_And_SolveForInputs:SolveOption2:SrvD_CalcOutput:DLL_controller_call:ROS
 CO:SetParameters:ReadControlParameterFileSub: >> A fatal error occurred when parsing data from
 "./DISCON-UMaineSemi.IN

 OpenFAST encountered an error during simulation initialization.
  Simulation error level: FATAL ERROR

  Aborting OpenFAST.

Traceback (most recent call last):
  File "/home/latons/ROSCO/Examples/example_06.py", line 87, in <module>
    run_openfast(
  File "/home/latons/TFMOpenFast/env/lib/python3.10/site-packages/ROSCO_toolbox/utilities.py", line 554, in run_openfast
    subprocess.run([fastcall, os.path.join(fastfile)], check=True, cwd=cwd)
  File "/home/latons/TFMOpenFast/env/lib/python3.10/subprocess.py", line 524, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['openfast', 'IEA-15-240-RWT-UMaineSemi.fst']' returned non-zero exit status 1.

Sorry if these errors are simple to correct, but I'm just blind here, I've checked the routes, FLP_mode seems to be correct in DISCON.IN and DISCON-UMaineSemi.IN but no avail.

dzalkind commented 1 year ago

It looks like the ROSCO library you are using is looking for Flp_Mode on line 19 and it is not there. You may be using a DISCON that is not compatible. The DISCON input is set in ServoDyn.

Latons452 commented 1 year ago

Thank you! Compiling my own and not using anaconda works on Ubuntu WSL2 now! I still have errors on Windows pointing the library though (I have problems compiling it on my own, maybe I'll open another issue).

For anyone who goes through my problems, using main branch as of the time of this post:

This is my environment file, there is unrelated stuff beware, but just in case:

name: openFast
channels:
  - conda-forge
dependencies:
  - python=3.10.6
  - openfast=3.2.0
  - dash=2.7.1
  - dash-bootstrap-components=1.3.0
  - numpy=1.23.*
  - pandas=1.5.2
  - scipy=1.10.0
  - pip
  - sympy=1.11.1
  - matplotlib=3.6.2
  - mpi4py
  - wisdem
  - simpy
  - compilers
  - cmake
  - pip:
      - -e git+https://github.com/OpenFAST/python-toolbox.git#egg=pyFAST
      - dash-bootstrap-templates==1.0.7
      - git+https://github.com/NREL/ROSCO
      - dearpygui
      - ruamel.yaml
      - marmot-agents
wind2021 commented 1 year ago

Hello, everyone. After I installed ROSCO according to the process in the manual, some problems occurred during operation. Since I'm new to this, I'd like to hear your suggestions or tips. Thank you very much. Full ROSCO Installation

  1. Create a conda environment for ROSCO

conda config --add channels conda-forge

conda create -y --name rosco-env python=3.8

conda activate rosco-env

2、Clone and Install the ROSCO toolbox with ROSCO

conda install -c anaconda git

git clone GitHub - NREL/ROSCO: A Reference Open Source Controller for Wind Turbines

cd ROSCO

conda install -c anaconda cmake

conda install m2w64-toolchain libpython

conda install -y wisdem

conda env config vars set FC=gfortran

conda activate rosco-env

python setup.py install --compile-rosco Window picture

222

dzalkind commented 1 year ago

The keyword dev_branch should have been removed from ROSCO v2.7.0. Please try updating to the latest version of the ROSCO repo. The examples were re-named to better reflect what the example does. I suspect that the documentation has not been updated accordingly, so I'll re-open this until we fix that.

wind2021 commented 1 year ago

Thank you for the tip. It's true that I didn't understand the process properly. Now I'm running the file in the example directory of ROSCO v2.7.0, but I'm still experiencing the following problems. It does not appear to have run successfully, because the result is only ipc_example_0_DISCON.IN, no such file in ROSCO/build/libdiscon.dll. I'm confused. Can you give me some advice? 333 444

dzalkind commented 1 year ago

I can't understand the OpenFAST error message, but if I understand your translation correctly, it can't find your ROSCO dll. Please compile it from source or download it from the release page. The ServoDyn input points to the DLL path, and it's set in the code of 12_tune_ipc.py.

wind2021 commented 1 year ago

I am happy to share with you my solution to the above problem. I found that the root cause of the above problem is that there is something wrong with the statement of the anaconda3\envs\rosco-env\lib\site-packages\rosco-2.7.0-py3.8-win-amd64.egg\ROSCO_toolbox\ofTools\case_gen\runFAST_pywrapper.py file, so that the openfast_x64 cannot be recognized. Therefore, I made the following modifications(wrapper.FAST_exe = self.FAST_exe to wrapper.FAST_exe = 'openfast_x64'), and the current operation is normal. Dear dzalkind, do you think my changes are correct? runFAST_pywrapper py

dzalkind commented 1 year ago

Your fix should work. A slightly easier solution might be to edit this line in runFAST. In an upcoming feature branch I have made it an attribute of run_FAST_ROSCO.

wind2021 commented 1 year ago

Dear dzalkind, recently I tried ROSCO 2.8.0,When I encountered the same problem as above, I adopted the above method to solve it. But this time it did not work, and the error is as follows. The screenshot as shown in the figure. Do you have any suggestions to solve this problem? ROSCO2 8 0

wind2021 commented 1 year ago

(rosco2.8.0-env) PS C:\Users\PC\ROSCO\Examples> python 12_tune_ipc.py WARNING: Be sure to pip install simpy and marmot-agents for offshore BOS runs Using ofTools in ROSCO_toolbox...

Loading wind turbine data for NREL's ROSCO tuning and simulation processeses


Tuning a reference wind turbine controller using NREL's ROSCO toolbox

Loading FAST model: BAR_10.fst Loading rotor performace data from text file: C:\Users\PC\ROSCO\Test_Cases\BAR_10\Cp_Ct_Cq.BAR_10.txt Loading rotor performace data from text file: C:\Users\PC\ROSCO\Tune_Cases../Test_Cases/BAR_10\Cp_Ct_Cq.BAR_10.txt D:\ProgramFiles\anaconda3\envs\rosco2.8.0-env\lib\site-packages\rosco-2.7.0-py3.8-win-amd64.egg\ROSCO_toolbox\ofTools\case_gen\CaseGen_General.py:122: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison elif val=='True': D:\ProgramFiles\anaconda3\envs\rosco2.8.0-env\lib\site-packages\rosco-2.7.0-py3.8-win-amd64.egg\ROSCO_toolbox\ofTools\case_gen\CaseGen_General.py:124: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison elif val=='False': WARNING: Be sure to pip install simpy and marmot-agents for offshore BOS runs Using ofTools in ROSCO_toolbox... WARNING: Be sure to pip install simpy and marmot-agents for offshore BOS runs Using ofTools in ROSCO_toolbox... WARNING: Be sure to pip install simpy and marmot-agents for offshore BOS runs Using ofTools in ROSCO_toolbox... WARNING: Be sure to pip install simpy and marmot-agents for offshore BOS runs Using ofTools in ROSCO_toolbox... Loading rotor performace data from text file: C:\Users\PC\ROSCO\Test_Cases\BAR_10\Cp_Ct_Cq.BAR_10.txt Loading rotor performace data from text file: C:\Users\PC\ROSCO\Test_Cases\BAR_10\Cp_Ct_Cq.BAR_10.txt Loading rotor performace data from text file: C:\Users\PC\ROSCO\Test_Cases\BAR_10\Cp_Ct_Cq.BAR_10.txt Loading rotor performace data from text file: C:\Users\PC\ROSCO\Test_Cases\BAR_10\Cp_Ct_Cq.BAR_10.txt Writing rotor performance text file: C:\Users\PC\ROSCO\Examples\examples_out\12_ipc_sim\BAR\ramp\base\BAR_0_Cp_Ct_Cq.txt Writing rotor performance text file: C:\Users\PC\ROSCO\Examples\examples_out\12_ipc_sim\BAR\ramp\base\BAR_1_Cp_Ct_Cq.txt Writing rotor performance text file: C:\Users\PC\ROSCO\Examples\examples_out\12_ipc_sim\BAR\ramp\base\BAR_2_Cp_Ct_Cq.txt Writing rotor performance text file: C:\Users\PC\ROSCO\Examples\examples_out\12_ipc_sim\BAR\ramp\base\BAR_3_Cp_Ct_Cq.txt Writing new controller parameter file parameter file: C:\Users\PC\ROSCO\Examples\examples_out\12_ipc_sim\BAR\ramp\base\BAR_0_DISCON.IN. Writing new controller parameter file parameter file: C:\Users\PC\ROSCO\Examples\examples_out\12_ipc_sim\BAR\ramp\base\BAR_1_DISCON.IN. OpenFAST Failed: [WinError 2] 系统找不到指定的文件。 Runtime: BAR_0.fst = 0.00 s OpenFAST Failed! Please check the run logs. OpenFAST Failed: [WinError 2] 系统找不到指定的文件。 Runtime: BAR_1.fst = 0.01 s OpenFAST Failed! Please check the run logs. Writing new controller parameter file parameter file: C:\Users\PC\ROSCO\Examples\examples_out\12_ipc_sim\BAR\ramp\base\BAR_2_DISCON.IN. OpenFAST Failed: [WinError 2] 系统找不到指定的文件。 Runtime: BAR_2.fst = 0.00 s OpenFAST Failed! Please check the run logs. Writing new controller parameter file parameter file: C:\Users\PC\ROSCO\Examples\examples_out\12_ipc_sim\BAR\ramp\base\BAR_3_DISCON.IN. OpenFAST Failed: [WinError 2] 系统找不到指定的文件。 Runtime: BAR_3.fst = 0.00 s OpenFAST Failed! Please check the run logs. multiprocessing.pool.RemoteTraceback: """ Traceback (most recent call last): File "D:\ProgramFiles\anaconda3\envs\rosco2.8.0-env\lib\multiprocessing\pool.py", line 125, in worker result = (True, func(*args, *kwds)) File "D:\ProgramFiles\anaconda3\envs\rosco2.8.0-env\lib\multiprocessing\pool.py", line 48, in mapstar return list(map(args)) File "D:\ProgramFiles\anaconda3\envs\rosco2.8.0-env\lib\site-packages\rosco-2.7.0-py3.8-win-amd64.egg\ROSCO_toolbox\ofTools\case_gen\runFAST_pywrapper.py", line 442, in evaluate_multi return evaluate(indict) File "D:\ProgramFiles\anaconda3\envs\rosco2.8.0-env\lib\site-packages\rosco-2.7.0-py3.8-win-amd64.egg\ROSCO_toolbox\ofTools\case_gen\runFAST_pywrapper.py", line 437, in evaluate return fast.execute() File "D:\ProgramFiles\anaconda3\envs\rosco2.8.0-env\lib\site-packages\rosco-2.7.0-py3.8-win-amd64.egg\ROSCO_toolbox\ofTools\case_gen\runFAST_pywrapper.py", line 178, in execute raise Exception('OpenFAST Failed! Please check the run logs.') Exception: OpenFAST Failed! Please check the run logs. """

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "12_tune_ipc.py", line 70, in main() File "12_tune_ipc.py", line 53, in main r.run_FAST() File "D:\ProgramFiles\anaconda3\envs\rosco2.8.0-env\lib\site-packages\rosco-2.7.0-py3.8-win-amd64.egg\ROSCO_toolbox\ofTools\case_gen\run_FAST.py", line 184, in run_FAST fastBatch.run_multi(cores=self.n_cores) File "D:\ProgramFiles\anaconda3\envs\rosco2.8.0-env\lib\site-packages\rosco-2.7.0-py3.8-win-amd64.egg\ROSCO_toolbox\ofTools\case_gen\runFAST_pywrapper.py", line 343, in run_multi output = pool.map(evaluate_multi, case_data_all) File "D:\ProgramFiles\anaconda3\envs\rosco2.8.0-env\lib\multiprocessing\pool.py", line 364, in map return self._map_async(func, iterable, mapstar, chunksize).get() File "D:\ProgramFiles\anaconda3\envs\rosco2.8.0-env\lib\multiprocessing\pool.py", line 771, in get raise self._value Exception: OpenFAST Failed! Please check the run logs.

dzalkind commented 1 year ago

Are there any notes about why OpenFAST failed in these runs? Have you updated the openfast_exe to run on Windows?

wind2021 commented 1 year ago

I tried to run on Windows and succeed,but it failed while running in anaconda powershell. Could you please help me by checking this simulation record? ROSCO2.8.0 bug.docx

dzalkind commented 1 year ago

It looks like you are trying to use OpenFAST 3.5.0 with the ROSCO_Toolbox ofTools. It is a current effort to update these tools to use OpenFAST 3.5.0: #246. Please use that feature branch or OpenFAST 3.4.1 executables.

wind2021 commented 1 year ago

Dear dzalkind, I tried to run ROSCO2.8.0 by: python 11_robusttuning.py, but I saw this print: (1)ModuleNotFoundError: No module named 'control',then I solved it by :conda install control (2)ModuleNotFoundError: No module named 'weis',but when I try to solve this problem by :conda install weis,I saw this print: (rosco2.8.0-env) PS C:\Users\PC> conda install weis 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:

Current channels:

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._

I can't solve this problem. Could you please give me some guidance or advice?

dzalkind commented 1 year ago

There is no conda installation for weis yet, and it should not be a dependency of ROSCO. ROSCO can use it when it's part of the WEIS toolset, but it does a check and should use ROSCO's version of the WEIS tools, called ofTools. I'm guessing you may have tried to install WEIS, so it's being recognized, but perhaps it's not fully part of the environment.

I would try with a fresh conda installation and with the installation instructions here: https://rosco.readthedocs.io/en/latest/source/install.html

dzalkind commented 1 year ago

I recently had this error come up when I tried example 11. The pyFAST libraries (or WEIS) are required to use the mbc3 function in this example.

I have updated the comments in 11_robust_tuning.py in #241 to make this clearer.