Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← 工业软件 / Industrial Software

基础与架构 / Foundations & Architecture

1. 工业软件基础与架构 / Industrial Software Fundamentals and Architecture

2. 工业软件概述 - 认识现代制造业的"大脑" / Industrial Software as the Brain of Modern Manufacturing

3. CAD 计算机辅助设计 - 工业设计的起点 / Computer-Aided Design as the Starting Point of Industrial Design

4. CAE 计算机辅助工程 - 工业仿真的核心 / Computer-Aided Engineering as the Core of Industrial Simulation

5. 前处理与后处理 - CAE 仿真的两端 / Pre-Processing and Post-Processing in CAE Simulation

6. 求解器基础 - CAE 软件的"引擎" / Solvers as the Computational Engine of CAE Software

7. 主流工业软件介绍 - 江湖门派一览 / An Overview of Major Industrial Software Platforms

8. 工业软件文件格式 - 数据流转的"通行证" / Industrial Software File Formats for Data Interoperability

9. 技术栈与开发语言 - 工业软件开发的技术基础 / Technology Stacks and Programming Languages for Industrial Software

10. 软件架构详解 - 工业软件的"骨骼" / Software Architecture as the Skeleton of Industrial Applications

11. CAE 前处理-求解流水线 — 架构设想 / An Architectural Design for a CAE Preprocessing-to-Solver Pipeline

12. 基于 OCC、VTK、Gmsh 与 CalculiX 的前处理到求解闭环程序初步架构设想 / A Preliminary FEA Architecture with OCC, VTK, Gmsh, and CalculiX

本页目录

CAE 前处理-求解流水线 — 架构设想 / An Architectural Design for a CAE Preprocessing-to-Solver Pipeline ​

日期:2026-05-15 标签:#课程项目 #架构 #OCC #VTK #GMSH #CalculiX 前置知识:有限元基础、前处理与后处理、求解器基础


1. 项目目标 ​

实现一个最小可运行的 CAE 仿真流水线:

几何建模 (OCC)
      ↓
几何可视化 (VTK)
      ↓
网格划分 (GMSH API)
      ↓
求解 (CalculiX)
      ↓
结果可视化 (VTK)
1
2
3
4
5
6
7
8
9

2. 整体架构 ​

┌────────────────────────────────────────────────────────────────────────────┐
│                           主程序 (Python / C++)                            │
├────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌─────────┐ │
│  │   几何模块    │ → │   网格模块    │ → │   求解模块    │ → │可视化模块│ │
│  │   (OCC)      │    │  (GMSH)     │    │ (CalculiX)  │    │  (VTK)  │ │
│  │              │    │              │    │              │    │          │ │
│  │  · 建模      │    │  · 网格生成 │    │  · 调用求解器│    │  · 几何  │ │
│  │  · 布尔运算  │    │  · 质量检查 │    │  · 读取结果  │    │  · 网格  │ │
│  │  · STEP导入  │    │  · 格式转换 │    │  · 结果输出  │    │  · 云图  │ │
│  └──────┬───────┘    └──────┬───────┘    └──────┬───────┘    └────┬────┘ │
│         ↓                    ↓                    ↓                    ↓       │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌─────────┐ │
│  │  几何数据    │    │  网格数据    │    │  结果数据    │    │ 图形窗口│ │
│  │  (B-Rep)    │    │   (.msh)    │    │  (.frd)     │    │  截图   │ │
│  └──────────────┘    └──────────────┘    └──────────────┘    └─────────┘ │
│                                                                             │
└────────────────────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

3. 各模块设计 ​

3.1 几何模块 (OCC) ​

输入:  STEP / IGES 文件  或  代码创建几何
处理:  B-Rep 数据结构管理、布尔运算、几何修复
输出:  TopoDS_Shape(几何对象)
1
2
3

核心功能:

  • 导入 STEP / IGES 格式几何
  • 创建基本几何体(长方体、圆柱、球等)
  • 布尔运算(合并、相减、相交)
  • 导出几何供 VTK 显示
  • 导出几何供 GMSH 网格划分

3.2 网格模块 (GMSH) ​

输入:  OCC TopoDS_Shape
处理:  设置网格参数 → 调用 GMSH API 生成网格
输出:  .msh 文件(节点 + 单元)
1
2
3

核心功能:

  • 全局网格尺寸控制(最小/最大单元尺寸)
  • 局部网格加密(关键区域细化)
  • 支持四面体和六面体网格
  • 网格质量检查(长宽比、歪斜度)
  • 导出为 CalculiX 可读的 .inp 文件

网格参数:

┌─────────────────────────────────────────────────────────────────┐
│                     网格控制参数                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  全局控制                                                        │
│  ├── 最小单元尺寸  →  控制整体网格密度                          │
│  └── 最大单元尺寸  →  防止单元过大                              │
│                                                                  │
│  局部控制                                                        │
│  ├── 点控制  →  指定点附近网格加密                             │
│  ├── 线控制  →  边缘处网格细化                                 │
│  └── 面控制  →  曲面精度控制                                    │
│                                                                  │
│  算法选择                                                        │
│  ├── 四面体:Delaunay(自动生成,适合复杂几何)                  │
│  └── 六面体:映射法 / 多块法(精度高,适合规则几何)             │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

3.3 求解模块 (CalculiX) ​

输入:  网格数据 + 材料 + 边界条件
处理:  生成 .inp 文件 → 调用 CalculiX 求解器
输出:  .frd 结果文件(位移、应力、应变)
1
2
3

核心功能:

  • 写入 INP 输入文件(节点、单元、材料、分析步)
  • 材料定义(弹性模量、泊松比、密度)
  • 边界条件设置(固定约束、对称约束、集中载荷、分布载荷)
  • 调用 CalculiX 求解器(ccx)
  • 读取 .frd 结果文件

INP 文件结构:

┌─────────────────────────────────────────────────────────────────┐
│                   CalculiX INP 文件结构                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  *HEADING           ← 文件标题                                   │
│  静态结构分析示例                                               │
│                                                                  │
│  *NODE              ← 节点定义                                   │
│  节点编号, x, y, z                                            │
│                                                                  │
│  *ELEMENT           ← 单元定义(类型:四面体 / 六面体)         │
│  单元编号, 节点列表                                            │
│                                                                  │
│  *MATERIAL          ← 材料定义                                 │
│  *ELASTIC           ← 线弹性(E, ν)                          │
│  *DENSITY           ← 密度                                     │
│                                                                  │
│  *BOUNDARY          ← 边界条件(固定 / 对称 / 销约束)         │
│  *CLOAD / *DLOAD    ← 载荷(集中力 / 分布力)                  │
│                                                                  │
│  *STEP              ← 分析步                                   │
│  *STATIC            ← 静力分析                                 │
│  *OUTPUT            ← 输出控制                                 │
│  *END STEP                                                    │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

3.4 可视化模块 (VTK) ​

输入:  几何数据 / 网格数据 / CalculiX 结果
处理:  VTK 数据结构构建 → 渲染管线
输出:  图形窗口 / 截图 / .vtu 文件
1
2
3

核心功能:

  • 几何显示(线框 / 实体渲染)
  • 网格显示(节点、单元、局部加密效果)
  • 结果云图(应力、应变、位移)
  • 变形叠加显示(将变形后形状叠加在原始形状上)
  • 导出 .vtu 文件(可用 ParaView 打开)

4. 数据流总览 ​

┌──────────────────────────────────────────────────────────────────────────────┐
│                              数据流总览                                      │
├──────────────────────────────────────────────────────────────────────────────┤
│                                                                               │
│  ┌──────────────┐                                                           │
│  │   STEP 文件   │  .stp / .step                                            │
│  └──────┬───────┘                                                           │
│         │  OCC 导入                                                         │
│         ↓                                                                    │
│  ┌──────────────┐    GMSH API    ┌──────────────┐                          │
│  │  OCC 几何    │ ───────────→  │  网格数据    │  .msh                    │
│  │  TopoDS_Shape│                │ 节点 + 单元  │                          │
│  └──────┬───────┘                └──────┬───────┘                          │
│         │                               │                                    │
│         │  VTK 渲染                    │  格式转换                         │
│         ↓                               ↓                                    │
│  ┌──────────────┐               ┌──────────────┐                           │
│  │  几何可视化   │               │ CalculiX     │                           │
│  │  图形窗口    │               │  .inp 输入   │                           │
│  └──────────────┘               └──────┬───────┘                           │
│                                        │                                    │
│                                        │  CalculiX 求解                    │
│                                        ↓                                    │
│                                 ┌──────────────┐                           │
│                                 │ CalculiX     │                           │
│                                 │  .frd 结果   │                           │
│                                 └──────┬───────┘                           │
│                                        │                                    │
│                                        ↓                                    │
│                                 ┌──────────────┐                           │
│                                 │ VTK 结果云图 │                           │
│                                 │ 图形窗口     │                           │
│                                 └──────────────┘                           │
│                                                                               │
└──────────────────────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

5. 工具链汇总 ​

┌────────────────────────────────────────────────────────────────────────────────┐
│                            工具链选型                                          │
├────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  阶段              工具                接口              输出格式                │
│  ──────────────── ──────────────── ──────────────── ────────────────           │
│                                                                                 │
│  几何建模          OpenCASCADE        C++ / Python      TopoDS_Shape           │
│  几何可视化        VTK                C++ / Python      图形窗口                │
│  网格划分          GMSH               C++ / Python / CLI .msh                   │
│  求解器            CalculiX           CLI (ccx)         .frd                   │
│  结果可视化        VTK / ParaView     C++ / Python      .vtu / 图形窗口         │
│                                                                                 │
└────────────────────────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14

6. 选型理由 ​

┌────────────────────────────────────────────────────────────────────────────────┐
│                            技术选型理由                                        │
├────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  OpenCASCADE (OCC)                                                             │
│  ├── 开源免费,学术和教育使用无限制                                            │
│  ├── B-Rep 数据结构完整                                                        │
│  ├── 布尔运算成熟稳定                                                          │
│  └── 原生支持 STEP / IGES 导入                                                │
│                                                                                 │
│  VTK                                                                             │
│  ├── 开源、跨平台                                                              │
│  ├── 与 OCC 和 GMSH 集成良好                                                  │
│  ├── 结果云图、变形显示功能成熟                                                │
│  └── 可导出 .vtu 用 ParaView 进一步分析                                        │
│                                                                                 │
│  GMSH                                                                             │
│  ├── 开源免费,内置 Python API,使用门槛低                                     │
│  ├── 支持 2D / 3D 四面体和六面体网格                                          │
│  ├── 与 OCC 几何无缝衔接                                                      │
│  └── 可通过 API 精确控制网格参数                                              │
│                                                                                 │
│  CalculiX                                                                        │
│  ├── 开源免费,支持线性静力、非线性、模态、热分析                               │
│  ├── 读取 INP 格式,与 GMSH 输出兼容                                          │
│  ├── 输出 .frd 可被 VTK 直接读取                                               │
│  └── 命令行运行,无需 GUI,学习成本低                                          │
│                                                                                 │
└────────────────────────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

7. 集成难点与解决方案 ​

┌────────────────────────────────────────────────────────────────────────────────┐
│                          集成难点与解决方案                                    │
├────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  难点 1:OCC → GMSH 几何传递                                                │
│  ────────────────────────────────────────────────────────────────────────      │
│  问题:GMSH 和 OCC 各自维护独立的几何表示,OCC 的 B-Rep 几何无法直接传给       │
│        GMSH,需要通过中间格式中转。                                           │
│  解决:                                                                         │
│  ├── 方案 A:STEP 中间文件(通用但有精度损失)                                │
│  │         OCC 导出 .step → GMSH 读取 .step                                 │
│  ├── 方案 B:OCC → GMSH OCC 插件(GMSH 内置,质量保留好)                   │
│  │         gmsh::occ::importShapes() 直接读取 OCC 几何                      │
│  └── 推荐:方案 B,通过 GMSH 的内置 OCC 模块直接操作几何,避免精度损失        │
│                                                                                 │
│  难点 2:GMSH → CalculiX 格式转换                                           │
│  ────────────────────────────────────────────────────────────────────────      │
│  问题:GMSH 输出 .msh,CalculiX 读取 .inp,两者格式不同。                     │
│  解决:                                                                         │
│  ├── 方案 A:GMSH 直接导出 INP 格式                                          │
│  │         gmsh::write("model.inp")  →  需手动补充材料/边界条件             │
│  ├── 方案 B:GMSH 输出 .msh,自行写脚本转换为 .inp(灵活但工作量大)         │
│  └── 推荐:方案 A,GMSH 原生支持 INP 导出,只需补充材料卡片和边界条件         │
│                                                                                 │
│  难点 3:CalculiX → VTK 结果读取                                             │
│  ────────────────────────────────────────────────────────────────────────      │
│  问题:CalculiX 输出 .frd(文本格式),VTK 原生不支持直接读取。               │
│  解决:                                                                         │
│  ├── 方案 A:自行解析 .frd 文件,手动构建 VTK 数据结构                        │
│  │         (工程量中等,结果数据字段需要逐一对应)                           │
│  ├── 方案 B:ccx 输出 .vtu(需 GMSH 后处理管道,工作流复杂)                 │
│  └── 推荐:方案 A,.frd 格式简单,节点结果 + 单元结果可按行解析,代码量可控    │
│                                                                                 │
│  难点 4:多语言 / 多库环境整合                                               │
│  ────────────────────────────────────────────────────────────────────────      │
│  问题:OCC、VTK、GMSH 均为 C++ 库,编译依赖复杂,版本冲突风险高。             │
│  解决:                                                                         │
│  ├── 方案 A:纯 C++ 项目(性能最优,但 CMake 编译配置复杂)                   │
│  ├── 方案 B:Python 主程序(使用 OCC、gmsh、vtk 的 Python 绑定)             │
│  │         安装:pip install oce gmsh pyvista                                   │
│  │         优势:语法简洁、调试方便、模块解耦容易                             │
│  └── 推荐:方案 B,适合课程项目开发周期短的场景,性能瓶颈暂不突出              │
│                                                                                 │
│  难点 5:CAD 几何质量(课程项目高频踩坑)                                     │
│  ────────────────────────────────────────────────────────────────────────      │
│  问题:从 CAD 导入的几何常有破面、裂缝、重叠面,导致网格生成失败。             │
│  解决:                                                                         │
│  ├── OCC 几何诊断:BRepAlgoAPI::ShapeAnalysis::CheckSolid()                  │
│  ├── OCC 几何修复:BRepBuilderAPI_MakeSolid + BRepTools::SameParameter()     │
│  └── GMSH 兜底:启用几何修复选项 gmsh::option::setNumber("Geometry.Tolerance", 1e-3) │
│                                                                                 │
└────────────────────────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

8. 集成接口汇总 ​

┌────────────────────────────────────────────────────────────────────────────────┐
│                            接口对接矩阵                                         │
├────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  环节           接口方式           关键问题              推荐方案              │
│  ────────────── ──────────────── ──────────────────── ──────────────────       │
│                                                                                 │
│  OCC → GMSH     GMSH OCC 模块     几何精度损失          occ::importShapes()   │
│  GMSH → CalculiX  INP 文件写入   字段映射完整性        write() + 手动补卡  │
│  CalculiX → VTK  .frd 解析      行格式解析             字符串解析 + VTK API │
│  OCC → VTK      STEP 中转 / BREP 拓扑丢失              BREP → Poly 数据      │
│                                                                                 │
└────────────────────────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13

9. 局限性说明 ​

本架构作为课程项目基线,以下内容属于进阶扩展方向:

┌────────────────────────────────────────────────────────────────────────────────┐
│                         超出本期范围                                          │
├────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  · 复杂边界条件(接触分析、螺栓预紧)                                          │
│  · 多物理场耦合(热-结构耦合、流-固耦合)                                      │
│  · 网格自适应加密                                                              │
│  · 分布式并行计算                                                              │
│  · CAD 几何清理(破面修复、特征简化)                                          │
│  · 拓扑优化                                                                    │
│                                                                                 │
└────────────────────────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12

10. 快速参考 ​

┌────────────────────────────────────────────────────────────────────────────────┐
│                           快速参考卡片                                         │
├────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  OCC   负责:几何建模 + 布尔运算 + 格式导入          关键词:B-Rep、STEP         │
│  GMSH  负责:网格生成 + 质量检查 + 格式导出        关键词:.msh、四面体        │
│  VTK   负责:几何显示 + 网格显示 + 结果云图        关键词:渲染、云图          │
│  CCX   负责:结构 / 热求解                         关键词:.inp、.frd         │
│                                                                                 │
│  数据链路:                                                                     │
│  .step → (OCC) → 几何对象 → (GMSH) → .msh → (CCX) → .frd → (VTK) → 云图     │
│                                                                                 │
└────────────────────────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13

11. 参考资料 ​

  • OCC 文档:https://dev.opencascade.org/doc/overview/html/
  • GMSH:https://gmsh.info/
  • CalculiX:http://www.calculix.de/
  • VTK:https://vtk.org/

学习状态:架构设计完成

最后更新于:

Pager
上一篇10. 软件架构详解 - 工业软件的"骨骼" / Software Architecture as the Skeleton of Industrial Applications
下一篇12. 基于 OCC、VTK、Gmsh 与 CalculiX 的前处理到求解闭环程序初步架构设想 / A Preliminary FEA Architecture with OCC, VTK, Gmsh, and CalculiX

持续记录,持续成长

Copyright © Tidenflow