数值模拟仿真软件桌面前端技术选型与自主可控方案对比报告
版本:v2.0(选型评审稿)
编制日期:2026-08-16
适用范围:Linux 原生桌面 CAE 前后处理软件(非 Web)
一句话结论: 在“CentOS 7 起步、后续适配银河麒麟、百万级流畅/千万级可开”的约束下,首选 Qt Widgets + VTK + Qwt + HDF5:CentOS 7 以 Qt 5.15.19 + VTK 9.4.x 作为待验证组合,银河麒麟另建 Qt 6 + 对应 VTK 构建线;所有第三方软件都要留存源码、许可证和构建记录。严格国产方案应作为独立路线保留,不能用“国产外壳仍依赖 Qt/VTK”冒充全栈国产。
重要边界: 本报告中的“自主可控率”是项目内部决策模型,不是测评机构结果。当前尚未取得客户或测评方的正式评分表,任何方案均不能据此承诺“必然过审”。正式投标前必须让评审方书面确认:国产框架是只看直接依赖,还是穿透到底层 Qt、VTK、Mesa、GCC、HDF5。
0. 一页纸结论摘要
0.1 选型结论
| 排名 | 路线 | 定位 | 结论 |
|---|---|---|---|
| 1 | A:Qt Widgets + VTK + Qwt + HDF5 | 成熟宽松口径 | 首选实施。功能完整、技术成熟、维护风险相对最低;Qt 按官方开源许可要求使用,CentOS 7 固定 Qt 5.15.19 源码构建线 |
| 2 | B:wxWidgets + VTK | 去 Qt 备选 | 协议简洁,但 VTK 集成、中文体验和工业界面完善难度较高;作为采购方拒绝 Qt 时的技术预案 |
| 3 | D:FastCAE 精简改造 | 条件式国产底座 | 只有当评审接受“国产上层框架 + 国外开源底层”时才有答辩价值;主仓最新提交停留在 2024-05-16,且依赖面明显超出 V1 |
| 4 | E:DTK/UKUI 混合栈 | 国产桌面风格适配 | DTK 明确映射到 Qt 5/6;UKUI 是桌面环境而非通用工业 GUI 框架,不能独立承载本项目 |
| 5 | C:GTK/gtkmm + VTK | Linux 原生备选 | 许可可接受,但 Dock、属性面板及 VTK 嵌入均缺少 Qt 路线的成熟组合,实施难度无优势 |
| 6 | F:自研 GUI + 自研 OpenGL 管线 | 字面严格国产 | 应用层国产率最高,但仍建立在 Linux、Mesa、GCC 等开源底座上;开发和长期维护范围过大,不建议作为 V1 路线 |
0.2 推荐技术基线
| 层 | V1 推荐 | 关键理由 |
|---|---|---|
| 语言 | C++17 | 兼顾 CentOS 7 冻结线和新版 VTK;先不把 C++20 作为公共基线 |
| GUI | Qt Widgets 5.15.19 开源版 | 2026-05 发布的 Qt 5 最终开源版;适合 CentOS 7 兼容线,Dock/树/表格成熟 |
| 工作台 | QMainWindow + QDockWidget + QTreeView;属性面板自研 | 满足 VS/SolidWorks 范式,同时把高业务价值控件掌握在自己手中 |
| 3D | CentOS 7:VTK 9.4.x;新系统:对应当前稳定版 | VTK 9.5 已不再以 CentOS 7 为最低兼容环境;具体版本须在目标机验证后锁定 |
| 曲线 | Qwt 6.3.0 | Qwt 许可证允许按规定用于闭源产品;避开采用 GPLv3 或商业许可的 Qt Charts |
| 数据 | HDF5 1.14.6 + 自研文件结构 | 保守、成熟、兼容性好;文件结构由项目自行定义并带版本号 |
| 构建 | GCC 8+ / CMake / Ninja,按 OS×CPU 分别构建 | CentOS 7 默认编译器过旧;使用固定工具链和 Linux 基础运行库兼容基线 |
| 软件渲染 | 系统 Mesa 软件驱动,运行时自动识别 | llvmpipe 是使用 CPU 绘图的软件渲染器;飞腾/鲲鹏需实机验证并保留受限模式 |
| 交付 | RPM/DEB + 免管理员权限安装包 + 第三方软件清单 + 源码归档 | 兼顾离线安装、审计、可重复构建和不同国产 OS 包管理体系 |
0.3 许可证与缩写说明
许可证决定“别人的代码能不能放进我们的闭源产品、需要履行什么义务”。它不直接决定软件是不是国产,也不等于软件安全等级。
下表覆盖本项目候选组件直接涉及的许可证,以及评审中常见的对照类型;它不是全部开源许可证目录。
| 名称 | 主要含义 | 对本项目的结论 | 官方说明 |
|---|---|---|---|
| BSD-3-Clause(三条款 BSD 许可) | 很宽松:允许商业使用、修改、闭源发布。需要保留原版权、许可文本和免责声明,不能借原作者名义为产品背书 | VTK、CMake 可采用;仍需记录版本和来源 | 许可证正文(OSI) · VTK · CMake |
| MIT 许可 | 宽松:允许商业使用、修改、合并和闭源发布,发布时保留原版权和许可文本 | Mesa 中许多代码采用此类许可;仍须逐文件、逐软件包核验,不能把整个 Mesa 简化为单一 MIT 许可 | 许可证正文(OSI) · Mesa 许可说明 |
| Apache License 2.0(Apache 许可证第 2 版) | 宽松,并明确授予专利许可;发布修改版时需要保留许可、版权、变更说明及适用的 NOTICE 文件,不授予商标使用权 | LLVM 采用 Apache-2.0 并附带 LLVM 例外;软件渲染链随操作系统逐包核验 | 许可证正文(Apache) · LLVM 许可政策 |
| HDF5 License(HDF5 许可证) | HDF Group 制定的宽松许可证,允许源代码和二进制再发布,但须保留版权、条件和免责声明 | HDF5 可用于闭源产品;归档准确版本、许可证和源码 | 许可证正文(HDF Group) · HDF5 官方说明 |
| LGPLv3(宽松通用公共许可证第 3 版) | 允许闭源程序使用开源库,但用户必须能替换该库;若修改了库本身,修改部分通常也要按 LGPL 提供源码。动态链接最容易满足要求 | Qt 核心模块可按此路线使用:动态链接、附许可证、提供对应 Qt 源码,并允许替换库 | 许可证正文(GNU/FSF) · Qt 官方许可说明 |
| GPLv3(通用公共许可证第 3 版) | 传播要求强:如果把 GPL 代码直接并入或链接到产品,通常会触发整个组合程序按 GPL 提供源码 | 闭源 V1 不直接采用 GPL-only 组件,例如 Qt Charts 开源版和 Gmsh | 许可证正文(GNU/FSF) · Qt Charts · Gmsh |
| GPL + GCC Runtime Library Exception | GCC 编译器本身是 GPL,但带有“运行库例外”:正常使用 GCC 编译自己的程序,不会仅因此要求自己的程序按 GPL 开源 | GCC 工具链可采用;锁定版本并保留许可声明,发布前复核实际运行库 | 例外条款(GNU/FSF) · GCC 运行库说明 |
| MPL-2.0(Mozilla 公共许可证第 2 版) | 以文件为边界:修改过的 MPL 文件通常要继续按 MPL 提供源码,但可与闭源自研文件组合发布 | 当前 V1 核心栈没有必须采用的 MPL 组件;如后续引入,隔离第三方文件并保存修改记录 | 许可证正文(Mozilla) |
| wxWindows Library Licence(wxWidgets 库许可证) | 以 LGPL 为基础并增加例外,允许按规定链接后以自有条款发布应用程序 | wxWidgets 路线可用于闭源产品;仍需保留许可证并核验实际使用版本 | 许可证正文与官方说明 |
| Qwt 例外许可 | Qwt 在 LGPL 基础上增加额外例外,允许应用按规定链接而不要求公开应用源码 | 可用于闭源 XY 曲线窗口,仍要标明使用 Qwt | Qwt License 1.0 正文 |
“第三方软件清单”不是许可证,而是记录产品所用外部软件名称、版本、来源、许可证和处理方式的审计材料。
以上是工程选型解释,不代替正式法律意见。最终发布前仍需按实际使用模块和链接方式复核。
0.4 双口径结果
| 路线 | 宽松自主可控分 | 严格国产来源分 | 严格门槛 | 工程综合分 | 建议 |
|---|---|---|---|---|---|
| A Qt+VTK | 83 | 38 | 不通过 | 90 | 首选 |
| B wxWidgets+VTK | 82 | 36 | 不通过 | 80 | 去 Qt 备选 |
| C GTK/gtkmm+VTK | 81 | 34 | 不通过 | 76 | 不推荐 |
| D FastCAE 精简改造 | 72 | 52 | 需评审确认 | 77 | 条件式备选 |
| E DTK/UKUI+VTK | 77 | 54 | 需评审确认 | 68 | 仅做外观/适配层 |
| F 全自研 | 90 | 85 | 应用层可通过;全栈仍非 100% 国产 | 56 | 长期专项,不进入 V1 |
分数是基于第 5 章公开公式得到的内部评估值。严格分低不代表软件不安全,也不代表无法进入信创市场;它只表示在“穿透审查原始权利主体”的定义下,国外开源底层不会被算作国产。
0.5 立即决策
- 立项采用方案 A,V1 统一使用 C++17。
- CentOS 7 以 Qt 5.15.19 + VTK 9.4.x 作为候选组合,目标机验证通过后再定版;银河麒麟版本明确后另建 Qt 6 + 对应 VTK 构建线。
- 必须取得一台海光 x86-64 和一台飞腾/鲲鹏 aarch64 实机;没有实机,不宣称已适配。
- FastCAE 只做代码和架构审计,不作为 V1 运行时底座;若招标明确要求国产 CAE 底座,再启动精简改造评估。
- 将“框架国产”与“源码可控”分别作答,不用一个模糊百分比掩盖底层依赖。
1. 需求边界与验收基线
1.1 产品边界
- Linux 原生桌面应用,非 Web。
- 交互形态:菜单/工具栏、特征树、属性面板、Dock 多窗口、中心三维视口、XY 曲线窗口。
- 只做 CAE 前后处理:打开网格、云图、等值面、切平面、旋转/缩放、拾取/查值、残差曲线。
- 不做 B 样条造型、草图/特征建模、布尔运算、UG/NX 二次开发或完整网格生成器。
- 附件中的参数化造型软件仅作为行业背景和既有 Qt 经验依据;新工作台通过文件/进程接口接入其输出,不合并其几何建模职责。
1.2 运行与数据基线
| 维度 | 已确认要求 | 报告采用的工程解释 |
|---|---|---|
| OS | 当前 CentOS 7;未来银河麒麟 | 每个 OS/架构独立构建,不强求单二进制通吃 |
| CPU | 海光 x86-64;飞腾/鲲鹏 aarch64 | 共享源代码,建立两条构建与测试流水线 |
| GPU | OpenGL 3.3 硬件;CPU 软件渲染降级 | 硬件路径以交互性能为目标;软件路径只保证基本查看 |
| 数据规模 | 百万级流畅、千万级可开 | 采用按需读取、分区、只提取可见表面和分级精度显示 |
| 文件 | HDF5 科学数据文件 | 建立带版本号、单位和网格关系说明的自研文件结构 |
| 求解器 | 独立进程 | HDF5 传大数据;Unix domain socket/状态文件/标准输出传控制与进度 |
| 脚本 | V1 不嵌 CPython | 动作层与 UI 分离;先提供 CLI 批处理和命令清单 |
1.3 建议验收指标
以下是立项指标,不是当前已实测数据:
| 场景 | 建议指标 | 前提 |
|---|---|---|
| 100 万混合单元加载 | 冷启动后 10 秒级 | 绑定样例 HDF5、磁盘与目标整机 |
| 100 万单元旋转 | 硬件路径中位数不低于 25 FPS | 固定窗口、分辨率、着色与测量方法 |
| 1000 万单元 | 能打开、能查看;交互期间降低显示精度 | 不承诺全量透明、全量边线同时流畅 |
| CPU 软件渲染 | 小数据集完成云图、切平面、拾取 | 关闭抗锯齿、高级透明和阴影,限制箭头、边线数量 |
| 内存 | 建立峰值内存预算并记录数据复制次数 | VTK/HDF5 之间优先零拷贝或单拷贝 |
2. “开源 ≠ 自主可控”的判定边界
2.1 官方信息能支持什么
中国信息安全测评中心 2026-06 发布的《安全可靠测评工作指南 V4.0》当前主要面向 CPU、AI 芯片、操作系统、数据库和打印机主控芯片,并强调研发环境、代码数据、知识产权、开源许可履行、供应链持续性和可追溯性。该公开范围不直接等同于本桌面应用的采购评分表。官方指南
因此:
- 不能把本报告分数宣传为国家测评成绩。
- 也不能推导“应用软件使用 Qt 一定可以/一定不可以”。
- 可借鉴其方法:证明境内研发、核心代码、许可履行、供应链和持续维护能力。
- 最终准入仍取决于客户招标文件、兼容认证和测评方对依赖穿透层级的解释。
2.2 两套项目口径
| 口径 | 通过条件 | 适合回答的问题 |
|---|---|---|
| 严格口径 | 核心 GUI 框架、控件层、三维可视化的直接权利主体必须为境内组织或本项目自研;国外开源底层按穿透审查扣分 | “是不是国产框架”“关键代码著作权归谁” |
| 宽松口径 | 无必须采购的国外商业授权;源码可获得、可离线构建、可审计、可合法修改/分发;有内部维护和替换路线 | “断供后能否继续构建”“是否存在许可证锁死” |
严格口径并不自动等于更安全。一个名义国产但停止维护、无法重复构建的项目,实际可控性可能低于一个许可清晰、源码完整且可由内部继续维护的国外开源项目。
2.3 五项判据
- 许可权利:可否闭源分发、静态/动态链接条件、修改公开义务、专利和商标限制。
- 源码与构建:是否能获得完整源码、依赖、构建脚本、补丁和哈希;是否能在断网环境复现。
- 治理归属:主要版权与维护决策由谁掌握,是否存在单一境外商业主体改变节奏的风险。
- 内部接管能力:是否真正具备读懂、修改、测试和维护自有分支的能力;“源码可下载”不等于“能接管”。
- 可替代性:是否存在稳定边界、数据标准和第二实现;替换范围是否可控制。
2.4 Qt 的合规边界
Qt 同时提供商业许可和开源许可。首选方案使用的是开源许可:大多数核心模块允许闭源应用以动态库方式使用,但必须让用户能够替换 Qt 动态库,并提供许可证文本、所用 Qt 库的对应源码或受控获取方式。如果某个模块只有 GPL 许可,则闭源产品不能直接采用,除非另购商业许可。Qt 的大部分版权与控制权仍由芬兰 The Qt Company 掌握。Qt 开源义务 · Qt 许可总览 · Qt 控制主体说明
项目落地要求:
- 只使用已列入第三方软件白名单的 Qt 模块;Widgets/Core/Gui/OpenGL/PrintSupport 等逐项核验。
- 使用动态库,不把 Qt 开源库直接静态合并进闭源主程序。
- “关于”页面显示第三方软件清单;安装介质附 LGPLv3 许可证文本。
- 归档实际使用的 Qt 5.15.19 源码、补丁、构建命令、编译器和校验值;不能只给上游网页链接。
- 允许客户替换兼容 Qt 动态库;最终 EULA 不得禁止为调试库修改而进行的逆向工程。
- 不使用开源侧只有 GPLv3 的 Qt Charts,因为直接链接会给闭源发布带来开源义务;改用 Qwt。Qt Charts 许可
- 许可证判断交由专业法律顾问复核,本报告不构成法律意见。
2.5 行业先例如何正确使用
| 证据 | 能证明 | 不能证明 | 证据等级 |
|---|---|---|---|
| WPS 官方第三方许可清单列出 Qt 5 及金山修改源码;WPS/麒麟官方材料证明产品进入国产 OS/CPU 生态 | 采用 Qt 不必然阻止具体产品完成国产平台适配 | WPS 全部 UI 均基于 Qt;Qt 是国产框架;本项目可继承其认证 | A/B:WPS 法律声明 · WPS Linux · 麒麟政务方案 |
| DTK 官方 CMake 将 DTK5/DTK6 对应到 Qt 主版本 | DTK 是国内维护的 Qt 上层工具包 | 底层已去 Qt;存在完整 CAE 工业控件 | A:DTK CMake |
UKUI 官方仓库列出 qt5-ukui-platformtheme |
UKUI 桌面生态明确使用 Qt 平台主题 | UKUI 是可替代 Qt 的通用 C++ GUI 框架 | A:UKUI 官方仓库 |
| FastCAE 官方仓库是国产 BSD-3 CAE 集成平台,CMake 明确依赖 Qt、VTK、OCCT、HDF5、Gmsh 等 | 国产 CAE 底座可以建立在国外开源组件上 | FastCAE 在严格穿透口径下是全国产;其所有依赖都适合闭源直接链接 | A/B:FastCAE Gitee |
答辩时建议使用“公开证据表明存在兼容和国产项目实践”,不要使用“某软件已经过信创,所以同技术栈自动过审”的跳跃推理。
3. GUI 与控件候选矩阵
3.1 GUI 框架
| 候选 | 许可/归属 | Dock/树/属性能力 | VTK 集成 | CentOS 7 / aarch64 | 自主可控判断 | 结论 |
|---|---|---|---|---|---|---|
| Qt Widgets | Qt 官方许可说明:核心多采用 LGPLv3;闭源动态链接仍须履行声明、对应库源码和可替换机制 | QDockWidget、QTreeView、Model/View 完整;属性面板自研 | VTK 官方提供 Qt 集成模块 | CentOS 7 非 Qt 6 官方目标;Qt 5.15.19 源码线可验证;aarch64 需实机 | 宽松通过,严格不通过 | 首选 |
| wxWidgets 3.2 | wxWindows Library Licence 3.1;允许专有二进制 | wxAUI、wxPropertyGrid、DataView 可用 | 无与 Qt 同等级的官方 VTK 小部件,需要自持桥接 | Linux 经 GTK;双架构需验证 | 宽松通过,严格不通过 | 去 Qt 备选 |
| GTK 3/gtkmm | GTK 官方法律与许可说明;采用 LGPL 许可 | 树表可用;标准 Dock/工业属性面板不足 | 当前 VTK 主线无同等级官方 GTK 集成 | Linux 原生,但 GTK4 与老系统冲突 | 宽松通过,严格不通过 | 不推荐 |
| DTK | 国内维护;官方仓库许可证为 LGPLv3,底层仍是 Qt | 桌面风格控件;仍需 Qt Dock/Model/View 或自研 | 仍走 Qt+VTK | 更偏 deepin/UOS;CentOS/麒麟需额外打包 | 直接层国产,穿透后混合 | 只作外观层 |
| UKUI | 麒麟/Ubuntu Kylin 社区 | 是桌面环境及组件集合,不是独立通用 GUI SDK | 仍需 Qt/GTK/VTK | 适合 UKUI 桌面,不等于跨发行版框架 | 不应单独按 GUI 框架计分 | 排除主体方案 |
| FastCAE | 国产平台;官方仓库标明本体采用 BSD-3-Clause | 已有 CAE 主窗口和插件结构 | 内置 VTK 路线 | 官方主仓需自行验证现代平台 | 顶层国产,底层混合 | 条件式精简改造 |
| 自研 | 自有版权 | 全部自建 | 自研上下文/事件桥 | 每个平台都要补适配 | 应用层严格口径最高 | 基础设施范围过大,不作为 V1 路线 |
wxWidgets 的官方许可允许基于库生成的二进制按自己的条款分发;Qt 路线的合规义务更多,但工程生态明显更成熟。wxWidgets 许可
3.2 Dock、树、属性与图表
| 子系统 | 首选 | 备选 | 不采用/原因 |
|---|---|---|---|
| Dock | QMainWindow + QDockWidget + saveState/restoreState |
后期单独评估高级 Dock 库 | V1 不为 VS 式动画和复杂拖拽引入额外许可证 |
| 特征树 | QTreeView + 自研 QAbstractItemModel | — | 不把业务对象直接绑到控件节点 |
| 属性面板 | 自研 PropertyModel + Delegate + EditorFactory | 参考 QtPropertyBrowser 思路 | 这是自主可控得分点;不引入停更的完整第三方属性库 |
| 表格 | QTableView + 自研模型 | — | 大数据不使用逐单元格 QWidget |
| XY 曲线 | Qwt 6.3.0 | VTK Charts;极简需求可 QPainter 自绘 | Qt Charts 官方许可为 GPLv3 或商业许可;QCustomPlot 也需单独核验许可 |
| 色标/Colormap | VTK LookupTable + 自研编辑器 | — | 业务预设、单位和区间逻辑归自研 |
Qwt 的许可证允许应用按规定链接而不要求公开应用源码,但仍需在产品中标明使用了 Qwt。Qwt 许可
3.3 属性面板自研边界
自研的是业务控件,不是重新造 GUI 框架。建议结构:
PropertyDefinition:ID、名称、类型、单位、范围、枚举、只读条件、校验器。PropertyModel:与业务对象和 Undo/Redo 交互,不依赖具体编辑器。EditorFactory:布尔、整数、浮点、枚举、颜色、文件、向量等编辑器。PropertyDelegate:只管理视图编辑生命周期。Command/Action:所有修改进入命令层,GUI、CLI 和未来 Python 共用。- 复杂材料、边界条件作为独立编辑页,不把所有表单都塞进属性网格。
4. 三维渲染方案对比
| 维度 | VTK 全管线 | 自研 OpenGL 3.3 | 混合/渐进替换 |
|---|---|---|---|
| V1 功能 | 等值面、切平面、拾取、云图、分级精度显示均有算法与数据结构 | 所有算法、数据结构、拾取和图例都要实现 | V1 仍以 VTK 为主 |
| 性能 | 经过大量科学可视化场景验证,可进一步启用并行过滤器 | 上限高,但前期很难超过成熟 VTK | 可把特定热点替换为自研 mapper/filter |
| 软件渲染 | 依赖 Mesa/llvmpipe;可通过质量配置降级 | 同样依赖 Mesa/llvmpipe,除非连光栅器也自研 | 同左 |
| 许可 | VTK 官方许可:BSD-3-Clause | 自有代码;Mesa 官方许可说明显示其包含多种许可证 | 取决于保留的组件 |
| 严格国产 | 不通过 | 应用渲染层可通过 | 部分通过 |
| 建议 | V1 首选 | 严格专项或长期替换 | 产品成熟后按性能热点推进 |
VTK 官方将其定位为跨平台科学可视化、3D 图形和图像处理工具包,采用宽松的 BSD 风格许可:可以商业使用、修改和闭源发布,但要保留版权、许可文本和免责声明。Qt 支持模块属于 VTK 官方模块。VTK 概览与许可 · VTK Qt 支持模块
4.1 推荐 VTK 数据/渲染路径
- HDF5 Reader 只读取当前工况、字段和时间步需要的数据块。
- 将拓扑和字段转换为
vtkUnstructuredGrid;明确所有权,避免多次深拷贝。 - 表面显示使用 Geometry/Surface Filter,不把全部体单元直接送入边线渲染。
- 云图使用 Mapper + LookupTable;等值面使用 Contour Filter;切平面使用 Cutter/Plane。
- 拾取先走屏幕/包围盒粗选,再用 Cell Locator 精确查值。
- 交互中切换到降采样/低质量 representation,停止交互后恢复目标精度。
- 千万级数据按区域/块维护缓存,并设置可配置的内存高水位。
4.2 硬件与 CPU 软件渲染降级策略
llvmpipe 是 Mesa 提供的 CPU 软件渲染器:没有可用显卡驱动时,可用 CPU 完成基本三维绘制。官方公开目标只列 x86、x86-64 和 ppc64le,未列 aarch64。因此海光 x86-64 可进入实测,飞腾/鲲鹏必须核验目标系统实际提供的软件渲染器,并准备受限模式;不能预先承诺同等功能和性能。Mesa llvmpipe 文档 · Mesa Systems
启动时记录:
GL_VENDOR、GL_RENDERER、GL_VERSION、核心扩展和最大纹理/缓冲限制。- 是否显示
llvmpipe、softpipe等 CPU 软件渲染标识。 - GPU/系统内存、CPU 核数和当前数据规模。
进入软件渲染后,自动关闭抗锯齿、阴影、高级透明、全量边线和大量箭头/符号;限制同时显示区域,必要时只显示外表面与选中区域。若 aarch64 上无法获得满足 OpenGL 3.3 的软件驱动,则进入受限模式并明确提示。禁止把“能启动”写成“千万级可流畅使用”。
5. 六条方案的双口径评分
5.1 评分方法
严格国产来源分(100):自研业务 25、GUI 框架 20、Dock/属性/树控件 10、三维可视化 20、数据/IO 10、工具链 5、国产 OS/CPU/GPU 10。国外开源组件即使许可宽松,也不计为国产来源;国产外壳包装国外底层只获部分分。
宽松自主可控分(100):许可权利 25、源码与离线构建 20、治理分散/可接管 20、替代边界 15、国产平台证据 10、持续维护能力 10。
工程综合分(100):自主可控 35%、功能覆盖 20%、性能 15%、实施复杂度 15%、维护生态 10%、跨平台 5%。
5.2 评分明细
| 方案 | 严格分 | 宽松分 | 工程分 | 关键解释 |
|---|---|---|---|---|
| A Qt+VTK | 38 | 83 | 90 | 直接依赖均为国外开源,但源码、许可、生态和工程成熟度最好 |
| B wxWidgets+VTK | 36 | 82 | 80 | 去掉 Qt 商业治理风险,但 VTK/GUI 集成与中文界面适配更复杂 |
| C GTK/gtkmm+VTK | 34 | 81 | 76 | Linux 原生但工业工作台控件与 C++/VTK 组合不够深 |
| D FastCAE 精简改造 | 52 | 72 | 77 | 国产宽松许可上层加分;依赖链重、当前维护连续性弱、精简与升级复杂 |
| E DTK/UKUI+VTK | 54 | 77 | 68 | 国产直接层加分,但 Qt/VTK 仍在;跨发行版与控件完备性较弱 |
| F 全自研 | 85 | 90 | 56 | 应用层最高,但工具链、Mesa/HDF5 等仍非国产;实现和长期维护范围过大 |
5.3 严格门槛解释
- 如果评审只看直接 GUI 框架权利主体:FastCAE 或 DTK 可被列为“条件式国产框架方案”,但必须公开其 Qt/VTK 传递依赖。
- 如果评审穿透到 GUI 和渲染底层:FastCAE、DTK 和 UKUI 路线都不能去除 Qt/VTK,不通过。
- 如果评审穿透整个工具链和运行时:即便全自研 GUI/渲染,GCC、CMake、Linux、Mesa、LLVM、HDF5 等仍需逐项认定;在现有边界内无法诚实宣称 100% 国产全栈。
项目建议使用“国产自研代码占比”“国产直接依赖占比”“宽松可控分”“严格来源分”四个独立指标,禁止把它们合并成一个没有公式的“国产率”。
6. FastCAE 专项结论
2026-08-16 对 FastCAE 官方 Gitee 主仓进行只读审计,得到:
- FastCAE 官方仓库标明许可证为 BSD-3-Clause;对应义务见 BSD-3-Clause 正文(OSI)。项目版本为 2.5.0。
- 主 CMake 固定 C++11,并默认寻找 Qt 5.14.2。
- 必需依赖包括 VTK、OpenCASCADE、Qwt、HDF5、CGNS、TecIO、QuaZIP、Gmsh 和 Python;显著超出本项目 V1。
- 主仓 HEAD
2ac80e3...的提交时间为 2024-05-16;未发现正式 Git tag。GitHub Linux 仓库也明确说明已迁移到 Gitee且不再更新。FastCAE Gitee · FastCAE GitHub 迁移说明
6.1 两种口径
| 判断 | 结论 |
|---|---|
| 宽松口径 | FastCAE 本体采用 BSD-3-Clause,允许建立自有修改分支;但需要逐一审计传递依赖,尤其不能因为顶层许可宽松就忽略 Gmsh 官方许可说明对闭源集成的限制 |
| 严格口径 | 顶层项目为国产,但 Qt/VTK/OCCT/HDF5/Gmsh 等核心底层不是国产;穿透审查不通过 |
| 工程可行性 | 功能多不等于节省总成本。删除几何、网格生成、Python等模块,升级 Qt/VTK,重做 HDF5 Schema 和国产平台验证都需要投入 |
6.2 如果必须选 FastCAE
只保留必需模块:MainWindow/Plugin 基础、结果显示和少量公共设施;彻底移除 Gmsh、OCCT、TecIO、Python 等 V1 非必要组件;将自动联网下载依赖改为离线依赖仓;补齐测试、第三方软件清单和正式版本标记。先完成“可删除性/可升级性技术验证”,验证通过后再决定是否采用。
本报告最终建议仍是:把 FastCAE 当作国产架构参考和条件式备选,不作为方案 A 的运行时依赖。
7. 推荐架构
┌───────────────────────────────────────────────────────────┐
│ Application Shell:菜单 / 工具栏 / Dock / 布局持久化 │
├───────────────────────────────────────────────────────────┤
│ 自研业务层:Project / Case / Region / Field / Selection │
│ ActionRegistry / Command / Undo / Batch CLI │
├───────────────────┬───────────────────┬───────────────────┤
│ Tree & Property │ 2D Curve Service │ View/Selection │
│ 自研模型与编辑器 │ Qwt Adapter │ VTK Adapter │
├───────────────────┴───────────────────┴───────────────────┤
│ Visualization Core:VTK filters / mapper / LOD / picking │
├───────────────────────────────────────────────────────────┤
│ Data Core:HDF5 Schema / Cache / Unit / Result Repository │
├──────────────────────┬────────────────────────────────────┤
│ Solver Gateway │ Platform Services │
│ process/file/UDS │ path/process/GL probe/package │
├──────────────────────┴────────────────────────────────────┤
│ CentOS 7 / 银河麒麟;x86-64 / aarch64;OpenGL / llvmpipe │
└───────────────────────────────────────────────────────────┘
7.1 不建议做“万能 GUI 抽象层”
Qt 和 wxWidgets 的对象模型、事件、布局、Model/View 与 OpenGL 上下文差异很大。把每个控件抽成统一接口会制造一个新的不成熟 GUI 框架。正确的可替换边界是:
- 业务领域、动作/命令、数据访问、求解器协议完全不依赖 GUI。
- Tree/Property/Curve/3D 各有语义级接口和独立适配器。
- 平台相关路径、进程、窗口上下文和 GPU 探测集中管理。
- UI 组合层允许重写;核心数据与用例不重写。
7.2 HDF5 Schema 建议
/meta/schema_version
/meta/producer
/mesh/points float64[N,3]
/mesh/cells/connectivity int64[M]
/mesh/cells/offsets int64[C+1]
/mesh/cells/types uint8[C]
/mesh/regions/<id>/...
/results/<case>/<step>/point_fields/<name>
/results/<case>/<step>/cell_fields/<name>
/history/residuals/<name>
要求:字段带单位、分量名、位置(node/cell)、时间/工况索引;大数组 chunked;Schema 有主版本和兼容迁移器;Reader 独立于 GUI/VTK,转换层负责构造 VTK 对象。
7.3 求解器集成
- V1 用
job.json/清单描述输入、输出、工作目录和资源限制。 - 大结果只经 HDF5 文件交换;进度、日志和取消使用本地进程间通信或子进程信号。
- 前端不得假定求解器同进程,崩溃后可以恢复项目并重新挂接结果。
- Action 层同时服务菜单、工具栏、CLI,未来 CPython 只绑定 Action/API,不操作 QWidget。
8. 版本、构建与发布策略
8.1 CentOS 7 兼容线
CentOS 官方已于 2024-06-30 结束 CentOS Linux 7 生命周期;这意味着系统基线本身不再获得正常维护。CentOS 官方生命周期
推荐固定:
- Qt 5.15.19 开源源码。Qt Project 于 2026-05-19 发布,属于 Qt 5 最终开源版本。发布公告
- VTK 9.4.x 的锁定补丁版本。9.4.2 构建文档仍兼容较老环境,而 VTK 9.5 发布说明明确不再保留 CentOS 7 的最低依赖构建;因此 9.4.x 更适合作为 CentOS 7 候选,但仍须实机验证。VTK 9.4.2 构建要求 · VTK 9.5 发布说明
- Qwt 6.3.0、HDF5 1.14.6。
- GCC 8 或更高的锁定工具链;以 CentOS 7 自带的 Linux 基础运行库版本作为二进制兼容下限。
- C++17;禁止公共核心无条件使用 C++20 库特性。
不能把“源码可编译”当作既成事实:Qt 6.8 官方支持列表从 RHEL 8 等现代系统起步,Linux 二进制最低基于 glibc 2.28;CentOS 7 不在支持表内。因此方案 A 在立项第 0 阶段必须先完成源码构建与测试。Qt 6.8 支持平台
8.2 银河麒麟与 aarch64
在版本未知前只制定流程,不承诺兼容:
- 确认桌面/服务器版、版本号、X11/Wayland、glibc、GCC、包格式、GPU 驱动。
- 海光 x86-64 与飞腾/鲲鹏 aarch64 各选一台验收整机。
- 共用领域层、动作层、HDF5 Schema 与可视化抽象;新系统优先建立 Qt 6 + 对应 VTK 构建线。
- 同时测试硬件 OpenGL 3.3 和目标系统实际可用的软件驱动;aarch64 不预设 llvmpipe 已可用。
- 获取 OS/CPU 厂商兼容认证需要的真实材料清单。
Qt 6.8 官方已经列出 Linux arm64 参考平台,但国产 CPU/麒麟组合不在其明确测试矩阵中,因此仍属项目实测责任。Qt 6.8 支持平台
8.3 离线与可复现
- 保存源码包、Git commit、补丁、许可证、哈希、构建容器/脚本和编译日志。
- 建立内部只读依赖镜像,不在客户构建时访问 GitHub/Gitee。
- 生成标准格式的第三方软件清单,记录组件名称、版本、来源、许可证和处理方式;Qt 6.8 起官方也提供可直接参考的标准清单。Qt 第三方软件清单说明
- 每个平台生成独立 RPM/DEB 和自包含包;使用 RPATH/qt.conf 控制私有动态库搜索路径。
- 运行包附“第三方软件与源代码获取说明”,并做
ldd/许可证扫描/恶意代码扫描。
9. 风险与对策
| 风险 | 概率/影响 | 对策 | 决策门 |
|---|---|---|---|
| 客户把“国产框架”穿透到 Qt/VTK | 中/高 | 投标前提交依赖树和两套口径,书面确认 | 未确认不得宣称严格通过 |
| Qt 开源许可义务履行不完整 | 中/高 | 动态链接、完整对应源码、替换机制、声明、法律复核 | 发布前许可证审计 |
| CentOS 7 已停止官方维护、工具链老化 | 高/高 | 固定可重复构建的工具链;规划迁移到现代麒麟 | 首轮技术验证必须跑通 |
| 国产 GPU 驱动差异 | 高/高 | 只依赖 GL 3.3 Core;运行时探测;硬/软双配置 | 每台验收整机冒烟 |
| CPU 软件渲染性能不足 | 高/中 | 小数据保证、分级精度显示、关闭昂贵效果;不承诺千万级流畅 | 明确降级验收表 |
| VTK/HDF5 数据多次复制 | 中/高 | 所有权规范、块读取、缓存、表面提取、内存剖析 | 百万/千万样例测量 |
| FastCAE 接管难度被低估 | 高/中 | 做精简与升级技术验证;列出可删除依赖和升级补丁 | 验证不通过即退出 |
| “UI 可替换”被过度抽象 | 中/中 | 只抽语义服务,不抽每个 Widget | 架构评审检查依赖方向 |
| AI 生成代码混入未知许可 | 中/高 | 三方白名单、来源记录、扫描和人工复核 | CI 阻断未知许可证 |
| 银河麒麟版本未知 | 高/高 | 把版本/架构/GPU 作为采购前置项 | 未拿到实机不承诺 |
10. 待测评方确认表
在最终方案冻结前,请客户/测评方书面回答:
- “国产框架”是否只检查直接 GUI 框架,还是穿透 Qt/VTK/Mesa/HDF5/GCC?
- 国外组织主导、采用 BSD/MIT/LGPL 等开源许可、可在内部离线维护的组件是否允许?
- Qt 采用 LGPLv3 开源许可并动态链接是否允许;需要提交哪些许可证与源码材料?
- 国产化评价是组件数量、代码行、权重还是关键链路门槛?
- 目标银河麒麟的产品名称、版本、CPU、GPU、桌面环境和包格式是什么?
- 是否要求取得 OS/CPU/GPU 兼容认证证书,还是项目验收测试即可?
- “软件渲染可用”的数据规模、帧率和功能降级接受标准是什么?
- 是否允许同一源码针对不同平台分别构建和签名?
11. 第三方软件与许可证清单
11.1 首选方案第三方软件清单
| 组件 | 建议版本 | 许可证 | 原始治理/地域 | 使用方式 | 状态 | 官方说明 |
|---|---|---|---|---|---|---|
| Qt Core/Gui/Widgets/OpenGL/PrintSupport | 5.15.19 | 各模块分别核验;只采用可按 LGPLv3 动态链接的模块,不采用只有 GPLv3 的模块 | Qt Project / The Qt Company,芬兰 | 动态链接 | 采用,需法律复核 | Qt 官方许可说明 · 开源许可义务 |
| VTK | CentOS 7 候选 9.4.x;新系统经技术验证锁定当前稳定版 | BSD-3-Clause(允许闭源商用,保留声明) | Kitware/社区,美国主导 | 动/静态均可,优先动态 | 采用,分平台锁版 | VTK 官方许可说明 |
| Qwt | 6.3.0 | LGPL2.1 + Qwt 额外例外;允许应用按规定链接而不要求公开应用源码 | 社区 | 动态链接 | 采用 | Qwt License 1.0 |
| HDF5 | 1.14.6 | HDF5 License(宽松) | The HDF Group,美国 | 动态链接 | 采用 | HDF5 许可证正文 |
| Mesa llvmpipe | 随目标 OS;记录准确包版 | 多许可证,核心以 MIT 等为主 | Mesa/LLVM 社区 | 系统运行时 | 采用,逐包审计 | Mesa 许可说明 · LLVM 许可政策 |
| GCC/libstdc++ | 目标工具链锁定版 | GPL + GCC 运行库例外(正常编译不会迫使业务代码开源) | GNU/社区 | 构建与运行时 | 采用 | GCC 运行库许可 · 例外条款 |
| CMake | 锁定版 | BSD-3-Clause(允许闭源商用,保留声明) | Kitware/社区 | 构建工具 | 采用 | CMake 官方许可说明 |
| Qt Charts | — | GPLv3 或商业许可;开源版直接链接通常会要求组合程序按 GPL 提供源码 | Qt | — | 闭源 V1 不采用 | Qt Charts 官方许可说明 |
| Gmsh | — | GPL v2 或更高版本并带链接例外;社区版不能集成进计划分发的闭源软件 | 社区 | — | V1 不引入 | Gmsh 官方许可说明 |
| OpenCASCADE | — | LGPL2.1 + 额外例外 | Open Cascade SAS,法国 | — | 不做几何,V1 不引入 | OCCT 官方许可说明 |
11.2 一手来源
- 安全可靠测评工作指南 V4.0
- Qt 开源 LGPL/GPL 义务
- Qt 6 许可与第三方软件清单说明
- Qt 5.15.19 开源发布公告
- Qt 6.8 支持平台与 glibc 说明
- Qt Widgets / QDockWidget
- BSD-3-Clause 许可证正文(OSI)
- MIT 许可证正文(OSI)
- Apache-2.0 许可证正文(Apache)
- GNU LGPLv3 许可证正文
- GNU GPLv3 许可证正文
- MPL-2.0 许可证正文(Mozilla)
- Qt Charts 许可
- GNU GPL 常见问题
- GCC 运行库许可证与例外
- VTK 官方许可说明
- VTK 9.4.2 构建要求
- VTK 9.5 发布说明(移除 EL7 最低依赖构建)
- VTK Qt 支持模块
- Mesa llvmpipe 官方文档
- Mesa Systems / 软件驱动
- wxWidgets 官方许可
- GTK 官方架构
- Qwt 官方许可
- HDF5 许可证正文
- HDF5 1.14.6 官方发布
- CMake 官方许可说明
- Mesa 官方许可说明
- LLVM 官方许可政策
- Gmsh 官方许可说明
- Open CASCADE Technology 官方许可说明
- DTK 官方仓库
- UKUI 官方仓库
- FastCAE 官方 Gitee 仓库
- FastCAE GitHub 迁移说明
- WPS 第三方软件法律声明
- WPS Linux 官方页
- WPS 企业版兼容环境
- 麒麟政务解决方案
- CentOS Linux 7 生命周期
11.3 证据等级
- A:许可证原文、官方标准/指南、官方源代码或构建文件直接明示。
- B:官方文档能支持相邻事实,但需要有限工程推断。
- C:基于公开资料的项目判断,必须经目标实机或测评方确认。
本报告没有直接引用附件中的单位、人员、叶片模型图片和项目细节。附件只用于确认团队已有 C++/Qt 经验,以及本项目应与上游参数化造型职责解耦。
最终建议
现在选 A,架构上保留 B,审计 D,明确拒绝用 E 冒充全栈严格国产;F 只作为预算充足后的长期专项。
方案 A 的真正“自主可控”不是一句“Qt 是开源的”,而是:实际使用版本与补丁全部归档、构建可在断网环境复现、许可证义务可审计、业务和数据模型不被 GUI 锁死、目标国产整机有实测记录,并且团队有能力维护自己的长期分支。