First of all, I am grateful to the NREL team for developing a tool like WEIS framework. Then In recent months, I tried to install WEIS on WSL (Windows Subsystem for Linux) and ran 02_control_opt successfully with some of Daniel’s suggestions. I have a short-term goal of applying the methods in this paper (Floating wind turbine control optimization) to NREL5MW_OC4_semi. Therefore, I have the following questions to ask you to give me some advice and help, I will be very grateful to receive your reply.
- View the results of simulation (path: \WEIS\examples\02_control_opt\outputs\02_control_opt\iteration_0\timeseries ), here appeared: file format (.p), I use converts it to a python program. And got file with format (.npy) and file with format (.mat), using matlab to open the file with format (.mat), I saw there is a pile of data, is there anyone variable description, description of the unit or description document file similar to outlistparameter. xlsx(for OpenFAST out file)?
2.The parameter named OutFileFmt , which in line 43 of modeling_options.yaml ( path: \WEIS\examples\02_control_opt), can be set to 1/2/3? Can I choose mat file or text file? Will this output format affect the simulation time?
3.The last and most important, I want to know how to apply this method to NREL5MW_OC4_semi. Is this means I should create a file like IEA-15-240-RWT.yaml to describe NREL5MW_OC4_semi FOWT?
I tried to created a file named NREL-5-126-RWT in \WEIS\examples\01_aeroelasticse\OpenFAST_models but found OSError while running. I checked the error message, and I think it was caused by no libdiscon.dylib in my ServoDyn.dat. Then I tried to run ROSCO to generate this file, but found that ValueError which maybe caused by file version does not correspond to ROSCO version.
Can you give me some advice? How can I get the libdiscon.dylib for NREL5MW_OC4_semi?
File “/home/wind/WEIS/WISDEM/wisdem/floatingse/floating_frame.py”, line 215, in compute
myframe = pyframe3dd.Frame(node_obj, react_obj, elem_obj, opt_obj)
File “/home/wind/WEIS/WISDEM/wisdem/pyframe3dd/pyframe3dd.py”, line 456, in init
self._pyframe3dd = np.ctypeslib.load_library(libname, mydir)
File “/home/wind/anaconda3/envs/weis-env/lib/python3.10/site-packages/numpy/ctypeslib.py”, line 161, in load_library
raise OSError(“no file with expected extension”)
OSError: ‘wisdem.wt.floatingse.load.frame’ : Error calling compute(), no file with expected extension
Using weis.aeroelasticse in ROSCO_toolbox…
Loading wind turbine data for NREL’s ROSCO tuning and simulation processeses
Loading FAST model: NREL-5MW.fst
Traceback (most recent call last):
File “/home/wind/WEIS/ROSCO/Tune_Cases/tune_ROSCO.py”, line 48, in
File “/home/wind/WEIS/ROSCO/ROSCO_toolbox/turbine.py”, line 166, in load_from_fast
File “/home/wind/WEIS/weis/aeroelasticse/FAST_reader.py”, line 2491, in execute
File “/home/wind/WEIS/weis/aeroelasticse/FAST_reader.py”, line 764, in read_InflowWind
self.fst_vt[‘InflowWind’][‘WindProfile’] = int(f.readline().split())
ValueError: invalid literal for int() with base 10: ‘0.2’
I tried to fix the above OSError, specifically, I changed my setting at line 77 to “…/ROSCO/Test_Cases/5MW_Baseline/ServoData/ROSCO/libdiscon.so” in D:\Ubuntu\rootfs\home\wind\WEIS\examples\01_aeroelasticse\OpenFAST_models\NREL-5-126-RWT\5MW_OC4Semi_WSt_WavesWN\NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat. But unfortunately, it can not work, the same OSError appeared.
I checked the D:\Ubuntu\rootfs\home\wind\WEIS\examples\01_aeroelasticse\OpenFAST_models\IEA-15-240-RWT\IEA-15-240-RWT-UMaineSemi\IEA-15-240-RWT-UMaineSemi_ServoDyn.dat, but found “…/…/…/…/…/local/lib/libdiscon.dylib” in line 77, I’m curious about the DLL_FileName here. And I tried to copy the libdiscon.so above to this path, and resetting the line, but it can not work too!
I don’t know how to solve this problem. Can someone help me? Thank you in advance.
DLL_FileName should be the name of your ROSCO dynamic library. Using an absolute path could help you.
Generally, starting from a working example, and only changing a few things at a time can help discover which steps are breaking the code.