2011-10-27 26 views
1

對於二維歐拉方程,您是否知道編寫自己的計算流體動力學求解器的一個很好且特別簡單的指南? 我只是想了解像Fluent這樣的商業軟件在做什麼。當它很簡單時,我想向一些朋友展示如何去做和編碼。初學者指導擁有CFD代碼?二維歐拉方程

不幸的是我找不到如何將這個http://en.wikipedia.org/wiki/Euler_equations_%28fluid_dynamics%29翻譯成數字應用程序。

有沒有人做過這個?任何幫助表示讚賞,

Andreas

回答

3

是的,很多人都做過。

訣竅是將質量,動量和能量的守恆定律寫成積分方程,並將它們轉化爲矩陣方程,以便您可以用數值方法解決它們。轉換過程通常涉及使用簡單的形狀(例如二維和四面體的三角形和四邊形以及三維的磚)以及假設形狀內的相關變量的分佈對控制體積進行離散化。

如果問題是瞬態的,那麼您需要知道關於線性代數和數值積分的相當數量。有幾種做法:有限差分,有限元和邊界元素(如果存在合適的格林函數)。

這不是微不足道的。你會想讀這樣的事情:

http://www.amazon.com/Numerical-Transfer-Hemisphere-Computational-Mechanics/dp/0891165223

+0

嗨,圖書館終於拿回來了,我現在擁有它。 SIMPLE算法很棒,因爲我理解它是如何工作的。但我不知道我從哪裏得到a_n(a_e,a _...)因素。你能給我提示,這是怎麼完成的? 它解釋了從哪裏獲得a_E(capial indices),但他們使用a_e(小指數),我沒有看到,這些是從哪裏拿來的。 –

+1

我無法再使用本書的副本,但通常是基於某種有限差分近似。 – duffymo

+0

是的,它是基於它,但你需要計算所有的網格值的壓力,速度和合作從這一點,我不知道他們從哪裏採取的價值:(你太不好了,不再有副本 –

1

你的問題的答案取決於你想用來解決二維歐拉方程的方法。就個人而言,我推薦使用有限體積法並瞭解它,我認爲你應該看看這本書: Computational Fluid Dynamics: Principles and Applications by Jiri Blazek

這是一本很好的書,從一開始就站在有限體積法的基礎上編寫自己的代碼,並且還附帶了一個伴隨代碼來指導您的工作。這本書非常好,當我寫碩士論文時,它讓我感到奇怪。

0

6年前的問題在所有計算流體動力學(CFD)新手中仍然相當普遍(「這有多難?」)。但是,在這個階段必須小心謹慎,以免在解決給定的方程組後面的數學問題變得微不足道。

對於那些在CFD新的(或興趣) -

你開始思考編碼之前,有必要了解你正在試圖解決的方程式的性質是非常重要的。橢圓問題(如潛在流動的泊松解算器)與雙曲線系統(如歐拉方程)非常不同,在雙曲線系統中信息通過不同波模式形式的數值域「傳播」。這是我的第一點,

1.知道系統的性質和研究方程 - 對於這一步,你將需要通過偏微分方程的數學教科書,並知道如何分類不同的方程。 (參見科學家和工程師偏微分方程的法洛,或重溫你的本科數學課程。)

2.學習線性代數 - 最好的CFD專家,我知道,有線性代數強勁的基本面。

移動到雙曲問題的具體情況,例如,歐拉方程

3.閱讀空間和時間離散 - 這是一個人們不太瞭解新的CFD的一點。既然信息以明確的方向傳播,並且速度在雙曲線問題中,你不能任意地使用你的方程。爲此,您需要了解黎曼問題的概念,即給定時間兩個狀態之間的不連續界面,系統如何演變?現代有限體積法,使用空間離散化來複制信息在空間和時間中如何通過模擬進行傳播。這叫做upwinding。閱讀Toro關於黎曼解算器的書籍,可以很好地介紹upwinding。

4.理解穩定性的概念 - 並非所有的離散化方法和time-integration方法都將導致穩定的解決方案。瞭解限制時間步的概念(CFL-condition)。如果你不遵循捲起法則,將很難獲得穩定的解決方案。

在這個時候,您將會對CFD代碼有更清晰的認識,您可以開始擔心使用哪種語言進行編碼。最常用的CFD代碼是用C或Fortran編寫的,用於計算速度和並行化。然而,如果你打算只編寫代碼,你可以使用Matlab或Python,這將不會讓人感到沮喪。我還應該提到,對二維歐拉解算器進行編碼對於航空航天工程領域的新研究生來說是一個典型的家庭作業問題,所以如果你成功了,請儘量謙虛,樂於學習。

對於任何正在尋找差價合約的人來說,知道這是一個充滿挑戰和驚人的領域,並有許多進步。如果你想成功,閱讀論文(尤其是基礎知識),並且不要放棄,如果你不明白的話題。繼續努力工作,你會發現自己在推動差價合約能做的事情。