Original post (http://blog.sina.com.cn/s/blog_5fdfa7e60100d6my.html)
對于模型參數(shù)OpenFOAM采用了參數(shù)字典dictionary來由用戶指定,參數(shù)字典的使用,對參數(shù)設(shè)置及其新模型的OpenFOAM擴充至關(guān)重要。本文從參數(shù)字典類對象構(gòu)建,字典文件設(shè)置,字典查詢對參數(shù)字典類的使用進行詳解。
(1)字典構(gòu)建
對字典類對象構(gòu)建通常采用如下形式
IOdictionary ObjectName
(
IOobject
(
"dictionaryFileName",
runTime.constant(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
)
);
其中:ObjectName和“dictionaryFileName”換成你要構(gòu)建對象名字和字典文件名字。
(2)字典文件設(shè)置
典型參數(shù)類型設(shè)置方法:
scalar,label,word 類型:
關(guān)鍵字 值;
如參數(shù)C1的值為0.1,則可設(shè)置為
C1 0.1;
帶有單位的類型dimensionedScalar(帶有單位的標(biāo)量)
關(guān)鍵字 創(chuàng)建的參數(shù)名字 參數(shù)單位 值;
如 黏性設(shè)置
nu nu [0 2 -1 0 0 0 0] 5.952e-06;
加速度矢量
g g [0 1 -2 0 0 0 0] (0 0 0);
字典可以分組,成為子字典(subDict)
如大渦一方程模型參數(shù)設(shè)置
{
ck 0.07; //參數(shù)
ce 1.05; //參數(shù)
}
子字典還可以有子字典以此類推。
(3)字典的查詢
通過字典文件設(shè)定參數(shù)以便在程序中使用。
label,scalar 類型查詢
比如查詢ObjectName字典中參數(shù)C1的值,將其值付給變量Vc1,;
scalar Vc1(readScalar(ObjectName.lookup("C1"));
查詢帶單位的量,比如查詢黏性
dimensionedScalar nu(ObjectName.lookup("nu"));
查詢加速度
dimensionedVector g(ObjectName.lookup("g"));
注意對于基本類型label或者scalar需要使用readLabel 或者 readScalar兩個函數(shù),而對于帶單位的量直接查詢就可以了。
子字典查詢
如查詢oneEqEddyCoeffs下的ck
dimensionedScalar ck(readScalar(ObjectName.subDict("oneEqEddyCoeffs").lookup("ck")));
如果子字典還有子字典,則連續(xù)使用subDict。