CFD的时间积分法

分类:流体解析(CFD) | 综合版 2026-04-06
CAE visualization for time integration cfd theory - technical simulation diagram
CFD的时间积分法

CFD时间积分法的理论基础

概要

🙋

老师!今天讲的是CFD时间积分法对吧?这是什么东西呢?


🎓

隐式/显式时间积分。CFL条件。双时步进法。



🙋

老师的说明容易理解!显式时间积分的疑惑消除了。


控制方程




$$ \text{1st order Euler implicit} $$
$$ \text{2nd order backward: }\frac{3\phi^{n+1}-4\phi^n+\phi^{n-1}}{2\Delta t} $$




离散化方法

🙋

这个方程在计算机上实际怎么解呢?


🎓

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


🎓

进行弱形式(变分形式)转换,利用试函数和形状函数采用Galerkin法进行定式化。单元类型的选择(低阶单元 vs. 高阶单元完全积分 vs. 降阶积分)与解的精度和计算成本的折衷直接相关。




矩阵求解算法

🙋

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


🎓

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



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

也就是说,在有限元法这个地方偷工减料,后来就会吃大亏呀。我会牢记在心!


商业工具中的实现

🙋

那么,进行CFD时间积分法需要什么样的软件呢?


工具名称开发者/现在主要文件格式
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 (UK)开发的CFX。2003年被Ansys收购。耦合型求解器是其特点。

现在归属:Ansys Inc.


🙋

听到这里,终于明白了为什么产品开发史这么重要!



Simcenter STAR-CCM+

🙋

接下来是Simcenter STAR的讲述对吧。什么内容呢?


🎓

由CD-adapco开发。2016年被Siemens收购并整合到Simcenter品牌。多面体网格是其特色。

现在归属:Siemens Digital Industries Software


🙋

哦〜,产品开发的历史讲得太有意思了!请多讲一些。


文件格式与互操作性

🙋

不同软件间交互数据时有什么注意事项吗?


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

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


🙋

原来如此…文件格式看起来简单,其实深度很大呀。


实务注意事项

🙋

有没有教科书上没有的"现场技巧"呢?


🎓

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


🎓
  • 网格相关性验证:至少用3个网格密度等级确认收敛性
  • 边界条件合理性:设置有物理意义的约束条件
  • 结果验证:与理论解、实验数据、已知基准问题的对比


  • 🙋

    哇,CFD时间积分法真的很深奥呀…不过有了老师的讲解,总算理清思路了!


    🎓

    是啊,调子不错!实际动手去尝试是最好的学习方式。有什么不明白的,随时问我。


    Coffee Break 闲聊

    Runge-Kutta法的历史——从1895年到现代的显式多阶方法

    Runge-Kutta法(RK法)是德国数学家Carl Runge和Martin Kutta在1895~1901年开发的常微分方程数值积分方法。初期的"经典RK4法(4阶段4阶)"以每计算步4次函数评估达到4阶精度,因精度和计算成本的平衡,100年后在工程CFD中仍被广泛使用。针对CFD的"低存储多阶RK法"很重要,Williamson(1980)提出的系数集在湍流直接数值计算(DNS)的时间积分中被广泛应用。现代"显式Runge-Kutta法最优设计"领域中,存在优化Courant条件(稳定性)、精度和数据转移量(内存访问)三难鼎立的算法,GPU优化RK方案被纳入高性能CFD代码的实现中。

    CFD时间积分法的数值计算方法

    数值方法的细节

    🙋

    具体用什么算法求解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)| $$

    基础方程式的离散形


    🎓

    用式子表示就是这样。


    $$ \text{1st order Euler implicit} $$
    $$ \text{2nd order backward: }\frac{3\phi^{n+1}-4\phi^n+\phi^{n-1}}{2\Delta t} $$

    🙋

    嗯,光看式子感觉云里雾里…这到底表示什么呢?


    🎓

    连续体的控制方程离散化后,得到以下代数方程组:



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


        🙋

        原来如此…网格细化看起来简单,其实很深啊。


        求解器设置建议

        🙋

        具体用什么算法求解CFD时间积分法呢?


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

        风上差分(Upwind)

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

        中心差分(Central Differencing)

        2阶精度,但Pe数 > 2时出现数值振荡。低Reynolds数扩散型流流动适用。

        TVD方案(MUSCL、QUICK等)

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

        有限体积法 vs 有限元法

        FVM:自然满足保存律。CFD主流。FEM:复杂形状和多物理耦合有利。SPH等无网格法也在发展。

        CFL条件(Courant数)

        显式方法:CFL ≤ 1是稳定条件。隐式方法:CFL > 1也稳定,但精度和迭代次数有影响。LES:推荐CFL ≈ 1。物理意义:1个时间步内信息不超过1个网格。

        残差监控

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

        松弛因子

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

        非定常计算的内部迭代

        每个时间步内迭代至定常解。内部迭代数:5~20次为目安。时间步间残差波动时需要检查时间步长。

        CFD时间积分法的实务应用

        实践指南

        🙋

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


        🎓

        讲解CFD时间积分法的实务分析流程和注意事项。



        分析流程

        🙋

        从第一步开始教我!应该从哪里开始?


        🎓

        1. 预处理(前处理)

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

        🎓

        2. 求解(求解阶段)

        • 求解器设置(求解方法、收敛标准、输出控制)
        • 作业投入和计算执行
        • 收敛监控

        🎓

        3. 后处理(后处理)

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


        网格生成最佳实践

        🙋

        怎样判断网格好不好?



        单元品质指标

        🙋

        请讲一下"单元品质指标"!


        指标理想值允许范围影响
        纵横比1.0< 5.0精度降低
        Jacobian比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 (UK)开发的CFX。2003年被Ansys收购。耦合型求解器是其特点。

            现在归属:Ansys Inc.


            🙋

            老师的说明容易理解!工具名的疑惑消除了。


            常见故障和对策

            🙋

            初学者容易踩的坑有什么?事先想要了解!


            症状原因对策
            计算不收敛网格品质不良、不当的边界条件网格改进、拘束条件检查
            应力异常大应力奇点、网格相关奇点回避、局部网格细分
            位移不现实材料常数误差、单位系混用输入数据确认
            计算时间过长不必要的细分、低效求解网格优化、并行计算

            质量保证检查清单

            🙋

            有没有教科书上没有的"现场技巧"呢?


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


            • 🙋

              哇,CFD时间积分法真的很深奥呀…不过有了老师的讲解,总算理清思路了!


              🎓

              是啊,调子不错!实际动手去尝试是最好的学习方式。有什么不明白的,随时问我。


              Coffee Break 闲聊

              发动机燃烧CFD的时间积分——应对上死点附近的急剧压力变化

              在往复式发动机燃烧CFD分析中,上死点(TDC)附近在数微秒内压力急变的"爆震(Knock)"现象的精确捕捉至关重要。这种急变事件如果用固定的Δt,Δt可能粗跨爆震发生瞬间,导致"爆震强度的低估"——这是爆震评估过度低估的典型原因。对策是"自适应时间步进(Adaptive Time Stepping)",监控局部CFL数和压力变化率并动态控制Δt。CONVERGE CFD(Richards-Strauss公司)配备专为发动机CFD优化的自适应Δt功能,在爆震发生前后自动把Δt缩小100倍以保证分辨率,因此成为行业标准工具。

              CFD时间积分法的软件比较

              商业工具比较

              🙋

              有各种各样的软件对吧?各自的特点告诉我!


              🎓

              讲解支持CFD时间积分法的主要商业CAE工具的功能比较及各产品的历史背景。



              支持工具列表

              🙋

              那么,进行CFD时间积分法需要什么样的软件呢?


              工具名称开发者/现在主要文件格式
              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 (UK)开发的CFX。2003年被Ansys收购。耦合型求解器是其特点。

              现在归属:Ansys Inc.


              🙋

              听到这里,终于明白了为什么产品开发史这么重要!



              Simcenter STAR-CCM+

              🙋

              接下来是Simcenter STAR的讲述对吧。什么内容呢?


              🎓

              由CD-adapco开发。2016年被Siemens收购并整合到Simcenter品牌。多面体网格是其特色。

              现在归属:Siemens Digital Industries Software



              OpenFOAM

              🙋

              OpenFOAM具体是什么?


              🎓

              Imperial College London发起的开源CFD。由OpenCFD Ltd(ESI Group下属)和The OpenFOAM Foundation并行开发。

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


              🙋

              啊,原来如此!开发历史就是这样的结构呀。


              功能比较矩阵

              🙋

              预算和时间都很有限,成本效益最优的是哪个?


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

              转换时的风险

              🙋

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


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

              • 🙋

                啊,原来如此!不同工具间转换是这样的机制呀。


                许可证形式

                🙋

                "许可证形式"听说过,但可能理解得不够…


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

                选择指南

                🙋

                最后到底选哪个,请给我判断标准!


                🎓

                在CFD时间积分法工具的选择中应该考虑以下因素:


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


                • 🙋

                  哇,CFD时间积分法真的很深奥呀…不过有了老师的讲解,总算理清思路了!


                  🎓

                  是啊,调子不错!实际动手去尝试是最好的学习方式。有什么不明白的,随时问我。


                  Coffee Break 闲聊

                  非定常CFD时间步进的工具实现——Fluent PISO vs PIMPLE vs耦合求解器

                  非定常CFD的压力-速度耦合算法各工具实现有差异。OpenFOAM的PIMPLE法是PISO(内部补正循环)和SIMPLE(外部迭代)的统一算法,大时间步长(CFL>1)下也稳定。控制参数nOuterCorr(外部迭代数)和nCorr(内部补正数)的平衡是收敛速度的关键。ANSYS Fluent的Non-Iterative Time Advancement(NITA)通过减少时间步内迭代来加速,但CFL>0.5时精度有下降风险。StarCCM+的Segregated Flow基于SIMPLEC方案实现,Inner Iteration数和Relaxation Factor的设置决定非定常精度。即使是同一CFD问题,各工具推荐设置也不同,因此需要用基准计算(如圆柱后流的Strouhal数)验证各工具的动作。

                  CFD时间积分法的先端研究

                  先端课题和研究动向

                  🙋

                  CFD时间积分法的领域,将来会怎样发展?


                  🎓

                  来看看CFD时间积分法最新的研究动向和先进方法。


                  🙋

                  听到这里,终于明白了为什么时间积分法中的那个要素这么重要!


                  最新数值方法

                  🙋

                  接下来是最新数值方法的讲述对吧。什么内容呢?



                  🙋

                  嗯,光看式子感觉云里雾里…这到底表示什么呢?


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


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


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

                    CFD时间积分法的故障对应

                    故障排除



                    🙋

                    原来如此。那么的时间积分法相关的有做好的话,首先就没问题了对吧?


                    常见错误和对策

                    🙋

                    老师也因为CFD时间积分法通宵调试过吗?(笑)



                    1. 收敛失败

                    🙋

                    收敛失败具体是什么?


                    🎓

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


                    🎓

                    可能原因

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

                    🎓

                    对策

                    • 进行网格品质检查(纵横比、Jacobian)
                    • 确认材料参数的单位系
                    • 将荷载分成多个步长(增加子步数)
                    • 放宽收敛判定标准(但要注意精度)

                    🙋