## 目标

当前分析的核心不是再证明控制有效，而是识别 **控制实际作用于哪些流动结构通道**，并把黑箱控制关系推进成可解释的结构关系：

\[
\text{obs} \rightarrow z \rightarrow \text{act} \rightarrow \text{wake structure} \rightarrow \text{signature}
\]

在当前 pinball 问题中，控制器依赖各圆柱受力与下游三点速度观测，目标是在无扰动来流下实现 stealth 与 illusion。由于任务指标本质上围绕下游传感器信号定义，仅按能量排序的 POD 不足以回答“哪些结构真正与控制和感知结果相关”。CCD 按与 observable 的互相关强度排序模态，适合提取与动作、受力或目标 signature 最相关的结构 [Lyu23]。公共 POD 则提供跨 case 可比的统一坐标系 [Den18b, Den20]。

第一版方案采用 **POD-reduced CCD**：先构造参考 POD 基底，再在低维系数空间里做 CCD。这不是逐式复现 [Lyu23]，而是受其思想启发的 reduced implementation，目标是提升稳健性、降低样本需求，并保证不同 case 在同一坐标系中比较。

## 当前阶段的定位

Round 1 和 Round 2 已经证明了以下几点：

- phase-based reduced CCD 的数据管道可以跑通
- 周期检测、相位重采样、POD、CCD 和指标汇总可以稳定实现
- 真实 illusion PPO replay 必须完整复现 legacy 环境中的 target 谐波、norm 计算和 FIFO 初始化，否则推理无效
- 在简单周期尾迹上，CCD pipeline 是自洽的，但当前结果仍属于 **机制线索**，而不是最终机制结论

因此，下一轮工作的目标不是再证明代码能跑，而是补齐对比链条中缺失的关键参照，尤其是：

1. target case 的 force 数据
2. reference POD basis 的稳定性
3. force / action / signature 三类 CCD 的跨 case 比较
4. cloak 稳态线的完整恢复指标

## 口径与 case 定义

### Reynolds 数口径

项目中存在两套 Reynolds 数定义，后续所有脚本、文件名、图注和表格都必须显式区分，不能混写。

| 记号 | 特征长度 | 含义 |
|---|---|---|
| \(Re\) | 两倍 pinball 单圆柱直径 | 与目标 2D 圆柱比较时常用的口径 |
| \(Re_D\) | pinball 单个圆柱直径 | pinball 本体口径 |

本实施说明中的当前工作范围固定为：

- **无扰动来流**
- **固定 \(Re=100\)**
- 若需换算到 \(Re_D\)，必须在元数据中单独写明

### 当前处理的 case

| case | 流动类型 | 目标 | 当前角色 |
|---|---|---|---|
| uncontrolled | 无控制 pinball 自然尾迹 | 基线 | 周期辅助 case |
| cloak | 受控 pinball | 槽道基流 | 稳态主分析对象 |
| illusion | 受控 pinball | 2D 圆柱在 \(Re=100\) 下的目标尾迹 | 周期主分析对象 |
| target channel | 槽道基流 | 自身 | cloak 参考 |
| target cylinder | 2D 圆柱尾迹 | 自身 | 周期参考 |

具体说明：

- **cloak 的 target** 是槽道基流
- **illusion 的 target** 只考虑 2D 圆柱、\(Re=100\) 的目标尾迹
- 周期线的参考频率与参考相位由 **target cylinder** 定义

## 分析总路线

### 周期线

用于：

- target cylinder
- illusion
- uncontrolled（若通过 relaxed 门）

目标是回答：

- illusion 是否重组了与 target 周期 signature 最相关的结构
- force-related structures、action-related structures 与 signature-related structures 是否对齐
- illusion 是否比 uncontrolled 更接近 target 的相关结构通道

### 稳态线

用于：

- cloak
- target channel

目标是回答：

- cloak 是否把均值尾迹重构为接近槽道基流
- cloak 是否显著压低脉动和回流区
- cloak 的控制幅值与感知改善之间是否具有合理对应关系

## 数据要求

### 必须导出的数据

| 数据组 | 记号 | 说明 |
|---|---|---|
| 流场快照 | \(u(x,y,t_n), v(x,y,t_n)\) | 全域 2D 快照 |
| 总力 | \(F_x(t_n), F_y(t_n)\) | 所有周期 case 必须记录，包括 target cylinder |
| 动作 | \(\Omega_i(t_n)\) | 三圆柱各自转速 |
| 观测 | \(s(t_n)\in\mathbb R^6\) | 三个传感器各含 \(u,v\) |
| 目标观测 | \(s_{tar}(t_n)\) | illusion 时需要；cloak 时为槽道基流参考 |
| 元数据 | `meta.json` | Re 口径、采样步长、case 标签、steady/periodic 标签 |

### 当前不要求的数据

| 数据 | 说明 |
|---|---|
| 单圆柱力矩 \(M_{z,i}\) | 当前阶段不记录 |
| 单圆柱受力分解 | 当前阶段不要求 |
| 控制功率 | 因缺少力矩，当前阶段不做 |

## 采样原则的关键修正

这是本轮最重要的修正之一。

### 不再把 \(T_{ref}\) 的“样本数”当成固定采样标准

`target cylinder` 在某一次采样设置下测得的 \(T_{ref}\approx 18.75\) 样本/周期，只反映当时的 `SAMPLE_INTERVAL`，**不应该被当成所有 case 的固定原始采样密度标准**。

真正固定的只有两件事：

1. **参考频率 / 参考周期**
   
   \[
   f_{ref},\qquad T_{ref}=1/f_{ref}
   \]

2. **标准相位网格**
   
   \[
   \phi_m = 2\pi m/24,\qquad m=0,1,\ldots,23
   \]

也就是说：

- \(T_{ref}\) 用来定义统一相位坐标系
- **原始采样频率应按每个 case 自适应设置**，目标是让每个 case 在原始数据里就尽量接近 24 点/周期，而不是先粗采样再强行插值到 24

### 当前采样策略

下一轮对每个周期 case 采用 **两步式采样**。

#### Step 1

传感器先导采样

先用较轻的数据模式跑一个 pilot：

- 高频保存传感器、总力、动作
- 不急着保存全场
- 估计该 case 的 \(f_{case}\)、\(T_{case}\)、\(\mathrm{CV}_T\)

#### Step 2

按 case 自适应设置场采样间隔

对于每个通过周期门的 case，设置该 case 的场采样间隔，使其原始场数据满足：

\[
N_{raw/cycle} \approx 20\text{--}24
\]

推荐用：

\[
\text{SAMPLE\_INTERVAL}_{field} \approx T_{case}/24
\]

若只能取整数步长，则选择最接近 24 点/周期的整数。

### 原始采样密度门槛

为了避免对过稀疏的原始数据做过强插值，定义每个 case 的原始每周期样本数：

\[
N_{raw/cycle} = T_{case}/\text{SAMPLE\_INTERVAL}_{field}
\]

并采用如下门槛：

| 等级 | 条件 | 处理 |
|---|---|---|
| ideal | \(N_{raw/cycle} \ge 20\) | 直接进入相位重采样 |
| acceptable | \(16 \le N_{raw/cycle} < 20\) | 允许进入，但记录告警 |
| relaxed | \(12 \le N_{raw/cycle} < 16\) | 只作辅助 case，不进主 reference basis |
| reject | \(N_{raw/cycle} < 12\) | 不做 24 点/周期相位 CCD，必须重采 |

### 插值比例门槛

定义插值放大倍数：

\[
\rho_{interp} = 24 / N_{raw/cycle}
\]

采用如下自审规则：

| 等级 | 条件 | 解释 |
|---|---|---|
| ideal | \(\rho_{interp} \le 1.2\) | 基本不依赖插值 |
| acceptable | \(1.2 < \rho_{interp} \le 1.5\) | 可接受 |
| borderline | \(1.5 < \rho_{interp} \le 2.0\) | 可做辅助分析，但需谨慎解释 |
| reject | \(\rho_{interp} > 2.0\) | 不进入主 phase-based CCD |

因此：

- 18.75 → 24 对应 \(\rho_{interp}\approx 1.28\)，可接受
- 12.4 → 24 对应 \(\rho_{interp}\approx 1.94\)，属于 borderline，若能重采应优先重采

### 当前原则

下一轮不再默认所有 case 都用同一个 `SAMPLE_INTERVAL`。对于周期线，允许按 case 单独设置场采样间隔，只要最终都重采样到同一个 24 相位网格即可。

## 周期检测与相位重采样

### 标准频率

固定使用 **target cylinder 在 \(Re=100\) 下的脱涡频率** 作为标准频率：

\[
f_{ref}
\]

对应标准周期：

\[
T_{ref}=1/f_{ref}
\]

标准相位网格为：

\[
\phi_m = 2\pi m/24,\qquad m=0,1,\ldots,23
\]

### 周期检测建议顺序

对每个周期 case，按以下顺序检测主周期：

1. **首选信号**：中心传感器的横向速度或最干净的传感器分量
2. **备选信号**：总升力 \(F_y\)
3. **再次备选**：POD 前两阶系数中的主振荡分量

对首选信号先做：

- 去均值
- 必要时做轻微平滑
- FFT 找主频初值 \(f_{dom}\)
- 用峰值间距或零交叉进一步修正周期

### 周期稳定性与准入门

设检测到连续周期长度 \(T_n\)，定义：

\[
\mathrm{CV}_T = \frac{\mathrm{std}(T_n)}{\mathrm{mean}(T_n)}
\]

再定义相对参考频率偏差：

\[
\delta_f = \frac{|f_{case}-f_{ref}^{scaled}|}{f_{ref}^{scaled}}
\]

其中 \(f_{ref}^{scaled}\) 应按该 case 的来流速度或无量纲 Strouhal 一致性换算，而不是机械使用某一组物理条件下测得的原始 \(f_{ref}\)。

采用如下准入门：

| gate | 条件 | 用途 |
|---|---|---|
| strict | \(\mathrm{CV}_T \le 0.10\) 且 \(\delta_f \le 0.10\) | 可进主周期线与主基底 |
| relaxed | \(\mathrm{CV}_T \le 0.12\) 且 \(\delta_f \le 0.20\) | 可作辅助周期 case |
| auxiliary | 不满足 strict / relaxed 但仍有明显周期 | 只做投影或基线比较 |
| reject | 周期不稳或采样过稀 | 不进入 phase-based CCD |

### 代表周期的选取

在足够长的前置稳定时间后，只截取 **4 个代表周期**。推荐方式：

- 先找到一个稳定窗口
- 在该窗口内选 4 个连续周期
- 若连续 4 周期不稳定，则选最接近 \(f_{ref}^{scaled}\) 的 4 个周期
- 若仍不满足门槛，则该 case 不进入主周期线

### 周期起点的统一定义

每个周期必须有统一的相位起点。优先使用参考信号的：

- **上升穿零点且导数为正**

若该定义不稳，再退回使用局部峰值作为周期起点。但同一个 case 内必须保持一致。

### 相位重采样

对每个选中的周期，令该周期起点与终点分别对应相位 0 和 \(2\pi\)。对该周期内的全部数据做线性或三次样条插值，重采样到 24 个标准相位点：

\[
\phi_m = 2\pi m/24
\]

每个周期都得到：

- 24 帧流场快照
- 24 个传感器观测
- 24 个总力值
- 24 个动作值

4 个周期共得到 96 个标准相位样本。

### 相位重采样后的质量检查

每个 case 重采样后必须输出两个自审量：

1. 重采样前后主频偏差
2. 相位平均传感器回线是否出现明显跳变或折返

若重采样后出现显著畸变，则该 case 只能降级为 auxiliary，不进入主周期线。

## 参考 POD 基底

### 当前原则

当前阶段不再使用 target-only POD，而使用：

- **reference POD basis = target cylinder + illusion**

uncontrolled 只投影，不默认并入基底训练。

### 适用范围

参考 POD 只在周期线构造，不把 cloak 和 target channel 混进来。

### POD 截断

由于总样本数仍然有限，优先测试：

\[
r = 6, 8, 10
\]

不建议当前阶段上 20 阶以上。

## Reduced CCD 的定义

保留前 \(r\) 阶 POD 后，定义系数矩阵：

\[
A_r =
\begin{bmatrix}
a_1(t_1) & \cdots & a_1(t_N) \\
\vdots & & \vdots \\
a_r(t_1) & \cdots & a_r(t_N)
\end{bmatrix}
\in \mathbb R^{r\times N}
\]

若 observable 为 \(y(t)\in\mathbb R^m\)，则对每个时刻 \(t_i\) 构造相位窗口向量：

\[
\mathbf p_i=
\begin{bmatrix}
y(t_i+\tau_1) \\
y(t_i+\tau_2) \\
\vdots \\
y(t_i+\tau_Q)
\end{bmatrix}
\in \mathbb R^{mQ}
\]

于是：

\[
P=[\mathbf p_1,\mathbf p_2,\ldots,\mathbf p_N] \in \mathbb R^{mQ\times N}
\]

实际计算前先对 \(P\) 与 \(A_r\) 做逐行标准化，定义为 \(\tilde P\) 与 \(\tilde A_r\)。随后构造 reduced CCD 矩阵：

\[
C = \frac{1}{N\sqrt{Q}} \tilde P\,\tilde A_r^{\top}
\]

对其做 SVD：

\[
C = R \Sigma W^{\top}
\]

其中：

- \(W\) 的列向量给出 POD 子空间中的 CCD 方向
- \(\sigma_k\) 表示第 \(k\) 个相关结构与 observable 的相关强度
- CCD 空间模态由 POD 模态线性组合得到

\[
\psi_k = \sum_{j=1}^{r} W_{jk}\,\phi_j
\]

- CCD 时间系数定义为

\[
z_k(t)=W_{:,k}^{\top}a_r(t)
\]

## 当前阶段的三类 CCD

### force-CCD

这是当前阶段最重要、也最可跨 case 比较的 CCD。定义总体受力 observable：

\[
y_F(t)=
\begin{bmatrix}
F_x(t) \\
F_y(t)
\end{bmatrix}
\]

适用 case：

- target cylinder
- illusion
- uncontrolled（若通过 relaxed 门）

优先回答：

- illusion 是否比 uncontrolled 更接近 target 的 force-related structures
- action-related structures 是否与 force-related structures 对齐

### action-CCD

动作 observable 只在 illusion case 上有意义：

\[
y_{act}(t)=
\begin{bmatrix}
\Omega_1(t) \\
\Omega_2(t) \\
\Omega_3(t)
\end{bmatrix}
\]

优先回答：

- illusion 控制主要依赖哪些低维结构自由度
- action-related structures 是否与 force-related structures 对齐

### signature-CCD

目标相关的 observable 只在 illusion 线上定义。令：

\[
e_s(t)=s(t)-s_{tar}(t)
\]

然后做相位偏移版本：

\[
y_{sig}(t)=e_s(t+\tau_c)
\]

当前阶段必须至少扫描三组：

- \(\tau_c = 0\)
- \(\tau_c = \tau_c^{geom}\)
- \(\tau_c = \tau_c^{corr}\)

目标是判断 signature-related structures 更像同步耦合，还是更像带相位偏移的 downstream response。

## 标准化规范

CCD 的 observable 与 POD 系数都必须标准化。否则量纲较大的分量会主导分解结果。

### observable 矩阵标准化

设 observable 堆叠后形成矩阵 \(P\)。对 \(P\) 的每一行做 z-score 标准化：

\[
\tilde P_{j,:}=\frac{P_{j,:}-\mu_j}{\sigma_j+\epsilon}
\]

其中 \(\mu_j\)、\(\sigma_j\) 为训练集统计量，\(\epsilon\) 为防止零方差的极小正数。若某一行 \(\sigma_j\) 极小，则直接剔除该分量。

### POD 系数矩阵标准化

对保留的 POD 系数矩阵 \(A_r\) 的每一行同样标准化：

\[
\tilde A_{k,:}=\frac{A_{k,:}-\bar a_k}{s_k+\epsilon}
\]

测试集必须使用训练集的均值和标准差做标准化，不允许单独对测试集重新拟合统计量。

## 当前阶段的核心指标

### 周期线基础指标

| 指标 | 含义 |
|---|---|
| \(f_{dom}\) | 主频 |
| \(\delta_f\) | 相对参考频率偏差 |
| \(\mathrm{CV}_T\) | 周期波动系数 |
| \(\overline{E_s}\) | 传感器误差时间均值 |
| \(E_{phase}\) | 相位平均误差 |
| \(\eta_{RMS}\) | 脉动强度比 |
| \(N_{raw/cycle}\) | 原始每周期样本数 |
| \(\rho_{interp}\) | 插值放大倍数 |

### POD 指标

| 指标 | 含义 |
|---|---|
| \(E_{95}\) | 达到 95% 能量所需模态数 |
| \(\gamma_{POD}(m)\) | 前 \(m\) 阶累计能量占比 |
| \(D_{POD}\) | case 在前两阶相图中的中心距离 |

### CCD 指标

| 指标 | 含义 |
|---|---|
| \(\gamma_{CCD}(m)\) | 前 \(m\) 阶 CCD 累计相关强度占比 |
| \(m_{80}^{CCD}\) | 到 80% 相关强度所需模态数 |
| \(\bar R^2_{LOCO,force}(m)\) | 留一周期交叉验证下 force 的平均测试 \(R^2\) |
| \(\bar R^2_{LOCO,act}(m)\) | 留一周期交叉验证下 action 的平均测试 \(R^2\) |
| \(\bar R^2_{LOCO,sig}(m)\) | 留一周期交叉验证下 signature 的平均测试 \(R^2\) |
| \(\sigma_{R^2,LOCO}(m)\) | 上述 \(R^2\) 的标准差 |
| \(\rho_{max}(z_k,\Omega_i)\) | 结构与动作的最大相关 |
| \(\rho_{max}(z_k,F_x),\rho_{max}(z_k,F_y)\) | 结构与总力的最大相关 |
| \(\rho_{max}(z_k,e_s)\) | 结构与误差的最大相关 |
| \(O_k^{(A,B)}\) | 第 \(k\) 个 CCD 方向的模态重合度 |

其中：

\[
\gamma_{CCD}(m)=\frac{\sum_{k=1}^{m}\sigma_k^2}{\sum_{k}\sigma_k^2}
\]

\[
O_k^{(A,B)} = \left| w_k^{(A)\top} w_k^{(B)} \right|
\]

## 稳态线指标

对 cloak 与 target channel，不看 CCD 成败，而看是否成功恢复稳态背景流。

| 指标 | 用途 |
|---|---|
| \(E_{mean}\) | 均值流场相对误差 |
| \(E_{sensor}^{mean}\) | 传感器均值误差 |
| \(\eta_{fluc}\) | 脉动抑制率 |
| \(L_r\) | 回流区长度 |
| \(A_r\) | 回流区面积 |
| \(\sigma_F\) | 总力波动标准差 |
| \(J_\Omega^{rms}\) | 动作 RMS 总量 |
| \(\eta_{cloak}^{obs}\) | 单位控制幅值带来的感知改善 |

## 当前阶段的执行顺序

1. **补 target cylinder 的 force 数据**
2. **重跑 force-CCD**，并比较：
   - \(O_k(illusion, target)\)
   - \(O_k(uncontrolled, target)\)
3. **对 signature-CCD 做 \(\tau_c=0/geom/corr\) 三点扫描**
4. **补连续块测试**：前 2 周期训练、后 2 周期测试
5. **补 cloak 稳态线指标**：\(E_{mean}, E_{sensor}^{mean}, \eta_{fluc}, L_r, A_r, \eta_{cloak}^{obs}\)
6. **保持 reference POD basis = target + illusion**
7. **uncontrolled 只作辅助投影，暂不并入主基底训练**

## 当前阶段暂不做的内容

- 不做多 Reynolds 数统一分析
- 不做上游扰动 case
- 不做 checkpoint/restore 优化
- 不做白箱控制律
- 不在 cloak 上强行做 CCD
- 不把“CCD 优于 POD”写成正式结论

## 当前阶段的完成标准

本轮工作完成后，至少应满足：

1. target cylinder 拥有完整的 force 数据
2. force-CCD 能真正比较 target / illusion / uncontrolled 三者
3. signature-CCD 完成 \(\tau_c\) 三点扫描
4. 同时拥有 LOCO 与连续块测试两套 \(R^2\) 验证
5. cloak 稳态线给出完整恢复指标
6. 输出的是指标 + 模态，而不是单纯图像
7. 至少能形成一个更硬的机制判断：
   - illusion 是否比 uncontrolled 更接近 target 的 force-related 或 signature-related structure channel

满足这七条后，再进入下一阶段：

- 讨论是否让 uncontrolled 并入基底
- 讨论 `obs -> z -> act` 白箱控制链
- 讨论更严格的 whitening / PCD-style 版本