|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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 编辑 ] |
|