Skip to content

UnsteadyAero numerical improvements to UAMod 4-6 - #3491

Draft
bjonkman wants to merge 4 commits into
OpenFAST:devfrom
bjonkman:b/UA_180
Draft

bjonkman wants to merge 4 commits into
OpenFAST:devfrom
bjonkman:b/UA_180

Conversation

@bjonkman

@bjonkman bjonkman commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

This PR is NOT ready to be merged.

Feature or improvement description
This PR makes some numerical improvements to the continuous unsteady-aero states:

  • It adjusts the way the states are treated when UA is turned off. When UA is turned off due to low relative velocity, the state derivatives are now weighted to zero instead of blending the states to the steady-state solution in the UpdateStates routine (which is what is done in the calcOutput routine).
  • It refactors the equation for alphaE to deal with +/-180-degree jumps in alpha_34 compared to x1 or x2 states. This is similar to how the state derivatives already deal with the angle of attack subtraction from x1 and x2 states when calculating their derivatives.

These changes have resulted in smoother states and alphaE calculations.

Related issue, if one exists
None

Impacted areas of the software
Unsteady aero models that use the HGM-type continuous states: UAMod 4, 5, & 6

Generative AI usage
Assisted-by: Kiro:claude-opus-5.5

Test results, if applicable

  • A couple of channels in the ad_BAR_SineMotion_UA4_DBEMT3 test fail. The newer results look smoother than the baseline:
image image

This keeps showing up as automatically deleted, so I'm removing it from the repository. It should not matter since the vs-build directory is supposed to be excluded in the main .gitignore directory anyway.
instead of changing the values of the states when blending the UA and steady solutions, change the derivatives

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

UAMod 5’s vortex source still uses unweighted memory derivatives, producing inconsistent vortex evolution when those states freeze.

1 open issue
What changed in this PR

Improves AeroDyn’s continuous unsteady-aerodynamics calculations for UAMod 4–6, targeting smoother states and effective angles of attack.

Changes:

  • Replaces steady-state blending with low-velocity derivative weighting.
  • Handles angle wrapping when calculating alphaE.
  • Removes Visual Studio build ignore rules.
File Description
vs-build/​.gitignore Removes local build-artifact ignore rules, unrelated to the numerical changes.
modules/​aerodyn/​src/​UnsteadyAero.f90 Updates derivative weighting, blending helpers, and effective-angle calculations.

Review effort: Balanced


! As relative velocity -> 0, slow (and at zero velocity weight, freeze) the x1:x4 memory states
! so they are neigher reset nor driven by ill-conditioned inputs. Weight is 1 for |U| >= UA_u_Blend_max
dxdt%x(1:4) = real( UA_BlendWeightU(u%U), R8Ki ) * dxdt%x(1:4)
@bjonkman
bjonkman marked this pull request as draft October 22, 2026 17:41
@bjonkman

Copy link
Copy Markdown
Contributor Author

After some more digging with a few other use cases, I'm going to refine this a little more. UA models are awesome.

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.

4 participants