Theory

This page gives a self-contained mathematical account of the methods VANE implements, in the order the pipeline applies them. Each result is checked against an analytical or reference solution; the Validation matrix links every claim here to an automated test. Symbols: \(N_b\) is the number of blades (three in VANE), \(\Omega\) the rotor speed (rad/s), \(\psi\) the rotor azimuth, and \(j=\sqrt{-1}\).

1. Linearized turbine dynamics

OpenFAST linearizes the coupled aero-hydro-servo-elastic equations of motion about a periodic steady operating point, yielding a first-order state-space model

(1)\[\dot{\mathbf{x}}(t) = \mathbf{A}(\psi)\,\mathbf{x}(t) + \mathbf{B}(\psi)\,\mathbf{u}(t), \qquad \mathbf{y}(t) = \mathbf{C}(\psi)\,\mathbf{x}(t) + \mathbf{D}(\psi)\,\mathbf{u}(t),\]

where the state \(\mathbf{x}\) collects the structural and actuator degrees of freedom (DOFs) and their rates. For a spinning rotor the system matrices depend on the azimuth \(\psi=\Omega t\), so (1) is linear time-periodic (LTP) with period \(T = 2\pi/\Omega\), not time-invariant. The structural block has the second-order form

\[\mathbf{M}\ddot{\mathbf{q}} + \mathbf{C}_d\dot{\mathbf{q}} + \mathbf{K}\mathbf{q} = \mathbf{f},\]

assembled by VANE into the canonical state layout \(\mathbf{x} = [\,\mathbf{q}_2;\ \dot{\mathbf{q}}_2;\ \mathbf{q}_1\,]\) (second-order displacements, their rates, then first-order states); see Coordinate systems, origins & datums.

2. The multi-blade coordinate (Coleman) transform

A direct eigenanalysis of \(\mathbf{A}(\psi)\) is azimuth-dependent and the blade DOFs are coupled by rotation. The multi-blade coordinate (MBC), or Coleman, transform [Coleman1957] [Bir2008] projects the \(N_b\) identical blade DOFs into the non-rotating frame, where an isotropic rotor becomes time-invariant.

Let \(q^{(b)}\) be a blade DOF on blade \(b\) at azimuth \(\psi_b = \psi + 2\pi(b-1)/N_b\). The transform to the collective, cosine-cyclic, and sine-cyclic coordinates is

(2)\[q_0 = \frac{1}{N_b}\sum_{b=1}^{N_b} q^{(b)}, \qquad q_{c} = \frac{2}{N_b}\sum_{b=1}^{N_b} q^{(b)}\cos\psi_b, \qquad q_{s} = \frac{2}{N_b}\sum_{b=1}^{N_b} q^{(b)}\sin\psi_b .\]

Collecting (2) into the full-state transform \(\mathbf{T}(\psi)\) (the blade triplets transformed, the non-rotating tower, drivetrain, and platform DOFs passed through unchanged), the state transforms as \(\mathbf{x}_{\mathrm{NR}} = \mathbf{T}(\psi)\,\mathbf{x}\). For any first-order LTP system the exact non-rotating state matrix is

(3)\[\mathbf{A}_{\mathrm{NR}}(\psi) = \mathbf{T}\mathbf{A}\mathbf{T}^{-1} + \dot{\mathbf{T}}\mathbf{T}^{-1}, \qquad \dot{\mathbf{T}} = \Omega\,\partial_\psi\mathbf{T}.\]

Because VANE applies the blade transform to the second-order state \([\,\mathbf{q}_2;\,\dot{\mathbf{q}}_2;\,\mathbf{q}_1\,]\), the term \(\dot{\mathbf{T}}\mathbf{T}^{-1}\) couples the transformed velocities back to the positions, and its explicit evaluation brings in the first and second azimuth derivatives of the blade Coleman matrix: the first contributes the Coriolis coupling (\(\propto\Omega\)) and the second the centrifugal coupling (\(\propto\Omega^2\)), which together produce the regressive/progressive frequency split. The implementation forms these blocks explicitly (terms in \(\Omega\,\partial_\psi\mathbf{T}\) and \(\Omega^2\,\partial_\psi^2\mathbf{T}\)).

VANE detects the blade triplets automatically from the channel descriptions and applies the multi-blade projection to all four system matrices: the state matrix as in (3), and \(\mathbf{B}\), \(\mathbf{C}\), \(\mathbf{D}\) by applying the state coordinate map on the state side of each matrix and the input/output multi-blade maps on their input/output side (so the state map acts on the left of \(\mathbf{B}\) and on the right of \(\mathbf{C}\)). The \(\dot{\mathbf{T}}\mathbf{T}^{-1}\) term arises only from differentiating the state transform and is therefore specific to the state equation; it does not appear in the \(\mathbf{B}\), \(\mathbf{C}\), \(\mathbf{D}\) transforms.

Azimuth averaging. The averaged non-rotating model is

(4)\[\bar{\mathbf{A}} = \frac{1}{2\pi}\int_0^{2\pi}\mathbf{A}_{\mathrm{NR}}(\psi)\, \mathrm{d}\psi \approx \frac{1}{N_\psi}\sum_{k=1}^{N_\psi}\mathbf{A}_{\mathrm{NR}}(\psi_k),\]

estimated from the available azimuth samples. For an isotropic rotor every \(\mathbf{A}_{\mathrm{NR}}(\psi)\) is identical, so (4) is exact and the averaged model represents the periodic system without error; anisotropy introduces an azimuth dependence that §8 quantifies. VANE enforces that the azimuth samples form a coherent sweep (distinct azimuths, constant rotor speed) before averaging.

3. Eigenanalysis and modal parameters

The modes are the eigenpairs of the averaged state matrix, \(\bar{\mathbf{A}}\mathbf{x}_i = \lambda_i\mathbf{x}_i\). Each eigenvalue of an underdamped mode is complex, \(\lambda = -\zeta\omega_n \pm j\,\omega_n\sqrt{1-\zeta^2}\), from which

\[\omega_n = |\lambda| \ \text{(rad/s)}, \qquad \zeta = -\frac{\operatorname{Re}\lambda}{|\lambda|}, \qquad \omega_d = \operatorname{Im}\lambda = \omega_n\sqrt{1-\zeta^2}.\]

Complex-conjugate pairs are collapsed to the representative with positive imaginary part. The solution separately counts unstable (\(\operatorname{Re}\lambda>0\)) and over-damped (real, stable) eigenvalues.

Numerical conditioning. A first-order perturbation \(\delta\mathbf{A}\) shifts a simple eigenvalue by [Wilkinson1965]

(5)\[\delta\lambda_i = \frac{\mathbf{y}_i^{\mathsf H}\,\delta\mathbf{A}\,\mathbf{x}_i} {\mathbf{y}_i^{\mathsf H}\mathbf{x}_i},\]

with \(\mathbf{x}_i,\mathbf{y}_i\) the right and left eigenvectors. The eigenvalue condition number

\[\kappa_i = \frac{\lVert\mathbf{y}_i\rVert\,\lVert\mathbf{x}_i\rVert} {|\mathbf{y}_i^{\mathsf H}\mathbf{x}_i|} = \frac{1}{|\mathbf{y}_i^{\mathsf H}\mathbf{x}_i|} \quad(\text{unit-norm eigenvectors})\]

bounds the sensitivity; \(\kappa_i \ge 1\) by Cauchy–Schwarz, with \(\kappa_i = 1\) for a normal matrix and large values flagging a fragile, strongly non-normal mode. A near-repeated eigenvalue is flagged degenerate: its mode shape is defined only up to a rotation within the invariant subspace.

4. Mode shapes, correlation, and participation

Mode shapes (the displacement partition of the eigenvectors) are complex and phase-normalized so the dominant component is real and positive; this convention does not affect the correlation measures, which are phase-invariant. The Modal Assurance Criterion [Allemang2003] between mode shapes \(\boldsymbol\phi_i\) and \(\boldsymbol\phi_j\) is

(6)\[\mathrm{MAC}_{ij} = \frac{|\boldsymbol\phi_i^{\mathsf H}\boldsymbol\phi_j|^2} {(\boldsymbol\phi_i^{\mathsf H}\boldsymbol\phi_i) (\boldsymbol\phi_j^{\mathsf H}\boldsymbol\phi_j)} \in [0,1],\]

equal to one for collinear shapes and zero for orthogonal ones, and invariant to per-mode complex scaling. For state-space modes the pole-weighted MACXP variant [Vacher2010] additionally accounts for the eigenvalues, improving discrimination near crossings. The per-DOF participation of a mode is the normalized contribution of each DOF to its shape, with a phase-based sign, and drives the physical labelling.

5. Blade-mode taxonomy

After the MBC transform each blade triplet is exactly \([\,q_0,\ q_c,\ q_s\,]\), so a mode is collective when its participation concentrates in the collective coordinates and cyclic otherwise. A cyclic mode is classified by its whirl direction from the phase-invariant indicator

(7)\[w = \operatorname{Im}\!\big(q_s\,\overline{q_c}\big),\]

which is positive for a regressive (backward-whirling) mode and negative for a progressive (forward-whirling) one. The sign is calibrated against the Coleman split below, so the lower-frequency \(\omega_0-\Omega\) line is the regressive one, consistent with vane.modal.label_solution(). The classification is gated on the cyclic pair being genuinely circular (comparable cosine/sine magnitudes), so a degenerate pair is not mislabelled. For an isotropic rotor the three blade modes appear at the Coleman frequencies

(8)\[\omega_{\text{collective}} = \omega_0, \qquad \omega_{\text{regressive}} = \omega_0 - \Omega, \qquad \omega_{\text{progressive}} = \omega_0 + \Omega,\]

with \(\omega_0\) the rotating-frame blade frequency. This template-free derivation (structure + whirl sign, not name matching) is what VANE validates end to end against (8) across a rotor-speed sweep.

6. Cross-operating-point tracking

Modes computed independently at successive operating points (rotor or wind speeds) are linked into the lines of a Campbell diagram. Define the link affinity between mode \(i\) at point \(k\) and mode \(j\) at point \(k{+}1\) as the MAC gated by a frequency-continuity penalty,

\[\begin{split}a^{(k)}_{ij} = \begin{cases} \mathrm{MAC}_{ij}\,\big(1 - w_f\,|f_i-f_j|/\Delta f\big), & \mathrm{MAC}_{ij}\ge \tau,\\[2pt] -\infty, & \text{otherwise}, \end{cases}\end{split}\]

with frequency weight \(w_f\) and MAC threshold \(\tau\). VANE extracts each track as the globally optimal continuity path over the not-yet-assigned modes,

\[\max_{\text{path } p}\ \sum_{k} a^{(k)}_{p_k,\,p_{k+1}},\]

by a deterministic dynamic program over the layered mode graph, then removes that path and repeats until every mode is assigned. Each track reports a confidence (its weakest-link MAC) and an ambiguity flag where a mode had two near-equally correlated continuations — a crossing or veering hotspot. The extraction is a globally optimal single-path search applied sequentially; see Limitations for the precise optimality caveat.

7. Excitation lines and resonance

A rotor turning at \(\Omega\) excites the structure at integer multiples of the rotational frequency — the \(nP\) lines at \(f = n\,\mathrm{rpm}/60\). A potential resonance occurs where a mode curve crosses an \(nP\) line; VANE locates each crossing by sign change of \(f_{\text{mode}} - n\,\mathrm{rpm}/60\) and linearly interpolates the crossing rotor speed, frequency, and damping. Each crossing carries a damping-aware severity (a lightly damped crossing is more dangerous than a well-damped one) and an optional operating-window filter.

8. Uncertainty quantification

The averaged model (4) discards the azimuth dependence; the azimuth spread quantifies how much. VANE measures how each frozen-time matrix \(\mathbf{A}_{\mathrm{NR}}(\psi)\) perturbs the averaged model: for an isotropic rotor every \(\mathbf{A}_{\mathrm{NR}}(\psi)=\bar{\mathbf{A}}\) and the spread is zero, while anisotropy makes the per-azimuth matrices differ from the average — and their instantaneous spectra differ — by an amount the spread captures. Applying (5) with \(\delta\mathbf{A} = \mathbf{A}_{\mathrm{NR}}(\psi)-\bar{\mathbf{A}}\),

\[\delta\lambda_i(\psi) = \frac{\mathbf{y}_i^{\mathsf H}\big(\mathbf{A}_{\mathrm{NR}}(\psi)-\bar{\mathbf{A}}\big) \mathbf{x}_i}{\mathbf{y}_i^{\mathsf H}\mathbf{x}_i},\]

and the standard deviation of the resulting frequency and damping across azimuths is the spread — zero for an isotropic rotor, growing with anisotropy.

These are fused into one unified confidence in \([0,1]\) as a product of independent reliability factors,

\[c_i = \underbrace{\kappa_i^{-1}}_{\text{conditioning}}\ \cdot\ \underbrace{d_i}_{\text{degeneracy}}\ \cdot\ \underbrace{\exp\!\big(-\sigma_{f,i}/(f_i\,s)\big)}_{\text{azimuth stability}}\ \cdot\ \underbrace{t_i}_{\text{tracking}},\]

where \(\sigma_{f,i}\) is the frequency spread, \(s\) a scale, and \(t_i\) the tracking confidence. A low \(c_i\) inflates the Kalman initial covariance, propagating uncertainty into the digital-twin export.

9. State-space export

The averaged or modal model is exported as a validated continuous-time LTI system. Zero-order-hold discretization at sample time \(\Delta t\) uses the augmented matrix exponential, giving discrete eigenvalues \(e^{\lambda\Delta t}\) and preserving stability. A real modal realization places each mode, with eigenvalue \(\lambda = \sigma + j\omega\) (\(\sigma=\operatorname{Re}\lambda\), \(\omega=\omega_d\)), in a \(2\times 2\) block acting on the real and imaginary parts of its modal coordinate,

\[\begin{split}\begin{bmatrix} \sigma & -\omega \\ \omega & \sigma \end{bmatrix},\end{split}\]

whose eigenvalues are exactly \(\sigma \pm j\omega\); when mode shapes are supplied the output matrix maps the modal states to physical responses through \([\,2\operatorname{Re}\boldsymbol\phi,\ -2\operatorname{Im}\boldsymbol\phi\,]\). The block-diagonal model therefore reproduces the identified frequencies and damping to machine precision (export fidelity). The Kalman matrices \(\mathbf{Q}\), \(\mathbf{R}\), \(\mathbf{P}_0\) are assembled with the per-mode confidence inflating the initial state covariance \(\mathbf{P}_0\) — a less-trusted mode starts with larger variance — while \(\mathbf{Q}\) and \(\mathbf{R}\) take their configured process- and measurement-noise levels.

References

[Coleman1957]

Coleman, R. P., & Feingold, A. M. (1957). Theory of self-excited mechanical oscillations of helicopter rotors with hinged blades. NACA Report 1351.

[Bir2008]

Bir, G. (2008). Multi-blade coordinate transformation and its application to wind turbine analysis. AIAA/ASME Wind Energy Symposium. NREL/CP-500-42553.

[Wilkinson1965]

Wilkinson, J. H. (1965). The Algebraic Eigenvalue Problem. Oxford University Press.

[Allemang2003]

Allemang, R. J. (2003). The modal assurance criterion — twenty years of use and abuse. Sound and Vibration, 37(8), 14–23.

[Vacher2010]

Vacher, P., Jacquier, B., & Bucharles, A. (2010). Extensions of the MAC criterion to complex modes. Proceedings of ISMA 2010.