3、输入文件体系:主输入文件、塔筒文件、叶片文件、机舱文件等结构解析
好,咱们进入第三章。说实话,OpenFAST 的学习曲线里,最让人头疼的往往不是物理模型本身,而是那一堆输入文件。我第一次接触时,看着十几个 .dat 文件,真有点懵。但别怕,这章我带你捋清楚。
OpenFAST 的输入文件体系,说白了就是一个「搭积木」的过程。你有一个主文件(.fst),它像总指挥,告诉程序:塔筒用哪个文件、叶片用哪个、机舱参数在哪。然后各个子文件各司其职。咱们一个一个拆开看。
3.1 主输入文件(.fst)—— 总指挥
主文件是 OpenFAST 的入口。它不包含具体几何尺寸,只包含「指向」和「开关」。我习惯把它想象成一张清单,上面列着:
- 仿真控制参数:比如仿真时长、时间步长。我一般设 0.0125 秒,够用又不慢。
- 外部条件:风文件、波浪文件在哪?
- 子文件路径:塔筒文件、叶片文件、机舱文件的相对路径。
- 输出开关:你想记录哪些通道?比如叶尖位移、塔底弯矩。
举个例子,主文件里有一段长这样:
------ SIMULATION CONTROL ------
False Echo - Echo input data to <RootName>.ech (flag)
"FATAL" AbortLevel - Error level when simulation aborts ("WARNING","SEVERE","FATAL")
630.0 TMax - Total run time (s)
0.0125 DT - Recommended integration time step (s)
嗯,这里要注意:Echo 我一般设 False,除非调试。设成 True 会生成一个 .ech 文件,里面把所有输入参数展开,方便查错。但平时开着它,文件会很大。
3.2 塔筒文件(.dat)—— 支撑的脊梁
塔筒文件定义的是从基础到机舱底部的结构。它主要包含两部分:
- 塔筒属性:高度、分段数、材料密度、弹性模量。
- 沿高度变化的截面参数:外径、壁厚、刚度分布。
我记得有一次做海上风机仿真,塔筒频率算出来总是偏低。查了半天,发现是塔筒文件里把「塔筒密度」填成了钢材密度,但实际塔筒内部有电缆、平台等附加质量。后来我在密度项里加了 5% 的余量,频率就对上了。
塔筒文件里有一段典型的表格数据:
---------------------- TOWER PROPERTIES ------------------
7 NTwInpSt - Number of input stations to specify tower properties
0.0 TwrFUS$ - Tower factor of safety for ultimate strength (-)
1.0 TwrFSS$ - Tower factor of safety for serviceability (-)
然后下面跟着一个表格,每一行代表一个高度处的截面参数:
| 高度 (m) | 外径 (m) | 壁厚 (m) | 质量密度 (kg/m³) |
|---|---|---|---|
| 0.0 | 6.0 | 0.050 | 8500 |
| 20.0 | 5.5 | 0.045 | 8500 |
| 87.6 | 4.0 | 0.025 | 8500 |
3.3 叶片文件(.dat)—— 捕风的关键
叶片文件是输入文件里最复杂的之一。它定义了叶片的几何、结构和气动外形。主要包含:
- 叶片属性:叶片数量、长度、质量、转动惯量。
- 沿展向的截面数据:每个截面的翼型、弦长、扭角、刚度分布。
- 结构参数:挥舞刚度、摆振刚度、扭转刚度、质心位置。
你想想看,一个叶片可能有 20 个截面,每个截面有 10 多个参数。手动填?太容易出错了。我一般用 Excel 整理好,再复制粘贴到文件里。
叶片文件里有一段关键的结构参数:
---------------------- BLADE PROPERTIES ------------------
3 NumBlNds - Number of blade nodes (-)
0.0 BldFUS$ - Blade factor of safety for ultimate strength (-)
1.0 BldFSS$ - Blade factor of safety for serviceability (-)
然后是一个大表格,每一行对应一个节点(从叶根到叶尖):
| 节点位置 (m) | 弦长 (m) | 扭角 (deg) | 挥舞刚度 (Nm²) | 摆振刚度 (Nm²) |
|---|---|---|---|---|
| 0.0 | 4.0 | 13.0 | 1.0e9 | 1.5e9 |
| 10.0 | 3.5 | 8.0 | 5.0e8 | 8.0e8 |
| 61.5 | 1.5 | 0.0 | 1.0e7 | 2.0e7 |
3.4 机舱文件(.dat)—— 被忽略的细节
机舱文件往往是最简单的,但也是最容易被忽略的。它主要定义:
- 机舱质量:包括发电机、齿轮箱、冷却系统等。
- 机舱质心位置:相对于塔顶中心的偏移。
- 机舱转动惯量:影响整机动力学响应。
我见过有人直接把机舱质量填成发电机质量,结果塔筒载荷偏小 20%。为什么?因为机舱里还有偏航轴承、液压站、控制柜,这些加起来可不轻。
机舱文件的结构很简单:
---------------------- NACELLE PROPERTIES ------------------
240000.0 NacMass - Nacelle mass (kg)
1.5 NacYIner - Nacelle inertia about y-axis (kg m²)
2.0 NacZIner - Nacelle inertia about z-axis (kg m²)
-2.0 NacCMxn - Downwind distance from tower-top to nacelle CM (m)
0.0 NacCMyn - Lateral distance from tower-top to nacelle CM (m)
1.5 NacCMzn - Vertical distance from tower-top to nacelle CM (m)
嗯,这里要注意:NacCMxn 是负值表示机舱质心在塔顶中心的下风向。如果你填反了,塔筒弯矩的方向就反了。
3.5 文件之间的关联——一张图看懂
说了这么多,咱们用一张图来总结整个文件体系的结构。我画了个 SVG,帮你理清关系:
从这张图可以看得很清楚:主文件是核心,它「指挥」三个子文件。子文件之间是独立的,但它们的参数必须协调一致。比如叶片长度和塔筒高度加起来要等于轮毂高度,机舱质心位置要和塔顶坐标对齐。
3.6 实战建议——文件管理
最后,分享几个我在项目中的文件管理习惯:
- 命名规范:我习惯用
项目名_部件_版本.dat,比如WT01_Tower_V2.dat。这样一看就知道是哪个项目的哪个版本。 - 版本控制:每次修改都备份。我曾经改完叶片文件忘了备份,结果新参数跑出来结果不对,又得重新调。
- 参数检查:写一个小脚本,自动检查所有文件里的关键参数是否一致。比如塔筒高度 + 机舱高度是否等于轮毂高度。
公众号:蓝海资料掘金营,微信deep3321