吾生有涯 学海无涯
析模有界 知识无界

OpenFOAM|04 OF的文件结构

内容纲要

本文描述OpenFOAM的文件组织结构。

1 环境变量与别名

当OpenFOAM安装完毕后,会在系统中创建大量的环境变量,这些环境变量可以通过下面的命令显示出来。

env | grep -i "OpenFOAM"

如下图所示。环境变量可以利用符号$进行引用。

除环境变量外,OpenFOAM还创建了大量的别名以方便使用。可以通过下面的命令查看所有的别名。

alias | grep -i "FOAM"

显示过如下图所示。

可以在下面的两个文件中任意添加和删改别名。

$WM_PROJECT_DIR/etc/config.sh/aliases
$WM_PROJECT_DIR/etc/config.csh/aliases

别名创建完毕后,可以在终端中直接输入别名,其效果等效于输入别名所引用的内容。如在终端输入:

app

其效果相当于输入命令cd $FOAM_APP,如下图所示。

2 文件结构

当OpenFOAM安装在默认路径下时,其所有文件被放置在环境变量$WM_PROJECT_DIR中,若安装的是OpenFOAM 8版本,则该路径为/opt/openfoam8。该文件夹下的文件结构如下图所示。(淡黄色为文件夹,绿色为文件)

需要注意,对这个文件夹中任何文件进行修改都会应当整个OpenFOAM库。除非你知道自己在做什么,否则一般不建议修改此文件夹中的任何内容。

2.1 applications文件夹

application文件夹中包含三个子文件夹以及一个名为Allwmake的脚本文件。文件组织结构如下图所示。

注:

application文件夹可以通过在终端输入app快速访问。

application文件夹中的子文件夹:

  • solvers:其中包含所有发布的求解器对应的源代码
  • test:包含一些测试用例的源代码
  • utilities:包含所有发布的使用程序锁对应的源代码

还有一个Allwmake脚本,运行该脚本将编译solversutilities文件夹中的所有内容。若要编译test文件夹中的测试案例,可以转到所需的测试用例目录,然后通过键入wmake进行编译。

2.2 bin文件夹

bin文件夹中包含有大量可用脚本,如下图所示。如常用的foamGet、foamMonitor等。

2.3 doc文件夹

doc文件夹中包含了与OpenFOAM相关的帮助文档,其文件夹包含的内容如下图所示。

其中Guides中包含两个内容相同的用户文档(一个用于打印,一个用于电脑上查看),Doxygen文件夹中包含有未编译的类库相关文档,可进入该文件夹中利用命令Allwmake doc编译得到网页文件,编译得到的文档内容与网址 http://cpp.openfoam.org/v8处的内容一致,建议在线查看。

2.4 etc文件夹

etc文件夹中包含环境文件、OpenFOAM全局指令、模板以及默认的热力学数据库。

caseDicts目录中,可以找到许多与OpenFOAM中用于设置案例输入文件相关的模板,建议花一些时间浏览这些文件。

2.5 platforms文件夹

该目录中包含编译applications目录时生成的二进制文件,以及通过编译src目录中的源代码生成的库。

编译后,二进制文件放置于目录$WM_PROJECT_DIR/platforms/linux64GccDPInt32OptSYSTEMOPENMPI/bin及$WM_PROJECT_DIR/platforms/linux64GccDPOpt/lib`中

若有库文件编译,则编译后库文件放置于$WM_PROJECT_DIR/platforms/linux64GccDPInt32OptSYSTEMOPENMPI/lib中。

2.6 src文件夹

src文件夹中存放所有基础库的源代码,此文件夹是OpenFOAM的核心。

该文件夹中包含了非常多的子文件夹,每个子文件夹中包含了多个库。

一些重要的文件夹包括:

  • OpenFOAM:该核心库包括用于操作的容器定义、场定义、网格和网格特征的声明。
  • finiteVolume:该库提供了有限体积离散化所需的所有类,例如网格处理、有限体积法离散化算子(散度、拉普拉斯、梯度、FVC/FVM等)和边界条件。在文件夹finiteVolume/lnInclude中可以找到OpenFOAM中绝大多数求解器所需的头文件fvCFD.H
  • MomentumTransportModels:该文件夹中包含了大量湍流模型
  • sixDoFRigidBodyMotion:该核心库包含刚体运动求解器
  • transportModels:该库中包含多种输运模型

2.7 tutorials文件夹

tutorials文件夹中包含有大量的案例文件,这些案例文件根据物理模型进行分类。可以基于这些案例文件开发自己的案例。需要提醒的是,不要将这些教程用作最佳实践,它们只是为了演示如何使用这些应用程序。

tutorials文件夹可以在终端中输入tutcd $FOAM_TUTORIALS快速访问。

2.8 wmake文件夹

wmake文件中包含有大量用于程序编译的脚本与工具。

2.9 用户文件夹

可以通过环境变量$WM_PROJECT_USER_DIR 快速访问用户文件夹。

在实际使用过中,可以从OpenFOAM文件夹中拷贝文件到用户路径中进行操作,以防止修改核心代码。

2.10 文件查找

OpenFOAM文件夹中包含的文件很多,信息查找极为不易。Linux提供了大量的用于文件查找的命令,可以帮助用户迅速定位到想要的信息。

  • find命令

find命令是一个使用极为频繁的操作命令。

如下的命令可以在文件目录$WM_PROJECT_DIR中寻找名称包含有字符串fvPatch的文件夹。

find $WM_PROJECT_DIR -type d -name "*fvPatch"

返回结果如下图所示。

若要寻找文件名包含fvPatch的文件,可以用下面的命令:

find $WM_PROJECT_DIRtype f -name "*fvPatch*"

返回结果如下图所示。

  • grep命令

若想要寻找包含有指定字符串的文件,可以使用grep命令。

如想要在路径$FOAM_SOLVERS中寻找包含有字符串LES的所有文件,可以使用下面的命令:

grep -r -n "LES" $FOAM_SOLVERS

这里的-r表示搜索子目录,-n表示输出字符串出现的行号。

搜索结果如下图所示。

在OpenFOAM使用过程中,经常需要在案例文件夹中查找各种字典,此时可以使用下面的命令进行查找:

find $FOAM_TUTORIALS -name "*Dict"
或使用:
find $FOAM_TUTORIALS -iname "*dict"

注意-name是大小写敏感的,-iname是大小写不敏感的。搜索字符串可以放在单引号中,也可以放在双引号中。

其中find命令可以与grep命令合在一起用,组成更加复杂的搜索方式。如下面的命令:

find $FOAM_TUTORIALS -type f | xargs grep -sl 'slip'

该命令将查找$FOAM_TUTORIALS目录中的所有文件,然后利用grep输出搜索字符串SLIP的搜索结果。

如下面的命令可以找出那些英语程序不能并行运行:

find $WM_PROJECT_DIR -type f | xargs grep -sl 'noParallel'

本篇文章来源于微信公众号: CFD之道

赞(4) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《OpenFOAM|04 OF的文件结构》
文章链接:https://www.topcfd.cn/12079/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册