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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容