FAST.Farm: fix indexing on dropping wake planes that get dropped#3323
Conversation
Increase factor from 15 to 30
A segfault could occur in evaluating the plane index -- compiler dependent
|
This bug was introduced in #3071 |
|
I'm not sure I fully understand why 15 was changed to 30 when calculating What is causing the issue with the initial plane? How is this case set up to have step change in wake response? The wake solution looks odd to me overall, but perhaps the turbine operation set-up is odd? |
|
@luwang00 and I weren't entirely sure where the 1.25 came from. I'll change the 30 back to 15 to keep in line with the original derivation. I'm still tracking down the issue with the initial plane. I suspect an uninitialized variable someplace - we see different results for certain vtk points depending on compilation with gcc, but no notable issues with intel (double precision giving |
|
There are also oddities in this particular setup. But it is highlighting some issues we should fix anyhow. |
Merging fast plane and slow plane it is passing by simple averaging.
That commit was an idiotic mistake in normalizing -- combined two lines of code without thinking. It ended up with a scalar value applied to all components of the vector
luwang00
left a comment
There was a problem hiding this comment.
@andrew-platt Thanks for fixing this!
Ready to merge
Feature or improvement description
If a FAST.Farm wake plane passes another, an error in the indexing was causing the wake plane getting passed to be dropped, but also causing the very last wake plane to get dropped as well. This would result in the end of the wake jumping backwards whenever a wake was dropped from the middle of the sequence.
https://github.com/user-attachments/assets/6ad85fa8-2cc7-4208-bd20-b7a4748af6fd
Figure 1: single turbine case before bugfix.
https://github.com/user-attachments/assets/5a3ac9c8-aa62-4de2-b0b8-8cc58cc2ab46
Figure 2: single turbine case after bugfix. Note the artifacts from the first wake plane - these will be addressed in a separate PR.
In the above simulations, the fast moving plane that is catching up to a slower moving plane is dropped.
This could be modified in a later PR.This method was dropped in favor of merging wake planes by averaging.Solution: averaging of wake planes
As a fast moving plane catches up with a slow moving plane, the two planes are averaged together and saved. Older planes are then shifted forward in indexing to account for the now missing plane.
https://github.com/user-attachments/assets/9386a301-e294-4994-badd-c49a42f364ff
Figure 3: A fast moving wake plane catching up to a slow moving wake plane is now merged together instead of simply dropping the fast moving plane.
Incidental changes
In addition to fixing the above issue, a couple other minor modifications are included in this PR:
in calculating. Will diagnose this laterMaxNumPlanes, increased coefficient from 15 to 30. One of the test cases run during diagnostics unexpectedly hit this limit. The calculation itself should be looked at sometime as it doesn't appear to account for the low res timestep between planes, which is likely why this limit was hit.NumDFullandNumDBufffrom integer to real. There was no reason for these to be integers.Related issue, if one exists
#3277 -- this was due to this bug
Impacted areas of the software
FAST.Farm wake, but only in cases where the simulation is setup poorly and wake planes are passing each other and getting dropped as a result.
Additional supporting information
Note that the are some strange artifacts in the first plane. These will be corrected in different PR.
Generative AI usage
Bug diagnostics assisted by Anthropic Claude claude@anthropic.com
Test results, if applicable
Regression tests are properly setup, so they did not show this behavior,