Skip to content

acoustic module was not letting users interpolate polars across Reyno… - #3504

Open
ptrbortolotti wants to merge 3 commits into
OpenFAST:devfrom
ptrbortolotti:aa_aftabmod_2
Open

ptrbortolotti wants to merge 3 commits into
OpenFAST:devfrom
ptrbortolotti:aa_aftabmod_2

Conversation

@ptrbortolotti

Copy link
Copy Markdown
Contributor

The acoustic module was not letting users interpolate polars across Reynolds because stall angle was computed offline and kept static. This commit overcomes this limitation. Note that, somewhat surprisingly, boundary layer properties were already being interpolated across different Reynolds

Related issue, if one exists
None

Impacted areas of the software
AeroAcoustics.f90, Aeroacoustics registry, and call to Aeroacoustics from AD15

Additional supporting information
None

Generative AI usage
Co-authored-by: Microsoft Copilot copilot@microsoft.com

Test results, if applicable
I believe tests will not be impacted, but I will see what the PR says

…lds because stall angle was computed offline and kept static. this commit overcomes this limitation

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Multi-table AFTabMod=3 airfoils are accepted despite a hard-coded zero UserProp that can select a stall angle inconsistent with the node’s aerodynamic polar, producing incorrect acoustic results.

1 open issue
What changed in this PR

This PR enables Reynolds-dependent stall-angle interpolation in AeroAcoustics, replacing the fixed stall angle previously stored during initialization.

Changes:

  • Compute the acoustic stall angle using the node’s instantaneous Reynolds number.
  • Pass airfoil data through AeroDyn and the standalone acoustic driver.
  • Remove the cached stall-angle parameter and its serialization support.
File Description
modules/​aerodyn/​src/​AeroDyn.f90 Pass airfoil data to acoustic output calculations.
modules/​aerodyn/​src/​AeroAcoustics.f90 Interpolate stall angles at runtime and remove the single-table restriction.
modules/​aerodyn/​src/​AeroAcoustics_Types.f90 Remove cached stall-angle storage and lifecycle routines.
modules/​aerodyn/​src/​AeroAcoustics_Registry.txt Remove the cached stall-angle parameter definition.
modules/​aerodyn/​src/​AeroAcoustics_Driver.f90 Supply airfoil data through the updated acoustic interface.

Review effort: Balanced

Comment thread modules/aerodyn/src/AeroAcoustics.f90 Resolved
@andrew-platt
andrew-platt requested review from bjonkman and a balanced review from Copilot November 3, 2026 18:39

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

For coupled runs with BEM_Mod=2, reconstructing Reynolds number from u%Vrel can select a stall angle inconsistent with the aerodynamic polar, so the AA input should use the existing nodal BEMT_y%Re while retaining velocity-based calculation for the standalone driver.

No open issues 🎉

1 previously missed issue

In code that hasn't changed since last review

Medium severity Use the BEMT Reynolds number for stall-angle lookup

modules/​aerodyn/​src/​AeroAcoustics.f90:1039

With BEM_Mod=2, reconstructing Reynolds number from u%Vrel can select a different stall angle from the aerodynamic polar because BEMT computes velocity and Reynolds number using different projections (BEMT.f90:2386–2387). Pass the existing nodal BEMT_y%Re through the AA input interface for coupled runs so both lookups use the same Reynolds number, retaining the velocity-based calculation for the standalone driver.

1 resolved since last review

Review effort: Balanced

@ptrbortolotti

Copy link
Copy Markdown
Contributor Author

Summary of changes:

  • Replaced the fatal "NumTabs ≠ 1" restriction with runtime Re-interpolated stall-angle lookup via AFI_ComputeUACoefs.
  • Removed the now-dead p%StallStart parameter (registry + generated types + usages).
  • Rejected only the genuinely unsupported case (AFTabMod=3/AFITable_2User with multiple tables), since AA has no per-node UserProp.
  • Added a proper u%Re input field (registry + types) so coupled runs use BEMT's own nodal Re (m%BEMT_y%Re) instead of reconstructing it from Vrel, while the standalone driver computes it from Vrel*chord/KinVisc.
    -Fixed BL_Param_Interp to use that same authoritative Re instead of re-deriving it from velocity and chord.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are recorded for the Reynolds-dependent stall-angle interpolation changes.

No open issues 🎉

Review effort: Balanced

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