前處理主要包括:網格的生成,物理參數的設定,初始邊界條件的設定,求解控制設定,方程求解方法的選擇,離散格式的選擇。
網格生成:
OpenFOAM帶有自己的網格生成功能blockMesh,他可以生成塊結構化網格,使用比較簡單,但對於複雜幾何,該功能實施比較複雜。
可以採用其網格軟件如:gridgen,pointwise,gambit,icemcfd,tetgen,gmesh,ansys等生成網格,通過網格轉換功能將其轉換爲openfoam可識別的網格。我本人通常採用gridgen生成fluent網格,再採用fluentMeshToFaom功能轉換爲openfoam可識別網格。
物理參數的設置:
OpenFOAM中的物理參數文件都在當前case文件夾裏面的constant文件夾中,裏面常用的文件通常常有
environmentalProperties:設定環境參數,重力加速度
transportProperties:傳輸相關參數,比如黏性,密度,對於非牛頓流體的黏性模型及其參數等
LESProperties:大渦模型及其相關的模型參數
RASProperties: 雷諾時均模型及其相關模型參數
thermodynamicProperties:熱物理相關參數
這些文件的名字由solver裏面定義,可以任意更改,上面書寫是openfoam中的一個慣例,至於如何更改,請參看solver說明。
初始邊界條件的設定:
初始條件和邊界條件設定都在case文件夾中的0文件夾中,在Openfoam中,每個求解變量都有自己的單獨的求解文件,下面以/OpenFOAM/OpenFOAM-1.5/tutorials/icoFoam/cavity/0/p壓力文件爲例進行說明
FoamFile //文件頭
{
version 2.0; //版本號
format ascii; //存儲形式二進制或者ascii
class volScalarField;//場的類型,體心標量場
object p; //場的名字
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//場的單位,應當注意這裏的壓強單位並非實際壓強,而是壓強除去密度(p/rho)的單位
//因爲openfoam對動量方程直接求解的速度
dimensions [0 2 -2 0 0 0 0];
//初始條件:內部場爲均勻場,所有全爲0,如果不均勻場則採用setField或者funkySetField對初始場進行//設置,如何使用這些功能,以後再說明。
internalField uniform 0;
//邊界條件
boundaryField
{
movingWall //邊界名字
{
type zeroGradient; //邊界條件爲第二類邊界條件,梯度爲0
}
fixedWallsm //邊界名字
{
type zeroGradient;//邊界條件爲第二類邊界條件,梯度爲0
}
frontAndBack //邊界名字
{
//空邊界條件,說明求解是二維流動,這個在openFOAM是獨有的,如果遇到該類邊界,該邊界不參與方程離//散,也就是什麼都不做。
type empty;
}
}
求解控制設定:
文件爲system/controlDict,典型的controlDict文件如下
//文件頭
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//當前case所用求解器的名字
application icoFoam;
//程序從什麼時候開始執行,startTime開始
startFrom startTime;
//startTime 設定爲0,即從0時刻開始執行
startTime 0;
//程序什麼時候結束,endTime結束
stopAt endTime;
//程序結束時間
endTime 0.5;
//當前算例的時間步長
deltaT 0.005;
//以什麼方式寫文件,按照時間步長寫(也可以爲runTime,即按照時間來些)
writeControl timeStep;
//20個時間步長,20*timeStep寫一次;(如果按照時間來寫的話爲1)
writeInterval 20;
//寫過程是否覆蓋,如果0則不覆蓋,大於0爲覆蓋,比如:2,case文件家中只有輸出文件 比如6 和 7,//當算到8時候,會覆蓋6,9會覆蓋8,以此類推
purgeWrite 0;
//寫的格式ascii或者binary
writeFormat ascii;
//文件寫入精度
writePrecision 6;
//是否對生成數據進行壓縮,壓縮的話會戰較少空間。uncompressed/compressed;
writeCompression uncompressed;
//時間文件夾格式:fixed m.ddddd(d的個數取決於下面的timePrecision),scientific :採用科學計數//法,general:科學計數法指數小於-4用指數,大於-4用小數
timeFormat general;
//時間文件夾精度
timePrecision