涡振课:原代码的采用、修正与边界

来源与范围

- wolai 抗风课程涡振页面:kpY43KZmdizcoEEgKT1Lt9;实时附件记录:9we6F1tZJpNiBCF2rVPPnF。

- 完整解读文件:../../source_archive/extracted_matlab/viv.full-text.txt,包括讲义 prose、公式和全部 MATLAB 代码。

- MATLAB 源:../../source_archive/extracted_matlab/viv.m;归档原 Live Script:../../source_archive/files/viv.mlx。

- 六份原始 TXT:viv_fixed_wind1/4/10 - 三分力系数时程.txt;viv_free_wind1/4/10_freq1 - 位移、三分力系数时程.txt。

数据变换只读取原始归档。生成脚本 prepare-data.py 为每个 TXT 保存 SHA-256,便于复核版本。data.js 为显示而压缩 / 重采样,原始 TXT 不被覆盖。

采用的教学结构

保留原讲义由 Strouhal 关系进入单自由度受迫振动,再对六组固定 / 自由模拟作时程、频谱及风速对照,最后引入非线性气动阻尼解释限幅的脉络。

补充近景三维圆柱与受力 / 位移回放。原记录的 UY 与 FYCoeff 直接驱动运动和升力箭头,时间光标与图表联动;固定记录没有 UY 列,因此圆柱不运动。原文件未输出速度 / 压力 / 涡量场,本环节不再显示装饰性尾涡。新增首屏单独实算了低 Re=100 的 D2Q9 绕流,用数值场驱动颜色与粒子;它和原六工况明确分开,参数与核验见 wake-verification.md。

必须修正的数值与解释

原讲义或 MATLAB 的做法本网页的处理
预先定义一个锁定风速区间,然后在该区间直接 f_vortex=f_n删除此强制赋值。线性环节的 fₛ 始终等于 St·U/D,解算被动稳态共振;不宣称求出了锁定带
对原始表直接 FFT,并以 mean(diff(time)) 构造频率轴六份记录的 dt 均明显变化。先按时间线性重采样到规则网格,之后才作 FFT
频谱未去均值,部分谱没有窗函数去均值并加对称 Hann 窗,幅值按窗相干增益归一。有限记录频谱仍受窗宽和非平稳过程影响
对所有长度使用 P1(2:end-1)*=2仅偶数 N 有 Nyquist 端点不翻倍;奇数 N 的末个正频率应翻倍
排除 DC 后寻找最大值,依赖局部索引换算显式对非零频率 bin 取最大,再读取同 bin 的真实频率坐标。源码包含索引 / Nyquist 校验。原重点比较代码的 fs*idx/L 在排除 DC 的这一写法下恰好等于正确 bin 频率;迁移时避免把 idx 再多减或加 1
直接把 max(abs(UY)) 叫最大振动幅度表中明确写 max\UY\,另给去均值 RMS。半峰峰振幅也在数据统计中保留;三者概念不同
D=1 是“如果已知实际值,请替换”的占位将 D=1 只作为模型假设;不把它宣称为原 CFD 已核实直径,不用它把原 UY 包装成已证 y/D
自由文件名含 freq1保留标签;未据此宣称其固有频率已证为 1 Hz。自由 4 m/s 实际峰频约 0.759 Hz,需要原模型参数表才能进一步判断
由三个风速的响应峰得出完整涡振区间仅展示“4 m/s 在三份自由工况中响应最大”。真实带宽还需加密风速扫描、结构参数及尾流证据
将颤振与抖振一起说成随风速无限增大课堂正文区分随机受迫抖振、动力失稳和流固同步;不沿用无条件发散的表述
一般称涡振不会造成结构破坏本网页不作这种安全判断;需要单独检查加速度、疲劳、连接及使用性能

非线性环节究竟算了什么

原讲义给出 Ehsan / Scanlan 型 (1−ε y²/D²) ẏ 气动阻尼项。本网页采用其机制启发的归一化简化教学形式,令 q=y/D:

q̈+2ζωₙq̇+ωₙ²q=μωₙ(1−εq²)q̇。

μ 是归一化后的假设激励系数,ε 是假设非线性参数;均未从六组记录识别,也不冒充已标定的 Y₁(K)、Y₂(K)。为隔离能量限幅,未加入外部谐波项和气动刚度。积分采用 RK4;步长不大于 0.005 s 且每固有周期至少约 180 步。未对位移设硬上限。

归一化能量 E=(q̇²+ωₙ²q²)/2,气动功率 μωₙ(1−εq²)q̇²,结构耗能功率 2ζωₙq̇²。页面用梯形积分累计两项,显示残差 ΔE−W_a+W_d。默认值的末段振幅约 0.17321,弱非线性平均法约 0.17321,能量残差约 −3.22×10⁻⁶ s⁻²。此验证只验证教学 ODE 的求解,不验证真实桥梁气动系数。

Scruton 数和特征尺度约定

本课统一:m*=m/(ρD²),Sc=4πmζ/(ρD²);这里 m 为单位长度质量。原讲义写 Sc₀=mζ/(ρD²),与本页相差 4π。另有 2mδ/(ρD²) 约定,在轻阻尼且 δ≈2πζ 时接近本课定义。还有按排开流体圆截面积定义 m* 的文献,数值会多一个 π/4 因子。

FHWA 原始研究报告第 3 章展示 Strouhal / 质量阻尼关系及相关约定;其讨论对象主要为桥梁斜拉索,不能把其中的振幅限值或经验阈值直接套用于桥面断面。本课不设置所谓“通用安全 Sc 值”。

可验证项

node physics-check.cjs 检查解析谐振、阻尼趋势、频率连续、插值、非线性积分限幅和能量平衡、直流处理、8 Hz 谱峰索引、偶数 Nyquist、奇数末频率,以及六组数据尺寸、递增时间、峰值一致性。

浏览器 window.CourseLab.getState() 返回当前模式、模型参数、源记录工况 / 峰值 / Δf、积分结果和三维状态,供整体验收。它不会把模型风速或阻尼滑块写入源数据。

2026-10-23 新增流固耦合与结构瞬态响应

新增 compute-fsi.py 及其计算数据,采用整体平移随体坐标、流体惯性源和单自由度结构推进。它是此次新建算例,不是从原六份 TXT 逆向重构的流场。新增实算的气动力、位移和涡量共用时间索引,未将旧固定体场贴到自由运动圆柱上。算法、独立审查和数值边界见 fsi-verification.md 与 fsi-method-review.md。

另建 response-physics.js 作为单向简谐受迫对照,由 m、k、ζ 决定结构频率与阻尼。它保持激励相位连续,积分启动与扫频瞬态,支持初始位移释放后的自由衰减。该模型只用于解释结构频率筛选和响应建立,不能冒充 CFD 或预测锁定带。原来的线性稳态页保留用于对照。

新 CFD 用 m/(ρπD²/4),原教学模型用 m/(ρD²),已分别写明定义。所有流场回放都是已有数值计算的离散帧;跨风速切换不是同一条连续来流历程。连续扫风速实验发生在明确标记的结构动力学模型中。