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

本页目录

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

1. 文档目的 ​

本文档用于说明一个面向课程作业的基础工业软件项目架构设想。项目目标不是开发完整的工业级 CAE 软件,而是完成一个最基本的闭环程序,实现从前处理、网格划分到求解与结果显示的完整流程。

系统总体上采用以下技术路线:

  • 使用 OCC 完成几何模型导入与基础前处理
  • 使用 VTK 完成模型、网格与结果显示
  • 使用 Gmsh 完成网格划分
  • 使用 CalculiX 完成有限元求解

本方案强调的是“宏观上的初步架构设想”,重点说明系统由哪些部分组成、这些部分之间如何协同,以及项目实施时可能遇到的主要问题。


2. 项目目标 ​

本项目拟实现一个最基本的有限元分析闭环程序,完成如下流程:

  1. 导入一个简单三维模型
  2. 在程序中显示模型
  3. 对模型进行网格划分
  4. 设置材料、约束和载荷
  5. 调用 CalculiX 进行求解
  6. 读取并显示求解结果

从课程作业角度看,重点不在于支持非常复杂的分析功能,而在于:

  • 软件流程完整
  • 模块划分清楚
  • 技术路线明确
  • 能够形成一个可运行、可展示的基础原型

3. 总体思路 ​

整个系统可以理解为一个由四个核心环节组成的流程:

  • 前处理
  • 网格划分
  • 求解
  • 结果显示

其中:

  • 前处理负责模型导入、模型显示以及分析准备
  • 网格划分负责把连续几何模型离散成计算模型
  • 求解负责根据材料和边界条件完成数值计算
  • 结果显示负责把位移、应力等结果重新展示出来

这四个环节首尾相连,就构成了一个最基本的分析闭环。


4. 总体流程图 ​

下面给出项目的总体流程图,用来说明整个程序的工作主线。

科研风格软件架构图

mermaid
flowchart LR
    A["几何模型导入\nOCC"] --> B["前处理与模型显示\nOCC + VTK"]
    B --> C["网格划分\nGmsh"]
    C --> D["设置材料与边界条件\n程序界面"]
    D --> E["求解计算\nCalculiX"]
    E --> F["结果读取与显示\nVTK"]
1
2
3
4
5
6

这张图体现的是最核心的课程主线,也最适合在汇报时首先展示。


5. 系统模块架构设想 ​

从宏观角度看,整个系统可以划分为四个主要模块。

5.1 模型与前处理模块 ​

该模块主要负责:

  • 导入三维模型
  • 管理模型数据
  • 提供基础显示
  • 为后续网格划分和边界条件设置做准备

这一部分主要依赖 OCC 和 VTK。

其中:

  • OCC 主要负责几何模型的导入、管理和基础处理
  • VTK 主要负责模型在界面中的三维显示

5.2 网格划分模块 ​

该模块主要负责:

  • 接收前处理后的模型
  • 进行网格划分
  • 生成后续求解所需的离散模型

这一部分主要依赖 Gmsh。

其中 Gmsh 负责将几何模型离散成后续计算所需的网格模型。

5.3 求解模块 ​

该模块主要负责:

  • 接收网格、材料参数和边界条件
  • 生成求解输入
  • 调用 CalculiX 完成计算

这一部分主要依赖 CalculiX。

其中 CalculiX 作为求解核心,负责完成有限元计算。

5.4 结果显示模块 ​

该模块主要负责:

  • 读取求解结果
  • 显示位移、应力等分析结果
  • 为用户提供直观的可视化展示

这一部分主要依赖 VTK。

其中 VTK 负责把位移、应力等分析结果以图形方式显示出来。


6. 系统模块关系图 ​

下面给出系统模块关系图,用于说明各部分之间的协作关系。

mermaid
flowchart TB
    UI["用户界面"]
    PRE["模型与前处理模块\nOCC + VTK"]
    MESH["网格划分模块\nGmsh"]
    SOLVER["求解模块\nCalculiX"]
    POST["结果显示模块\nVTK"]

    UI --> PRE
    PRE --> MESH
    MESH --> SOLVER
    SOLVER --> POST
    POST --> UI
1
2
3
4
5
6
7
8
9
10
11
12

这张图表达的是一种很清晰的顺序关系:

  • 用户通过界面操作系统
  • 系统依次完成前处理、网格、求解和结果显示
  • 最终结果再返回到界面供用户查看

7. 软件运行方式设想 ​

对于本课程项目,更适合采用“主程序 + 外部求解器”的运行方式,而不是把所有功能完全耦合在一起。

可以简单理解为:

  • 主程序负责界面、模型处理、网格处理和结果显示
  • CalculiX 作为外部求解器,由主程序统一调度

这样设计的优点是:

  • 结构清楚
  • 实现难度较低
  • 更适合课程项目周期
  • 便于后期演示和说明

8. 软件运行架构图 ​

下面这张图说明程序运行时各部分的大致位置与关系。

mermaid
flowchart TB
    A["桌面程序"] --> B["模型导入与前处理\nOCC + VTK"]
    A --> C["网格划分\nGmsh"]
    A --> D["结果显示\nVTK"]
    C --> E["求解输入文件"]
    E --> F["CalculiX 求解器\nCalculiX"]
    F --> G["结果文件"]
    G --> D
1
2
3
4
5
6
7
8

这张图特别适合用来解释“CalculiX 是如何集成到程序中的”:

  • 它不是直接写在界面里
  • 而是作为求解核心,由主程序调用
  • 主程序再把求解结果读回来显示

9. 初步功能分工说明 ​

为了让项目边界清晰,建议将各部分的职责控制在较基础的范围内。

9.1 前处理部分 ​

建议本阶段只完成:

  • 简单模型导入
  • 三维模型显示
  • 基础选择功能
  • 材料与边界条件的简单设置

9.2 网格部分 ​

建议本阶段只完成:

  • 对简单几何模型进行网格划分
  • 支持基础网格尺寸设置
  • 显示网格结果

9.3 求解部分 ​

建议本阶段只完成:

  • 基础静力分析
  • 调用 CalculiX 求解
  • 输出基本结果

9.4 后处理部分 ​

建议本阶段只完成:

  • 位移结果显示
  • 应力结果显示
  • 基本颜色云图显示

这样可以确保项目重点始终放在“闭环打通”上,而不是过早进入复杂功能开发。


10. CalculiX 集成设想 ​

在本项目中,CalculiX 的角色是“求解核心”。程序本身不直接承担复杂数值计算,而是把前面准备好的分析信息交给 CalculiX 完成求解。

可以把这部分理解为三步:

  1. 程序整理分析所需的数据
  2. 程序调用 CalculiX 求解
  3. 程序读取结果并显示

这样的集成方式比较适合课程项目,因为它有以下优点:

  • 不需要改动求解器本身
  • 结构上比较清楚
  • 容易说明系统分工
  • 有利于控制开发难度

11. 集成部分的主要难点 ​

虽然总体思路比较清楚,但在真正实现时,集成部分仍然会遇到几个关键问题。

11.1 前处理信息如何传给求解器 ​

前处理阶段得到的是模型、网格、材料、约束和载荷信息,而 CalculiX 需要的是它能够识别的求解输入。

因此需要解决的问题是:

  • 如何把程序中的分析信息整理成求解器需要的输入形式
  • 如何保证输入信息完整且正确

这一步是前处理和求解之间最关键的连接点。

11.2 模型区域与求解对象之间的对应关系 ​

用户在界面中通常操作的是“模型上的某个面或某个区域”,但求解器真正识别的是已经离散后的计算对象。

这里会涉及一个映射问题:

  • 用户选中的几何区域
  • 网格中的对应区域
  • 求解时真正施加条件的位置

如果这部分关系没有处理清楚,就可能出现“看上去设置成功了,但实际求解位置不对”的问题。

11.3 求解器调用与结果回传 ​

程序在调用 CalculiX 后,还需要正确接收它的输出结果,再交给结果显示模块。

这部分的难点主要在于:

  • 求解是否成功完成
  • 结果文件是否正确生成
  • 结果数据是否能顺利读取
  • 读取后的结果是否能准确显示

因此,求解器的接入并不是简单地“执行一次计算”,而是要把“调用、检查、读取、显示”这一整套流程连接起来。

11.4 项目范围控制 ​

对课程项目而言,最大的风险往往不是某一个技术点本身,而是内容做得太多、太散。

例如如果一开始就尝试支持:

  • 太多种约束和载荷
  • 太复杂的模型
  • 太复杂的分析类型

就容易导致项目迟迟不能形成完整闭环。

因此最合理的策略是:

  • 先完成最基本的静力分析闭环
  • 再考虑增加更多功能

12. 项目实施建议 ​

从实现顺序上看,建议按照下面的节奏推进:

  1. 先完成模型导入与显示
  2. 再完成网格划分与显示
  3. 然后加入材料和边界条件设置
  4. 接着打通 CalculiX 求解流程
  5. 最后完成结果读取与显示

这样的推进方式比较稳妥,原因是每一步都能看到阶段性成果,也便于答辩时进行展示。


13. 结论 ​

总体来看,基于 OCC + VTK + Gmsh + CalculiX 构建一个从前处理到求解的基础闭环程序是可行的,也比较符合课程项目的要求。

该方案的核心优势在于:

  • 技术路线清楚
  • 模块划分明确
  • 系统流程完整
  • 适合做课程展示

从宏观架构上看,这个项目可以概括为:

  • 用 OCC 负责几何模型导入与基础前处理
  • 用 VTK 负责模型、网格和结果的可视化显示
  • 用 Gmsh 负责网格划分
  • 用 CalculiX 负责有限元求解

最终形成一个“前处理 - 网格 - 求解 - 显示”的最基本工业软件分析闭环。

最后更新于:

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

持续记录,持续成长

Copyright © Tidenflow