本文描述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脚本,运行该脚本将编译solvers及utilities文件夹中的所有内容。若要编译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文件夹可以在终端中输入tut
或cd $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_DIR –type 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之道
评论前必须登录!
注册