NREL / ROSCO

A Reference Open Source Controller for Wind Turbines

Home Page:https://rosco.readthedocs.io/en/latest/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Flang support

marchdf opened this issue · comments

Hi, I was using the flang compiler on Frontier today (which I was using for openfast) but I got errors in ROSCO when using the same compiler. I noticed in the cmake that ROSCO only supports GNU and Intel compilers:

if (${CMAKE_Fortran_COMPILER_ID} STREQUAL "GNU")
. I was hoping there was a path towards supporting flang so that I don't have to mix compilers. Thanks!

Hi,

Interesting! I'm not that familiar with Flang and may not have the bandwidth to tackle (and, mainly, test a fix for) this issue very soon, but there's definitely a path towards its support. The process should be

  • Adding these lines to the ROSCO CMakeLists.txt that you linked.
  • Adding the SysFlangLinux.f90 file to the ROSCO sys files
  • Tidying up the sys file to match the other in ROSCO, which mainly consists of removing some extra submodules and compiler directives. I did a quick diff between the OpenFAST and ROSCO SysFiles.

I hope this helps. I'll leave this open until we're supporting Flang. If you're able to get to it before we do, we'd greatly appreciate any tips or a PR.

Best, Dan

Thanks for answering so quickly! If I get a chance I might give your suggestion a shot.

@dzalkind I needed this for frontier and I have a working version. But it's for ROSCO 2.7 because those are the input files I was given. Here's the branch: https://github.com/marchdf/ROSCO/tree/rosco-27-flang. Let me know if that "looks" ok and I can try doing the same for the dev version of ROSCO and submit a PR.

Thanks, Marc! It looks okay to me. Ideally, we'd figure out how to keep these lines as they are ROSCO's main debugging output.

Apparently there are a bunch of Flang flavors out there, with a new one due in March. Maybe it will resolve the issue you raised. Which Flang compiler you are using on frontier?

Yes I definitely think the eventual PR should have those lines in there. I am going to work with someone who knows fortran/flang better than me and see if we can resolve this. I am a bit confused by the flang landscape. Let me get back to on what kind of version I am using.