Closed Alessandro5I closed 3 months ago
Hi Alessandro, Glad to see you're trying to use this. I'll do my best to make it work. I've never seen the first error but it is purely on the OpenFAST side, this should be fixed by recompiling FastFarm or just using a newer release (that will imply updating the input files). To be clearer, there is no change in FastFarm itself so the official branch from NREL can be used, all mods are in the controller dll. The second error may be due either to some bad path in Matlab, or to some version incompatibility. Try recompiling the mex file. BR Valentin
Dear BR Valentin, I'm trying to use your interface for my Master's Thesis.
Regading the first error, may I ask you which version of Fast.Farm did you use?
For the second part, I tried to recompile the mex file in matlab but I got the same error for MPIServer_Init.cpp and MPIServer_Stop.cpp:
mex MPIServer_Stop.cpp Building with 'Microsoft Visual C++ 2022'. Error using mex Creating library MPIServer_Stop.lib and object MPIServer_Stop.exp MPIServer_Stop.obj : error LNK2019: unresolved external symbol MPIServer_Stop referenced in function "public: virtual void __cdecl MexFunction::operator()(class matlab::mex::MexIORange<class std::_Vector_iterator<class std::_Vector_val<struct std::_Simple_types<class matlab::data::Array> > > >,class matlab::mex::MexIORange<class std::_Vector_iterator<class std::_Vector_val<struct std::_Simple_types<class matlab::data::Array> > > >)" (??RMexFunction@@UEAAXV?$MexIORange@V?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@VArray@data@matlab@@@std@@@std@@@std@@@mex@matlab@@0@Z) MPIServer_Stop.mexw64 : fatal error LNK1120: 1 unresolved externals
Here I attach a picture
Thanks for your help, Alessandro
You need to link the mex file against the MPI server dll, see mex file documentation
Which version of FF are you using? I would like to run this with the basic version (no OMP) of the program to have easier life. Do you think is it possible?
The version in the GitHub repo is pretty old, 3.0 I guess. As said before, it should be totally fine to update FAST.Farm, as everything is happening in the controller dll. The only thing you need then is to update OpenFAST input files to a newer version. Removing OMP will just call turbines sequantially, that should not change anything beside making it slower. I don't see why that should make your life easier though, unless you want to mess up with the MPI interface.
Hi, I updated the input and solved something. Still I have some issues, first of all I don't understand the exact sequence to start the program, it seems to work by simply click on the run_MATLAB but this procedure seems different then what is written in the readme. The new issue I found is this:
Farm_Initialize:T1:Farm_InitFAST:FWrap_Init:FAST_InitializeAll:SrvD_Init:BladedInterface_Init:The dynamic library .\OpenFAST\T1\ControlData\SCClient_DTUWEC_64.dll could not be loaded. Check that the file exists in the specified location and that it is compiled for 64-bit applications. T2:Farm_InitFAST:FWrap_Init:FAST_InitializeAll:SrvD_Init:BladedInterface_Init:The dynamic library .\OpenFAST\T2\ControlData\SCClient_DTUWEC_64.dll could not be loaded. Check that the file exists in the specified location and that it is compiled for 64-bit applications.
Thanks for your help. Alessandro
You need to link the mex file against the MPI server dll, see mex file documentation
I'm having difficulties in understanding which MPI server dll file should I link, in the doc I could only find how to link .lib files but the only one in this folder is not the one needed.
Hi, libSC_MPIServerSubs.a is the (static) library you should link against. The new issue you are encountering is self explanatory, the WT controller dll file cannot be loaded. Beside the given obvious reasons of path and CPU architecture, it may be because the dll is itself unable to load one of its dependencies (typically the MPI server dll given the original problem). You may use DependencyWalker to confirm this.
Hi, Thanks for the fast reply. I used DependencyWalker but it finds many many missing dlls for what I understand, I attach a screenshot:
Thanks for your help. Alessandro
Hi, yes DependencyWalker gives a lot of false errors. You've got to ignore the system dlls (like kernel32 or msvcrt) and look for any dependency specific to this application. Did you try recompiling the SCClient dll?
Hi, Today I solved everything, thanks for your time, Alessandro
I tried to download and run the test from github but I get different errors:
Error in SC_MATLAB (line 18) [nT,nc]=MPIServer_Init(MPI_sharedfile);
ERROR: MATLAB error Exit Status: 0x00000001
Thanks for your time, Alessandro