OpenFOAM程序開發(fā)入門(1)

一饺律、OpenFOAM應(yīng)用類型:

1胧瓜、直接利用OpenFOAM的標(biāo)準(zhǔn)的求解器進(jìn)行模擬矢棚,把OpenFOAM替代商業(yè)軟件來使用,OpenFOAM已基本具有這樣的功能和人氣府喳,與Fuent蒲肋,Star-CD等相比較,OpenFOAM顯然具有更高的求解效率和靈活性钝满。

2兜粘、用戶自定義求解器,即利用OpenFOAM的基本類庫弯蚜,如finiteVolume孔轴,OpenFOAM庫來按照自己的求解流程來編寫針對某類應(yīng)用的求解器。用戶需要開發(fā)的求解器就是類似于在OpenFOAM的applications中所看到的標(biāo)準(zhǔn)求解器icoFOAM碎捺,simpleFOAM等路鹰。顯然這一需求是非常大的,從OpenFOAM問世以來收厨,已有很多用戶定義了自己的求解器晋柱。這類需求的特點(diǎn)是,并不需要特別關(guān)心離散和求解的最底層的知識诵叁,如時(shí)間項(xiàng)離散雁竞,空間項(xiàng)離散等,關(guān)注的重點(diǎn)是求解的步驟或者流程黎休。在編程中浓领,通常是頂層的求解流程的開發(fā)玉凯,在多數(shù)情況下可以不編譯OpenFOAM的finiteVolume和OpenFOAM庫。這種頂層的求解器的開發(fā)联贩,是我們以前常常忽略的漫仆,或者是以前沒有能力做到的。需要指出的是泪幌,商業(yè)軟件中的所謂udf盲厌,user subroutine和這是不可相比的。

3祸泪、用戶自己定義離散方法等吗浩。對于研究離散格式、代數(shù)求解器等人來說没隘,更關(guān)注時(shí)間項(xiàng)ddt懂扼,擴(kuò)散項(xiàng)Laplacian,對流項(xiàng)div是如何離散的右蒲,能否有更高效更高精度的離散方法阀湿,這需要修改finiteVolume庫和OpenFOAM庫中對應(yīng)的代碼。尤其是對流項(xiàng)瑰妄,盡管OpenFOAM已經(jīng)提供了基于NVD和TVD的模板和40多種有名的高階高精度格式陷嘴,但可以預(yù)見,這仍然是不夠的间坐,畢竟對流項(xiàng)的離散仍然是目前CFD的重點(diǎn)研究方向灾挨。

二、OpenFOAM程序開發(fā)的基本知識

1竹宋、重要的環(huán)境變量:

$WM_PROJECT_USER_DIR ―― OpenFOAM的用戶目錄
$FOAM_TUTORIALS ------OpenFOAM的算例目錄
$ FOAM _SRC ------OpenFOAM庫的源程序目錄
$ FOAM_APP ------ OpenFOAM的求解器目錄
$ FOAM_APPBIN ------- OpenFOAM的求解器執(zhí)行文件目錄
$ FOAM_RUN ------用戶的算例目錄

2劳澄、重要的shell:

run = cd to $FOAM_RUN
src = cd to $FOAM_SRC
app = cd to $FOAM_APP
util = cd to $FOAM_APP/utilities
sol = cd to $FOAM_APP/solvers
tut = cd to $FOAM_TUTORIALS

3、求解器的基本文件結(jié)構(gòu)

appName 包含求解器源代碼的目錄

  • appName.C 求解器主程序
  • CreateFields.H 場變量的聲明和初始化
  • Make/ 編譯指令
    • files 編譯需要的源程序文件和生成的目標(biāo)文件
    • options 編譯選項(xiàng),如鏈接庫等

appName/appName.C是求解器的主程序
appName/createFields.H聲明變量逝撬,并從文件中讀入初值浴骂,如p,物質(zhì)屬性宪潮。
appName/Make/files 所有源程序的名稱,一個(gè)文件一行趣苏,最后一行是目標(biāo)代碼的名稱和存放位置狡相,EXE=$(FOAM_USER_APPBIN)/appName
appName/Make/options設(shè)定查找頭文件和庫的路徑,EXE_INCS,和需要鏈接的庫EXE_LIBS

4食磕、算例的基本文件結(jié)構(gòu)

case/ 算例目錄

  • 0/ 包含初始和邊界條件
  • constant/ 包含初次讀入后尽棕,不隨時(shí)間變化的數(shù)據(jù)
    • polyMesh/ 包含多面體網(wǎng)格數(shù)據(jù)
    • transportProperties/ 包含物性數(shù)據(jù)
  • system/ 包含計(jì)算控制和離散格式設(shè)定
    • controlDict 包含計(jì)算控制,如時(shí)間步長等
    • fvSchemes 包含離散格式設(shè)定
    • fvSolutions 包含代數(shù)求解器或SIMPLE彬伦,PISO算法設(shè)定

具體而言
case/0 每個(gè)需求解的變量需要一個(gè)文件設(shè)定其初始邊界條件
case/constant/polyMesh 網(wǎng)格數(shù)據(jù)滔悉,如owner neighbour points faces boundary
case/system/transportProperties 物性數(shù)據(jù)
case/system/controlDict 設(shè)定起始終止時(shí)間伊诵,時(shí)間步長,輸出控制
case/system/fvSchemes 設(shè)定程序用到的每個(gè)微分算子的離散格式
case/system/fvSolution 為每個(gè)變量選擇代數(shù)方程求解器/收斂精度及PISO等算法設(shè)定

三回官、OpenFOAM程序開發(fā)的理論知識

作求解開發(fā)曹宴,必須能寫出需要求解的控制方程及其定解條件,并且對于如何求解方程或方程組的步驟已經(jīng)明確歉提。
這些流體力學(xué)笛坦、傳熱學(xué)以及相關(guān)的理論是必需的,所謂連續(xù)介質(zhì)力學(xué)中的數(shù)學(xué)模型苔巨,控制方程和定解條件就是表示它的語言版扩。

四、OpenFOAM程序開發(fā)的最簡單的例子

下面采用OpenFOAM來開發(fā)一個(gè)用戶自己的求解器侄泽。主要是利用OpenFOAM的標(biāo)準(zhǔn)求解器icoFoam礁芦,用戶不需要寫任何代碼,只為為了熟悉OpenFOAM程序開發(fā)的環(huán)境和步驟悼尾。
步驟:

1柿扣、將icoFoam目錄拷貝到新的目錄

可采用下面的Linux的命令實(shí)現(xiàn):
到OpenFOAM的incompressible目錄

cd applications/incompressible
cp –r icoFoam myicoFoam

以上只是復(fù)制目錄icoFoam到新的位置,并且新目錄名為myicoFoam

cd myicoFoam

進(jìn)入新的目錄诀豁,查看一下窄刘,可以看到里面的文件和icoFoam中是否一樣

2、原文件改名舷胜,并且刪除依賴文件

將icoFoam.C改名myicoFoam.C

mv icoFoam.C myicoFoam.C

刪除依賴文件

rm icoFoam.dep
3娩践、修改編譯文件files和options

進(jìn)入Make目錄,打開files文件

icoFoam.C      源程序文件名
EXE = \$(FOAM_APPBIN)/icoFoam  可執(zhí)行文件名

修改為

myicoFoam.C      源程序文件名
EXE = \$(FOAM_APPBIN)/myicoFoam  可執(zhí)行文件名

此例中options不需修改烹骨,可以打開看看

EXE_INC = \    頭文件包含
    -I$(LIB_SRC)/finiteVolume/lnInclude
EXE_LIBS = \  鏈接庫
-lfiniteVolume
4翻伺、刪除原來的obj文件
rm –rf linuxGccDPOpt
cd ..
5、編譯
wmake
6沮焕、檢驗(yàn)一下

到tutorial目錄吨岭,檢驗(yàn)一下

myicoFoam . cavity

參考資料:
[1] http://www.cfluid.com/thread-71981-1-1.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市峦树,隨后出現(xiàn)的幾起案子辣辫,更是在濱河造成了極大的恐慌,老刑警劉巖魁巩,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件急灭,死亡現(xiàn)場離奇詭異,居然都是意外死亡谷遂,警方通過查閱死者的電腦和手機(jī)葬馋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人畴嘶,你說我怎么就攤上這事蛋逾。” “怎么了窗悯?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵区匣,是天一觀的道長。 經(jīng)常有香客問我蟀瞧,道長沉颂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任悦污,我火速辦了婚禮铸屉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘切端。我一直安慰自己彻坛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布踏枣。 她就那樣靜靜地躺著昌屉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茵瀑。 梳的紋絲不亂的頭發(fā)上间驮,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機(jī)與錄音马昨,去河邊找鬼竞帽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鸿捧,可吹牛的內(nèi)容都是我干的屹篓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼匙奴,長吁一口氣:“原來是場噩夢啊……” “哼堆巧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泼菌,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谍肤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后哗伯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谣沸,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年笋颤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伴澄,死狀恐怖赋除,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情非凌,我是刑警寧澤举农,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站敞嗡,受9級特大地震影響颁糟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喉悴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一棱貌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧箕肃,春花似錦婚脱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吟宦,卻和暖如春篮洁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背殃姓。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工袁波, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辰狡。 一個(gè)月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓锋叨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宛篇。 傳聞我的和親對象是個(gè)殘疾皇子娃磺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容