Use when working on CFD cases with OpenFOAM, especially solver selection, dictionary setup, mesh workflow decisions, turbulence-model choices, and verification of fluid-flow or heat-transfer simulations.
用 OpenFOAM 做 CFD:从 case 结构、网格、求解器、湍流模型到后处理和验证。
本 skill 故意保持轻量:
scholaraio toolref本 skill 应与 scientific-runtime 一起理解:
openfoam skill 负责 CFD 路由、工作流和科学规范scientific-runtime 负责运行时的 toolref-first 行为和覆盖缺口退化策略toolref 负责官方入口页、求解器页、字典页和模型页当前成熟度:toolref-first, partial coverage
OpenFOAM 当前的 toolref 适合做主入口查询,但还不是完整手册替代。
对 OpenFOAM 问题,agent 默认按这个顺序工作:
fvSchemes / fvSolution / controlDicttoolref 查主求解器、主字典和高价值模型页simpleFoam / pimpleFoam / fvSchemes / fvSolution / controlDict / kOmegaSST / blockMesh / snappyHexMesh / forceCoeffs / Q 这类主入口,优先信任 toolrefshow 没有直接命中 solver / function object 主页,或结果明显退化成模糊页,立即回退到官方文档toolref 覆盖较浅,而不是用户用法有问题这意味着:
toolref 先解决“找对入口”的问题# 安装(Ubuntu/WSL2)
sudo apt install openfoam
# 或 Docker
docker pull openfoam/openfoam-dev
# 可视化
sudo apt install paraview
验证:simpleFoam -help 应正常输出。确认 $WM_PROJECT_DIR 环境变量已设置。
适合:
不适合:
当 agent 不确定求解器、字典、function object、湍流模型时,先查 toolref。
常用查法:
scholaraio toolref show openfoam simpleFoam
scholaraio toolref show openfoam pimpleFoam
scholaraio toolref show openfoam controlDict
scholaraio toolref show openfoam fvSchemes
scholaraio toolref show openfoam fvSolution
scholaraio toolref show openfoam kOmegaSST
scholaraio toolref show openfoam blockMesh
scholaraio toolref show openfoam snappyHexMesh
scholaraio toolref show openfoam forceCoeffs
scholaraio toolref search openfoam numerical schemes
scholaraio toolref search openfoam linear solver settings
scholaraio toolref search openfoam turbulence model
scholaraio toolref search openfoam drag coefficient
scholaraio toolref search openfoam q criterion
推荐习惯:
fvSchemes / fvSolution 前先看官方字典说明forces / forceCoeffs / yPlus / Q 这类入口页最低运行规则:
toolref show 命中主入口toolref searchtoolref show 没法直接落到目标页,或 search 结果明显不对题,再回退官方文档如果遇到覆盖缺口:
toolref 深度覆盖不足scholaraio usearch "<流动问题>" 检索相关论文建议工作流:
controlDict / fvSchemes / fvSolution对 agent 的最小交付要求:
| 求解器 | 适用场景 |
|---|---|
simpleFoam | 稳态不可压 RANS |
pimpleFoam | 瞬态不可压(LES/URANS) |
rhoSimpleFoam | 稳态可压 |
sonicFoam | 瞬态可压/超声速 |
buoyantSimpleFoam | 自然对流/传热 |
interFoam | 两相流(VOF) |
reactingFoam | 燃烧/反应流 |
| 模型 | 适用场景 | 何时选用 |
|---|---|---|
kOmegaSST | 默认首选,外流/分离流 | 大多数工程问题 |
kEpsilon | 内流/充分发展流 | 管道、通道 |
SpalartAllmaras | 航空外流 | 翼型、薄边界层 |
kOmegaSSTLM | 转捩流动 | 低 Re 翼型 |
Smagorinsky / WALE | LES 亚格子模型 | 需要瞬态细节时 |
科学规范:湍流模型选择必须有文献依据或物理论证。不能"试了几个选最好看的"。
simpleFoam / pimpleFoam / rhoSimpleFoam 的适用边界fvSchemes 和 fvSolution 的关键项kOmegaSST 等湍流模型的物理假设function objects、forces、yPlus 的用法blockMesh / snappyHexMesh 的职责边界forceCoeffs 和 Q 这类后处理入口对象这些细节优先查 toolref,不要在 skill 里硬背。
# pvpython 自动化脚本
from paraview.simple import *
# 加载 OpenFOAM case
reader = OpenFOAMReader(FileName="<case>/case.foam")
reader.UpdatePipeline()
# 表面压力云图
display = Show(reader)
display.SetRepresentationType("Surface")
ColorBy(display, ("CELLS", "p"))
pLUT = GetColorTransferFunction("p")
pLUT.ApplyPreset("Cool to Warm", True)
# 切面
slice = Slice(reader)
slice.SliceType.Normal = [0, 1, 0] # y=0 对称面
Show(slice)
ColorBy(GetDisplayProperties(slice), ("CELLS", "U", "Magnitude"))
# 渲染
view = GetActiveView()
view.ViewSize = [3840, 2160]
SaveScreenshot("pressure_surface.png", view)
| 检查项 | 正确做法 | 常见错误 |
|---|---|---|
| 网格无关性 | 至少跑粗/中/细三套网格 | 只用一套网格 |
| y+ | 检查并确认在壁面函数范围内 | 不检查 y+ |
| 收敛 | 残差降 3-4 个量级 + 力系数稳定 | 只看残差不看积分量 |
| 域大小 | 出口距物体 >5-8L | 域太小影响尾流 |
| 迎风格式 | linearUpwind(二阶) | 全用一阶迎风(数值耗散过大) |
| 验证 | 与实验/DNS 数据逐点对比 | "看起来对"就算验证 |
toolref 并说明依据toolref 的覆盖缺口转嫁给用户;能回退官方文档就先完成用户任务