下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
|---icoFoam求解器名稱|-createFields.H場(chǎng)變量的聲明和初始化—————————————————————————————————————————————Info<<"ReadingtransportProperties\n"<<endl;//屏幕提示讀入?yún)?shù)控制文件,等價(jià)于C++中std::cout//聲明屬性字典類對(duì)象,該對(duì)象由constant文件夾下的“transportProperties”初始化創(chuàng)建。IOdictionarytransportProperties(IOobject//其實(shí)IOobject,顧名思義就是輸入輸出對(duì)象,它完成的是一個(gè)橋梁的作用,即連接要構(gòu)造的類及硬盤中的相應(yīng)文件。這可以通過(guò)其成員函數(shù)objectStream()了解到,當(dāng)完成了“搭橋”之后,便可通過(guò)這一成員函數(shù)返回硬盤文件對(duì)應(yīng)的輸入流,從而從輸入流中讀入將要構(gòu)造的類的相關(guān)信息//("transportProperties",//文件名稱runTime.constant(),//文件位置,case/constantmesh,//網(wǎng)格對(duì)象IOobject::MUST_READ_IF_MODIFIED,//如果更改,必須讀入IOobject::NO_WRITE//不對(duì)該文件進(jìn)行寫操作));//字典查詢黏性,以便初始化帶有單位的標(biāo)量dimensionedScalarnu(transportProperties.lookup("nu")); //屏幕提示創(chuàng)建壓力場(chǎng)Info<<"Readingfieldp\n"<<endl;//創(chuàng)建壓力場(chǎng)volScalarFieldp//聲明一個(gè)帶單位的標(biāo)量場(chǎng),網(wǎng)格中心存儲(chǔ)變量。(IOobject//IOobject主要從事輸入輸出控制("p",//壓力場(chǎng)初始文件名稱runTime.timeName(),//文件位置,由case中的system/controlDict中的startTime控制//Tips:runTime是類Time的一個(gè)對(duì)象,runTime.timeName()其實(shí)就是當(dāng)前運(yùn)行到的物理時(shí)間(非穩(wěn)態(tài)物理問(wèn)題的時(shí)間),你程序運(yùn)行到了5.1s,runTime.timeName()就會(huì)將字符串“5.1”返回給你,OpenFOAM在對(duì)不同時(shí)刻的數(shù)據(jù)進(jìn)行存取的時(shí)候就是靠著這個(gè)字符串。runTime.constant()返回的就是case下那個(gè)constant文件夾的名字,這個(gè)名字可以改的,默認(rèn)為constant。OpenFOAM根據(jù)case文件夾里面的system/controlDict里面對(duì)輸出的設(shè)置來(lái)確定當(dāng)前時(shí)刻時(shí)候輸出,如果當(dāng)前時(shí)刻輸出的話,outputTime()就為true,就輸出數(shù)據(jù)了//mesh,//網(wǎng)格對(duì)象,主要從事對(duì)象注冊(cè),以便由runTime.write()控制輸出IOobject::MUST_READ,//必須讀入IOobject::AUTO_WRITE//根據(jù)controlDict中的設(shè)置進(jìn)行自動(dòng)write),mesh//速度場(chǎng)所用的網(wǎng)格對(duì)象,在createMesh.H創(chuàng)建);//提示并創(chuàng)建速度場(chǎng),向量場(chǎng),體儲(chǔ)存變量Info<<"ReadingfieldU\n"<<endl;volVectorFieldU(IOobject("U",runTime.timeName(),mesh,IOobject::MUST_READ,IOobject::AUTO_WRITE),mesh);//創(chuàng)建界面流率#include"createPhi.H"http://把createPhi.H中的代碼加進(jìn)程序里面去//表面場(chǎng),phi,界面流率,儲(chǔ)存在體之間的交界面上。表面場(chǎng)(surface…)不能和體積場(chǎng)(vol…)直接計(jì)算,因?yàn)樗麄儍?chǔ)存在不同的地方,大小不同??梢詫Ⅲw積場(chǎng)轉(zhuǎn)化為表面場(chǎng)(運(yùn)用fvc::interpplate()),或者由表面場(chǎng)轉(zhuǎn)化為體積場(chǎng)(運(yùn)用fvc::reconstruct())進(jìn)行計(jì)算。代碼位于src?finiteVolume?cfdTools?incompressible如下:surfaceScalarFieldphi(IOobject(“phi”,runtime.timeName(),mesh,IOobject::No_READ,IOobject::AUTO_WRITE,),fvc::interpolate(U)&mesh.sf()//U是體積場(chǎng),運(yùn)用插值轉(zhuǎn)為表面場(chǎng)和表面積場(chǎng)進(jìn)行相乘來(lái)初始化流率,mesh.Sf()返回網(wǎng)格交接面面積矢量。);//設(shè)定壓力參考cell的index和參考值//只有求解區(qū)域所有的壓力邊界都為第二類邊界條件是,下面的值才會(huì)用到。如果有第一類邊界條件。//壓力參考值為這點(diǎn)邊界值。對(duì)于不可壓縮流動(dòng)壓力值為相對(duì)值,下面的參考值的大小對(duì)結(jié)果無(wú)影響。labelpRefCell=0;scalarpRefValue=0.0;//通過(guò)查詢system/fvSolution下的PISO進(jìn)行更新壓力參考cell更新并設(shè)定參考值setRefCell(p,mesh.solutionDict().subDict("PISO"),pRefCell,pRefValue);—————————————————————————————————————————————|-icoFoam.C求解器主程序—————————————————————————————————————————————#include"fvCFD.H"http://主程序入口intmain(intargc,char*argv[]){#include"setRootCase.H"http://創(chuàng)建case根目錄,位于src/OpenFoam/include#include"createTime.H"http://創(chuàng)建time對(duì)象runTime,位于src/OpenFoam/include#include"createMesh.H"http://創(chuàng)建網(wǎng)格對(duì)象mesh,位于src/OpenFoam/include#include"createFields.H"http://創(chuàng)建場(chǎng)對(duì)象,位于src/OpenFoam/include#include"initContinuityErrs.H"http://創(chuàng)建連續(xù)性誤差,位于src/OpenFoam/includeInfo<<"\nStartingtimeloop\n"<<endl;//提示開(kāi)始時(shí)間循環(huán)while(runTime.loop())//如果時(shí)間不是0,開(kāi)始循環(huán){Info<<"Time="<<runTime.timeName()<<nl<<endl;//顯示當(dāng)前物理時(shí)間//讀入piso控制參數(shù),寫在runTime循環(huán)中,以便運(yùn)行過(guò)程中的修改生效,位于src?finiteVolume?cfdTools?general?include#include"readPISOControls.H"#include"CourantNo.H"http://計(jì)算courant數(shù),位于src/finiteVolume/cfdTools/incompressiblefvVectorMatrixUEqn//構(gòu)造速度方程(fvm::ddt(U)//隱式離散生成矩陣類,該項(xiàng)會(huì)被加到UEqn中的A上+fvm::div(phi,U)//隱式離散矩陣類,該項(xiàng)加到UEqn中的A上-fvm::laplacian(nu,U)//隱式離散,該項(xiàng)從UEqn中的A上減下來(lái),因?yàn)榍懊媸秦?fù)號(hào)。);//應(yīng)當(dāng)指出上面方程中并沒(méi)有包含grad(p),動(dòng)量方程中所有的項(xiàng)要么在壓力方程中要么在動(dòng)量方程中,而不同時(shí)在兩個(gè)方程中。//求解動(dòng)量方程,下面方程中的p由上一時(shí)刻p計(jì)算,下面求解稱為速度預(yù)測(cè)。solve(UEqn==-fvc::grad(p));//---PISOloop----速度修正步for(intcorr=0;corr<nCorr;corr++){//根據(jù)預(yù)測(cè)的速度值求解系數(shù)矩陣對(duì)角元素的倒數(shù)volScalarFieldrAU(1.0/UEqn.A());//更新速度,SeeHrvJasak'sthesiseqn.3.137andHenrikRusche'sthesis,eqn.2.43U=rAU*UEqn.H();//計(jì)算表面流律//ddtPhiCorr用來(lái)考慮差值速度場(chǎng)計(jì)算的流律和實(shí)際流律的差別phi=(fvc::interpolate(U)&mesh.Sf())+fvc::ddtPhiCorr(rAU,U,phi);adjustPhi(phi,U,p);//調(diào)整邊值,以便滿足連續(xù)性條件//網(wǎng)格非正交性循環(huán),如果網(wǎng)格是正交的,可以設(shè)定nNonOrthCorr=1for(intnonOrth=0;nonOrth<=nNonOrthCorr;nonOrth++){//設(shè)定壓力方程并進(jìn)行求解fvScalarMatrixpEqn(fvm::laplacian(rAU,p)==fvc::div(phi));pEqn.setReference(pRefCell,pRefValue);pEqn.solve();//根據(jù)新求解的壓力,更新表面流律if(nonOrth==nNonOrthCorr){phi-=pEqn.flux();}}//計(jì)算連續(xù)性方程誤差,位于src/finiteVolume/cfdTools/incompressible#include"continuityErrs.H"http://根據(jù)新的壓力,修正速度U-=rAU*fvc::grad(p);//修正速度邊界(主要針對(duì)第二類邊界條件)U.correctBoundaryConditions();}runTime.write();//輸出計(jì)算結(jié)果
//顯示執(zhí)行時(shí)間,CPU時(shí)間Info<<"ExecutionTime="<<runTime.elapsedCpuTime()<<"s"<<"ClockTime="<<runTime.elapsedClockTime()<<"s"<<nl<<endl;}//endofthetimesteploop//提示運(yùn)行結(jié)束。Info<<"End\n"<<endl;//返回0return0;}—————————————————————————————————————————————|-icoFoam.dep依賴文件|-Make|-files編譯需要的源程序文件和生成的目標(biāo)文件files文件主要干兩件事(1)指定哪些文件需要編譯,這里的文件是代碼文件,也就是.C文件,而不包括.H文件(2)指定你要編譯的類型,是編譯成庫(kù),還是編譯成可執(zhí)行文件,以及編譯成的庫(kù)文件或者可執(zhí)行文件的名字。下面是icoFoam的Make文件夾下的files文件的內(nèi)容—————————————————————————————————————————————icoFoam.CEXE=$(FOAM_APPBIN)/icoFoam—————————————————————————————————————————————要編譯的代碼文件直接將名字寫到里面就行了(icoFoam.C),如果有多個(gè)代碼文件,直接一個(gè)一個(gè)列在上面就行了
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧餐廳推廣方案
- 智慧養(yǎng)老系統(tǒng)解決方案
- 2023年電子銀漿資金籌措計(jì)劃書
- 卡通襪子課件教學(xué)課件
- 武術(shù)課件制作教學(xué)課件
- 印染剪紙課件教學(xué)課件
- 誠(chéng)子書課件教學(xué)課件
- 4.1 原電池 第2課時(shí) 課件高二上學(xué)期化學(xué)人教版(2019)選擇性必修1
- 酒店用品解決方案
- 不負(fù)人民課件教學(xué)課件
- ??谑邪踩a(chǎn)事故應(yīng)急救援預(yù)案(中安科修編稿)
- 淺談鋼-混凝土疊合板組合梁
- 23001料倉(cāng)制作安裝施工工藝標(biāo)準(zhǔn)修改稿
- 學(xué)習(xí)的最高境界叫巔峰學(xué)習(xí)狀態(tài)
- 3211 城市公交企業(yè)安全風(fēng)險(xiǎn)分級(jí)管控指南
- 行政管理 外文翻譯 外文文獻(xiàn) 英文文獻(xiàn) 全球媒體和政治:跨國(guó)溝通制度和公民文化
- 北京市房屋建筑和市政基礎(chǔ)設(shè)施工程危險(xiǎn)性較大的分部分項(xiàng)工程安全管理實(shí)施細(xì)則
- 議論文段落寫作——茹清平
- (完整版)駕駛員違章違規(guī)處罰辦法
- “六項(xiàng)機(jī)制”工作實(shí)施方案
- 精神病問(wèn)診過(guò)程示例
評(píng)論
0/150
提交評(píng)論