Skip to content

Addition of IAG dynamic stall model as UAMod=9 - #3485

Draft
hkross wants to merge 13 commits into
OpenFAST:devfrom
hkross:feature/IAG
Draft

hkross wants to merge 13 commits into
OpenFAST:devfrom
hkross:feature/IAG

Conversation

@hkross

@hkross hkross commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

This pull request is not ready to be merged.

All tests pass (comment line changes only); all development is finished; documentation has been updated

Feature or improvement description

Related issue, if one exists
#2289

Impacted areas of the software

  • AeroDyn
  • UnsteadyAero

Generative AI usage
Generative AI was used in this work

  • Theory document created manually
  • AI used to create detailed implementation plan from theory document
  • AI used to implement code changes
  • AI used to conduct verification
  • Assisted by: GitHub Copilot support@github.com
  • Co-authored-by: Anthropic Claude claude@anthropic.com

Test results, if applicable
No impact on r-test results (changes to comment lines only)

  • r-test branch merging required

To be completed before merging

  • Verification against literature results
  • Proofreading of documentation
  • Addition of new r-test(s) using UAMod=9

typedef ^ ^ ReKi Ka - - - "IAG model: impulsive (non-circulatory) normal-force gain [default=0.75]" -
typedef ^ ^ ReKi Kv - - - "IAG model: center-of-pressure amplitude for vortex moment [default=0.2]" -
typedef ^ ^ ReKi dCNdA - - - "IAG model: static normal-force curve slope from linear-fit approach" 1/rad
typedef ^ ^ ReKi CnMax - - - "IAG model: (calculated) maximum static Cn, used as positive CN_CRIT" -

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.

I haven't looked through this code very carefully, but I'm curious if CnMax and CnMin are the same things as Cn1 and Cn2? Their descriptions seem very similar.

! These are PROTECTED: only UA_SetIAGBlendBounds may modify them, and it is intended for
! test/verification use. They are global (not per-instance), so a driver that changes them
! changes them for every UA instance in the process.
real(ReKi), parameter :: IAG_BlendLo_Def = 30.0_ReKi ! deg; default start of the dynamic->static blend

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.

I'm not really a fan of storing these parameters in units of degrees. We generally store everything else in the code as radians. If they have to be in degrees, it would be nice to rename them to clearly indicate that they have non-standard units. like IAG_BlendLo_Def_deg.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants