Skip to content

Improvements to linearization regression testing#2024

Merged
andrew-platt merged 4 commits intoOpenFAST:dev-unstable-pointersfrom
andrew-platt:f/RegTest_Linear_LowPass
Feb 7, 2024
Merged

Improvements to linearization regression testing#2024
andrew-platt merged 4 commits intoOpenFAST:dev-unstable-pointersfrom
andrew-platt:f/RegTest_Linear_LowPass

Conversation

@andrew-platt
Copy link
Collaborator

@andrew-platt andrew-platt commented Feb 7, 2024

This ready to merge.

Feature or improvement description
Add two updates to the linearization regression testing method:

  1. add tables for comparison of frequencies and damping. Export these to files frequencies_ref.txt and frequencies_new.txt
  2. add an optional high-pass filter to the frequency comparisons. There had been some cases where extra very low frequencies might appear in certain linearization checks (this was causing test Fake5MW_AeroLin_B1_UA4_DBEMT3 to fail when a frequency of ~0.00159 Hz - see below). The high-pass filter is set as an optional argument in the CTestList.cmake file (i.e. of_regression_linear("Fake5MW_AeroLin_B1_UA4_DBEMT3" "-highpass=0.05" "openfast;linear;elastodyn;aerodyn"))

Comparison tables
The new table format for the frequency comparisons appears as:

43:  Case: Ideal_Beam_Fixed_Free_Linear:1.lin: :
43:               Frequency (Hz)                        Damping (%)
43:            ----------------------------         ----------------------------
43:             Ref              New                 Ref              New
43:            0.570963420      0.570963420         0.000000000      0.000000000
43:            0.570963426      0.570963426        -0.000000000     -0.000000000
43:            3.546155606      3.546155606        -0.000000000     -0.000000000
43:            3.546155608      3.546155608         0.000000000      0.000000000
43:            9.763888291      9.763888291         0.000000000      0.000000000
43:            9.763888291      9.763888291        -0.000000000     -0.000000000
43:           18.694578736     18.694578736        -0.000000000     -0.000000000
43:           18.694578736     18.694578736        -0.000000000     -0.000000000
43:           33.978106303     33.978106303         0.000000000      0.000000000
43:           33.978106303     33.978106303         0.000000000      0.000000000
43:
43:  Case: Ideal_Beam_Fixed_Free_Linear:BD1.lin: :
43:               Frequency (Hz)                        Damping (%)
43:            ----------------------------         ----------------------------
43:             Ref              New                 Ref              New
43:            0.570963420      0.570963420         0.000000000      0.000000000
43:            0.570963426      0.570963426        -0.000000000     -0.000000000
43:            3.546155606      3.546155606        -0.000000000     -0.000000000
43:            3.546155608      3.546155608         0.000000000      0.000000000
43:            9.763888291      9.763888291         0.000000000      0.000000000
43:            9.763888291      9.763888291        -0.000000000     -0.000000000
43:           18.694578736     18.694578736        -0.000000000     -0.000000000
43:           18.694578736     18.694578736        -0.000000000     -0.000000000
43:           33.978106303     33.978106303         0.000000000      0.000000000
43:           33.978106303     33.978106303         0.000000000      0.000000000

High-pass filter
Before adding the high-pass filter, the case Fake5MW_AeroLin_B1_UA4_DBEMT3 would fail with an extra low frequency value sometimes appearing at 0.001591549 Hz. For this case, this frequency doesn't make much sense. The high-pass filter allows us to ignore it.

40:  Case: Fake5MW_AeroLin_B1_UA4_DBEMT3:1.lin: :
40:               Frequency (Hz)                        Damping (%)
40:            ----------------------------         ----------------------------
40:             Ref              New                 Ref              New
40:            0.618153481      0.001591549         0.077632352      1.000000000
40:            2.542444969      0.618023953         0.960695174      0.077577325
40:                             2.542505004                          0.960671433

Related issue, if one exists
The Fake5MW_AeroLin_B1_UA4_DBEMT3 regression test was added at commit 202bfe7, then removed 2 months later with commit 8e7e0b9. Between these commits, no changes were made to anything related to linearization.

This might be a candidate for inclusion in a v3.5.3 release.

NOTE: there is a bug in the AD15 linearization that is currently being fixed by PR #2014. So the Fake5MW_AeroLin_B* cases are currently disabled even though they are the reason for this PR.

Impacted areas of the software
Linearization.

Additional supporting information

Test results, if applicable
Test results do not change, but the comparison for linearization cases is slightly more robust.

There is a bug in the AD15 linearization that is getting corrected in PR OpenFAST#2014
@jjonkman
Copy link
Collaborator

jjonkman commented Feb 7, 2024

FYI @andrew-platt:

Considering that you are eliminating low frequencies and keeping high frequencies, this should be called a high-pass filter rather than a low-pass filter.

Such low frequencies reported by the eigensolution are likely ill-formed rigid body modes (whose frequency should be exactly zero, but are showing up slightly above zero due to, e.g., numerical round-off in the solution) or overly damped modes (when the post-processor computing the natural frequencies from the eigenvalues may not be working properly).

Best regards,

@andrew-platt
Copy link
Collaborator Author

@jjonkman, that's a pretty idiotic mistake on my part. I was thinking lowcut filter, then started typing lowpass without thinking about it again. I'll change it to highpass, as it should be.

I was suspicious there was something like that occurring with the low frequency modes. In the initial addition of the Fake5MW_AeroLin_B1_UA4_DBEMT3 case, the low frequency mode doesn't appear. Somewhere a few commits later, this case started failing due to the appearance of the low frequency mode (100% damped), which perhaps caused by small numerical changes with compiler updates. In more recent work, that low frequency disappeared again. So it's good to know this makes reasonable sense to you that we need this high-pass filtering.

Started with name lowcut, then mistyped and never thought about it again. Definitely a blundering mistake from someone who has designed and built multiple low and high-pass electronic filters over the years (facepalm).
@andrew-platt andrew-platt merged commit 06a3a7b into OpenFAST:dev-unstable-pointers Feb 7, 2024
@andrew-platt andrew-platt deleted the f/RegTest_Linear_LowPass branch February 7, 2024 17:28
@andrew-platt andrew-platt mentioned this pull request Dec 24, 2024
38 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments