Skip to content

Commit cc9a943

Browse files
authored
Merge pull request #18 from OpenFAST/theory
Add Theory section on Docs
2 parents a62e281 + f2bdbf2 commit cc9a943

File tree

11 files changed

+200
-6
lines changed

11 files changed

+200
-6
lines changed
39.8 KB
Loading
12.8 KB
Loading
42.2 KB
Loading
42.8 KB
Loading

docs/content/docs/theory/index.md

Lines changed: 172 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,180 @@ date: 2024-05-14T19:27:37+10:00
44
weight: 10
55
---
66

7-
Coming soon!
7+
This page describes the Campbell diagram generation workflow and its theoretical background.
88

9-
### Multi-Blade Coordinate Transform (MBC)
9+
## Overview
1010

11-
### Eigenanalysis
11+
A Campbell diagram is a powerful visualization tool used in wind turbine analysis to understand how natural frequencies and damping ratios vary with rotor and wind speeds. It helps identify potential resonance conditions and instabilities where structural modes may be excited by harmonic frequencies, which is critical for avoiding fatigue damage and ensuring safe operation.
1212

13-
### Modal Assurance Criteria (MAC)
13+
Campbell diagram generation with OpenFAST follows a systematic automated workflow consisting of five main steps:
1414

15-
### Assignment Problem
15+
1. **Import OpenFAST Model** - Analyze the turbine to get time domain and linearization data
16+
2. **Define Operating Points** - Specify rotor speeds and other operating conditions for linearization
17+
3. **Run Simulations** - Execute OpenFAST linearization at each operating point
18+
4. **Multi-Blade Coordinate (MBC) Transformation** - Transform rotating blade coordinates to fixed reference frame
19+
5. **Eigenanalysis and Mode Identification** - Extract natural frequencies and mode shapes, then track modes across operating points
1620

17-
### Spectral Clustering
21+
![](workflow.png)
22+
23+
## Multi-Blade Coordinate (MBC) Transformation
24+
25+
For wind turbines with multiple blades, the dynamics in the rotating reference frame are periodic and coupled due to rotor rotation. The Multi-Blade Coordinate transformation converts the rotating blade degrees of freedom into a fixed (non-rotating) reference frame, producing:
26+
27+
- **Collective modes** - All blades move in phase (symmetric motion)
28+
- **Cyclic modes** - Blades move with phase differences (asymmetric motion)
29+
- **Fixed-frame representation** - Time-invariant system matrices suitable for eigenanalysis
30+
31+
This transformation is essential because it:
32+
- Decouples the periodic equations of motion into time-invariant form
33+
- Enables conventional eigenanalysis techniques
34+
- Separates symmetric and asymmetric rotor modes
35+
- Simplifies the identification of structural modes
36+
37+
The MBC transformation yields state-space matrices in the fixed reference frame, which can then be analyzed using standard linear algebra techniques.
38+
39+
## Eigenanalysis
40+
41+
Eigenanalysis is a mathematical technique that decomposes a linear system into its fundamental components: eigenvalues and eigenvectors.
42+
43+
- **Eigenvalues** - Complex numbers representing natural frequencies and damping ratios of the system modes
44+
- **Eigenvectors** - Complex vectors describing the mode shapes, indicating how different degrees of freedom participate in each mode
45+
46+
For wind turbine analysis, eigenanalysis of the MBC-transformed system provides:
47+
- Natural frequencies at each operating point
48+
- Mode shapes that characterize the physical motion (e.g., tower bending, blade flap/edge, drivetrain torsion)
49+
- Damping characteristics indicating stability of each mode
50+
51+
The eigenvalues are typically plotted against rotor speed to create the Campbell diagram, with rotational harmonic lines overlaid to identify potential resonances.
52+
53+
## Mode Identification
54+
55+
Mode identification is the process of tracking the same physical mode across different operating points based on the eigenvectors and eigenvalues produced by MBC transformation and eigenanalysis. This is a challenging task because:
56+
57+
- Natural frequencies of different modes may cross or veer as operating conditions change
58+
- Mode shapes may gradually evolve with rotor speed
59+
- Multiple modes with similar characteristics may be present
60+
- Numerical noise can affect mode ordering
61+
62+
As seen from the figure below, some modes can be clearly distinguished across the operating range, whereas others may cross or come very close to each other, making automated tracking difficult.
63+
64+
![](mode_identification.png "Modes for NREL 5MW")
65+
66+
### Similarity Metrics
67+
68+
Modal identification relies on quantitative similarity measurements to determine which modes at different operating points correspond to the same physical phenomenon.
69+
70+
**Modal Assurance Criteria (MAC)**
71+
72+
The Modal Assurance Criteria compares the complex eigenvectors of two modes to quantify their similarity. The MAC value ranges from 0 (completely dissimilar) to 1 (identical mode shapes).
73+
74+
<!-- {{< figure src="mac.png" width="300" >}} -->
75+
76+
$$
77+
\text{MAC}(\mu_1, \mu_2) = \left( \frac{|\mu_1^*\ \mu_2|}{||\mu_1||\ ||\mu_2||} \right)^2
78+
$$
79+
80+
where \(\mu_1\) and \(\mu_2\) are complex eigenvectors from two different operating points, and \(^*\) denotes the complex conjugate transpose.
81+
82+
**Pole-Weighted MAC (MACXP)**
83+
84+
MACXP enhances the standard MAC by incorporating both eigenvector similarity and eigenvalue proximity:
85+
86+
<!-- {{< figure src="macxp.png" width="500" >}} -->
87+
88+
$$
89+
\text{MACXP}(\mu_1, \mu_2) = \frac{\left(\frac{|\mu_1^*\ \mu_2|}{|\overline{\lambda_1} + \lambda_2|} + \frac{|\mu_1^{\top}\ \mu_2|}{|\lambda_1 + \lambda_2|}\right)^2}{\left(\frac{\mu_1^*\ \mu_1}{2|\text{Re } \lambda_1|} + \frac{|\mu_1^{\top}\ \mu_1|}{2|\lambda_1|}\right) \left(\frac{\mu_2^*\ \mu_2}{2|\text{Re } \lambda_2|} + \frac{|\mu_2^{\top}\ \mu_2|}{2|\lambda_2|}\right)}
90+
$$
91+
92+
where \(\lambda_1\) and \(\lambda_2\) are the eigenvalues corresponding to each mode. MACXP penalizes modes with dissimilar eigenvalues, providing a more robust similarity measure that considers both shape and frequency content.
93+
94+
## Mode Tracking via Assignment Problem
95+
96+
Mode tracking between consecutive operating points can be formulated as an assignment problem. Given *m* modes at operating points *n* and *n+1*, the goal is to find the optimal one-to-one assignment that maximizes total similarity (MAC or MACXP).
97+
98+
![](assignment_op.png) ![](assignment_cm.png)
99+
100+
101+
A simple greedy approach, solely based on pairing modes with maximum similairty, can lead to discontinuities and suboptimal global matching. A more robust approach can optimize the overall assignment by:
102+
103+
1. **Maximum Weighted Bipartite Matching** - Treat the mode assignment as a bipartite graph matching problem
104+
2. **Find combination of pairings which maximizes total weights** - Rather than greedy selection, find the global optimum
105+
3. **Reformulate as the Assignment Problem** - Cast as a linear optimization problem
106+
4. **Convert similarity matrix to cost matrix and solve via Hungarian algorithm**:
107+
- Create cost matrix \(\text{C}\) where \(C_{ij} = 1 - \text{MAC}_{ij}\) (or use MACXP)
108+
- Apply Hungarian algorithm to find minimum cost assignment
109+
- Guarantees optimal one-to-one matching that maximizes total similarity
110+
111+
This approach allows tracking of modes as they evolve between operating points. However, even this method can accumulate errors when applied sequentially across many operating points, especially when modes cross or when there are multiple similar modes. More sophisticated approaches using spectral clustering can address these challenges by considering all operating points simultaneously.
112+
113+
## Spectral Clustering
114+
115+
When tracking modes between operating points (OPs), modes can follow paths that evolve continuously with rotor speed. However, a fundamental challenge arises when mode paths intersect as shown on below figure:
116+
117+
![](spectral_clustering.png)
118+
119+
To determine which mode paths should be connected across all operating points given mode similarity metrics (MAC or MACXP), spectral clustering provides a robust global approach. Unlike sequential assignment, spectral clustering considers the entire similarity structure simultaneously.
120+
121+
**Key Concept**: Spectral clustering uses eigenvectors derived from the similarity matrix as coordinates in a lower-dimensional embedding space. K-means clustering then groups modes in this embedded space based on Euclidean distance. As a result, modes with the highest overall similarity across all operating points are grouped together, enabling robust mode identification even at intersections or crossings.
122+
123+
### Spectral Clustering Algorithm
124+
125+
The spectral clustering algorithm for mode identification follows these steps:
126+
127+
1. **Collect all modes** - Gather all modes from all operating points that need to be grouped into continuous paths
128+
129+
2. **Construct similarity (adjacency) matrix, A** - Compute pairwise similarity between all modes using MAC or MACXP
130+
- \(A_{ij}\) represents the similarity between mode *i* and mode *j*
131+
- Diagonal elements are zero (a mode is not compared to itself)
132+
- Only compute similarities between modes at different operating points
133+
134+
3. **Construct degree matrix, D** - Create a diagonal matrix where each diagonal element is the sum of similarities for that mode
135+
- \(D_{ii} = \sum_{j=1}^{n} A_{ij}\)
136+
- This normalizes for modes that have many strong connections
137+
138+
4. **Compute Laplacian** - Construct Laplacian matrix as \(L = D - A\) and normalize it as \(L_{norm} = D^{-\frac{1}{2}}LD^{-\frac{1}{2}}\)
139+
140+
5. **Eigendecomposition** - Compute eigenvalues and eigenvectors of \(L_{norm}\)
141+
- Find the *n* smallest eigenvalues of the normalized Laplacian
142+
- *n* is the number of paths or number of clusters to partition the modes into
143+
- Extract the corresponding eigenvectors
144+
145+
6. **Construct observation (coordinate) matrix** - Build matrix where columns are eigenvectors of *n* smallest eigenvalues
146+
- Each row is effectively a mode coordinate in multidimensional space
147+
- Each mode is now represented as a point in *n*-dimensional space
148+
- Rows are normalized so their magnitude is 1 (each row vector has unit length)
149+
150+
7. **Apply K-means clustering** - Cluster the modes in this embedded space to identify which modes belong to the same path
151+
152+
### K-means Clustering
153+
154+
K-means clustering aims to partition *n* observations into *k* clusters, where each observation belongs to the cluster with the nearest centroid (mean).
155+
156+
**How it Works**:
157+
- Uses coordinates derived from eigenvectors (the observation matrix from spectral clustering)
158+
- Iteratively partitions the data to minimize the squared Euclidean distance from point coordinates to centroid
159+
- Finds a local minimum, so results are highly dependent on initial guess of cluster centroids
160+
161+
**Challenge**: K-means returns a cluster number for each mode, but those assignments may not be optimal for mode tracking. It may group modes from the same operating point into the same cluster, whereas the goal is to have clusters that correspond to paths through operating points, with each cluster containing at most one mode per operating point.
162+
163+
To obtain physically meaningful mode paths:
164+
165+
1. Run K-means multiple times with random initial seeds
166+
2. Check number of modes in each cluster that have the same OP
167+
3. Stop iterating when few modes have the same OP in the same cluster
168+
169+
This iterative approach with validation ensures that the final clusters represent continuous mode evolution across operating points rather than arbitrary groupings.
170+
171+
![](cluster1.png)
172+
![](cluster2.png)
173+
174+
## Reference
175+
176+
These are the links to sources to get more details:
177+
178+
- MBC: https://docs.nrel.gov/docs/fy10osti/44327.pdf
179+
- Similarity metrics: https://past.isma-isaac.be/downloads/isma2010/papers/isma2010_0103.pdf
180+
- Assignment problem: https://en.wikipedia.org/wiki/Assignment_problem
181+
- Hungarian algorithm: https://en.wikipedia.org/wiki/Hungarian_algorithm
182+
- Spectral clustering: https://arxiv.org/abs/0711.0189 and https://en.wikipedia.org/wiki/Spectral_clustering
183+
- K-means clustering: https://en.wikipedia.org/wiki/K-means_clustering
121 KB
Loading
254 KB
Loading
85.3 KB
Loading

docs/hugo.toml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,17 @@ homepage_image = 'images/cd_tn.png'
3434
## You can enable to add anchor links to header elements
3535
# enable_anchor_link = true
3636

37+
math = true
38+
39+
[markup]
40+
[markup.goldmark]
41+
[markup.goldmark.extensions]
42+
[markup.goldmark.extensions.passthrough]
43+
enable = true
44+
[markup.goldmark.extensions.passthrough.delimiters]
45+
block = [['\[', '\]'], ['$$', '$$']]
46+
inline = [['\(', '\)']]
47+
3748
[params.homepage_meta_tags]
3849
meta_description = "ACDC is an app for generating Campbell Diagrams with OpenFAST"
3950
meta_og_title = "ACDC: Automated Campbell Diagram Code"

docs/themes/hugo-whisper-theme/layouts/_default/baseof.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@
2626

2727
{{ block "header_css" . }}{{ end }}
2828

29+
{{ if .Param "math" }}
30+
{{ partialCached "math.html" . }}
31+
{{ end }}
32+
2933
</head>
3034

3135
<body class='page {{ block "body_classes" . }}{{ end }}'>

0 commit comments

Comments
 (0)