SALOME Mesh模块

类别:分析 | 集成版 2026-04-06
CAE visualization for salome meshing theory - technical simulation diagram
SALOME Mesh模块

SALOME Mesh模块的理论基础

概述

🧑🎓

老师!今天是讲SALOME Mesh模块的话题吧?是什么东西呢?


🎓

SALOME平台的Mesh模块集成了NETGEN、GMSH、MeshGems等网格引擎。支持GUI操作和Python脚本两种方式生成网格。通过子网格实现局部控制是其特色。


🧑🎓

等等等等,平台的意思是说,这样的情况下也能用吗?


支配方程


🎓

用公式表示的话就是这样。


$$h_{local} = h_{base} \cdot f(\kappa, d)$$

🧑🎓

嗯…仅仅看公式有点想不清楚…这表示什么啊?


🎓

网格质量指标:



$$Q = \frac{V_{elem}}{V_{equilateral}} \in [0, 1]$$
🧑🎓

前辈说过「网格质量指标一定要做好」,现在我理解他的意思了。


理论基础

🧑🎓

「理论基础」这个说法我听过,但可能没有完全理解…


🎓

SALOME Mesh模块的数值求解方法以有限体积法(FVM)或有限元法(FEM)为基础。作为开源软件,最大的优点是可以在源代码级别确认和修改算法细节。商用求解器中被视为黑箱的离散化方案和收敛判定逻辑可以直接验证,特别适合学术研究和方法开发。社区的持续改进和错误修复保证了质量。


🧑🎓

听到这里,我终于理解了为什么模块的数值求解方法很重要!


许可证与使用条件

🧑🎓

接下来是「许可证与使用条件」啊!这是什么内容呢?


🎓

开源许可证(GPL、LGPL、Apache、BSD等)的种类不同,改变代码的公开义务和商业使用的限制也会不同。建议在项目使用前确认许可证条件,进行公司内部法务部门的事前协商。考虑衍生作品的处理方式和双重许可的可能性。


🧑🎓

哦…开源许可证的话题非常有意思!能讲得更详细一点吗。


数值求解的理论基础

🧑🎓

接下来是「数值求解的理论基础」啊!这是什么内容呢?


🎓

讲解开源CAE工具实现的数值求解的理论基础。



有限元法(FEM)的变分原理

🧑🎓

请讲讲「有限元法」!


🎓

结构分析的基础——最小势能原理:



$$ \Pi(\mathbf{u}) = \frac{1}{2} \int_{\Omega} \boldsymbol{\sigma} : \boldsymbol{\varepsilon} \, d\Omega - \int_{\Omega} \mathbf{f} \cdot \mathbf{u} \, d\Omega - \int_{\Gamma_t} \mathbf{t} \cdot \mathbf{u} \, d\Gamma $$


🎓

使$\Pi$停留的位移场$\mathbf{u}$就是平衡解。CalculiX和Code_Aster是基于这个变分原理实现的Galerkin法。




有限体积法(FVM)的守恒律

🧑🎓

请讲讲「有限体积法」!


🎓

OpenFOAM采用的FVM基于对控制体积的积分守恒律:



$$ \frac{\partial}{\partial t} \int_{V} \rho \phi \, dV + \oint_{S} \rho \phi \mathbf{u} \cdot d\mathbf{S} = \oint_{S} \Gamma \nabla \phi \cdot d\mathbf{S} + \int_{V} S_\phi \, dV $$


🎓

将这个积分形式应用到各个控制体积,数值计算面上的流通量就能得到离散方程。



许可证与品质保证

🧑🎓

请讲讲「许可证与品质保证」!


🎓

开源CAE的源代码是公开的,算法可以被第三方验证。相比之下,商用工具无法提供厂商支持,用户社区或论坛的信息共享就显得很重要。


🧑🎓

哦…开源的话题非常有意思!能讲得更详细一点吗。


适用条件与注意事项

🧑🎓

「适用条件与注意事项」这个说法我听过,但可能没有完全理解…


🎓
  • OSS工具的结果必须用已知的基准问题进行验证
  • 注意版本间的不兼容性(特别是OpenFOAM分支间的差异)
  • 建议通过与商用工具的结果比较来确认OSS的精度
  • 文档不足时,可能需要直接参考源代码

  • 🧑🎓

    等等等等,工具的结果是说,这样的情况下也能用吗?


    无量纲参数与支配尺度

    🧑🎓

    「无量纲参数与支配尺度」这个说法我听过,但可能没有完全理解…


    🎓

    理解支配分析对象物理现象的无量纲参数,是选择合适模型和参数设置的基础。


    🎓
    • 佩克莱数 Pe:对流与扩散的相对重要性。Pe >> 1 时对流占优(需要稳定化方法)
    • 雷诺数 Re:惯性力与粘性力的比。流体问题的基本参数
    • 比奥数 Bi:内部传导与表面对流的比。Bi < 0.1 时集中热容量法适用
    • 库朗数 CFL:数值稳定性指标。显式方法中 CFL ≤ 1 是必要条件

    • 🧑🎓

      啊,原来是这样!分析对象的物理现象的意思是这样啊。



      量纲分析的验证

      🧑🎓

      请讲讲「量纲分析的验证」!


      🎓

      对分析结果的数量级估计,可以用基于白金汉П定理的量纲分析来做。用代表长度$L$、代表速度$U$、代表时间$T = L/U$,事前估计各物理量的数量级,确认分析结果的合理性。



      边界条件的分类与数学特征

      🧑🎓

      边界条件嘛,听说错一个的话全部就完了…


      种类数学表示物理意义
      狄利克雷条件$u = u_0$ on $\Gamma_D$变量值的指定固定壁、温度指定
      纽曼条件$\partial u/\partial n = g$ on $\Gamma_N$梯度(流通量)的指定热流束、力
      罗宾条件$\alpha u + \beta \partial u/\partial n = h$变量与梯度的线性结合对流热传达
      周期边界条件$u(x) = u(x+L)$空间周期性单位元胞分析
      🎓

      合适的边界条件选择直接关系到解的唯一性和物理妥当性。不足的边界条件成为不适切问题,过剩的边界条件会产生矛盾。



      🧑🎓

      SALOME Mesh模块的整体印象掌握好了!从明天开始在实务中注意一下。


      🎓

      好啊,你这样的精力不错!动手实际操作就是最好的学习了。如果有不懂的地方随时可以问我啊。


      Coffee Break 闲话

      网格质量的「雅可比矩阵」——理论的根源在这里

      SALOME Mesh的网格质量评估的根源是「雅可比矩阵」这个概念。将四边形或六面体单元变换到正方形或立方体时,该变换的歪曲程度就是雅可比矩阵的指标。当雅可比矩阵变成负值时,FEM计算会立即发散,极端偏小时精度急剧下降。SALOME的品质检查功能显示「长宽比」「歪斜度」「翘曲」等一览表,全部是为了多角度评价这个变换的歪曲。理论懂了之后,出现警告时「应该在哪里修正」就直觉明白了。

      SALOME Mesh模块的数值计算方法

      数值方法详解

      🧑🎓

      具体来说,用什么算法来求解SALOME Mesh模块啊?


      🎓

      SALOME Mesh模块的数值求解和实现要点讲解。


      🧑🎓

      前辈说过「模块的数值求解一定要做好」,现在我理解他的意思了。


      编译与构建

      🧑🎓

      「编译与构建」这个说法我听过,但可能没有完全理解…


      🎓

      从源代码构建需要用CMake或专门的构建系统(OpenFOAM的wmake等)。依存库(MPIPETSc、BLAS/LAPACK等)的版本管理很重要。Linux环境是推荐的,但利用WSL2和Docker容器也能在Windows上构建。


      🧑🎓

      也就是说从源代码编译的地方手抜了的话,之后会吃亏。要记住!


      输入文件的构成

      🧑🎓

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


      🎓

      理解情况文件(dict)和命令文件的格式是实现的第一步。各软件的格式是独有的,从官方教程的模板进行编辑是有效率的。



      脚本自动化

      🧑🎓

      「脚本自动化」这个说法我听过,但可能没有完全理解…


      🎓

      用Python或Bash脚本自动化参数研究是提高生产效率的关键。应该考虑活用PyFoam、cfMesh等包装工具。



      调试与开发环境


      🎓

      用GDB、Valgrind、AddressSanitizer来检测内存泄漏和调试很有效。利用IDE(VSCode、CLion)的远程调试功能,整备有效的开发环境。引入单元测试框架(Google Test、pytest),自动化回归测试。



      求解器设置与算法

      🧑🎓

      想了解计算的裏面发生了什么,能讲得更详细一点吗!



      OpenFOAM 的求解器选择方针

      🧑🎓

      的求解器选择方针是什么意思呢?


      求解器用途方程式
      simpleFoam定常非压缩乱流SIMPLE
      pimpleFoam非定常非压缩PIMPLE (PISO+SIMPLE)
      interFoam二相流(VOF)MULES
      rhoSimpleFoam定常压缩性SIMPLE
      buoyantSimpleFoam自然对流SIMPLE+Boussinesq
      reactingFoam燃烧PIMPLE+化学反应

      CalculiX 的输入文件结构

      🧑🎓

      的输入文件结构是什么意思呢?


      🎓

      ```

      *NODE


      🎓

      1, 0.0, 0.0, 0.0

      ...


      🎓

      *ELEMENT, TYPE=C3D8

      1, 1, 2, 3, 4, 5, 6, 7, 8


      🎓

      ...

      *MATERIAL, NAME=STEEL


      🎓

      *ELASTIC

      210000., 0.3


      🎓

      *DENSITY

      7.85e-9


      🎓

      *STEP

      *STATIC


      🎓

      *BOUNDARY

      1, 1, 3


      🎓

      *CLOAD

      100, 2, 1000.


      🎓

      *END STEP

      ```


      🧑🎓

      啊,原来是这样!的求解器选择方针是这样啊。



      Code_Aster 的命令文件结构

      🧑🎓

      接下来是的命令文件结构的话题。是什么内容呢?


      🎓

      ```

      DEBUT()


      🎓

      MAIL = LIRE_MAILLAGE()

      MODELE = AFFE_MODELE(MAILLAGE=MAIL, ...)


      🎓

      RESULT = MECA_STATIQUE(MODELE=MODELE, ...)

      FIN()


      🎓

      ```




      离散化格式的选择

      🧑🎓

      请讲讲「离散化格式的选择」!


      🎓

      OpenFOAM的离散化格式在fvSchemes文件中设置。对流项的离散化对精度和稳定性影响很大:


      🧑🎓

      听到这里,我终于理解了为什么的求解器选择方针很重要!


      🎓
      • upwind:1阶精度,稳定但数值扩散大
      • linearUpwind:2阶精度,有限制
      • limitedLinear:2阶精度,TVD限制
      • LUST:混合格式,推荐用于LES


      • 误差评估与精度验证

        🧑🎓

        「误差评估与精度验证」这个说法我听过,但可能没有完全理解…



        离散化误差的评估

        🧑🎓

        离散化误差的评估是什么意思呢?


        🎓

        用理查森外推法估计离散化误差:



        $$ f_{\text{exact}} \approx f_h + \frac{f_h - f_{2h}}{r^p - 1} $$


        🎓

        这里$f_h$是网格宽度$h$的解,$r$是网格比,$p$是离散化的阶数。




        GCI(网格收敛指数)

        🧑🎓

        请讲讲「GCI」!


        🎓

        基于ASME V&V 20-2009的网格收敛性的定量评估:


        🧑🎓

        听到这里,我终于理解了为什么离散化误差的评估很重要!


        🎓

        用公式表示的话就是这样。


        $$ GCI_{\text{fine}} = \frac{F_s |\varepsilon|}{r^p - 1} $$

        🧑🎓

        嗯…仅仅看公式有点想不清楚…这表示什么啊?


        🎓

        安全系数$F_s = 1.25$(3水准以上网格比较时)。GCI < 5% 是收敛的目标。


        🧑🎓

        前辈说过「离散化误差的评估一定要做好」,现在我理解他的意思了。



        验证基准问题

        🧑🎓

        请讲讲「验证基准问题」!


        🎓

        为了保证分析结果的信赖性,建议与以下基准问题进行比较:


        分野基准问题参考解
        结构补片测试均匀应力场的再现
        结构Scordelis-Lo屋顶参考变位
        流体盖驱动空腔Ghia et al. (1982)
        1D分析解$T(x) = T_0 + (T_1-T_0)x/L$

        加速方法

        🧑🎓

        老师,请讲讲「加速方法」!


        🎓
        • 多重网格(AMG)前处理:提高大规模问题的可扩展性
        • GPU并行化:矩阵-向量乘积的GPU卸载
        • 领域分割法:MPI并行的分布内存计算
        • 约化基底法(ROM):参数研究的加速


        • 🧑🎓

          SALOME Mesh模块的整体印象掌握好了!从明天开始在实务中注意一下。


          🎓

          好啊,你这样的精力不错!动手实际操作就是最好的学习了。如果有不懂的地方随时可以问我啊。


          Coffee Break 闲话

          SALOME的Netgen和MeshGems——算法选择的幕后

          SALOME中有多个网格生成器作为插件集成,但是默认的Netgen和商用选项的MeshGems的生成算法根本不同。Netgen是基于开源系的递归应用德劳内三角剖分,MeshGems是基于Advancing Front法的最优化例程。实际现场中,很多团队用Netgen快速生成粗网格进行拓扑确认,最终提交的高质量网格用MeshGems来完成细节调整的工作分工很常见。

          SALOME Mesh模块的实务应用

          实践指南

          🧑🎓

          老师,请讲讲「实践指南」!


          🎓

          SALOME Mesh模块在实务中活用的分析步骤和最佳实践讲解。



          分析流程

          🧑🎓

          从最初的一步开始教我!应该从什么开始?


          🎓

          1. 几何准备:CAD数据的导入与清理(推荐STL/STEP格式)

          2. 网格生成:合适的单元类型和大小的选择,边界层网格的设置


          🎓

          3. 物理模型设置:材料特性边界条件初始条件的定义与单位系的确认

          4. 求解器执行:残差收敛的监视与日志文件的进度确认


          🎓

          5. 后处理验证:用ParaView等可视化结果,确认物理妥当性



          最佳实践

          🧑🎓

          老师,请讲讲「最佳实践」!


          🎓
          • 基于官方教程情况的阶段性问题构建,积累知见
          • 通过版本管理(Git)的情况文件变更追踪和再现性确保
          • 网格独立性的确认(3层级以上的网格密度对比验证)
          • 必须进行实验值或分析解的验证(V&V),确保结果的信赖性

          • 🧑🎓

            哦…官方教程情况的话题非常有意思!能讲得更详细一点吗。


            质量保证与文档

            🧑🎓

            在实务中使用SALOME Mesh模块时,最要注意的是什么?


            🎓

            系统地对分析条件、网格设置、物理模型的选择根据、验证结果进行文档化。整备分析操作手册(SOP),推进团队内的知见共享与作业标准化。建立分析结果的评审流程,建立组织性的品质管理体制。



            实务教程

            🧑🎓

            在实务中使用SALOME Mesh模块时,最要注意的是什么?



            OpenFOAM:基本执行步骤

            🧑🎓

            接下来是基本执行步骤的话题。是什么内容呢?


            🎓

            ```

            # 1. 情况目录的创建


            🎓

            mkdir -p myCase/{0,constant,system}


            🎓

            blockMesh # 结构化网格


            🎓

            # 或

            snappyHexMesh -overwrite # 非结构化网格(STL形状输入)


            🎓

            # 3. 网格品质确认

            checkMesh


            🎓

            # 4. 初始边界条件的设置

            # 0/ 目录中配置 U, p, k, omega 等


            🎓

            # 5. 求解器执行

            simpleFoam > log.simpleFoam 2>&1 &


            🎓

            # 6. 残差监视

            foamMonitor -l postProcessing/residuals/0/residuals.dat


            🎓

            paraFoam # 用ParaView可视化


            🎓

            ```


            🧑🎓

            啊,原来是这样!基本执行步骤是这样啊。



            CalculiX:基本执行步骤

            🧑🎓

            接下来是基本执行步骤的话题。是什么内容呢?


            🎓

            ```

            # 1. 网格生成(用Gmsh等创建,.inp格式输出)


            🎓

            gmsh model.geo -3 -format inp -o model.inp



            🎓

            # 2. CalculiX执行

            ccx model


            🎓

            # 3. 结果确认

            cgx model.frd # 用CalculiX GraphiX可视化


            🎓

            ```


            🧑🎓

            听到这里,我终于理解了为什么基本执行步骤很重要!



            网格品质基准

            🧑🎓

            请讲讲「网格品质基准」!


            指标OpenFOAM推荐值CalculiX推荐值
            纵横比< 20< 5
            非直交性< 65° (警告) / < 70° (错误)
            歪斜度< 4< 0.8
            y+ (壁面)30-300 (壁函数) / < 1 (壁分析)

            并行计算的设置

            🧑🎓

            并行计算的设置是什么意思呢?


            🎓

            ```

            # OpenFOAM:领域分割


            🎓

            decomposePar -method scotch

            mpirun -np 8 simpleFoam -parallel > log 2>&1


            🎓

            reconstructPar

            ```



            项目管理与工作流自动化

            🧑🎓

            想粗略掌握全体流程,能分步骤讲讲吗?



            目录结构的推荐

            🧑🎓

            接下来是目录结构的推荐的话题。是什么内容呢?


            🎓

            ```

            project/


            🎓

            ├── cad/ # CAD模型

            ├── mesh/ # 网格文件


            🎓

            ├── setup/ # 分析设置文件

            ├── results/ # 计算结果


            🎓

            │ ├── case01/

            │ ├── case02/


            🎓

            │ └── ...

            ├── postprocess/ # 后处理脚本图像


            🎓

            ├── report/ # 报告

            └── validation/ # 验证数据


            🎓

            ```



            自动化脚本的活用

            🧑🎓

            接下来是自动化脚本的活用的话题。是什么内容呢?


            🎓

            参数研究和网格收敛性确认用Python脚本自动化的话,能大幅提高再现性和效率。


            🧑🎓

            那样的话,如果目录结构的推荐完成的话,就先算及格吧?



            评审检查单

            🧑🎓

            请讲讲「评审检查单」!


            🎓

            1. 输入数据:材料常数的单位系,CAD的尺寸精度,网格品质指标

            2. 边界条件:物理妥当性,过拘束/拘束不足的检查


            🎓

            3. 求解器设置:收敛判定基准,时间分割,输出频度

            4. 结果验证:力的平衡,能量平衡,理论解的比较


            🎓

            5. 敏感性分析网格依赖性,边界条件的影响,材料参数的不确定性


            🧑🎓

            也就是说目录结构的推荐的地方手抜了的话,之后会吃亏。要记住!


            报告编制的要点

            🧑🎓

            老师,请讲讲「报告编制的要点」!


            🎓
            • 以可再现的水准记述分析条件(网格、材料、边界条件
            • 网格收敛性的确认结果的明示
            • 结果的不确定性(网格误差、模型误差、输入数据误差)的定量描述
            • 与已知基准问题或实验数据的比较结果的附加


            • 🧑🎓

              SALOME Mesh模块的整体印象掌握好了!从明天开始在实务中注意一下。


              🎓

              好啊,你这样的精力不错!动手实际操作就是最好的学习了。如果有不懂的地方随时可以问我啊。


              Coffee Break 闲话

              用Python脚本早上自动生成网格的故事

              SALOME有不仅仅是GUI,几乎所有操作都可以用Python脚本自动化的API。实务中常见的是「夜间批处理自动网格化参数不同的几何20种→第二天早上结果文件夹就准备好了」这样的使用方式。脚本可以从GUI上的「Dump Study」命令自动生成,不需要复杂的代码编程。最初只需要用GUI精心设置一次,以后用批处理运行几十种都没问题。

              SALOME Mesh模块的软件比较

              商用工具比较

              🧑🎓

              那么,SALOME Mesh模块的话需要什么软件呢?


              🎓

              SALOME Mesh模块与拥有同等功能的商用工具进行比较。


              🧑🎓

              听到这里,我终于理解了为什么模块与同等功能很重要!


              比较表

              🧑🎓

              预算和时间都很紧张,成本效益最高的是哪个?


              观点开源软件商用求解器
              成本免费(人力成本是必要的)年间数百万日元~
              支持社区/付费支持官方技术支持
              GUI有限(需要外部工具)统合GUI,操作性良好
              验证用户责任进行V&V实施由厂商验证完成
              定制化源代码改变自由API/UDF有限制
              学习成本高(文档分散)低(系统的培训)

              选型指南

              🧑🎓

              到底该选哪一个,能告诉我判断基准吗?


              🎓

              教育研究用途是OSS的最佳选择。量产设计流程则商用工具的支持体制和GUI操作性在生产效率上更有优势。混合运用(OSS进行方法开发验证→商用工具进行量产展开)也是多数企业采用的有效战略。



              迁移策略

              🧑🎓

              「迁移策略」这个说法我听过,但可能没有完全理解…


              🎓

              从商用求解器迁移到OSS或反向迁移时,需要事前制定输入文件格式的转换工具、结果比较验证步骤、教育培训计划。分阶段迁移(先从部分分析开始)是现实的做法。设置OSS和商用并行运用期间,可以降低风险。



              开源工具 vs 商用工具比较

              🧑🎓

              那么,SALOME Mesh模块的话需要什么软件呢?


              项目OpenFOAMAnsys FluentCOMSOL
              初期成本免费年间数百万日元年间数百万日元
              源代码公开(GPL)非公开非公开
              GUI无(基于文本)充实充实
              网格工具snappyHexMeshFluent MeshingCOMSOL内置
              并行可扩展性优秀(数千核)优秀中程度
              支持社区官方支持官方支持
              多物理场有限
              定制化能力◎(C++扩展)△(UDF)△(Java API)
              项目CalculiXAbaqusANSYS Mechanical
              初期成本免费年间数百万日元年间数百万日元
              输入兼容性Abaqus兼容
              非线性分析
              接触分析
              动分析
              GUICGX(有限)CAE(充实)Workbench

              导入判断的基准

              🧑🎓

              导入判断的基准是什么意思呢?


              🎓
              • 预算约束很严格:以OSS为基础,必要时配合商用工具
              • 品质保证必须:活用商用工具的V&V文档认证对应
              • 自定义物理模型:需要源代码改变的话OSS唯一选择
              • 团队教育成本:基于GUI的商用工具习熟快

              • 🧑🎓

                等等等等,初期成本是说,这样的情况下也能用吗?


                许可形式与总拥有成本(TCO)

                🧑🎓

                「许可形式与总拥有成本(TCO)」这个说法我听过,但可能没有完全理解…



                商用工具的成本结构

                🧑🎓

                商用工具的成本结构是什么意思呢?


                项目年额目安备注