分数步投影法:从 Chorin 分裂到 OpenFOAM 的通量投影
适用范围:理论部分为通用内容;实现对照基于 OpenFOAM Foundation 13 与 ESI v2406 源码,其他版本应按对应源码核对。最后核对:2026-09-17。 分数步法(fractional step method)与投影法(projection method)基本是同一族算法的两个名字:把不可压缩流动的一个时间步拆成”无压力的动量预测”和”压力投影”两个分数步。它也是理解 OpenFOAM 压力-速度耦合代码的入门视角。 为什么必须分裂不可压缩 Navier-Stokes 方程中,压力没有自己的输运方程,它的角色是保证速度场无散的拉格朗日乘子: $$\frac{\partial u}{\partial t} + (u\cdot\nabla)u = -\frac{1}{\rho}\nabla p + \nu\nabla^2 u, \qquad \nabla\cdot u = 0$$ 如果对动量方程直接隐式求解而把压力当作已知(上一时刻的值),得到的中间速度场一般不满足散度约束。对速度取散度可以推出压力必须满足的泊松方程——这正是分裂出”压力步”的动机。 C...
OpenFOAM 线性求解器选择:从矩阵性质到配置
适用范围:求解器清单与源码依据基于 OpenFOAM Foundation 13;ESI 发行线(如 v2406)的求解器集合略有差异,选择思路相同。最后核对:2026-09-17。 每个外迭代或时间步里,OpenFOAM 把离散后的 `fvMatrix` 交给 `fvSolution` 的 `solvers` 字典中选定的线性求解器。选错求解器通常不是报错,而是收敛慢或迭代不收敛,所以值得先弄清楚矩阵性质和求解器的适用范围。 矩阵性质:对称还是非对称有限体积离散最终落到 `lduMatrix`(对角 + 上/下三角系数,面向非结构网格)。当上、下三角互为转置时矩阵是对称的,否则非对称。决定因素是方程本身: 方程 典型矩阵 原因 压力泊松方程 `fvm::laplacian(rAU, p)` 对称 扩散算子离散后上下三角一致 动量方程 `fvm::div(phi, U)` 非对称 对流项方向性 湍流量 $k$、$\varepsilon$、$\omega$ 非对称 同样含对流项 Foundation 13 提供哪些求解器以下描述摘自 Found...
redistributePar 工具导航
redistributePar 用于并行网格/解的重分布与重构。 本站已有专题对比文:redistributePar vs reconstructPar 官方资料 OpenFOAM redistributePar 文档 OpenFOAM Foundation v13 源码
cfd.direct 实用工具导航
cfd.direct 的 OpenFOAM 实用工具总览页。 资料索引 Useful tools - cfd.direct 该页面只作为外部资料导航,不对工具参数和版本行为做二次承诺;使用前请查看对应发行版手册。
createPatch 用法详解
`createPatch` 是 OpenFOAM 中的一个实用工具,用于将某些 patch(边界面)合并、细分或修改,常见于切割网格、把周期性边界/内部面分开形成新边界等场景。常配合 `createPatchDict` 配置文件使用。 使用流程1. 制作或编辑系统字典文件在你的算例目录下(如 `case/system`)创建或编辑 `createPatchDict`: 路径: 1system/createPatchDict 常见结构和参数说明: 1234567891011121314151617181920patches( { name newPatchName; // 要生成的新 patch 名 patchInfo { type patch; // 新 patch 类型(如 patch,wall,cyclic,symmetryPlane 等) }yon constructFrom patches; // 来源,可...
cumulative error 持续增大的排查
simpleFoam 中连续性误差(cumulative)持续增大、最终发散的常见原因与对策在 simpleFoam 的迭代日志里,像下面这行来自压力校正(p-equation)与通量校正(phi)的连续性检查: 1time step continuity errors : sum local = 2.44316043779e-09, global = -4.34080109975e-12, cumulative = -4.34080109975e-12 sum local:各个控制体的局部质量不平衡的绝对值总和(只反映量级)。 global:整个域的净质量不平衡(有符号),理想应接近 0。 cumulative:全局误差的累积和(随迭代更新),如果持续偏离 0 并增大,通常预示压力-速度耦合或边界流量不匹配的问题,可能走向发散。 下面按“成因分类 → 现象 → 快速检查 → 解决策略”的方式总结。 1) 边界条件不一致或不物理 典型症状 global 带固定符号并逐步累积(cumulative 单调漂移)。 入口/出口设置导致总质量通量不平衡(如多个入口 f...
divergence-free 散度为零
CFD 中的 “divergence-free” 的意义在计算流体力学(CFD)中,“divergence-free”(也写作 “divergence free”、“无散度”、“散度为零”)通常指速度场满足 $\nabla \cdot \mathbf{u} = 0$。它在物理与数值上都至关重要,尤其针对不可压缩流动。 1. 物理意义:质量守恒的强形式 不可压缩流动条件:对恒定密度流体(或密度变化可忽略),连续方程化为 $\nabla \cdot \mathbf{u} = 0$,表示局部体积不膨胀或收缩,流体“既不在本地产生也不在本地消失”。 可压缩流动对比:可压缩情况下,连续方程为 $\partial_t \rho + \nabla \cdot (\rho \mathbf{u}) = 0$。即使 $\nabla \cdot \mathbf{u} \neq 0$,质量仍可守恒,因为密度随时空变化。不可压缩的“无散度”是更强的约束。 2. 数值意义:压力–速度耦合与稳定性 压力作为约束的拉格朗日乘子 在不可压缩 NS 方程中,压力不是通过状态方程确定,而是通过强制 $\nab...
dyfluid 问答集(2025-09-18)
http://dyfluid.com/selftest.html 本页面主要用来想要参加LCO算法编程课的同学的基础自测。也可用于相关公司招聘时对应聘人员的CFD算法水平评估。相关问题均为普适性CFD问题,也即对于任意一个方向的CFD算法从业人员,都应该了解。对于下列问题,如果: 懂50%以下,需要补算法;如果来参加课程,学习后将会对所有问题有一阵见血的理解; 懂70%,可以用业余时间补算法。对于应聘人员可以通过初面; 懂90%。如果招聘为浮动工资(如应届生月薪2-3万),建议对这一类应聘人员最低提供中位工资(月薪2.5万以上); Warning 相关问题同时附带chatgpt的答案。对于AI能回答100%的问题,从事相关工作的人员要保持警惕,可能存在被替代导致失业的可能。 问题集将下述索引标识法的方程,转化为向量标识法: $$ \begin{split} \begin{multline} \frac{\partial R}{\partial t} +\frac{\partial u_j R}{\partial x_j} = \frac{\partial}{\part...
foamDictionary 用法详解
foamDictionary 使用指南与实例`foamDictionary` 是 OpenFOAM 自带的字典读写工具,用于在命令行对字典文件(如 `system/controlDict`、`constant/transportProperties`、`0/U` 等)进行查询、修改、插入、删除、格式化输出。它可以避免手工编辑易出错,尤其适合脚本化和批处理。 常见用途概览 查看条目:读取某个键的值或子字典 设置/更新值:修改标量、向量、字符串、列表、维度量 插入/删除条目:添加新键、移除旧键 路径定位:支持嵌套子字典与层级键路径 格式化/规范化:重新排版、统一键排序(可选) 输出重定向:将结果写回文件或输出到标准输出用于管道 基本语法1foamDictionary <dictFile> [选项] [操作] `<dictFile>`:目标字典文件路径(相对或绝对) 常见选项: `-entry <keyPath>`:指定要操作的键或路径 `-value <val>`:设置时提供值 `-remove`...
网格诱导的数值问题
Skewnesshttps://cfmesh.com/is-it-always-the-mesh-part-2-skewness/ 歪斜度示意图见上方 CF-MESH+ 原文。这里不直接热链第三方图片。 🌐 1. Introduction — Role of Mesh in FVMIn Finite Volume Method (FVM), numerical accuracy directly depends on mesh geometry.A high-quality mesh ensures: Consistent representation of gradients, Accurate flux calculations, and Reliable convergence behaviour. 📘 Key Mesh Requirements: Non-overlapping cells — Each control volume must be unique. Convexity of cells — Ensures valid interpolation ...
