su_junwei 发表于 2009-5-2 07:33:50

[转载]OpenFOAM中的参数字典使用剖析

对于模型参数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 5.952e-06;
加速度矢量
g               g (0 0 0);

字典可以分组,成为子字典(subDict)
如大涡一方程模型参数设置
oneEqEddyCoeffs//子字典名字
{
    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研究:http://blog.sina.com.cn/openfoamresearch

[ 本帖最后由 su_junwei 于 2009-5-2 18:27 编辑 ]
页: [1]
查看完整版本: [转载]OpenFOAM中的参数字典使用剖析