-
Notifications
You must be signed in to change notification settings - Fork 91
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue with Multiple turbines in ADM/ALM model #537
Comments
@tchatte3 looking at where you're stdout is terminating it looks like this is failing in OpenFAST (potentially in servodyn). Does this case work for you with one turbine? It could be that your library for servodyn is a) not compiled or b) is not being used by the second turbine. I also see that you're sha from the log file looks like it is from a build in December (d503c4e). Could you first try updating builds for OpenFAST and nalu-wind? When you compile OpenFAST try adding in the compiler flag Also when you compile nalu-wind you can compile with either tests or examples turned on to ensure the servodyn library gets compiled for the nrel5MW case. |
@psakievich , it is indeed failing in OpenFAST, I had some issues with Servodyn in the regression test, so my feature switch for Servodyn, Hydrodyn etc in .fst file has been kept to "0". This case worked for me, for one turbine, but not for two turbines. I will try recompiling the Servodyn library, and see if it works. |
@tchatte3 Hi Tanmoy, I think I'm able to replicate your problem on a very recent nalu-wind build with a very similar (but not exactly the same) setup. For me, the problem is independent of whether Servodyn is active or not. Can you send us the exact grid/domain dimensions and the processor counts that you're using? Something like the alm_preprocess.yaml would be perfect. If memory allows, can you also try running this case on exactly 2 processors? I'm looking into whether there's an issue with the processor/turbine assignments. Thanks, Lawrence |
@lawrenceccheung Thanks. Here is the preprocess file. I am trying to run it on a very coarse grid with 20 processes.
|
@lawrenceccheung Unfortunately, there are restriction in the resources; I am not permitted to go below some threshold MPI processes. I will see if I can get down the threshold to 2. |
@tchatte3 Thanks Tanmoy. It's looking like the issue is stemming from the domain decomposition and processor/turbine assignment. For instance, if you try separating the turbines more, like putting one at Once I dig deeper I'll provide some more details and see if I can come up with a fix. Lawrence |
@lawrenceccheung Hi Lawrence, thanks for the insights. Yes, I just tested that for [4500, 2500, 0] on 20 procs and works for me too. Sure, look forward to it. |
@lawrenceccheung @tchatte3 currently openfast only supports one turbine per rank. The current implementation assigns them based off the geometric location of the hubs so if the domain decomposition is such that multiple turbines are assigned to one rank this would cause a failure. I'm addressing this as part of my refactor of the entire actuator framework in #532. |
@psakievich Thanks! |
I believe the OpenFAST - C++ API should be able to support more than 1 turbine per rank. I have been able to do this in the past. I'll look into this error tomorrow. |
@psakievich @gantech I'm seeing something strange in the coarse search of nalu-wind/src/actuator/ActuatorFAST.C Lines 374 to 387 in 50ef780
Normally I would expect to see that
This might all get solved later in Phil's refactoring, but it's something very odd that I happen to see. Lawrence |
First off.. I was able to reproduce this error on a simple modification of the regression test to a 2 turbine case. Though I don't have a fix for this problem, here's what I have. OpenFAST C++ API compiles an executable called openfast_3turbine_1proc_demo.zip From what I remember the Actuator line implementation did have this capability to run multiple turbines on 1 proc before. I can't be sure of when that capability regressed. Unfortunately, going back in Nalu-wind means going back in Trilinos as well and I don't have the time to deal with installing older Trilinos now. |
You could replace the function that allocates turbines to procs with a simple call to |
@gantech Thanks for the suggestion. I replaced the assignment routines in However, it does not work when Nturbines > Ncores, so if there are 2 turbines, then it must be run on at least 2 cores. I'm not sure if that's a limitation of the openFAST verison I'm using (branch 6d9e2b9), or if there's something else we need to do. Lawrence |
Hey Lawrence. I'm glad this helped move things along. The example I shared is definitely using the same allocation function https://github.com/OpenFAST/openfast/blob/dev/glue-codes/openfast-cpp/src/FAST_Prog.cpp#L123 I hope you were able to run 3 turbines on 1 proc with that example satisfying the |
@gantech @lawrenceccheung @tchatte3 I will add multiple turbines per rank into my test procedure after I complete the requirements for the Q2 milestone unless there is some provoking reason to be able to run |
@tchatte3 you can try swapping |
@tchatte3 do you still have outstanding issues or would it be acceptable to close this issue? |
@psakievich Yes, I would close this issue. Thanks for the note. |
Hi Nalu-Team,
I tried extending the regression test case for NREL5MWActuatorline/NREL5MWActuatorDisk model for one turbine to multiple turbines, but it is giving me segmentation faults.
This is a very minimal modification to the regression_test example and it works perfectly fine for one turbine. The error occurs only when I am trying to it use multiple turbines. This was also tested for multiple processors, but the segmentation fault does not go away
Log files, and stderr files are attached for reference.
abl_simulation.log
abl_simulation.yaml.txt
user_script.stderr.txt
user_script.stdout.txt
Best,
Tanmoy
The text was updated successfully, but these errors were encountered: