openFoam测试代码文件
OpenFoam作为强大的开源计算流体工具,同时又是很多功能强大的C++类库,因此,其在用户根据自己特定的问题通过修改某个求解器或工具,就能很方便的实现对这一问题的解决。但是OpenFoam的类非常庞大,而且对很多类进行了封装,因此,对于初学者来说,对OpenFoam中类的使用难度比较大,好在OpenFoam中applications\test文件夹中有对一些常用的类示例,用户对示例的例子的研究能对各个类的使用有更深的理解。本次小编就看一下test文件夹中的例子。
首先,我们先来看一下fileName这个文件夹,文件夹中含有一个Test-fileName.c文件和Make文件夹,Make文件夹中是files文件和options文件。files文件是申明编译文件和编译后可执行文件或库的所在位置和名字,options文件是编译过程的依赖库的位置。
下面我们来看一下Test-fileName.c文件。
#include "fileName.H"//fileName类的头文件,该类用来处理文件名的,由没有空格和引号的字符串组成
#include "SubList.H"//SubList类头文件,用于从一个列表中获得一个子列表
#include "IOobject.H"//定义了对象的一些由objectRegistry隐式管理时所需要的属性,同时还提供了基础性的输入/输出流。
#include "IOstreams.H"//IOstreams结合了输入输出流等头文件
#include "OSspecific.H"
using namespace Foam;//使用Foam的命名空间
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Main program:
int main()
{
wordList wrdList(5);//创建wrdList对象,可由char和string等类型构造
wrdList[0] = "hello";
wrdList[1] = "hello1";
wrdList[2] = "hello2";
wrdList[3] = "hello3";
wrdList[4] = "hello4.hmm";
fileName pathName(wrdList);//由word列表对象,构造创建pathName对象,为文件路径和名字
Info<< "pathName = " << pathName << nl//输出文件路径
<< "pathName.name() = >" << pathName.name() << "<\n"//输出pathName对象的文件名
<< "pathName.path() = " << pathName.path() << nl//输出pathName对象的路径
<< "pathName.ext() = >" << pathName.ext() << "<\n"//输出文件名的后缀
<< "pathName.name(true) = >" << pathName.name(true) << "<\n";\\输出文件名不含后缀的部分
Info<< "pathName.components() = " << pathName.components() << nl\\输出pathName对象的路径的各个分量
<< "pathName.component(2) = " << pathName.component(2) << nl\\输出pathName对象路径的第三个分量
<< endl;
// try with different combination
// The final one should emit warnings
for (label start = 0; start <= wrdList.size(); ++start)
{
fileName instance, local;//创建instance、local对象
word name;//创建word对象
fileName path(SubList<word>(wrdList, wrdList.size()-start, start));//用wrdList的子列表构建path对象,子列表从start位置开始,长度为wrdList.size()-start。
fileName path2 = "."/path;//由"."/path构建path2对象
IOobject::fileNameComponents
(
path,
instance,
local,
name
);//调用IOobject中的fileNameComponents函数获得instance、local和name的值
Info<< "IOobject::fileNameComponents for " << path << nl
<< " instance = " << instance << nl
<< " local = " << local << nl
<< " name = " << name << endl;
IOobject::fileNameComponents
(
path2,
instance,
local,
name
);
Info<< "IOobject::fileNameComponents for " << path2 << nl
<< " instance = " << instance << nl
<< " local = " << local << nl
<< " name = " << name << endl;
}
Info<< "\n\nfindEtcFile tests:" << nl
<< " controlDict => " << findEtcFile("controlDict") << nl//findEtcFile("controlDict")函数用于查找安装路径下etc文件夹下的文件并返回文件路径,找不到放回空值
<< " badName => " << findEtcFile("badName") << endl;
Info<< "This should emit a fatal error:" << endl;
Info<< " badName(die) => " << findEtcFile("badName", true) << nl
<< endl;//findEtcFile("badName",true)用于判断etc文件夹下文件是否存在,存在则返回文件路径,不存在则跳出程序报出文件不存在的提示。
Info<< "\nEnd\n" << endl;
return 0;
}
在fileName文件夹下打开终端,输入wmake进行编译,编译结果如下:
在终端中输入:Test-filename,输出结果如下:
在etc文件夹下新建一个badName文件,再执行以下可以Test-fileName命令输出结果如下:
这次的内容就到此为止,注在4.0版本中需将最后一个头文件改成#include "etcFiles.H",findEtcFile函数的申明换到了etcFile.H中。
个人理解,如有错误敬请谅解,欢迎提出共同进步。
也欢迎正在学习openFoam同学关注免费试用EasyCAE云仿真平台。