OpenFOAM中的参数字典使用剖析

Original post (http://blog.sina.com.cn/s/blog_5fdfa7e60100d6my.html)

对于模型参数OpenFOAM采用了参数字典dictionary来由用户指定,参数字典的使用,对参数设置及其新模型的OpenFOAM扩充至关重要。本文从参数字典类对象构建,字典文件设置,字典查询对参数字典类的使用进行详解。

(1)字典构建

对字典类对象构建通常采用如下形式

IOdictionary ObjectName
    (
        IOobject
        (
            "dictionaryFileName",
            runTime.constant(),
            mesh,
            IOobject::MUST_READ,
            IOobject::NO_WRITE
        )
    );

其中:ObjectName和“dictionaryFileName”换成你要构建对象名字和字典文件名字。

(2)字典文件设置

典型参数类型设置方法:

scalar,label,word 类型:
关键字 值;
如参数C1的值为0.1,则可设置为
C1 0.1;

带有单位的类型dimensionedScalar(带有单位的标量)
关键字 创建的参数名字 参数单位 值;
如 黏性设置
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)
如大涡一方程模型参数设置

{
    ck               0.07; //参数
    ce               1.05; //参数
}

子字典还可以有子字典以此类推。

(3)字典的查询

通过字典文件设定参数以便在程序中使用。
label,scalar 类型查询
比如查询ObjectName字典中参数C1的值,将其值付给变量Vc1,;
scalar Vc1(readScalar(ObjectName.lookup("C1"));

查询带单位的量,比如查询黏性
dimensionedScalar nu(ObjectName.lookup("nu"));
查询加速度
dimensionedVector g(ObjectName.lookup("g"));
注意对于基本类型label或者scalar需要使用readLabel 或者 readScalar两个函数,而对于带单位的量直接查询就可以了。

子字典查询

如查询oneEqEddyCoeffs下的ck
dimensionedScalar ck(readScalar(ObjectName.subDict("oneEqEddyCoeffs").lookup("ck")));
如果子字典还有子字典,则连续使用subDict。

你可能感兴趣的:(OpenFOAM中的参数字典使用剖析)