Forchheimer方程式

分类:流体分析(CFD) | 统合版 2026-04-06
CAE visualization for forchheimer equation theory - technical simulation diagram
Forchheimer方程式

Forchheimer方程式的理论基础

概述

🧑‍🎓

老师!今天是讲Forchheimer方程的话题吧?它是什么样的?


🎓

高速多孔质流的非线性阻力。与Ergun方程的关系。



🧑‍🎓

也就是说,在高速多孔质流的非线性部分如果不够谨慎,之后就会吃亏。我要牢记在心!


支配方程




$$ -\nabla p=\frac{\mu}{K}\mathbf{u}+\beta\rho|\mathbf{u}|\mathbf{u} $$
$$ \text{惯性阻力} $$



🧑‍🎓

等等,支配方程就是这样吗,那么这样的情况也能用吗?


离散化方法

🧑‍🎓

这个方程,在计算机上到底怎么解呢?


🎓

使用有限元法(FEM)进行空间离散化。组装单元刚度矩阵,构造整体刚度方程。


🎓

进行弱形式(变分形式)的转换,使用试函数和形状函数,应用Galerkin法进行定式化。单元类型的选择(低阶单元 vs. 高阶单元完全积分 vs. 低减积分)直接关系到解的精度和计算成本的权衡。




矩阵求解算法

🧑‍🎓

矩阵求解算法具体是什么意思?


🎓

通过直接法(LU分解Cholesky分解)或迭代法(CG法GMRES法)求解线性方程组。对于大规模问题,带预处理的迭代法很有效。



求解法分类内存使用量适用规模
LU分解直接法O(n²)小~中规模
Cholesky分解直接法(对称正定)O(n²)小~中规模
PCG法迭代法O(n)大规模
GMRES法迭代法O(n·m)大规模·非对称
AMG预处理预处理O(n)超大规模
🧑‍🎓

也就是说,在有限元法的地方如果不够谨慎,之后就会吃亏。我要牢记在心!


商用工具中的实现

🧑‍🎓

那么,做Forchheimer方程需要什么样的软件呢?


工具名开发商/现在主要文件格式
Ansys FluentAnsys Inc..cas, .dat, .msh, .jou
Simcenter STAR-CCM+Siemens Digital Industries Software.sim, .java, .csv
COMSOL MultiphysicsCOMSOL AB.mph
OpenFOAM开源(OpenCFD/ESI、OpenFOAM Foundation)字典文件(blockMeshDict等), .foam

厂商系谱与产品整合的经过

🧑‍🎓

各个软件的来历有什么戏剧性的故事吗?



Ansys Fluent

🧑‍🎓

接下来是Ansys Fluent的话题吧。内容是什么?


🎓

由Fluent Inc.开发。2006年被Ansys收购。非结构化网格基础的通用CFD求解器。

现在的隶属:Ansys Inc.



Simcenter STAR-CCM+

🧑‍🎓

接下来是Simcenter STAR的话题吧。内容是什么?


🎓

由CD-adapco开发。2016年被西门子收购,并整合到Simcenter品牌。多面体网格是其特点。

现在的隶属:Siemens Digital Industries Software


🧑‍🎓

听到这里,我终于明白为什么开发的历史很重要了!



COMSOL Multiphysics

🧑‍🎓

请给我讲讲"COMSOL Multiphysics"!


🎓

1986年在瑞典创立。最初以FEMLAB的名义启动MATLAB连接,后来改名为COMSOL。在多物理场方面有优势。

现在的隶属:COMSOL AB


🧑‍🎓

哎呀,开发历史的话,太有意思了!请再讲讲。


文件格式与相互运用性

🧑‍🎓

不同软件之间传递数据时有什么要注意的吗?


格式扩展名种别概述
CGNS.cgnsCFD数据CFD General Notation System。CFD结果的标准交换格式。
VTK.vtk/.vtu可视化Visualization Toolkit格式。用于ParaView等。
🎓

在不同求解器之间转换模型时,要注意单元类型的对应关系、材料模型的兼容性、荷载·边界条件的表示差异。特别是高阶单元或特殊单元(内聚单元、用户定义单元等)通常不能在求解器之间直接转换。


🧑‍🎓

原来如此……看似简单的格式,实际上深不可测呢。


实务注意事项

🧑‍🎓

有没有教科书上没有的"现场经验"呢?


🎓

网格收敛性的确认、边界条件的妥当性验证、材料参数的敏感性分析很重要。


🎓
  • 网格依赖性的验证:至少在3个水平的网格密度上确认收敛性
  • 边界条件的妥当性:设置物理上有意义的约束条件
  • 结果的验证:与理论解、实验数据、已知基准问题的比较


  • 🧑‍🎓

    哎呀,Forchheimer方程深不可测啊……但是听了老师的讲解,我理解得相当清楚了!


    🎓

    好的,越来越起劲了!实际动手操作才是最好的学习。有什么不懂的随时问我。


    Coffee Break 闲话话题

    Forchheimer发现的"流速快就不成正比"现象

    Philip Forchheimer在1901年,仔细测量通过砂层的水的压力损失,发现"流速加大时,压力损失出现与流速平方成正比的成分"。相对于Darcy定律 $-\nabla p = \mu k^{-1} \mathbf{u}$,加上了 $\beta \rho |\mathbf{u}| \mathbf{u}$ 这样的惯性项就是Forchheimer方程。这个非线性项的系数 $\beta$(Forchheimer系数)是粒径和孔隙率的函数,通过实验确定。在天然气井的高流速附近,由于惯性效果,压力损失会变成理论值的好几倍,如果储层仿真中忽略这一项,增产计划会偏离很大。

    Forchheimer方程式的数值计算方法

    数值方法的详细

    🧑‍🎓

    具体怎样用什么算法来解Forchheimer方程呢?




    离散化的定式化



    🎓

    形状函数 $N_i$ 来近似未知量:



    $$ u^h(\mathbf{x}) = \sum_{i=1}^{n} N_i(\mathbf{x}) \, u_i $$




    🎓

    用公式表示就是这样。


    $$ K_e = \int_{\Omega_e} B^T \, D \, B \, d\Omega \approx \sum_{g=1}^{n_g} w_g \, B^T(\xi_g) \, D \, B(\xi_g) \, |J(\xi_g)| $$

    基本方程的离散形


    🎓

    用公式表示就是这样。


    $$ -\nabla p=\frac{\mu}{K}\mathbf{u}+\beta\rho|\mathbf{u}|\mathbf{u} $$
    $$ \text{惯性阻力} $$

    🧑‍🎓

    嗯,光看式子我还是搞不明白……它表示什么?


    🎓

    连续体的支配方程离散化后,会得到以下代数方程组:



    $$ [K]\{u\} = \{F\} $$


    🎓

    这里 $[K]$ 是整体刚度矩阵(或等效的系统矩阵),$\{u\}$ 是未知节点变量向量,$\{F\}$ 是外力向量。


    🧑‍🎓

    哦,这样啊!支配方程离散化就是这样的机制啊。


    单元技术

    🧑‍🎓

    听说过"单元技术",但不太理解……


    单元类型阶数节点数(3D)精度计算成本
    四面体1阶线性4低(剪切锁定)
    四面体2阶二次10
    六面体1阶线性8
    六面体2阶二次20非常高
    棱柱体线性/二次6/15中~高

    积分方案

    🧑‍🎓

    积分方案具体是什么意思?


    🎓
    • 完全积分:精确积分所有项。刚度被高估的倾向(锁定
    • 低减积分:减少积分点数。提高计算效率,但有产生沙漏模式的风险
    • 选择性低减积分 (B-bar法):分离体积项和偏差项进行积分。避免锁定

    • 🧑‍🎓

      听到这里,我终于明白为什么单元类型很重要了!


      收敛性与稳定性

      🧑‍🎓

      如果不收敛了,首先要检查什么?


      🎓
      • h-加密:细分网格(减小单元尺寸h)来提高精度
      • p-加密:提高单元的多项式阶数来提高精度
      • hp-加密:同时优化h和p

      • 🎓

        收敛速度:二阶单元的误差以 $O(h^2)$ 的阶数减小(光滑解的情况)


        🧑‍🎓

        原来如此……网格加密看似简单,实际上深不可测呢。


        求解器设置建议

        🧑‍🎓

        具体怎样用什么算法来解Forchheimer方程呢?


        参数推荐值备注
        迭代法收敛判定$10^{-6}$残差范数基准
        预处理手法ILU(0) or AMG取决于问题规模
        最大迭代次数1000不收敛时重新检查设置
        内存模式In-core尽可能使用

        风上差分(Upwind)

        1阶风上:数值扩散较大但稳定。2阶风上:精度提高但有振荡风险。高雷诺数流动中必须使用。

        中心差分(Central Differencing)

        2阶精度,但在Pe数 > 2时产生数值振荡。适合低雷诺数的扩散支配流。

        TVD方案(MUSCL、QUICK等)

        通过限制函数抑制数值振荡,同时保持高精度。对冲击波和陡坡捕捉有效。

        有限体积法 vs 有限元法

        FVM:自然满足守恒律。CFD的主流。FEM:对复杂形状·多物理场有利。SPH等无网格法也在发展中。

        CFL条件(Courant数)

        显式法:CFL ≤ 1是稳定条件。隐式法:CFL > 1也稳定,但精度和迭代次数受影响。LES:建议CFL ≈ 1。物理意义:一个时间步信息不超过一个格子。

        残差监测

        连续方程、动量、能量的各残差下降3~4个数量级时判定收敛。质量守恒的残差特别重要。

        松弛因子

        压力:0.2~0.3、速度:0.5~0.7是一般的初始值。发散时降低松弛因子。收敛后可升高加速。

        非定常计算的内部迭代

        每个时间步内反复迭代至定常解收敛。内部迭代数:5~20次为目标。如果残差在时间步间波动,要重新检查时间步。

        Forchheimer方程式的实务应用

        实践指南

        🧑‍🎓

        老师,请给我讲讲"实践指南"!


        🎓

        解释Forchheimer方程的实务分析流程和注意事项。


        🧑‍🎓

        老师讲得很清楚!方程的实务分析的模糊之处都晴朗了。


        分析流程

        🧑‍🎓

        从最开始教我吧!从什么开始呢?


        🎓

        1. 前处理 (Pre-processing)

        • 导入CAD数据并进行形状简化
        • 定义材料特性
        • 网格生成(单元类型·尺寸的决定)
        • 设置边界条件和荷载条件

        🎓

        2. 求解 (Solving)

        • 求解器设置(求解法、收敛基准、输出控制)
        • 提交作业并执行计算
        • 监测收敛

        🎓

        3. 后处理 (Post-processing)

        • 结果可视化(位移、应力、其他物理量)
        • 结果验证和妥当性确认
        • 报告作成


        网格生成的最佳实践

        🧑‍🎓

        怎样判断网格的好坏?



        单元品质指标

        🧑‍🎓

        请给我讲讲"单元品质指标"!


        指标理想值允许范围影响
        纵横比1.0< 5.0精度降低
        雅可比行列式比1.0> 0.3单元退化
        翘曲< 15°精度降低
        歪斜度< 45°收敛性恶化
        锥形比0< 0.5精度降低

        网格密度的决定

        🧑‍🎓

        网格密度的决定具体是什么意思?


        🎓
        • 应力集中部:至少布置3层以上的单元
        • 应力梯度大的区域:单元尺寸减小到周围的1/3~1/5
        • 荷载施加点附近:局部加密
        • 远方区域:粗网格确保计算效率


        • 边界条件设置指南

          🧑‍🎓

          边界条件,听说搞错了全都玩完……


          🎓
          • 过约束要注意:刚体运动的约束仅6自由度
          • 活用对称条件:减小计算规模
          • 荷载的等价分配:集中荷载 vs. 分布荷载的选择

          • 🧑‍🎓

            哦,这样啊!注意过约束就是这个机制啊。


            按商用工具分类的实现步骤

            🧑‍🎓

            有这么多软件呢?各自的特点请告诉我!


            工具名开发商/现在主要文件格式
            Ansys FluentAnsys Inc..cas, .dat, .msh, .jou
            Simcenter STAR-CCM+Siemens Digital Industries Software.sim, .java, .csv
            COMSOL MultiphysicsCOMSOL AB.mph
            OpenFOAM开源(OpenCFD/ESI、OpenFOAM Foundation)字典文件(blockMeshDict等), .foam

            Ansys Fluent

            🧑‍🎓

            接下来是Ansys Fluent的话题吧。内容是什么?


            🎓

            由Fluent Inc.开发。2006年被Ansys收购。非结构化网格基础的通用CFD求解器。

            现在的隶属:Ansys Inc.



            Simcenter STAR-CCM+

            🧑‍🎓

            接下来是Simcenter STAR的话题吧。内容是什么?


            🎓

            由CD-adapco开发。2016年被西门子收购,并整合到Simcenter品牌。多面体网格是其特点。

            现在的隶属:Siemens Digital Industries Software


            🧑‍🎓

            听得清楚!工具的背景情况都晴朗了。


            常见失败与应对

            🧑‍🎓

            初学者容易犯什么样的错误?想事先了解!


            症状原因对策
            计算不收敛网格品质不良、边界条件不适当改善网格、重新检查拘束条件
            应力异常大应力奇点、网格依赖避免奇点、局部网格加密
            位移不现实材料常数错误、单位系不统一确认输入数据
            计算时间过长不必要的加密、低效率求解法网格最优化、并行计算

            质量保证检查清单

            🧑‍🎓

            有没有教科书上没有的"现场经验"呢?


            🎓
            • 用3个水平以上的网格确认了网格收敛性吗
            • 验证了力的平衡(反力总和)吗
            • 结果是否在物理上合理的范围内
            • 与已知的理论解或基准问题进行了比较吗


            • 🧑‍🎓

              哎呀,Forchheimer方程深不可测啊……但是听了老师的讲解,我理解得相当清楚了!


              🎓

              好的,越来越起劲了!实际动手操作才是最好的学习。有什么不懂的随时问我。


              Coffee Break 闲话话题

              岩石储层设计忽视Forchheimer修正后的结果

              石油·气体井附近(井筒附近)流速特别快,Forchheimer惯性效果明显。某北海油田项目中,用储层模拟器只采用Darcy定律计算了增产方案,但实际采气量只有预测的65%左右。后来的分析发现忽视了井筒附近的惯性损耗(Non-Darcy皮肤效应)。在实践中,不仅要取 $k$,还要通过岩芯试验取得Forchheimer系数 $\beta$,并作为 Non-Darcy Flow Factor 输入到储层模拟器中,这对产量预测精度的影响很大。

              Forchheimer方程式的软件比较

              商用工具比较

              🧑‍🎓

              有这么多软件呢?各自的特点请告诉我!


              🎓

              比较支持Forchheimer方程的主要商用CAE工具的功能,以及各产品的历史背景。


              🧑‍🎓

              那么,如果方程支持的主要的已经准备好,首先就没问题吧?


              支持工具清单

              🧑‍🎓

              那么,做Forchheimer方程需要什么样的软件呢?


              工具名开发商/现在主要文件格式
              Ansys FluentAnsys Inc..cas, .dat, .msh, .jou
              Simcenter STAR-CCM+Siemens Digital Industries Software.sim, .java, .csv
              COMSOL MultiphysicsCOMSOL AB.mph
              OpenFOAM开源(OpenCFD/ESI、OpenFOAM Foundation)字典文件(blockMeshDict等), .foam

              Ansys Fluent

              🧑‍🎓

              接下来是Ansys Fluent的话题吧。内容是什么?


              🎓

              由Fluent Inc.开发。2006年被Ansys收购。非结构化网格基础的通用CFD求解器。

              现在的隶属:Ansys Inc.



              Simcenter STAR-CCM+

              🧑‍🎓

              接下来是Simcenter STAR的话题吧。内容是什么?


              🎓

              由CD-adapco开发。2016年被西门子收购,并整合到Simcenter品牌。多面体网格是其特点。

              现在的隶属:Siemens Digital Industries Software


              🧑‍🎓

              听到这里,我终于明白为什么开发的历史很重要了!



              COMSOL Multiphysics

              🧑‍🎓

              请给我讲讲"COMSOL Multiphysics"!


              🎓

              1986年在瑞典创立。最初以FEMLAB的名义启动MATLAB连接,后来改名为COMSOL。在多物理场方面有优势。

              现在的隶属:COMSOL AB



              OpenFOAM

              🧑‍🎓

              OpenFOAM具体是什么意思?


              🎓

              Imperial College London发源的开源CFD。OpenCFD Ltd(ESI Group子公司)和The OpenFOAM Foundation并行开发。

              现在的隶属:开源(OpenCFD/ESI、OpenFOAM Foundation)


              🧑‍🎓

              哦,这样啊!开发就是这样的机制啊。


              功能比较矩阵

              🧑‍🎓

              预算和时间都有限,哪个性价比最强?


              功能FluentStar-CCM+COMSOLOpenFOAM
              基本功能
              高级功能
              自动化/脚本
              并行计算
              GPU支持

              转换的风险

              🧑‍🎓

              转换的风险具体是什么意思?


              🎓
              • 单元类型的不兼容:求解器固有单元无法用中立格式表示
              • 材料模型的差异:同名的也可能内部实现不同
              • 边界条件的重新定义:多数情况需要手动重新设置
              • 结果数据的比较:输出变量的定义(节点值 vs. 单元值、积分点值)有差异

              • 🧑‍🎓

                哦,这样啊!不同工具间的转换就是这样的机制啊。


                许可形式

                🧑‍🎓

                听说过"许可形式",但不太理解……


                工具许可特点
                商用FEA节点锁定/浮动高价格但有官方支持
                OpenFOAMGPL免费但支持收费
                COMSOL节点锁定/浮动按模块购买
                Code_AsterGPLEDF开发的OSS求解器

                选择指南

                🧑‍🎓

                最后选哪个,能给我判断标准吗?


                🎓

                在Forchheimer方程工具选择上,要考虑如下:


                🎓
                • 分析规模:从数万到数亿自由度的可扩展性
                • 物理模型:必要的本构关系·单元类型的支持状况
                • 工作流:与CAD的连接、自动化的容易程度
                • 成本:初期投资 + 年度维护 + 教育成本
                • 支持:技术支持的质量和响应速度


                • 🧑‍🎓

                  哎呀,Forchheimer方程深不可测啊……但是听了老师的讲解,我理解得相当清楚了!


                  🎓

                  好的,越来越起劲了!实际动手操作才是最好的学习。有什么不懂的随时问我。


                  Coffee Break 闲话话题

                  储层模拟器专用工具改变了Forchheimer实现的经过

                  在通用CFD工具中解Forchheimer方程时,用户通常要手动实现源项。另一方面,Eclipse(SLB)和CMG等储层模拟器专用工具从1980年代就配备了 Non-Darcy 流选项,用户可以直接输入各井的Forchheimer系数(D-factor)。从2000年代起,通用CFD与储层模拟器的耦合分析(近傍详细CFD + 广域储层模拟器)普及,两者参数定义的"翻译"变得必要。在这个领域,如果不理解两种工具的物理模型差异,参数交接时容易出错。

                  Forchheimer方程式的先端研究

                  先端课题与研究动向

                  🧑‍🎓

                  Forchheimer方程的领域今后怎样进化呢?


                  🎓

                  看一下Forchheimer方程领域最新的研究动向和先进手法。


                  🧑‍🎓

                  也就是说,在方程最新的部分如果不够谨慎,之后就会吃亏。我要牢记在心!


                  最新的数值方法

                  🧑‍🎓

                  接下来是最新数值方法的话题吧。内容是什么?



                  🧑‍🎓

                  光看式子我还是搞不明白……它表示什么?


                  🎓
                  • 等几何分析 (IGA):直接使用NURBS基函数,实现CAD-CAE之间无缝连接
                  • 粒子法 (SPH, MPM):通过无网格手法追踪大变形·破坏
                  • 位相场法 (Phase-Field):通过界面的隐式表示实现复杂界面追踪
                  • 机器学习支援代理模型、物理信息神经网络 (PINN)


                  • 高性能计算 (HPC) 的对应


                    并行化手法概述适用求解器
                    MPI (领域分割)分布式内存型。大规模问题的标准全主要求解器
                    OpenMP共享内存型。节点内并行多数求解器
                    GPU (CUDA/OpenCL)GPGPU活用。特别对显式法有效LS-DYNA, Fluent等
                    混合 MPI+OpenMP节点间+节点内并行大规模HPC环境

                    Forchheimer方程式的故障处理

                    故障排除




                    常见错误与对策

                    🧑‍🎓

                    老师也在Forchheimer方程上通宵调试过吗?(笑)



                    1. 收敛失败

                    🧑‍🎓

                    收敛失败具体是什么意思?


                    🎓

                    症状:求解器在指定迭代次数内未收敛而异常终止


                    🎓

                    可能原因

                    • 网格品质不足(过度扭曲的单元)
                    • 材料参数设置不适当
                    • 初始条件不适当
                    • 非线性性太强(荷载步数不足)

                    🎓

                    对策

                    • 进行网格品质检查(纵横比、雅可比行列式)
                    • 确认材料参数的单位系
                    • 分割荷载为多个步(增加子步数)
                    • 放松收敛判定基准(但要注意精度)

                    🧑‍🎓

                    也就是说,在收敛失败的地方如果不够谨慎,之后就会吃亏。我要牢记在心!



                    2. 非物理的结果

                    🧑‍🎓

                    接下来是非物理的结果的话题吧。内容是什么?


                    🎓

                    症状应力/位移/温度等出现物理上不现实的