基于FreeCAD的CAE數值仿真平臺開發概述
濟南友泉軟體有限公司
FreeCAD是一套基于OCC、OIV、Qt的開源CAX軟體開發框架,采用了檔案-視圖架構,同時提供了基于Workbench的插件式開發模式,可以非常方便地用于訂制CAE軟體,
- FreeCAD代碼架構
FreeCAD核心采用C++撰寫,使用OpenCASCADE生成幾何造型,利用Open Inventor進行圖形影像渲染,此外,FreeCAD提供了PyCXX擴展的Python介面,
2. FreeCAD主要使用功能模塊
- Base模塊
實作型別系統、物件持久化、日志輸出、PyCXX擴展Python模塊等功能
- App模塊
實作基于檔案物件的資料模型、屬性系統、事務操作、檔案操作(新建、打開、保存、關閉、增加物件、查找物件、洗掉物件)等功能,
- Gui模塊
實作主視窗定義、基于Workbench的開發模式、資料渲染顯示等功能,
- Part模塊
IGES、STEP等主流幾何檔案匯入;基本物體創建;倒角、布爾等操作,
- Mesh、MeshPart模塊
使用Salome SMESH、NetGen等進行網格劃分,
- FEM模塊
設置初邊值條件、求解器配置等用于CalculiX 求解,同時提供了簡單的結果后處理功能等,
3. FreeCAD的優缺點分析
優勢:
- 完全引數化建模
- 基于Workbench的開發模式,開發效率高,擴展性好
- 豐富的幾何檔案介面
- 集成式的幾何約束求解器
不足:
- 代碼量較大,涉及的開發技術較多,文檔資料比較少,開發門檻高
- 渲染路徑較長,資料存盤冗余大
- 大規模場景效率比較低
4.CAE仿真平臺開發思路
以FEM/CFD模塊作為基礎,借助于Part、Mesh模塊現有的功能,完成程式核心功能的實作;在FemGui、PartGui、MeshGui基礎之上,設計統一的Workbench以實作(物體、網格、結果)渲染與界面互動功能,
針對具體的應用需求(主要是幾何造型生成),需要在OCC基礎之上開發滿足需求的功能,并將其嵌入到FreeCAD框架中,
- 幾何生成
以Part::Feature及其子類為基礎,開發滿足需求的核心幾何功能(幾何造型與約束),同時提供PyCXX撰寫的Python擴展,依托ViewProviderPart、ViewProviderMesh、ViewProviderPostObject等代碼實作物件顯示與互動功能,基于FreeCAD的GUI Workbench, 定制軟體界面,
- 網格劃分
MeshPart模塊支持Salome SMESH、NetGen等網格生成工具,Mesh模塊提供了網格存盤的資料結構以及相關操作,MeshGui模塊的Workbench中定義了網格劃分的界面,其內部則是通過呼叫MeshPart模塊的Python介面來生成網格,
FreeCAD Mesh模塊并沒有限制網格生成工具的使用,為了完成軟體的集成(實際上主要是為了使用FreeCAD較大的幾何建模功能),借助于Mesh/MeshGui的資料存盤與顯示,需要在新的Workbench中嵌入較為成熟的網格生成工具(Gmsh、cfMesh)等,在MeshPart中,修改Mesher::createMesh()函式,通過引入其他網格劃分代碼來增加新的網格劃分功能,
Mesh::MeshObject* Mesher::createMesh() const;
開發要點:FreeCAD網格劃分功能較弱,需要利用第三方的網格劃分工具生成Mesh模塊的資料結構,然后進行網格顯示,
- 求解器
在Fem模塊中,提供了SolverObject物件,用于生成不同求解器的配置,指定作業目錄之后,會根據支持的求解器的將組態檔寫入到作業目錄,然后便可以求解計算,
- 后處理
目前在FreeCAD中(截止到0.19-pre版本),沒有一個單獨的一個模塊用于后處理資料顯示,不過,在Fem模塊中實作部分后處理的功能,主要包括云圖顯示、切割、資料拾取等功能,功能相對比較簡單,
筆者在Fem的基礎之上,已經開發完成了CFD模塊功能,主要用于完成CFD后處理功能,可以進行云圖、流線、Glyph、等值線/等值面等功能,后處理功能的開發其實比較簡單,大體思路就是借助于VTK完成后處理資料的生成個,然后將生成的資料匯入到OIV渲染管線,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/169126.html
標籤:其他
下一篇:基于TensorFlow Object Detection API 實作利用雙層模型進行(人體識別+其他)安全帽與口罩的檢測與判定
