CAE軟件研發的一些思考(3)--CAE軟件架構設計
2016-09-03 by:CAE仿真在線 來源:互聯網
這里的CAE是廣義的,包含了傳統意義上的
CAD/CFD/EDA/CAE/CAPP等
本文的設計主要覆蓋軟件工程流程中的概要設計和詳細設計。因為客觀原因,CAE軟件與軟件標準開發流程有所不同,設計文檔更傾向基于可快速實現的原型開發。
設計中并不強調某一模塊的功能,也不追求某一方面的性能效率,而是基于軟件工程,著重搭建一個通用性,可靠性,穩定性,擴展性,可測試性,維護性優秀的CAE軟件平臺。基于此平臺,既可以開發大型通用有限元軟件,也可以快速開發出行業CAE軟件產品。
第一部分:模塊劃分
根據功能分以下幾大模塊:
1. 輸入輸出(Input/Output或 I/O)
2. 幾何
3. 有限元模型
4. 后處理器
5. 求解器
6. 圖形
------------------------------------------------------
7. 公共模塊
8. 高性能計算(HPC)
9. 參數優化設計
用例圖(略)
第二部分:詳細設計
1.
輸入輸出模塊(Input/Output)
1.1.文件的讀入與寫出。文件類型包括:
1>. 軟件自定義的工程文件
2>. 標準的CAD文件(DWG/Step/IGS/SAT/X_T/STL/Model/等)
3>.
標準有限元模型文件(bdf/cdb/inp/k/NEU/ModelFlow/I-deas/Ansa/Mar/Admin等)
4>. 標準的行業CAD文件 (制衣CAD格式,PCB板CAD格式等)
需要說明的是第四種文件,該文件的格式數據通常包含了幾何描述信息和屬性,幾何描述信息是指無幾何的拓撲信息(比如一個長方體,幾何描述信息是用初始點坐標和長,寬,高四個參數來表示,而沒有實際的點線面體拓撲信息),讀入該類文件后,需要用CAD內核重新建立模型。
類圖
1.2. 外部接口
通常CAE軟件能夠供其他軟件調用,或者作為其中一個模塊,也能夠實現參數化命令行調用。

2. 幾何模塊(Geometry)
這里的幾何指廣義上的CAD,包含了幾何的創建,編輯,管理等。一般的商業CAE軟件提供了CAD功能,都比較簡單。對于復雜的實際工程,很少在CAE軟件中建模,而是在專業CAD軟件(Catia/UG/ProE/Inventor等)或者行業CAD軟件中建立幾何模型,然后導入到CAE軟件中。所以CAD不是CAE軟件的重點,但是好的CAD模塊能提高CAE仿真的效率,避免外部CAD數據與CAE接口之間的損耗(最典型的就是CAD數據修補)。CAD建模本身也是一項技術含量很高的工作(參數建模,約束建模),而且Catia/UG/ProE/Inventor這些產品在CAD方面已經做的非常好了。CAD與解方程組數值算法一樣,也是基礎性學科領域。
這里不涉及通用的CAD建模,重點在建立CAD模板。所謂的模板是指可反復使用,用戶輸入參數或者導入模板參數文件,即可建立所需的CAD模型,不需要用戶手工去生成。(比如用戶定義了一架飛機模型參數,參數可以保存為文件,生成實體幾何后,修改機翼長度的參數,可再次生成模型而不用做其他修改)。這也是專業CAD軟件的優勢所在。
CAD建模,首先需要內核,目前商業的3D
CAD內核有Parasolid和ACIS,Granite,開源的OCC。國內的CAD軟件長期沒有自主核心技術,在CAD內核方面也鮮有成熟產品。
3. 有限元模型(FE
Model)
3.1. 單元

面向對象方法很適合構造有限元中的單元,ElementType為所有單元的基類。主要方法有:點的集合,材料,分析類型,階次。根據單元的空間維數將單元劃分為
0/1/2/3D單元。如需擴充新單元類型,在相應的單元類型上派生即可。
3.2. CAD和CAD屬性(邊界條件)
這里邊界條件泛指任何在幾何(點,線,面,體)上的屬性(位移/荷載/溫度/吸收邊界/約束。。。)

CYCAD_Controller 負責獲得幾何數據和附加在幾何上的屬性(邊界條件)。CYCAD_Data存儲幾何數據,CYCAD_Attribute存儲與幾何對應的屬性。CYCAD_Engine是CAD內核的接口,通過接口也可以調用自己開發CAD內核。基于該結構,實現了CAD與MESH的解耦,對于已經有的CAD/Mesh接口,能實現最小限度的修改。
3.3. 網格劃分

從名稱可以看出采用了Factory和Facade模式,CYMesh_Facade負責與外部的接口,主要是設置1. CAD數據,2. CAD屬性(材料,荷載,溫度,邊界等),3.網格劃分參數和策略。Controller主要負責Mesh流程,CYMesh_Engine 是執行Mesh引擎的接口,可以根據實際需要選用網格引擎,以上選取了Gmsh,NetGen,Distene,VKI等,在此結構上,開發人員可以方便的對網格劃分流程和網格引擎進行擴展。
3.4.網格屬性
網格劃分完成后,通常做法是把網格數據保存為規定的文件格式以供求解器調用。也有直接在內存中供求解器調用的,雖然提高了效率,但是不利于調試。對于自主開發的求解器,可以把網格導出為Ansys/Nastran等求解器的格式,以方便做Benchmark。
網格的數據包含了如下信息:
1. 節點信息: 索引和坐標(Vertex)
2. 邊信息:索引和點索引(Edge)
3. 面片信息:索引和邊索引(Face)
4. 單元信息:索引和節點索引(Element)
通常以上信息只需得到
點和單元的信息,其它都可以求出。
5. 屬性標簽:加在幾何上的屬性會分配在相應的網格單元或者節點上。(邊界條件/荷載/材料 等)
網格活動圖:

說明:
1. Mesh Data為 網格數據
2. Validate Mesh quality
驗證網格的質量,網格質量指單元的形狀的好壞,有通用的公式計算(比如最大角度,長寬比,Aspect ratio/Skew
等)。網格質量的好壞直接影響到求解精度
3. Output to Mesh file導出為網格文件
4. Run Solver 調用求解器
5. Need refine:根據求解器反饋的結果和預定義的收斂準則,判斷是否需要加密網格
6. Refine Mesh: 加密網格
4.
后處理
后處理是對仿真結果的處理,包括可視化,歸納分析,導出報告,與實驗數據對比等。技術上來講沒有太多瓶頸,主要是數據的組織,再就是大數據顯示的效率。
3.1. 可視化主要包括等值線,云圖,XYplot,動畫等,
3.2. 歸納分析,是指對仿真的原始數據進行加工,得到所需要的參數,比如VonMises應力,S參數等。
3.3.
與實驗數據對比,這個也是以后CAE仿真的一個發展方向:即如何將仿真得出的數據與實驗數據,保證仿真數據具有實際參考價值。
后處理主要用到圖形顯示模塊。
目前市場上比較通用的商業后處理器:Ensight,HyperView,Femap。
5. 求解器
求解器核心是求解偏微分方程(PDE),有限差分/有限元/有限體積等數值方法二三十年前就已經很成熟,功能上沒有太多難點。開發求解器主要在穩定性,擴展性,效率以及定制化等方面還有很多改進余地。開發求解器面臨的主要問題是非技術問題,就跟鍵盤布局一樣,大家用習慣了,再出來新的除非特別優秀或者有足夠多的亮點,否則用戶很難認可。拿求解器Radioss來說,Altair聲稱兼容Nastran,但是行業認可度并不高。另一個例子是Comsol,Comsol在求解器,前后處理上并無太多亮點,但打出了多物理場的旗號,并且在多物理場建模方面也確實提供了一些便利。

求解器涉及的領域有結構,電磁,熱,聲,光,流體等領域,可參考附件。
6. 圖形
該模塊包括以下幾部分:
1. 幾何模型,有限元模型,結果的可視化
2. 幾何有限元模型的圖形化編輯
3 GUI設計
1.
幾何模型,有限元模型,結果的可視化
可視化開發工具首選OpengGL,使用OpenGL需要較深的圖形學功底。目前絕大部分可視化工具都是基于OpengL。也有些公司在OpengGL之上做了封裝,提供了更高層次的調用接口。
開源可視化工具VTK,ParaView。
也有提供商業可視化工具的(VKI/HOOPS/Gravies/),價格不便宜。
2.
幾何/有限元模型的圖形化編輯
涉及到編輯幾何,編輯網格。允許用戶通過鼠標,輸入等方式編輯幾何和網格,支持更復雜的功能(比如裝配體的網格組合)
CAE軟件通常采用卡片式編輯,即在一個ListView中按Index顯示所有內容,提供編輯,刪除,添加等,在新的窗口中實現功能。
3. GUI
圖形化用戶接口開發工具有MFC,QT,WPF等。最近十年QT的發展已有超過MFC的勢頭。作為GUI開發工具,QT具有使用簡單,不依賴平臺,開發資源豐富等特點,可作為開發的首選。
因為GUI涉及到軟件的每個部分,同樣,為了建立兼容的CAE開發平臺,在開發之初最好能確定GUI工具,以后就不再改動。
7. 公共模塊
公共模塊沒有太多核心技術,實現也沒有難點,但在CAE開發中相當重要,尤其到開發的中后期,公共模塊的重要性更加突出。一個好的公共模塊能大大提高開發測試效率。

公共庫主要包括 字符操作,數值計算,基本數據結構,錯誤返回代碼定義,圖形算法,常用算法,矩陣類等。
CYMatrix_Operator是定義的一個中間矩陣類,主要是統一矩陣操作的接口。考慮到求解器用的矩陣庫各不相同,通過此接口可以統一,但性能上會有所降低。
8. HPC(High
performance computation)
參考 FEM之求解器加速(1)---HPC簡介
9.
參數優化設計
參考 FEM之優化算法(1)
總結:
1. 本文只是一個初步的架構設計,其中有很多細節很難用文檔來描述。
2. 設計中參考了如下軟件:
ANSA/Catia/SolidWork/Patran/Nastran/Ansys/Abaqus/HyperWork/HFSS/FEMAP/LMS/ADMIN/Comsol/Cubit/SimLab
寫文本的目的只想說明,不管是開發大型通用CAE軟件,還是行業的CAE軟件,在技術上都是可行的。
還是那句話:在國內開發一個Ansys/Nastran 量級的CAE產品,任重而道遠~
我的更多文章:
- (2014-11-12 11:47:57)
- (2014-11-12 10:39:38)
- (2014-10-30 10:53:00)
- (2014-10-27 21:57:33)
- (2014-10-27 09:16:51)
- (2014-09-29 12:56:12)
- (2014-09-28 07:36:43)
- (2014-09-03 20:33:31)
- (2014-09-03 15:19:08)
- (2014-08-06 21:50:41)
開放分享:優質有限元技術文章,助你自學成才
相關標簽搜索:CAE軟件研發的一些思考(3)--CAE軟件架構設計 有限元技術培訓 有限元仿真理論研究 有限元基礎理論公式 能量守恒質量守恒動量守恒一致性方程 有限體積法 什么是有限元 有限元基礎知識 有限元軟件下載 有限元代做 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓
編輯