OpenFOAM中的參數(shù)字典使用剖析

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。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容