OpenFOAM由许多不同的库、求解器和实用程序组成。为了对这个庞大且经常令人生畏的代码库有一定的了解,我们可以查看一下OpenFOAM根目录的内容。

OpenFOAM目录的内容:

  • application:求解器、实用程序和辅助测试函数的源代码。解算器代码按其功能进行组织,如incompressiblelagrangiancombustion。实用程序被类似地组织为meshpre-precessingpost-precessing等类型。
  • bin:Bash脚本(不是C++二进制文件),具有广泛的功能:检查安装(foamInstallationTest),在调试模式下执行并行运行(mpirunDebug),生成空源代码模板(foamNew)或case模板(foamNewCase)等。
  • doc:用户文档、编程文档和Doxygen生成文件。
  • etc:编译和运行时可选配置控制整个库的标志。/etc/bashrc中设置了许多安装设置,包括使用哪个编译器、编译哪个MPI库以及安装的位置(用户本地或系统范围)。
  • platforms:根据精度、调试标志和处理器体系结构存储的编译后的二进制文件。大多数安装在这里只有一个或两个子文件夹,这些子文件夹将根据编译类型命名。例如,linux64GccDPOpt可以解释为:
    • linux:操作系统类型
    • 64:处理器体系结构
    • Gcc:使用的编译器(GCC、icc、clang)
    • Dp:浮点精度(双精度(DP)与单精度(SP))
    • Opt:编译器优化或调试标志
  • src:工具包的大部分源代码。包含所有CFD库源,包括有限体积离散化、输运模型和最基本的原始结构,如标量、向量、列表等。Applications文件夹中的主要CFD解算器使用这些库的内容来运行。
  • tutorials:工具包的大部分源代码。包含所有CFD库源,包括有限体积离散化、传输模型和最基本的原始结构,如标量、向量、列表等。Applications文件夹中的主要CFD解算器使用这些库的内容来运行。
  • wmake:基于bash的脚本wmake是一个配置和调用C++编译器的实用程序。使用wmake编译求解器或库时,来自make/files和make/options的信息用于包括头文件和链接其他支持库。使用wmake需要make文件夹,因此编译大多数OpenFOAM代码都需要make文件夹。

第五章从软件设计的角度对OpenFOAM库进行了深入的描述,解释了C++编程语言的不同范型,以及如何使用它们来使OpenFOAM成为一个模块化的、功能强大的CFD平台。