非結構CFD程式

非結構CFD程式

基於非結構格線,求解具有複雜外形的流動。可以大大減小CFD在格線生成部分花費的工作量。是當前計算流體力學領域蓬勃發展的方向之一。

由於商業軟體基本是不開源的,在進行研究時常常需要自己編寫程式,但是CFD發展至今,體系已經十分複雜,對於初學者來說上手十分困難。因此,有必要在此列出CFD程式編寫的參考方法。

基本介紹

  • 中文名:非結構CFD程式
  • 外文名:unstructured CFD program
非結構CFD程式的求解流程,非結構格線的數據結構,格線檔案包含的內容,UGRID格線檔案格式說明,格線單元幾何量計算,面元面積和中心點,單元體積和中心點,

非結構CFD程式的求解流程

1、讀入格線和計算參數
2、初始化流場
3、求單元通量
4、時間積分,求解下一時刻流場變數。
5、結果輸出

非結構格線的數據結構

格線檔案包含的內容

一個非結構格線檔案通常要包含以下內容:
1、每個節點的編號和坐標
2、每個單元的節點連線關係
3、每個邊界面元的節點連線關係
此外,有時還會包含以下內容:
4、每個單元所在的流體域編號
5、每個邊界面元的邊界名稱
6、每個邊界面元的邊界類型
但通常在計算時,除了以上內容之外,還要知道:
1、每個內部面元的編號和組成內部面元的節點連線關係
2、每個單元幾何量(體積、中心點坐標)
3、每個面元的幾何量(面積、中心點坐標)
因此,在讀入格線檔案之後,還要對其進行處理,得到額外所需的信息

UGRID格線檔案格式說明

ICEM中導出的UGRID格線檔案的格式說明如下:
.dat檔案
1
注釋信息
2
邊界編號和邊界名
..ugrid檔案
1
節點數目
三角形邊界面數目
四邊形邊界面數目
四面體單元數目
四稜錐單元數目
三稜柱單元數目
六面體單元數目
2
節點的坐標
3
三角形邊界面的邊表
四邊形邊界面的邊表
4
三角形邊界面的邊界號
四邊形邊界面的邊界號
5
四面體的邊表(0,1,2,3)
四稜錐的邊表(0,1,2,3,4)
三稜柱的邊表(0,1,2,3,4,5)
六面體的邊表(0,1,2,3,4,5,6,7)
單元的邊表
非結構CFD程式
數據結構
數據結構的差異是結構和非結構格線的根本差別所在。可以說,一旦掌握了非結構格線的數據結構,非結構計算方法也就掌握了一半。一種可行的數據結構為節點,面元,單元組成的層次結構:
節點
節點編號
節點坐標
單元
單元類型
指向節點的指針
單元體積
單元中心坐標
面元
面元類型
指向節點的指針
左右單元號
面元面積
面元中心點坐標
邊界條件
所屬部件
對於上述數據結構,如果用C++語言實現,可定義節點、單元,面元三種類,節點,單元和面元均採用STL(標準模板庫)中的vector類型的數據。(vector類型是一種線性順序存儲表,可以像數組一樣引用,但其具有動態結構,可以方便地隨時增加或者刪除元素。如果程式後續要實現自適應格線等功能,使用vector類型就會十分方便。)
數據結構的生成:
節點和單元的數據結構在讀入時已經生成,只需再生成面元的數據結構即可。可利用STL中的set類型。對所有單元進行循環,依次提取單元的所有面,插入set中,再將set中的數據全部放在vector中,便生成了面元的數據結構。(set類型在插入元素時會根據特定的排序準則自動將元素排序,set中的元素不允許重複,因此十分適合用來生成面元的數據結構。)

格線單元幾何量計算

面元面積和中心點


三角形
面積

中心點
三個點坐標平均
四邊形
面積

中心點
分別求兩個三角形中心,然後面積加權平均

單元體積和中心點

四面體
體積
非結構CFD程式

非結構CFD程式

中心點
四個點坐標平均
四稜錐
體積
分成兩個四面體

中心點
體積加權平均
三稜柱
體積
分成一個四面體和一個四稜錐

中心點
體積加權平均
六面體
體積
分成兩個三稜柱

中心點
體積加權平均

相關詞條

熱門詞條

聯絡我們