-
Notifications
You must be signed in to change notification settings - Fork 458
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
Fix BD + AD linearization indexing (negative damping results) #2060
Conversation
The motions in dUdy from BD were starting at the incorrect index. Instead of starting at the motion, the index started at the root load output. This resulted in a shift of all the dUdy terms coupling y_BD motion to u_AD blade motion. This error has existed since at least commit 315bb29 on April 13, 2018 Co-authored-by: Derek Slaughter <deslaughter@gmail.com>
This commit is ready for merging pending testing by @ptrbortolotti and reviews. |
904114a
to
04cbe32
Compare
…h documentation) This results in some differences in the dUdy, A, and C matrices, but basically the same frequencies Co-authored-by: Derek Slaughter <deslaughter@gmail.com>
04cbe32
to
db8d795
Compare
@@ -3331,8 +3331,8 @@ SUBROUTINE Linear_ED_InputSolve_dy( p_FAST, y_FAST, SrvD, u_ED, y_ED, y_AD, u_AD | |||
|
|||
! ED translation displacement-to-ED moment transfer (dU^{ED}/dy^{ED}) from BD root-to-ED hub load transfer: | |||
ED_Start = Indx_u_ED_Hub_Start(u_ED, y_FAST) + u_ED%HubPtLoad%NNodes*3 ! start of u_ED%HubPtLoad%Moment field (skip forces) | |||
ED_Out_Start = Indx_y_ED_Hub_Start(y_ED, y_FAST) ! start of y_ED%HubMotion%TranslationDisp field |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note that the documentation has this as a summation of all the terms, not terms at each ED root node to the hub. So this change makes it more consistent with the documentation and doesn't affect the resulting frequencies.
This also brings this closer in line with the tight coupling implementation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on the rest of the code, it looks like the original implementation where it connected to the blade root was a bug.... that apparently didn't affect the results. Thanks for fixing it!
BD_Out_Start = y_FAST%Lin%Modules(Module_BD)%Instance(k)%LinStartIndx(LIN_OUTPUT_COL) | ||
|
||
BD_Out_Start = y_FAST%Lin%Modules(MODULE_BD)%Instance(k)%LinStartIndx(LIN_OUTPUT_COL) & ! start of BD%y(k)%BldMotion%TranslationDisp field | ||
+ BD%y(k)%ReactionForce%NNodes * 6 ! 2 fields with 3 components |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change was the problem that likely was giving rise to negative damping.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wow, great find! This issue has been plaguing us for a long time!
This commit follows PR #2055
Feature or improvement description
Linearization with BeamDyn and AeroDyn has often resulted in negative damping results in the frequency analysis. The root cause of this was due to an incorrect indexing in the
dUdy
array for the start location of BeamDyn blade output motion to AeroDyn input blade motion. Instead of starting at the first index for the BD motion, the index was set to the start of the BD reaction load. This shifted all BD motion component mappings indUdy
by 6 indices thereby mapping BD reaction loads to AD node 1 motions.Related issue, if one exists
This has existed in the code since commit 315bb29.
Impacted areas of the software
Linearization of BeamDyn with AeroDyn.
Additional supporting information
In the
5MW_Land_BD_Linear_Aero
test case (added in #2055), the complete list of outputs includes (blade 1 shown, blades 2 & 3 similar):In the original formulation, index
751
was getting used as the start of the BeamDyn output blade motion indUdy
instead of the correct index of757
This issue was discovered by @deslaughter during the development of the tight coupling algorithm for v5.0.0, and the linearization modifications for 4.0.0 (PR #2014).
Test results, if applicable
Test case
5MW_Land_BD_Linear_Aero
results change in frequency and damping: