fluent入門一般問題(六)

Fluent,并非我原創但是沒找到出處,給大家做個參考。


56  計算流體力學中在設定初始條件和邊界條件的時候總是要先選擇一組湍流參數,并給出其初值。如何選擇并給出這些初值呢?有什么經驗公式或者別的好的辦法嗎?   #73
由于回答之中包含一些參數的計算公式,為了更好地解釋這個問題,請參考附件中的文檔,文檔取自流體中文網翻譯整理的《FLUENT全攻略》,在此表示感謝。
57  討論在數值模擬過程中采用四面體網格計算效果好,還是采用六面體網格更妙呢?   (#70)
在2D中,FLUENT 可以使用三角形和四邊形單元以及它們的混合單元所構成的網格。在3D中,它可以使用四面體,六面體,棱錐,和楔形單元所構成的網格。選擇那種類型的單元取決于你的應用。當選擇網格類型的時候,應當考慮以下問題:
       設置時間(setup time)
       計算成本(computational expense)
       數值耗散(numerical diffusion )

1.設置時間

    在工程實踐中,許多流動問題都涉及到比較復雜的幾何形狀。一般來說,對于這樣的問題,建立結構或多塊(是由四邊形或六面體元素組成的)網格是極其耗費時間的。所以對于復雜幾何形狀的問題,設置網格的時間是使用三角形或四面體單元的非結構網格的主要動機。然而,如果所使用的幾何相對比較簡單,那么使用哪種網格在設置時間方面可能不會有明顯的節省。
    如果你已經有了一個建立好的結構代碼的網格,例如FLUENT 4,很明顯,在FLUENT中使用這個網格比重新再生成一個網格要節省時間。這也許是你在FLUENT 模擬中使用四邊形或六面體單元的一個非常強的動機。注意,對于從其它代碼導入結構網格,包括FLUENT 4,FLUENT 有一個篩選的范圍。

2.計算成本

    當幾何比較復雜或流程的長度尺度的范圍比較大的時候,可以創建是一個三角形/四面體網格,因為它與由四邊形/六面體元素所組成的且與之等價的網格比較起來,單元要少的多。這是因為一個三角形/ 四面體網格允許單元群集在被選擇的流動區域中,而結構四邊形/六面體網格一般會把單元強加到所不需要的區域中。對于中等復雜幾何,非結構四邊形/六面體網格能構提供許多三角形/ 四面體網格所能提供的優越條件。
    在一些情形下使用四邊形/六面體元素是比較經濟的,四邊形/六面體元素的一個特點是它們允許一個比三角形/四面體單元大的多的縱橫比。一個三角形/ 四面體單元中的一個大的縱橫比總是會影響單元的偏斜(skewness),而這不是所希望的,因為它可能妨礙計算的精確與收斂。所以,如果你有一個相對簡單的幾何,在這個幾何中流動與幾何形狀吻合的很好,例如一個瘦長管道,你可以運用一個高縱橫比的四邊形/六面體單元的網格。這個網格擁有的單元可能比三角形/ 四面體少的多。

3.數值耗散

    在多維情形中,一個錯誤的主要來源是數值耗散,術語也為偽耗散(false diffusion)。之所以稱為“偽耗散”是因為耗散不是一個真實現象,而是它對一個流動計算的影響近似于增加真實耗散系數的影響。
    關于數值耗散的觀點有:
    當真實耗散小,即情形出現對流受控時(即本身物理耗散比較小時),數值的耗散是最值得注意的。
    關于流體流動的所有實際的數值設計包括有限數量的數值耗散。這是因為數值耗散起于切斷錯誤,而切斷錯誤是一個表達離散形式的流體流動方程的結果。
    用于FLUENT 中的二階離散方案有助于減小數值耗散對解的影響。
    數值耗散的總數反過來與網格的分解有關。因此,處理數值耗散的一個方法是改進網格。
    當流動與網格相吻一致時,數值耗散減到最小。
    最后這一點與網格的選擇非常有關。很明顯,如果你選擇一個三角形/ 四面體網格,那么流動與網格總不能一致。另一方面,如果你使用一個四邊形/六面體網格,這種情況也可能會發生,但對于復雜的流動則不會。在一個簡單流動中,例如過一長管道的流動,你可以依靠一個四邊形/六面體網格以盡可能的降低數值的耗散。在這種情形,使用一個四邊形/六面體網格可能有些有利條件,因為與使用一個三角形/ 四面體單元比起來,你將能夠使用比較少的單元而得到一個更好的解。


58 如何將自己用C語言編輯的程序導入到FLUENT中?在利用UDF編寫程序時需注意哪些問題?  #157
我一般用txt文件進行UDF編程,之后將文件改為.c文件

將程序導入到Fluent中利用編譯功能,具體操作

在fluent中的Define -> Use-Defined -> Compiled 打開之后,選擇source files下面的Add...,找到編寫好的.c文件打開,點擊Build,就會生成一個以liberary name命名的文件夾,編譯好的資料就放在這個文件夾里面,最后點擊load就會將編譯好的內容導入到Fluent中,這樣你在有UDF選項的下拉菜單中就會看到你編好的程序名稱。

利用UDF編程和C語言編程很相似,所以最好知道一些C語言編程的基礎,再掌握一些Fluent的UDF固有的一些命令,基本上一些簡單的程序就都沒問題了


59  在UDF中compiled型的執行方式和interpreted型的執行方式有什么不同?   (#72)
采用與FLUENT 本身執行命令相同的方式構建的。采用一個稱為Makefile的腳本來引導c 編譯器構造一個當地目標編碼庫(目標編碼庫包含有將高級c 語言源代碼轉換為機器語言。)這個共享庫在運行時通過“動態加載”過程載入到FLUENT 中。目標庫特指那些使用的計算機體系結構,和運行的特殊FLUENT 版本。因此,FLUENT 版本升級,計算機操作系統改變以及在另一臺不同類型的計算機上運行時,這個庫必須進行重構。

編譯型UDF 通過用戶界面將原代碼進行編譯,分為兩個過程。這兩個過程是:訪問編譯UDF 面板,從源文件第一次構建共享庫的目標文件中;然后加載共享庫到FLUENT 中。

 采用與FLUENT 本身執行命令相同的方式構建的。采用一個稱為Makefile的腳本來引導c 編譯器構造一個當地目標編碼庫(目標編碼庫包含有將高級c 語言源代碼轉換為機器語言。)這個共享庫在運行時通過“動態加載”過程載入到FLUENT 中。目標庫特指那些使用的計算機體系結構,和運行的特殊FLUENT 版本。因此,FLUENT 版本升級,計算機操作系統改變以及在另一臺不同類型的計算機上運行時,這個庫必須進行重構。

編譯型UDF 通過用戶界面將原代碼進行編譯,分為兩個過程。這兩個過程是:訪問編譯UDF 面板,從源文件第一次構建共享庫的目標文件中;然后加載共享庫到FLUENT 中。

解釋型UDF

解釋型UDF 同樣也是通過圖形用戶界面解釋原代碼,卻只有單一過程。這一過程伴隨著運行,包含對解釋型UDF 面板的訪問,這一面板位于源文件中的解釋函數。

在FLUENT內部,源代碼通過c 編譯器被編譯為即時的、體系結構獨立的機器語言。UDF 調用時,機器編碼通過內部模擬器或者解釋器執行。額外層次的代碼導致操作不利,但是允許解釋型UDF 在不同計算結構,操作系統和FLUENT 版本上很容易實現共享。如果迭代速度成為焦點時,解釋型UDF 可以不用修改就用編譯編碼直接運行。

解釋型UDF 使用的解釋器不需要有標準的c 編譯器的所有功能。特別是解釋型UDF 不含有下列C 程序語言部分:

goto 語句聲明;無ANSI-C 語法原形;沒有直接數據結構引用;局部結構的聲明;聯合函數指針;函數陣列;

解釋型UDF與編譯型UDF的區別:

在解釋型與編譯型UDF 之間的主要的不同之處是很重要的,例如當你想在UDF 中引進新的數據結構時。解釋型不能通過直接數據引用獲得FLUENT 解算器的數據;只能間接的通過FLUENT 預先提供的宏來獲取數據。具體請參考第7 章。

在解釋型與編譯型UDF 之間的主要的不同之處是很重要的,例如當你想在UDF 中引進新的數據結構時。解釋型不能通過直接數據引用獲得FLUENT 解算器的數據;只能間接的通過FLUENT 預先提供的宏來獲取數據。具體請參考第7 章。

總結一下,當選擇寫解釋型或者編譯型UDF時,記住以下幾條:

解釋型UDF:對別的運行系統是可移植的,可以作為編譯型運行,不需要c 編譯器,比編譯型的要慢,在使用C 程序語言時有限制,不能鏈接到編譯系統或者用戶庫,只能通過預先提供的宏訪問FLUENT 中存儲的數據。

編譯型UDF:運行要快于解釋型UDF,對C 程序語言沒有限制,可以使用任何ANSI-compliant c 編譯器進行編譯,可以調用其他語言寫的函數(特別是獨立于系統和編譯器的),如果包含某些解釋器不能處理的c 語言部分時用解釋型UDF 是不行的。

總之,當決定哪一類型的udf 應用到你的模型時:

對小的,直接的函數用解釋型;對復雜函數使用編譯型。


60 在用gambit的時候,導入pro/e的stp文件后,在消去最短邊的時候,有些最短邊不能消去,其是空間線段,用面merge的方法和連接點的方法都不行,請問該怎么消去這類短邊?  #144
我覺得這些短邊是由于Pro/e的精度產生的,如果直接導入到Gambit,然后劃分網格,總會出現一些小的犄角,一些小的短邊,這些地方的網格質量是非常的差,我一般的做法都是,導入到Gambit,將所有的線在原位置復制,刪掉導入的體,再將線縫合成面,再縫合成體,這樣就可以除去那些短邊,小角度的問題了。

      也就是將導入的體,由于精度原因,在gambit里面不適用,需要自己縫合!


61 FLUENT help和GAMBIT help能教會我們(特別是剛入門的新手)學習什么基本知識?  #126

答:可以了解其基本原理和基本的操作。不過我覺得對于新手熟悉軟件最好的還是tutorial guide



62 FLUENT如何做汽車外流場計算的模擬?并且怎么可以得到汽車的阻力系數和升力系數?  (#170)
答:汽車的外流場分析,一般模擬的是汽車在一定行使速度的情況下,汽車的阻力系數和升力系數,以及由此延伸計算得到的阻力、升力等,因此,入口邊界條件可以給定相對的風速,然后在求解的過程中Monitor各個部分的lift force和drag force。
63 FLUENT模擬飛行器外部流場,最高MA多少時就不準確了?MA達到一定的程度做模擬需注意哪些問題?  #125

答:不準確的標準是什么?沒有判斷標準就沒辦法判斷。一般來說fluent計算馬赫數大于3~5之后就不是很理想了(不過相信版本越新結果越好)。計算的時候應該從低馬赫數慢慢往上算。比如說如果計算馬赫數是5的話,就在馬赫數4的計算結果上算。另外,求解器需選擇耦合和顯式的。(對于6.3來說,選擇基于密度的求解器)



64 在用gambit建模,保存成*.msh文件時總是出現No entity的錯誤:Continuum Entity fluid does not contain any valid entity and is not written! Boundary Entity wall does not contain any validentity and is not written! 不知道是什么問題?產生的原因是什么?如何解決?  (#150)
   曾經也碰到過此類問題,問題出在做2維網格輸出時要將Export 2-D(X-Y) Mesh選項選上


65 在做燃燒模擬的時候,入口燃料溫度定義為蒸發/離解開始時的溫度(也就是,為離散相材料指定的蒸發溫度“Vaporization Temperature”),這是指水分蒸發溫度嗎?一般是多少?


fluent入門一般問題(六)的圖1

                                                              想學習更多的知識,請聯系我們!

                                                              微信公眾號:名稱:“DR有限元”

                                                                                    號碼:“hello_cae”


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

11
1