找回密码
 注册
查看: 2870|回复: 0

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

[复制链接]
发表于 2009-5-2 07:33:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
对于模型参数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)
如大涡一方程模型参数设置
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 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表