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 文件,里面把所有输入参数展开,方便查错。但平时开着它,文件会很大。

我的小习惯: 每次改完主文件,我都会先跑一个 10 秒的短仿真,看看能不能跑通。别一上来就 630 秒,万一报错,等半天。

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
核心要点: 叶片文件的「节点位置」是从叶根开始算的,不是从轮毂中心。而且节点数越多,计算越准,但速度越慢。我一般用 15-20 个节点,平衡精度和效率。

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,帮你理清关系:

主输入文件 (.fst) 塔筒文件 (.dat) 叶片文件 (.dat) 机舱文件 (.dat) 塔筒内容 • 塔筒高度、分段数 • 截面外径、壁厚 • 材料密度、刚度 叶片内容 • 叶片长度、质量 • 弦长、扭角分布 • 挥舞/摆振刚度 机舱内容 • 机舱总质量 • 质心位置偏移 • 转动惯量 OpenFAST 仿真引擎 读取所有文件 → 组装模型 → 开始仿真

从这张图可以看得很清楚:主文件是核心,它「指挥」三个子文件。子文件之间是独立的,但它们的参数必须协调一致。比如叶片长度和塔筒高度加起来要等于轮毂高度,机舱质心位置要和塔顶坐标对齐。

3.6 实战建议——文件管理

最后,分享几个我在项目中的文件管理习惯:

  • 命名规范:我习惯用 项目名_部件_版本.dat,比如 WT01_Tower_V2.dat。这样一看就知道是哪个项目的哪个版本。
  • 版本控制:每次修改都备份。我曾经改完叶片文件忘了备份,结果新参数跑出来结果不对,又得重新调。
  • 参数检查:写一个小脚本,自动检查所有文件里的关键参数是否一致。比如塔筒高度 + 机舱高度是否等于轮毂高度。
一句话总结: 输入文件体系就是 OpenFAST 的「骨架」。主文件定方向,子文件填血肉。只要骨架搭对了,后面的仿真就顺了。

公众号:蓝海资料掘金营,微信deep3321