基于FreeCAD的CAE数值仿真平台开发概述

 

基于FreeCAD的CAE数值仿真平台开发概述

 济南友泉软件有限公司

FreeCAD是一套基于OCC、OIV、Qt的开源CAX软件开发框架,采用了文档-视图架构,同时提供了基于Workbench的插件式开发模式,可以非常方便地用于订制CAE软件。

图片[1]-基于FreeCAD的CAE数值仿真平台开发概述-卡核
FreeCAD主界面-FEM模块
  1. FreeCAD代码架构

FreeCAD核心采用C++编写,使用OpenCASCADE生成几何造型,利用Open Inventor进行图形图像渲染,此外,FreeCAD提供了PyCXX扩展的Python接口。

图片[2]-基于FreeCAD的CAE数值仿真平台开发概述-卡核
FreeCAD模块架构

2. FreeCAD主要使用功能模块

  • Base模块

实现类型系统、对象持久化、日志输出、PyCXX扩展Python模块等功能

  • App模块

实现基于文档对象的数据模型、属性系统、事务操作、文档操作(新建、打开、保存、关闭、增加对象、查找对象、删除对象)等功能。

  • Gui模块

实现主窗口定义、基于Workbench的开发模式、数据渲染显示等功能。

  • Part模块

IGES、STEP等主流几何文件导入;基本实体创建;倒角、布尔等操作。

  • Mesh、MeshPart、SMESH模块

使用Salome SMESH、NetGen等进行网格划分。

  • FEM模块

设置初边值条件、求解器配置等用于CalculiX 求解,同时提供了简单的结果后处理功能等。

3. FreeCAD的优缺点分析

优势:

  • 全参数化建模
  • 基于Workbench的开发模式,开发效率高,扩展性好
  • 丰富的几何文件接口
  • 集成式的几何约束求解器

不足:

  • 代码量较大,涉及的开发技术较多,文档资料比较少,开发门槛高
  • 渲染路径较长,数据存储冗余大
  • 大规模场景效率比较低

4.CAE仿真平台开发思路

以FEM/CFD模块作为基础,借助于Part、Mesh模块现有的功能,完成程序核心功能的实现;在FemGui、PartGui、MeshGui基础之上,设计统一的Workbench以实现(实体、网格、结果)渲染与界面交互功能。

针对具体的应用需求(主要是几何造型生成),需要在OCC基础之上开发满足需求的功能,并将其嵌入到FreeCAD框架中。

图片[3]-基于FreeCAD的CAE数值仿真平台开发概述-卡核

开发思路

  • 几何生成

以Part::Feature及其子类为基础,开发满足需求的核心几何功能(几何造型与约束),同时提供PyCXX编写的Python扩展。依托ViewProviderPart、ViewProviderMesh、ViewProviderPostObject等代码实现对象显示与交互功能。基于FreeCAD的GUI Workbench, 定制软件界面。

图片[4]-基于FreeCAD的CAE数值仿真平台开发概述-卡核

几何显示

  • 网格划分

MeshPart模块基于Salome SMesh框架,提供了NetGen等网格生成方法。Mesh模块提供了网格存储的数据结构以及相关操作,MeshGui模块的Workbench中定义了网格划分的界面,其内部则是通过调用MeshPart模块的Python接口来生成网格。

图片[5]-基于FreeCAD的CAE数值仿真平台开发概述-卡核
Mesh

FreeCAD Mesh模块并没有限制网格生成工具的使用,为了完成软件的集成(实际上主要是为了使用FreeCAD较大的几何建模功能),借助于Mesh/MeshGui的数据存储与显示,需要在新的Workbench中嵌入较为成熟的网格生成工具(Gmsh、cfMesh、MeshGems)等。在MeshPart中,修改Mesher::createMesh()函数,通过引入其他网格划分代码来增加新的网格划分功能。

Mesh::MeshObject* Mesher::createMesh() const;

 

开发要点:FreeCAD网格划分功能较弱,需要利用第三方的网格划分工具生成Mesh模块的数据结构,然后进行网格显示。

  • 求解器

在Fem模块中,提供了SolverObject对象,用于生成不同求解器的配置。指定工作目录之后,会根据支持的求解器的将配置文件写入到工作目录,然后便可以求解计算。

图片[6]-基于FreeCAD的CAE数值仿真平台开发概述-卡核
Solver
  • 后处理

目前在FreeCAD中(截止到0.19-pre版本),没有一个单独的一个模块用于后处理数据显示。不过,在Fem模块中实现部分后处理的功能,主要包括云图显示、切割、数据拾取等功能,功能相对比较简单。

笔者在Fem的基础之上,已经开发完成了CFD模块功能,主要用于完成CFD后处理功能。可以进行云图、流线、Glyph、等值线/等值面等功能。后处理功能的开发其实比较简单,大体思路就是借助于VTK完成后处理数据的生成,然后将生成的数据导入到OIV渲染管线。

图片[7]-基于FreeCAD的CAE数值仿真平台开发概述-卡核
Post
 
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容