有限体积法的基础

类别: 流体解析(CFD) | 综合版 2026-04-06
CAE visualization for fvm fundamentals theory - technical simulation diagram
有限体积法基础

有限体积法基础的理论基础

概要

🙋

老师! 今天是有限体积法基础的讨论,对吧? 这是什么东西?


🎓

基于保存律积分形式的离散化。表面通量的评估。CFD的标准方法。



🙋

明白了。那么如果理解了基于保存律积分形式的内容,首先就没问题了,对吗?


支配方程




$$ \frac{\partial}{\partial t}\int_V \phi\,dV+\oint_S \mathbf{F}\cdot d\mathbf{S}=\int_V Q\,dV $$
$$ \sum_f \mathbf{F}_f\cdot\mathbf{S}_f = Q_P V_P $$



🙋

老师的讲解很清楚! 关于有限体积法基础那些模糊的地方现在都明白了。


离散化方法

🙋

计算机如何实际求解这个方程?


🎓

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


🎓

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




矩阵求解算法

🙋

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


🎓

用直接法(LU分解Cholesky分解)或迭代法(CG法GMRES法)求解线性方程组。对于大规模问题,前置条件迭代法很有效。



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

也就是说,如果在有限元法阶段疏忽,之后会吃苦头。我会牢记这一点!


商用工具的实现

🙋

有限体积法基础需要用什么软件呢?


工具名称开发公司/现在主要文件格式
Ansys FluentAnsys Inc..cas, .dat, .msh, .jou
Ansys CFXAnsys Inc..cfx, .def, .res, .ccl
Simcenter STAR-CCM+Siemens Digital Industries Software.sim, .java, .csv
OpenFOAM开源(OpenCFD/ESI、OpenFOAM Foundation)字典文件(blockMeshDict等), .foam

供应商系谱及产品集成经历

🙋

各个软件的起源故事,好像很有戏剧性?



Ansys Fluent

🙋

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


🎓

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

现隶属于: Ansys Inc.



Ansys CFX

🙋

请介绍一下"Ansys CFX"!


🎓

由英国AEA Technology公司开发的CFX。2003年被Ansys收购。以耦合求解器为特点。

现隶属于: Ansys Inc.


🙋

听到这里,我终于理解为什么开发历史这么重要了!



Simcenter STAR-CCM+

🙋

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


🎓

由CD-adapco公司开发。2016年被西门子收购并集成到Simcenter品牌。以多面体网格为特点。

现隶属于: Siemens Digital Industries Software


🙋

哇~,开发历史的故事,太有意思了! 请继续讲。


文件格式与互操作性

🙋

在不同软件间交换数据时有什么需要注意的吗?


格式扩展名种类概述
CGNS.cgnsCFD数据CFD通用记号系统。CFD结果的标准交换格式。
VTK.vtk/.vtu可视化可视化工具包格式。在ParaView等中使用。
🎓

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


🙋

明白了……文件格式看似简单,其实深不可测啊。


实务注意事项

🙋

有没有教科书上没有的"实务经验"呢?


🎓

网格收敛性的确认、边界条件的合理性验证、材料参数的敏感性分析非常重要。


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


  • 🙋

    有限体积法基础的整体情况我现在理解了! 从明天开始就在实务中加以注意。


    🎓

    嗯,很好的态度! 实际动手是最好的学习方法。有问题随时来问我。


    咖啡休息 闲谈话题

    为什么FVM"严格遵守保存律"——FDM、FEM和FVM的决定性差异

    有限差分法(FDM)只是在格子点处近似方程。有限元法(FEM)用弱形式积分,但无法保证每个单元的"进出"守恒。另一方面,有限体积法(FVM)直接计算每个单元的"进来的量=出去的量±生成量",所以局部和全局都严格满足保存律。例如在发动机燃烧室的CFD中,如果"计算过程中质量增加1%"是绝对不能接受的。FVM通过在相邻单元间共享界面通量,从原理上就杜绝了这种"鬼质量增长"。这就是FVM成为工业CFD主流方法的最大原因。

    有限体积法基础的数值计算方法

    数值方法详解

    🙋

    具体用什么算法求解有限体积法基础的问题?




    离散化定式



    🎓

    使用形状函数 $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)| $$

    基础方程的离散形


    🎓

    用公式表示就是这样。


    $$ \frac{\partial}{\partial t}\int_V \phi\,dV+\oint_S \mathbf{F}\cdot d\mathbf{S}=\int_V Q\,dV $$
    $$ \sum_f \mathbf{F}_f\cdot\mathbf{S}_f = Q_P V_P $$

    🙋

    呃,光看公式有点懵……这是什么意思?


    🎓

    连续体的控制方程离散化后,会得到这样的代数方程组:



    $$ [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)$ 的阶减小误差(光滑解的情况)


        🙋

        明白了……网格细分看似简单,其实学问很大呢。


        求解器设置建议

        🙋

        具体用什么算法求解有限体积法基础的问题?


        参数推荐值说明
        迭代法收敛判定$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条件(库兰数)

        显式格式:CFL ≤ 1为稳定条件。隐式格式:CFL > 1也稳定,但影响精度和迭代次数。LES:推荐CFL ≈ 1。物理意义:一个时间步内,信息不能传播超过一个单元。

        残差监测

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

        松弛因子

        压力:0.2~0.3,速度:0.5~0.7通常是初始值。发散时降低松弛因子。收敛后提高加快速度。

        非定常计算的内部迭代

        每个时间步内迭代至定常解。内部迭代次数:5~20次为目标。如果残差在时间步间变化,需要调整时间步。

        有限体积法基础的实务应用

        实践指南

        🙋

        老师,请讲一下"实践指南"!


        🎓

        讲解有限体积法基础的实务分析流程和注意事项。


        🙋

        等等,你是说有限体积法基础的实际应用,也就是这种情况也能用,对吗?


        分析流程

        🙋

        请从第一步开始讲! 应该从什么开始?


        🎓

        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
            Ansys CFXAnsys Inc..cfx, .def, .res, .ccl
            Simcenter STAR-CCM+Siemens Digital Industries Software.sim, .java, .csv
            OpenFOAM开源(OpenCFD/ESI、OpenFOAM Foundation)字典文件(blockMeshDict等), .foam

            Ansys Fluent

            🙋

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


            🎓

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

            现隶属于: Ansys Inc.



            Ansys CFX

            🙋

            请介绍一下"Ansys CFX"!


            🎓

            由英国AEA Technology公司开发的CFX。2003年被Ansys收购。以耦合求解器为特点。

            现隶属于: Ansys Inc.


            🙋

            老师的讲解很清楚! 工具名称的困惑现在都清楚了。


            常见失败及对策

            🙋

            初学者容易犯哪些错误? 事先想了解一下!


            症状原因对策
            计算不收敛网格质量不良、边界条件不当改善网格、调整约束条件
            应力异常大应力奇点、网格依赖避免奇点、局部网格细分
            位移不现实材料常数错误、单位系混淆确认输入数据
            计算时间过长不必要的细分、低效求解网格优化、并行计算

            品质保证检查清单

            🙋

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


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


            • 🙋

              有限体积法基础的整体情况我现在理解了! 从明天开始就在实务中加以注意。


              🎓

              嗯,很好的态度! 实际动手是最好的学习方法。有问题随时来问我。


              咖啡休息 闲谈话题

              "收敛了"≠"正确了"——FVM实务的陷阱

              FVM实务中常见的误解是"残差下降就说明答案对了"。收敛意味着"计算稳定地结束了",而不是"物理上正确"的保证。实际上,有个阀门流量系数的项目中,残差降到10⁻⁶都还是跟实测差30%——原因是乱流模型选择错了。FVM实务中真正重要的不是"收敛检查",而是"网格独立性检查"和"实验值比较"这两步。特别是网格粗时和细时结果一致,这才是可信分析的第一步。

              有限体积法基础的软件比较

              商用工具比较

              🙋

              有各种各样的软件,对吧? 分别有什么特点?


              🎓

              对有限体积法基础的主要商用CAE工具的功能比较,以及各产品的历史背景进行详细说明。



              支持工具列表

              🙋

              有限体积法基础需要用什么软件呢?


              工具名称开发公司/现在主要文件格式
              Ansys FluentAnsys Inc..cas, .dat, .msh, .jou
              Ansys CFXAnsys Inc..cfx, .def, .res, .ccl
              Simcenter STAR-CCM+Siemens Digital Industries Software.sim, .java, .csv
              OpenFOAM开源(OpenCFD/ESI、OpenFOAM Foundation)字典文件(blockMeshDict等), .foam

              Ansys Fluent

              🙋

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


              🎓

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

              现隶属于: Ansys Inc.



              Ansys CFX

              🙋

              请介绍一下"Ansys CFX"!


              🎓

              由英国AEA Technology公司开发的CFX。2003年被Ansys收购。以耦合求解器为特点。

              现隶属于: Ansys Inc.


              🙋

              现在我终于理解为什么开发历史这么重要了!



              Simcenter STAR-CCM+

              🙋

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


              🎓

              由CD-adapco公司开发。2016年被西门子收购并集成到Simcenter品牌。以多面体网格为特点。

              现隶属于: Siemens Digital Industries Software



              OpenFOAM

              🙋

              OpenFOAM具体是什么意思?


              🎓

              来自伦敦帝国理工学院的开源CFD。OpenCFD Ltd(ESI集团子公司)和The OpenFOAM Foundation并行开发。

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


              🙋

              啊,我明白了! 开发模式是这样的呀。


              功能比较矩阵

              🙋

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


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

              转换时的风险

              🙋

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


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

              • 🙋

                啊,我明白了! 不同工具间的数据转换就是这样啊。


                许可证类型

                🙋

                听过"许可证类型"这个词,但理解得不透彻……


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

                选择指南

                🙋

                到底选哪个,能教教判断标准吗?


                🎓

                有限体积法基础工具选择时应考虑以下因素:


                🎓
                • 分析规模:对数万~数亿自由度的可扩展性
                • 物理模型:所需本构律·单元类型的支持状况
                • 工作流:与CAD的联动、自动化的便利性
                • 成本:初期投资 + 年度维护 + 教育成本
                • 支持:技术支持质量和响应速度


                • 🙋

                  有限体积法基础的整体情况我现在理解了! 从明天开始就在实务中加以注意。


                  🎓

                  嗯,很好的态度! 实际动手是最好的学习方法。有问题随时来问我。


                  咖啡休息 闲谈话题

                  同样是FVM但结果不一样——商用工具间的"隐藏差异"

                  理论上同样的FVM,Fluent和OpenFOAM的结果却吃不准。为什么?界面通量的补间方法、梯度方案的实现、壁面函数的定式化不完全一样。有个发动机冷却水路的项目中,Fluent和OpenFOAM的压力降预测差15%,闹了一场。最后发现是k-ε模型的壁函数系数定义差异。"换工具答案应该一样"是危险的思想。特别是乱流模型的实现,一定要逐个对照用户手册的习惯。

                  有限体积法基础的先端研究

                  先进课题与研究动向

                  🙋

                  有限体积法基础领域的发展方向是什么?


                  🎓

                  看一下有限体积法基础的最新研究动向和先进手法。


                  🙋

                  明白了。那么有限体积法基础能这样的话,首先就没问题了,对吗?


                  最新数值方法

                  🙋

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



                  🙋

                  呃,光看公式有点懵……这是什么意思?


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


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


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

                    有限体积法基础的故障排除

                    故障排除




                    常见错误及对策

                    🙋

                    老师也曾在有限体积法基础上通宵调试吗?(笑)



                    1. 收敛失败

                    🙋

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


                    🎓

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


                    🎓

                    可能原因:

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

                    🎓

                    对策:

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

                    🙋

                    也就是说,在收敛失败这一步上心,后面就能避免很多麻烦。深刻记住了!



                    2. 非物理结果

                    🧑