Skip to content

AD: refresh wind rotations for direction linearization - #3468

Open
Mohammad-Salik wants to merge 1 commit into
OpenFAST:rc-5.0.1from
Mohammad-Salik:fix/aerodyn-propagation-direction-jacobian
Open

Mohammad-Salik wants to merge 1 commit into
OpenFAST:rc-5.0.1from
Mohammad-Salik:fix/aerodyn-propagation-direction-jacobian

Conversation

@Mohammad-Salik

@Mohammad-Salik Mohammad-Salik commented Sep 18, 2026

Copy link
Copy Markdown

Feature or improvement description

Fix the AeroDyn Jacobian perturbation for the InflowWind propagation-direction extended input.

PerturbFlowField currently perturbs PropagationDir while leaving the dependent RotToWind, RotFromWind, and RotateWindBox values unchanged. As a result, AeroDyn evaluates the perturbed case with the base wind rotation and the aeroelastic propagation-direction sensitivity is lost.

This change resets the cached rotation quantities from the base flow field for each perturbation and recomputes them when PropagationDir is perturbed. No change is made to the finite-difference step size.

Related issue, if one exists

Closes #3463

Impacted areas of the software

  • AeroDyn linearization
  • Extended InflowWind propagation-direction input

No time-domain behavior is intentionally changed; the modification is confined to the flow-field copy used inside the input-Jacobian perturbation.

Additional supporting information

The production change was validated on clean OpenFAST v5.0.0 source revision 2895884d2be01862173c88d70f86b358d2f1a50a at one operating point with 36 azimuth snapshots. At the maintainers' request, this PR targets rc-5.0.1 for the v5.0.1 bugfix release.

With the original implementation, both propagation-direction state-input columns are zero and their feedthrough to turbine outputs is zero, while the InflowWind diagnostic velocity Jacobian still gives the expected lateral derivative. With the repair, the aeroelastic direction sensitivity is restored.

The repaired rotation perturbation was compared at the same perturbation size against an independent uniform-wind-angle finite-difference implementation. The direction B columns agreed exactly at saved precision and the maximum D-column difference was 2.7041e-13. Saved operating states/inputs/outputs, A, C, and all non-direction B/D columns were unchanged at saved precision.

A reproducer containing the input files, 36 legacy/fixed .lin pairs, and a standalone comparison script is attached to issue #3463.

Finite-difference step-size convergence was investigated separately and is not part of this patch.

Generative AI usage

OpenAI Codex was used to assist with implementation and validation tooling. OpenAI ChatGPT was used to assist with preparation of the reproducer and PR text.

Test results, if applicable

Validated on the rc-5.0.1 PR branch at commit aa22ddca9, built with
Intel ifx 2026.0.0 in double precision.

The direction-linearization reproducer was rerun with the PR executable at
36 azimuth snapshots. The repaired model restores nonzero propagation-direction
B and turbine-output D sensitivity. Saved operating points, A, C,
and all non-direction B/D columns remain unchanged at the exported precision.

Existing linearization regression tests were also run. WP_Stationary_Linear
passes. The remaining affected linearization cases differ only in the
propagation-direction Jacobian columns: the current r-test references contain
the pre-fix zero sensitivity, while the PR produces the corrected nonzero
response. Modal frequencies/damping and all non-direction entries remain
unchanged.

An r-test reference update is therefore required to reflect the intended
propagation-direction Jacobian change.

  • r-test branch merging required

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

One or more issues must be addressed before approval.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Updates AeroDyn’s flow-field perturbation used for Jacobian calculations so propagation-direction changes refresh wind rotations.

Changes:

  • Resets cached rotation data for each perturbation.
  • Recomputes rotation matrices and enables wind-box rotation for direction perturbations.
File summaries
File Description
modules/aerodyn/src/AeroDyn.f90 Updated as part of this pull request.
Review details
  • Files reviewed: 1/1 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@Mohammad-Salik
Mohammad-Salik marked this pull request as ready for review September 19, 2026 08:41
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