OpenFOAM頂蓋驅動流詳解使用手冊中文翻譯版樣本_第1頁
OpenFOAM頂蓋驅動流詳解使用手冊中文翻譯版樣本_第2頁
OpenFOAM頂蓋驅動流詳解使用手冊中文翻譯版樣本_第3頁
OpenFOAM頂蓋驅動流詳解使用手冊中文翻譯版樣本_第4頁
OpenFOAM頂蓋驅動流詳解使用手冊中文翻譯版樣本_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

資料內容僅供您學習參考,如有不當之處,請聯系改正或者刪除。引言這是開源場運算和操作c++庫類(openfoam)的使用指南。她詳細描述了OpenFOAM的基本操作。首先經過第二章一系列教程練習。然后經過對更多的獨立組件的更詳細的描述學習openfoam。Of首先主要是一個c++庫類,主要用于創(chuàng)立可執(zhí)行文件,比如應用程(application)。應用程序分成兩類:求解器,都是為了解決特定的連續(xù)介質力學問題而設計的;公用工程,這些是為了執(zhí)行包括數據操作等任務而設計的。Of包括了數量眾多的solver和utilities,牽涉的問題也比較廣泛。將在第三章進行詳盡的描述。Of的一個強項是用戶能夠經過必要的預備知識(包括數學,物理和編程技術)創(chuàng)立新的solvers和utilities。Of需要前處理和后處理環(huán)境。前處理、后處理接口就是of本身的實用程序(utilities),以此確保協調的數據傳輸環(huán)境。圖1.1是of總體的結構。第4章和第五章描述了前處理和運行of的案例。既包括用of提供的meshgenerator劃分網格也包括第三方軟件生成的網格數據轉換。第六章介紹后處理。Chapter2

指導手冊

在這一章中我們詳細描述了安裝過程,模擬和后進程處理一些OpenFOAM測試案例,以引導用戶運行OpenFOAM的基本程序。$FOAM_TUTORIALS目錄包含許多案件演示of提供的所有求解器以及許多共用程序的使用,在試圖運行教程之前,用戶必須首先確保她們已經正確地安裝了OpenFOAM。

該教程案件描述blockMesh預處理工具的使用,paraFoam案例設置和運行OpenFOAM求解器及使用paraFoam進行后處理。使用OpenFOAM支持的第三方后處理軟件的用戶能夠選擇:她們要么能夠按照教程使用paraFoam,或當需要后處理時參閱第六章的第三方軟件使用說明。OpenFOAM安裝目錄下的tutorials目錄中所有的指導手冊都是可復制的。教程根據流動類型分列在不同的目錄下,對應子目錄根據求解器slover分類。例如,所有icoFoam的案件存儲在一個子目錄”incompressible/icoFoam”,incompressible表示流動類型為不可壓。如果用戶希望運行一套例子,建議該用戶復制tutorials目錄到本地運行目錄。她們能夠輕松的經過輸入下邊的命令來復制:

mkdir-p$FOAMRUN

cp-r$FOAMTUTORIALS$FOAMRUN2.1蓋驅動腔流Lid-drivencavityflow本節(jié)將介紹如何進行預處理,運行和后處理一個例子,涉及二維正方形區(qū)域內的等溫,不可壓縮流動。圖2.1中幾何體的所有邊界都是由壁面。在x方向頂層墻體以1米/秒的速度移動,而其它3個墻壁是靜止的。最初,流動會假設為層流,將在均勻網格上使用icoFoam求解器來求解層流等溫不可壓流動。在本教程中,將研究加強網格的劃分的效果和網格朝向壁面分級的效果。最終,流動雷諾數增加,必須使用用于恒溫不可壓縮紊流的pisoFoam求解器.2.1.1前處理經過編輯實例文件在OpenFOAM中設置實例,用戶應選擇一個xeditor進行前處理,如emacs,vi,gedit,kate,nedit等。編輯文件可能在OpenFOAM中,因為I/O的目錄格式的關鍵字意思很明確,很容易使沒有經驗的用戶理解。模擬實例涉及網格,流場,屬性,控制參數等數據。如4.1節(jié)所述,在OpenFOAM,這些數據是存儲在實例目錄下的一組文件中,而不是單個實例文件,如許多其它流體力學軟件包。實例目錄給予適當的描述性名稱,例如:該教程中的第一個例子就叫cavity。在編輯實例文件和運行cavity實例前的準備工作中,用戶應打開該案例的目錄:cd/home/turtlebot/OpenFOAM/OpenFOAM-2.3.0/tutorials/incompressible/icoFoam/cavity2.1.1.1生成網格OpenFOAM經常運行在三維直角坐標系統(tǒng)中,生成的都是三維幾何結構。OpenFOAM默認求解三維問題,能夠經過在某些邊界上指定一個'special'empty邊界條件,這些邊界垂直于不要求解的第三維,從而來求解二維問題。(三維如何求解二維的問題)cavity腔域是一個在xy平面上邊長d=0.1m的正方形。起初用20*20的均勻網格。塊結構見圖2.2。網格生成器是OpenFOAM的blockMesh,根據一個輸入文檔blockMeshDict(在給定實例的constant/polyMesh目錄下)中的指定描述生成網格。對該實例輸入的blockMeshDict如下所示:11formatascii;12classdictionary;13objectblockMeshDict;14}15//*************************************//1617convertToMeters0.1;1819vertices20(21(000)22(100)23(110)24(010)25(000.1)26(100.1)27(110.1)28(010.1)29);3031blocks32(33hex(01234567)(20201)simpleGrading(111)34);3536edges37(38);3940patches41(42wallmovingWall43(44(3762)45)46wallfixedWalls47(48(0473)49(2651)50(1540)51)52emptyfrontAndBack53(54(0321)55(4567)56)57);5859mergePatchPairs60(61);6263//*************************************************************************//

頭7行是文件頭信息,用寬顯線表示。接下來是FoamFile子目錄中的文件信息,用{...}大括號界定。

注釋(來自蘇軍偉博客):

FoamFile

//文件頭

{

version

2.0;

//版本號

format

ascii;//存儲形式二進制或者ascii

class

volScalarField;//場的類型,體心標量場

object

p;//場的名字

}在手冊其它部分:為清楚起見并節(jié)省空間,文件頭,包括寬顯線及FoamFile子目錄,將會在引用實例文件時全部省去。文件首先指定塊頂點坐標,然后經過頂點標號和單元個數定義塊(此處僅有一個),最后,它定義邊界塊。建議用戶查閱5.3節(jié)了解blockMeshDict文件中輸入項的含義。

在blockMeshDict文件上運行blockMesh生成網格。在這個實例目錄中,做到這一點,只需在終端輸入:blockMesh終端窗口產生blockMesh運行狀態(tài)報告。任何blockMeshDict文件的錯誤都會被blockMesh挑出來,所產生的錯誤信息直接引導用戶到文件中產生問題的所在行。在該階段不應該有錯誤。2.1.2邊界和初始條件完成網格生成,用戶能夠看看為這個案例設置的初始場文件。案例設置開始時間t=0s,因此初始流場數據被設置在cavity目錄下面的名字為0的子文件夾里。文件夾0里包括兩個文件,p和U。每個壓力(p)和速度(U)的初始值和邊界條件都必須設置。讓我們來檢驗下文件p:17dimensions[02-20000];1819internalFielduniform0;2021boundaryField22{23movingWall24{25typezeroGradient;26}2728fixedWalls29{30typezeroGradient;31}3233frontAndBack34{35typeempty;//空邊界條件,說明求解是二維流動,這個在openFOAM是獨有的,如果遇到該類邊界,該邊界不參與方程//離散,也就是什么都不做。36}37}3839//*************************************************************************//流場數據文件有3個主要的輸入:dimensions:指定流場尺度(單位的指數),這里的運動學壓力,即m2s-2(02-20000)(見第4.2.6節(jié)獲取更多信息);internalField:其內部文件數據能夠是統(tǒng)一的,由單一值確定;不均勻時,流場所有值必須指定(詳細信息見4.2.8節(jié));boundaryField:邊界的流場數據,包括邊界條件和及所有邊界塊的數據(詳細信息見4.2.8節(jié))。對于這個腔體例子,邊界僅由壁面組成,分為兩種邊界:(1)fixedWall:固定墻包括側墻和低墻(2)movingWall:移動墻的頂蓋。作為壁面,兩者的P文件都是zeroGradient邊界條件,即”壓力垂直梯度為零”。frontAndBack代表二維情況下的前后兩個塊,因此必須設置為empty。該實例中,正如大多數我們遇到的情況一樣,初始場被設置為是均勻的。在這里,壓力是運動學上的壓力,作為一種不可壓縮的情況,其絕對值是不相關,因此為方便起見設置為uniform0。(為什么跟絕對值不相關?)用戶可用同樣的方式檢測0/U文件中的速度場。dimensions為對速度所期望的因次,內部流場初始化為uniformzero,在這個例子里速度場必須由由3個矢量表示,即均勻的(000)見第4.2.5節(jié)獲取更多信息)。對frontAndBack塊,速度邊界流場要求相同的邊界條件。其它方向都是墻:固定墻需要假定無滑移條件,因此fixedValue條件其值為統(tǒng)一(000)。頂面以1米每秒的速度沿x方向移動,因此也需要fixedValue條件,但為統(tǒng)一(100)值。2.1.1.3物理特性實例的物理屬性存儲在后綴為Properties的文件里,放在Dictionaries目錄樹。對于這個icoFoam例子,唯一必須指定的運動粘度是存儲在transportProperties目錄中。用戶能夠檢查運動粘度是否正確設置,經過打開transportProperties目錄來查看或編輯的入口。運動粘度的關鍵字是nu,在方程中用同音的希臘字母ν代表。最初,例子運行時雷諾數為10,其中雷諾數定義為:式中,d和1U1分別為特征長度和特征速度,ν為運動粘度。此處d=0.1m,1U1=1m/s,因此Re=10時,ν=0.01m2s?1。因此正確的動力粘度文件入口指定為:2.1.1.4control與時間控制、解數據的讀取與存儲相關的輸入數據都是從controlDict目錄讀入的。讀者應看看這個文件;作為實例控制文件,她放在system目錄中。運行的開始/結束時刻及時間步長必須設置。4.3節(jié)詳細介紹了OpenFOAM提供夠靈活的時間控制。在這個教程我們設置開始運行時刻從t=0開始,這意味著of需要從文件夾0讀取流場數據,更多案例文件結構信息見4.1小節(jié)。因此我們設置startFrom關鍵詞為startTime并指定關鍵詞startTime為0。對于結束時間,我們希望獲得流動繞空腔循環(huán)(即穩(wěn)定)時的穩(wěn)態(tài)解。一般而言,層流中,流體經過該區(qū)域10次才能達到穩(wěn)態(tài)。在這個例子里,流動沒有經過該區(qū)域,因為這里沒有進口也沒有出口。取而代之,設蓋子穿過腔體10次為結束時間,即1s;事實上,事后發(fā)現0.5s就足夠了,因此應采用該值。指定stopAt關鍵詞為endTime,并賦值0.5現在我們需要設置時間步長,由關鍵詞deltaT代表。運行icoFoam時為達到瞬時精確及數值穩(wěn)定,要求Courant數小于1。對于一個單元Courant數定義如下:δt是時間步長,|U|是經過單元的速度大小,δx是該速度方向上的單元尺寸。流速在穿過區(qū)域時是變化的,必須確保任何地方的Co<1。因此我們以最糟的狀況選擇δt的取值:Co的最大值必須與大尺度流速和小的單元尺度聯合的效果相一致。這里,這個整個區(qū)域的單元尺寸固定,因此Co的最大值發(fā)生在緊挨著蓋子的地方,這里速度接近1米每秒。單元尺寸為:因此為了達到全部區(qū)域內Co<=1,時間步長deltaT的設置必須小于等于:作為模擬進程,我們希望能寫下每隔一段時間的結果,這樣我們就能在后處理包里查看結果。關鍵詞writeControl表示設置輸出結果時刻的一些可選項。這里我們選擇timeStep選項:每隔n次時間步長輸出一次結果,n值由關鍵詞writeInterval指定。假設我們要設置在時刻0.1,0.2,...,0.5s輸出結果,時間步長是0.005s,因此是每20次步長輸出一次結果,故給writeInterval賦值20。Of會根據當前時間創(chuàng)立一個新的目錄,例如0.1s,在每個時刻輸出一系列的數據,在4.1章節(jié)有具體介紹。在icoFoam求解器輸出的每個流場信息U和p放在時間目錄里。對于這個例子,在controlDict中的輸入如下:2.1.1.5離散和線性求解器設置用戶能夠在system目錄下fvSchemes文件中指定選擇有限體積離散法。線性方程求解器規(guī)范和限差和其它算法控制在fvSolution文件中,同在system目錄下。用戶能夠自由的查看這些庫類,可是當前我們不需要討論入口數據,除了fvSolution中PISO子目錄下的pRefCell和pRefValue。在封閉系統(tǒng)如腔體內,用的是相對壓力:是壓力范圍而不是絕對值。在這種情況下,求解器在pRefCell單元中經過pRefValue設置一個相對值,在該實例中都設為0。改變其中任何一個的值都會只改變絕對壓力場,而不會改變相對壓力場或速度場。2.1.2查看網格在實例運行前,最好查看一下網格以檢查是否有錯。網格在OpenFOAM提供的后處理工具paraFoam中查看,經過在終端在案例目錄下(ying@ying-desktop:~$cd/home/ying/RUN/tutorials/incompressible/icoFoam/cavity回車)輸入:paraFoam來啟動paraFoam后處理。也能夠經過另一個目錄位置執(zhí)行:paraFoam-case$FOAM_RUN/tutorials/incompressible/icoFoam/cavity從而打開了ParaView窗口如圖6.1所示。在PipelineBrowser,用戶能夠看到ParaView已經打開了cavity案例模塊:cavity.OpenFOAM。在點擊Apply按鈕前,用戶需要從RegionStatus和面板上選擇一些幾何結構。因為該案例很小,經過檢查RegionStatus面板標題相鄰的box能夠很容易地選擇所有的數據,這能夠自動檢查各個面板中的所有獨立部件。然后用戶能夠點擊Apply按鈕將幾何結構加載到ParaView中。6.1.5.1節(jié)中介紹了一些常見設置,請查閱該章節(jié)中的相關設置。之后用戶應該打開Display面板,其控制著所選模塊的可視化重現。在Display面板中,用戶應該做如下工作,如圖2.3所示:(1)設置Color為SolidColor;(2)點擊SetSolidColor選擇適當的顏色,如黑色(對于白色背景);(3)在Style面板,從Representation菜單選擇Wireframe。背景顏色能夠在頂部菜單面板的Edit中選擇ViewSettings...來設置。特別是第一次啟動ParaView,必須如6.1.5節(jié)描述的一樣操作。特殊的,由于這是一個2D的情況,要求在Edit菜單中選擇ViewSettings窗口,在General面板必須選擇UseParallelProjection。在Annotation窗口OrientationAxes能夠勾選或不宣,或經過鼠標拖曳來移動。2.1.3運行應用程序正如一切UNIX/Linux可執(zhí)行軟件,OpenFOAM應用程序能夠按以下兩種方式運行:作為前臺處理器,也就是說,前臺處理器中的shell一直等候,直到命令在給定命令提示符之前完成為止;作為后臺處理器,不需要在shell接受附加要求之前完成。在該情況下,能夠在前臺運行icoFoam。icoFoam求解器即能夠經過進入案例目錄,在命令提示符處輸入以下命令:icoFoamThatmeansthatParaViewhasnotbeenbuiltyet.Youcanfollowtheinstructionsfromstepnumber#9fromthispage:從而執(zhí)行,也能夠是可選擇的-case,給定案例目錄,如:icoFoam-case$FOAMRUN/tutorials/incompressible/icoFoam/cavity進程寫入終端,顯示當前時間,最大Courant數,所有場的初始及最終殘差。2.1.4后處理當結果一寫入時間目錄,就能夠用paraFoam來查看?;氐絧araFoam窗口,而且選擇cavity.OpenFOAM模塊的Properties面板。如果案例模塊的正確的窗口面板似乎在任何時刻都不存在,則確保:cavity.OpenFOAM是高亮藍色的;旁邊的eye按鈕是開的以顯示圖像是可行的;為了使paraFoam準備好顯示所感興趣的數據,首先使要求運行時間為0.5s,如果當ParaFoam開著時運行案例,時間目錄中的輸出數據不會自動在Paraview中加載。為裝載數據,用戶必須在Properties窗口中選擇UpdateGUI,然后點擊綠色的Apply按鈕。時間數據就會加載到ParaView中。2.1.4.1等值面及等值線的繪制為查看壓力,用戶應該打開Disply面板,由于它控制著所選模型的可視化表現。為繪制一個簡單的壓力曲線,用戶需要按照下面來選擇,如圖2.4具體所示:在Style面板,從Representation菜單選擇Surface;在Color面板,選擇。p及RescaletoDataRange,為了看早t=0.5s時刻的結果,用VCRControls或者CurrentTimeControls將時間設為0.5,這些位于ParaView窗口頂部菜單下方的工具欄中,見圖6.4.壓力場如預期一樣,腔體左上部為低壓區(qū),右上角為高壓區(qū),如圖2.5所示。經過點圖標。p,壓力場在各個單元間內插,從而得到連續(xù)的流場。相反的,如果用戶選擇單元圖標,在每個單元上就是一個蛋度的壓力值,因此每個單元都由單一的顏色表示而沒有梯度。顏色棒圖能夠在ActiveVariableControls中點擊ToggleColorLegendVisibility而出現,也能夠在View菜單選擇ShowColorLegend。點擊ActiveVariableControls工具欄或Disply窗口中Color面板中的EditColorMap按鈕,用戶就能夠設置顏色棒圖特性的范圍,比如文字大小,字型選擇及尺度計數形式等。經過鼠標拖動能夠改變顏色棒圖在圖像窗口的位置。ParaView的新版本默認使用顏色尺度為藍色到白色到紅色萬惡不是更常見的藍色到綠色到紅色(彩虹)。因此用戶第一次執(zhí)行ParaView時,可能希望改變顏色尺度,者能夠經過在ColorScaleEditor中選擇ChoosePreset(初調),然后選擇BluetoRedRainbow。在點擊OK確認以后,用戶就能夠點擊MakeDefault按鈕以便ParaView一直采用這種顏色色棒。如果用戶旋轉圖像,能夠發(fā)現整個幾何表面的都按壓力上色了。為產生真實的等值線,用戶首先要產生一個切割面,或者說”slice(切片)”,穿過整個幾何形狀使用Slice濾波器,見6.1.6.1節(jié)描述。切割面中心在(0.05,0.05,0.005),垂直線設為(0,0,1)。一旦產生了切割面,經過使用6.1.6節(jié)所介紹的Contourfilter來產生等值線。6.1.6.1引入切割面一般見戶都希望產生一個穿過平面的等值線,而不是等值面。用戶就需要用Slicefilter來創(chuàng)造一個切割面,等值線就在這個切割面上繪制。Slicefilter允許用戶在SliceType中經過設定center及normal/radius來指定切割Plane,Box或Sphere。用戶能夠用鼠標操作切割面。然后用戶能夠在切割面上運行Contourfilter易產生等值線,操作見6.1.6.6.1.6等值線繪制在頂部菜單欄的Filter菜單中選擇Contour,就可繪制等值線。filter在指定的模塊上運行,因此如果模型本身是3D的,則等值線會是一系列的2D表面分別代表恒定的值,也就是說等值面。Contour的Properties面板包括Isosurfaces列表,能夠編輯,最方便的就是使用NewRange窗口,所選擇的尺度場從下拉菜單中選擇。所得等值線圖如下所示:2.1.4.2向量繪制在繪制流速向量之前,需要移走其它已經創(chuàng)立的模塊,比如上面使用的Slice及Contourfilters??山涍^在以PipelineBrowser中高亮相關模塊,然后在各自的Properties面板中點擊Delete,從而整體移除,也能夠經過切換PipelineBrowser中相關模塊的eye按鈕來使其處于不工作狀態(tài)。現在我們希望在每個單元的中心產生一個速度向量點符,首先要過濾單元中心的數據,如6.1.7.1所描述。在PipelineBrowser中使cavity.OpenFOAM模塊高亮,用戶從Filter菜單中選擇CellCenters,點擊Apply。在PipelineBrowser中使Centers高亮,然后在Filter菜單中選擇Glyph(點符),則Properties窗口應該如圖2.6所示,在Properties面板,速度流場U自動在vectors菜單中選擇,因為它是當前唯一的向量場。默認圖像的ScaleMode為速度的VectorMagnitude,可是由于我們想看到貫穿整個區(qū)域的速度,應該選擇off,SetScaleFactor為0.005.點擊應用,出現圖像,但可能是一個單一的顏色,比如白色。用戶應該根據速度量級用顏色標識圖像,經過在Disply面板中設置ColorbyU來控制,也能夠在EditColorMap中選擇ShowColorLegend(圖例)。輸出如圖2.7所示,在圖中,大寫的TimesRomanfonts是在ColorLegend標題中選擇的,經過取消選定AutomaticLabelFormat,在LabelFormat文字框中輸入%-#6.2f將其標記為2個固定的有效數字。在ViewSettings的General面板中設置背景色為白色,見6.1.5.1節(jié)描述。6.1.7向量繪制向量平面圖由Glyphfilter產生,filter讀取Vectors中選擇的場,且提供一個GlyphTypes范圍,Arrow提供一個清晰的向量平面圖給GlyphTypes。在一個用戶能夠操作其為最佳效果的面板,每個圖形都有圖形控制選項。剩下的Properties面板主要包括圖像的ScaleMode菜單,最常見的ScaleMode選項為:Vector,其中圖像長度正比于向量量級;Off,其中每個圖像都是一樣的長度。SetScaleFactor參數控制圖像的基本長度。6.7.1.7在單元中心繪制向量默認在單元頂點繪制,但一般希望在單元中心繪制數據。首先對案例模塊應用CellCenters?lter,然后對產生的單元中心數據應用Glyph?lter。2.1.4.3流線繪制同樣的,在ParaView中繼續(xù)后處理之前,要使之前所描述的向量繪制等模塊退出,現在希望繪制速度流線,見6.1.8節(jié)所述。在PipelineBrowser中保持cavity.OpenFOAM模塊高亮,在Filter菜單選擇StreamTracer,點擊應用。參數窗口應設置如圖2.8所示。指定Seedpoints(原點)沿著LineSource,其運行垂直于幾何中心,也就是說,從(0.05,0,0.005)到(0.05,0.1,0.005),在本教程中的圖像應用:pointResolution為21;MaxPropagation為Length0.5;初始StepLength為CellLength0.01;以及IntegrationDirectionBOTH。默認參數使用Runge-Kutta2IntegratorType。點擊應用產生軌跡,然后從Filter中選擇Tube來產生高質量的流線圖。在本圖中,選擇:Nun.Sides6;Radius0.0003;Radiusfactor10.流管根據速度量級上色。點擊Apply產生如圖2.9所示。2.1.5增加網格分辨率在每個方向上經過一個2因數增加網格分辨率,粗網格得出的結果能夠映射到細網格上,作為問題的初始條件。然后將細網格的解與粗網格的解作對比。2.1.5.1用已存在的案例創(chuàng)立一個新的案例現在希望根據cavity創(chuàng)立一個名為cavityFine的新案例,用戶需要克隆cavity案例,而且編輯必須的文件。首先,在于cavity相同的目錄下創(chuàng)立一個新的案例文件,如:cd$FOAMRUN/tutorials/incompressible/icoFoammkdircavityFine然后從cavity案例中拷貝基本的文件到cavityFine中,然后進入cavityFine案例:cp-rcavity/constantcavityFinecp-rcavity/systemcavityFinecdcavityFine2.1.5.2創(chuàng)立細網格希望用blockMesh增加網格單元數。打開blockMeshDict文件,編輯block的指定信息。塊的指定在blocks關鍵詞下的列表中。Block定義的句法結構見5.3.1.3節(jié)的完整描述;在該階段只需知道緊隨hex的首先是塊頂點的列表,然后是是每個方向上許多單元數的列表。最初在cavity案例中設為(20201),現在改為(40401)并保存文件.像之前一樣運行blockMesh,得到新的細網格。2.1.5.3將粗網格結果映射到細網格mapFields應用程序將與一個給定幾何結構相關的場映射到另外一個幾何結構的相應場中,在我們的例子中,流場認為是連續(xù)的,由于源場及目的場的幾何結構及邊界類型或條件都是恒定的。在該例子中執(zhí)行mapFields時使用-consistent命令行。從目標案例controlDict中startFrom/startTime指定的時間目錄中讀取mapFields映射的流場數據,也就是說,結果被映射到的地方。在本例中,希望從cavity案例粗網格的最終結果映射到cavityFine案例中的細網格,因此,由于這些結果存儲在cavity的0.5文件中,在controlDict文件中設置startTime為0.5,startFrom設為startTime。現在案例已準備好運行mapFields,輸入mapFields-help快速顯示mapFields要求源案例目錄作為自變量。使用-consistent選項,因此應用程在cavityFine目錄執(zhí)行:mapFields../cavity-consistent應用程序將運行并在終端輸出:Source:"..""cavity"Target:".""cavityFine"CreatedatabasesastimeSourcetime:0.5Targettime:0.5CreatemeshesSourcemeshsize:400Targetmeshsize:1600Consistentlycreatingandmappingfieldsfortime0.5Open?FOAM-1.7.12.1Lid-drivencavityflowU-33interpolatingpinterpolatingUEnd2.1.5.4控制調整為保持Courant數小于1,見2.1.1.4節(jié)所討論的,由于所有單元的尺寸都評分了因此時間步長必須評分,因此controlDict文件中deltaT設為0.0025。流場數據在固定數目的時間步長間隔時輸出。此處演示如何在固定時間間隔指定數據輸出。在controlDict中的writeControl關鍵詞下,在用runTime輸入產生的輸出結果間指定一個固定數量的運行時間,而不是經過timeStep輸入固定書目的時間步來輸出。在該案例中,用戶應該指定沒0.1輸出,因此應設置writeInterval為0.1且writeControl為runTime。最終,由于案例是在粗網格結果上開始的,只需要運行很短的時間就能達到合理的收斂為穩(wěn)態(tài)。因此endTime設為0.7Squebao這些設置正確并保存文件。2.1.5.5運行代碼作為后臺過程用戶應該體驗運行icoFoam作為后臺程序,重新定向終端輸出到log文件,者在之后能夠看到。在cavityFine目錄下,用戶執(zhí)行:icoFoam>log&catlog2.1.5.6在細網格上繪制向量用戶能夠在ParaView中同時打開多個案例,這是由于本質上每個新的案例就是PipelineBrowser中一個新的模塊。當在ParaView中打開一個新的案例時有一個次要的不便,因為有一個前提,所選數據是一個帶有擴展名的文件??墒窃贠penFOAM中,每個案例存儲在指定目錄結構的大批沒有擴展名的文件中,paraFoam程序自動運行的結果,就是產生一個帶有擴展名.OpenFOAM的空白文件,因此,cavity案例模塊稱為cavity.OpenFOAM。然而,如果用戶希望在ParaView中直接打開另一個案例,就需要創(chuàng)立這樣一個空白文件。例如,為加載cavityFine案例,經過輸入下列命令來創(chuàng)立該文件:cd$FOAMRUN/tutorials/incompressible/icoFoamtouchcavityFine/cavityFine.OpenFOAM現在經過在File菜單選擇Open,而且經過瀏覽目錄選擇cavityFine.OpenFOAM,cavityFine案例能夠加載到ParaView中。用戶現在能夠在ParaView中由細網格繪制向量圖。經過同時使兩個案例的glyph激活,圖像能夠與cavity案例相比較。2.1.5.7繪制圖像用戶可能希望經過抽取一些速度標量及沿著穿過區(qū)域的軸線繪制2維圖像來使結果具體化。OpenFOAM對這種數據處理很在行。有無數的應用程序能夠做專門的數據處理,一些簡單的計算包括在一個單個的應用程序foamCalc中。作為一個應用程序,它是獨特的,因為它是這樣的:foamCalc<calcType><fieldName1...fieldNameN>在<calcType>中指定計算器操作;在輸出時,采用下列操作:addSubtract;randomise;div;components;mag;magGrad;magSqr;interpolate。用戶能夠經過故意調用一個不存在的操作來獲得<calcType>列表,因此foamCalc產生一個錯誤信息而且列出可用的類型,例如:>>foamCalcxxxxSelectingcalcTypexxxxunknowncalcTypetypexxxx,constructornotinhashtableValidcalcTypeselectionsare:8(randomisemagSqrmagGradaddSubtractdivmaginterpolatecomponents)components及magcalcTypes提供有用的速度標量。當在案例如cavity上運行”foamCalccomponentsU”時,它從每個時間文件中讀取速度矢量場,在相應的時間文件中,輸出標量場Ux,Uy,Uz分別代表速度的x,y,z分量。類似的,”foamCalcmagmagU”輸出一個標量場magU到每個時間文件中,代表速度的量級。用戶能夠在cavity及cavityFine案例上用componentscalcType運行foamCalc。例如,對于cavity案例,用戶應該進入cavity目錄并執(zhí)行foamCalc如下:cd/home/ying/RUN/tutorials/incompressible/icoFoam/cavityfoamCalccomponentsU單獨的分量能夠在ParaView中繪制成圖。這是很快速的,方便的,而且在標志及格式上有合理的好的控制,因此打印的輸出是相當好的標準品??墒菫榘l(fā)表圖像,用戶可能偏好輸出未加工的數據,然后用專門的圖像工具來繪制,比如gnuplot或Grace/xmgr。為此,我們推薦使用sample應用程序,見6.5節(jié)和2.2.3節(jié)。在開始繪制之前,用戶需要加載新產生的Ux,Uy及Uz場到ParaView中。為此,在所工作的基本模塊例如cavity.OpenFOAM中,需要檢查Properties面板頂部的UpdateGUI按鈕。點擊應用使新的場加載到ParaView中,將出現在VolFieldStatus窗口。確保已選擇新的場且改變得到應用,也就是說如果需要再次點擊Apply。同樣,如果在RegionStatus面板上選擇了boundaryregions,邊界上的數據插入錯誤。因此用戶應該取消RegionStatus面板中的邊界,也就是說movingWall,fixedWall及frontAndBack,然后應用這些改變。現在為了在ParaView中顯示圖像,用戶應該選擇所感興趣的模塊,例如cavity.OpenFOAM,從Filter->DataAnalysis菜單應用PlotOverLine。這在已存在的3DView窗口旁邊打開了一個新的XYPlot窗口,創(chuàng)立了一個ProbeLine模塊,在其中用戶能夠指定Properties面板中線條的終點。在這個例子中,用戶應該使線條在區(qū)域中心垂直向上,也就是說,在Point1和Point2文本框中,從(0.05,0,0.005)到(0.05,0.1,0.005),設置Resolution為100.點擊應用,在XYPlot窗口出現圖像,在Display面板,選擇2.1.6網格分級在cavityGrade/constant/polyMesh/blockMeshDict文件中,制定了分級等級,blockMesh根據blockMeshDict文件劃分網格。convertToMeters0.1;vertices((000)(0.500)(100)(00.50)(0.50.50)(10.50)(010)(0.510)(110)(000.1)(0.500.1)(100.1)(00.50.1)(0.50.50.1)(10.50.1)(010.1)(0.510.1)(110.1));blocks(hex(01439101312)(10101)simpleGrading(221)hex(125410111413)(10101)simpleGrading(0.521)hex(347612131615)(10101)simpleGrading(20.51)hex(458713141716)(10101)simpleGrading(0.50.51));edges();patches(wallmovingWall((615167)(716178))wallfixedWalls((312156)(09123)(01109)(121110)(251411)(581714))emptyfrontAndBack((0341)(1452)(3674)(4785)(9101312)(10111413)(12131615)(13141716)));mergePatchPairs();//*************************************************************************//在終端執(zhí)行:cd/home/ying/RUN/tutorials/incompressible/icoFoam/cavityGradeblockMeshparaFoam所形成的網格為靠近上下左右壁面處密集,中間稀疏,如右圖所示:2.1.6.2改變時間及時間步長靠近頂蓋的速度最大,單元最小,則最大的Co數產生于頂蓋附近,見2.1.1.4節(jié)所述,因此很有必要估計頂蓋附近的單元尺寸,以便計算合適的時間步。當使用非均勻網格梯度,blockMesh經過等比級數計算單元尺寸。沿著長度為l,有n個單元,最后一個單元與第一個單元之間的比例為R,最小單元的尺寸δxs為:(2.5)r為相鄰單元尺寸之比:對cavityGrade案例,在每個塊中沿各個方向的單元數為10,最大最小單元比為2,塊高寬為0.05m,因此最小的單元長度為3.45mm(l=0.05m,r=2^1/9=1.08,a=R=2),從公式2.2可知,為使Co<1,則時間步<3.45ms,為確保結果在合適的時間間隔輸出,時間步deltaT減小為2.5ms,設置writeInterval=40,因此每0.1s輸出一次,這些設置見cavityGrade/system/controlDict文件。startTime設為cavityFine案例的結束時間,也就是0.7,由于cavity和cavityFine在所指示的運行時間內收斂較好,能夠設置cavityGrade的運行時間為0.1s,也就是endTime為0.8.2.1.6.3映射流場如2.1.5.3節(jié),使用mapFields將cavityFine的最終結果映射到cavityGrade網格上,進入cavityGrade目錄并執(zhí)行mapFields:cd/home/ying/RUN/tutorials/incompressible/icoFoam/cavityGrademapFields../cavityFine-consistent現在從案例目錄運行icoFoam,而且監(jiān)視時間信息。查看該案例的收斂結果并經過后處理工具與其它結果作對比,見2.1.5.6節(jié)及2.1.5.7節(jié)所描述。2.1.7增加雷諾數之前所有案例的雷諾數都為10,這個數非常小很快產生穩(wěn)定解,在腔體底部拐角處僅有很小的二次漩渦。現在增加雷諾數到50,此時需要較長時間達到收斂,首先應用cavity案例中的粗網格,用戶應該復制cavity案例并命名為cavityHighRe:cd/home/ying/RUN/tutorials/incompressible/icoFoamcp-rcavitycavityHighRe2.1.7.1前處理進入cavityHighRe案例并編輯transportProperties文件。由于Re根據因數10增加,因此要根據因數10減少動力粘度,即1*10^-3m2s-1.從cavity案例結束處重新開始運行該案例。為此,設置startFrom關鍵詞為latestTime,以便icoFoam提取存儲在最近時刻文件(也就是0.5)中的初始數值,endTime設為2s.2.1.8高雷諾數流動2.1.8.1前處理改變cavity案例目錄到$FOAM_RUN/tutorials/incompressible/pisoFoam/-ras目錄下(注意:pisoFoam/ras目錄)。和之前一樣運行blockMesh產生網格,當使用帶有壁面函數的standardk?ε模型時,沒有必要使網格朝向壁面分級,這是由于近壁單元的流動已經建模,而不用分辨。在1.6版本以前,一系列壁面函數模型在OpenFOAM中可用,在單個的邊界上作為邊界條件來提供。這使得在不同的壁面區(qū)域能夠使用不同的壁面函數模型。壁面函數模型經過湍流粘度場來指定,在0/nut文件中的νt:dimensions[02-10000];internalFielduniform0;boundaryField{movingWall{typenutWallFunction;valueuniform0;}fixedWalls{typenutWallFunction;valueuniform0;}frontAndBack{typeempty;}}//*************************************************************************//這個案例使用標準壁面函數,在movingWall和fixedWalls由nutWallFunction關鍵詞指定,其它的壁面函數模型包括roughwallfunctions,由關鍵詞nutRoughWallFunction指定。用戶現在應該打開0/k及0/epsilon文件,檢查邊界條件。對壁面邊界條件,ε指定為epsilonWall-Function邊界條件,k指定為kqRwallFunction邊界條件,后者是一個一般的邊界條件,能夠提供給任何包括湍流動能類型的流場,例如k,q,或者雷諾應力R。k及ε的初始值由一個估計的波動速度分量U′,以及湍流長度尺度l來指定,k及ε由下列公式定義:此處Cμ是k?ε模型的常系數等于0.09,對笛卡爾坐標,k為:此處Ux'^2,Uy'^2及Uz'^2是波動速度在x,y,z方向的分量。假設初始湍流是各向同性的,即Ux^2=Uy^2=Uz^2,等于頂蓋速度的5%,l等于盒子寬度0.1m的20%,因此k及ε為:這形成了k及ε的初始條件,U及p的初始條件分別為(0,0,0)及0,和之前一樣。優(yōu)先于OpenFOAM1.6版本,湍流模擬方法的類型,例如RAS或者大渦模擬(LES)在每個求解器中都聲明了。這導致在求解器應用時有很多的重復代碼,在大部分使用RAS湍流模擬的求解器處,將會有等量的LES求解器。然而在1.6版本中,湍流模擬方法是在運行時間選擇的,經過在turbulenceProperties文件中的simulationType關鍵詞,用戶能夠看到://*************************************//simulationTypeRASModel;//*************************************************************************//simulationType的選擇有l(wèi)aminar,RASModelandLESModel,在這個案例中選擇RASModel,RAS模擬在RASProperties文件中指定,也在constant目錄中。湍流模型由RASModel選擇,從表3.9所列的一長串可用模型中。應該選擇kEpsilon模型,這是標準k?ε模型;用戶還需確保湍流計算是開啟的。每個湍流模型的系數存儲在各自的代碼中,有一系列的默認值。設置printCoeffs為on,當模型在運行時間調用時,就使默認值輸出為標準輸出,也就是說終端,系數作為子目錄輸出,文件名為模型名字帶有Coeffs的附加字樣,例如,在kEpsilon模型案例中的kEpsilonCoeffs。模型(例如kEpsilon)系數能夠修正,經過可選地包括那個子目錄在RASProperties目錄中,然后相應地調整值。用戶下一步要在transportProperties中設置層流動力粘度,為使Re=10^4,根據方程2.1對Re定義,則動力粘度為10^-5。最后,需要早controlDict文件中設置startTime,stopTime,deltaT以及writeInterval,設置deltaT為0.005以滿足Co數研制,設置endTime=10s。2.1.8.2運行代碼進入案例目錄并輸入”pisoFoam”來執(zhí)行,在該案例中,粘度很低,緊貼移動頂蓋的邊界層很薄,頂蓋附近的單元相對較大,因此單元中心的速度遠小于頂蓋速度。事實上,在100個時間步之后,很明顯地與頂蓋相鄰的單元速度達到一個上限大約為0.2ms^-1,因此最大Co數沒有超過0.2很多。經過增加時間步使Co數更接近1,從而增加求解時間的做法是很明智的,因此重設deltaT為0.02s,而且在這種情況下,設置startFrom為latestTime,這指示pisoFoam從最后時刻文件讀取起始數據,也就是說10.0.endTime應該設為20s,因為運行收斂遠比層流情況要慢。如前重新運行,監(jiān)控收斂解。查看串行時間步的結果,作為結果的進步,看解是否收斂到穩(wěn)態(tài),或者可能達到周期震蕩狀態(tài)。在后一種情況下,可能無法達到收斂,但這并不意味著結果不準確。2.1.9改變案例幾何結構用戶可能希望改變案例的幾何結構,運行一個新的模擬??赡苄枰3忠徊糠只蛩性冀Y果作為新模擬的開始工況。這有點復雜因為原始解的流場與新案例的并不一致??墒莔apFields應用程序能夠映射不一致的流場,幾何形狀或邊界類型都能夠。作為是示范,進入icoFoam目錄中的cavityClipped案例,這由標準cavity幾何結構組成,可是在腔體的底部右端去除了一個邊長為0.04m的正方形,這是根據blockMeshDict形成的:convertToMeters0.1;vertices((000)(0.600)(00.40)(0.60.40)(10.40)(010)(0.610)(110)(000.1)(0.600.1)(00.40.1)(0.60.40.1)(10.40.1)(010.1)(0.610.1)(110.1));blocks(hex(0132891110)(1281)simpleGrading(111)hex(236510111413)(12121)simpleGrading(111)hex(347611121514)(8121)simpleGrading(111));edges();patches(walllid((513146)(614157))wallfixedWalls((08102)(210135)(715124)(412113)(31191)(1980))emptyfrontAndBack((0231)(2563)(3674)(891110)(10111413)(11121514)));mergePatchPairs();//*************************************************************************//用blockMesh產生網格,邊界設置與之前cavity案例一樣,為在描述場映射過程清晰起見,上壁面邊界重命名為lid,原始的cavity中為movingWall邊界。在非一致映射中,不能擔保所有的場數據都能從源案例中映射過來。殘留的數據一定來自目標案例自身的流場文件。因此,在映射之前,流場數據一定要存在于目標案例的時間文件中。在cavityClipped案例中,設映射開始時間為0.5s,這是由于controlDict中startTime設為0.5s,因此用戶需要復制初始場數據到該目錄下,例如,從時刻0:cd$FOAMRUN/tutorials/incompressible/icoFoam/cavityClippedcp-r00.5在映射數據之前,英乎應該查看幾何形狀及0.5s的流場。現在要從cavity中映射速度及壓力場到cavityClipped中,由于映射是不一致的,需要編輯位于system目錄的mapFieldsDict文件,該文件包括兩個關鍵詞輸入:patchMap及cuttingPatches。patchMap列表包括從源場到目的場的邊界映射,用于當用戶需要在目標場中集成源場中相應邊界值時。在cavityClipped中,我們希望從cavity的movingWall集成lid處的邊界值,因此必須設置patchMap為:patchMap(lidmovingWall);cuttingPatches列表包括目標邊界的名字,它的值從源內部場映射過來,目標邊界經過該內部場剪切。在這種情況下,包括fixedWalls來顯示修改(插值)過程:cuttingPatches(fixedWalls);現在用戶從cavityClipped目錄運行mapFields:mapFields../cavity用戶能夠觀察映射場如圖2.13,正如所期望的,從源案例繼承了邊界值,可是實際上我們希望在fixedWalls邊界上重設速度為(0,0,0)。編輯U場,進入fixedWalls邊界,流場由nonuniform改為uniform(0,0,0),nonuniform是一系列要求整體刪除的值,現在用icoFoam運行案例。2.1.10后處理修正的幾何結構速度圖能夠如正常案例一樣產生,為比較最初及最后結果,首先是在時刻0.5s之后是時刻0.6s,另外,提供了幾何結構的輪廓,它要求在產生2D案例時要小心。用戶應從Filter菜單選擇ExtractBlock,在Parame

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論