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进行编译,编译结果如下:

640.webp.jpg

在终端中输入:Test-filename,输出结果如下:

640.webp (1).jpg

640.webp (2).jpg

在etc文件夹下新建一个badName文件,再执行以下可以Test-fileName命令输出结果如下:

640.webp (3).jpg

这次的内容就到此为止,注在4.0版本中需将最后一个头文件改成#include "etcFiles.H",findEtcFile函数的申明换到了etcFile.H中。

个人理解,如有错误敬请谅解,欢迎提出共同进步。


也欢迎正在学习openFoam同学关注免费试用EasyCAE云仿真平台

默认 最新
当前暂无评论,小编等你评论哦!
点赞 6 评论 收藏
关注