OpenFOAM 极简流程卡片

从 0 到结果的“最小可用流程”——每一步只保留最关键动作。

1. 环境 & Case 模板

  • ☐ 终端加载环境:source /path/to/OpenFOAM/etc/bashrc
  • ☐ 进入工作目录:cd $FOAM_RUN (或你自己的工程目录)
  • ☐ 拷贝最接近的教程:
    cp -r $FOAM_TUTORIALS/... myCase
  • ☐ 进入算例:cd myCase ,确认有 0/ constant/ system/ 三个目录

2. 网格准备(blockMesh / snappyHexMesh / 导入三选一)

  • ☐ 使用 blockMesh
    • 编辑 system/blockMeshDict
    • 运行:blockMesh
  • ☐ 如需 snappyHexMesh
    • STL 放入 constant/triSurface
    • 编辑 system/snappyHexMeshDict
    • 运行:snappyHexMesh -overwrite
  • ☐ 或导入外部网格:fluentMeshToFoam / gmshToFoam
  • ☐ 必做:checkMesh ,确认无 FATAL ERROR、质量可接受

3. 0 / constant / system 三大目录快速检查

0 目录:初始场 & 边界条件

  • ☐ 必要场文件:Up (可能还有 Tkepsilon / omega 等)存在
  • internalField 初值合理(不要离谱)
  • boundaryField :每个 patch 类型 & 数值与物理边界一致

constant 目录:物性 & 湍流

  • transportProperties :密度 / 黏度等正确
  • turbulenceProperties / RASPropertieslaminar / RAS / LES 选择正确
  • ☐ 有能量/可压缩:thermophysicalProperties 设置好状态方程、cp、k 等

system 目录:控制 & 数值

  • controlDict
    • application = 所需求解器(如 simpleFoam / pimpleFoam …)
    • startTime / endTimestopAtdeltaT 合理
    • writeControl / writeInterval 合理
  • fvSchemes :关键方程尽量二阶格式
  • fvSolution :线性求解器 + relaxationFactors 设为稳健值
  • ☐ 并行打算:配置好 system/decomposeParDict

4. 预检查 & 小试一把

  • paraFoam (或在 Paraview 中加载 case)
    • 看网格形状 & patch 名称是否正确
    • 看各边界条件是否如预期
  • ☐ 查看 0 时刻的 U / p / T :初场无明显奇怪值
  • ☐ 外流等问题可(选做):potentialFoam 预求解一遍
  • ☐ 并行准备(如需要):
    • decomposePar 生成 processor* 目录

5. 正式求解(串行 / 并行)

串行

  • ☐ 运行:
    `simpleFoam

    log.simpleFoam &(把simpleFoam` 换成你的求解器)

  • tail -f log.simpleFoam 监控残差 & 报错信息

并行

  • ☐ 运行:
    mpirun -np N simpleFoam -parallel > log.simpleFoam &
  • ☐ 结束后:reconstructPar 重构结果(需要的话)

发散**/异常时快速自检**

  • ☐ 减小 deltaTmaxCo (瞬态)
  • ☐ 降低 relaxationFactors
  • ☐ 临时改为一阶格式,先跑稳
  • ☐ 检查边界条件、物性、网格质量是否有明显错误

6. 后处理 & 快速验证

  • paraFoam 打开奖例:
    • 画速度/压力/温度云图
    • 用 Slice / StreamTracer 看主要流动结构
  • ☐ 有 force/coeff 等 functionObject 的:检查输出文件(forces/forceCoeffs 等)
  • ☐ 用 postProcess -func sample / surfaceFieldValue 等提取截面/patch 数据
  • ☐ 简单验证:
    • 看入口/出口质量流量是否平衡
    • 与粗估公式 / 实验 / 文献数值对一下量级

7. 清理 & 模板化

  • ☐ 写一个最简单的 Allrun
    • 网格 → checkMesh →(可选 potentialFoam)→ 求解 → 后处理
  • ☐ 写 Allclean :清除中间时间步,只保留 0constantsystem 和关键结果
  • ☐ 把当前算例当作以后类似问题的模板保存/打包(或丢进 git)