引言
这是开源场运算和操作
c++库类(openfoam)的使用指南。他详细描述了OpenFOAM的基本操作。首先通过第二章一系列教程练习。然后通过对更多的独立组件的更详细的描述学习openfoam。 Of
首先主要是一个c++库类,主要用于创建可执行文件,比如应用程序(application)。应用程序分成两类:求解器,都是为了解决特定的连续介质力学问题而设计的;公用工程,这些是为了执行包括数据操作等任务而设计的。Of 包括了数量众多的solver和utilities,牵涉的问题也比较广泛。将在第三章进行详尽的描述。
Of 的一个强项是用户可以通过必要的预备知识(包括数学,物理和编程技术)创建新的solvers 和utilities。 Of
需要前处理和后处理环境。前处理、后处理接口就是of本身的实用程序(utilities),以此确保协调的数据传输环境。图1.1是of总体的结构。第4章和第五章描述了前处理和运行of 的案例。既包括用of提供的mesh generator划分网格也包括第三方软件生成的网格数据转换。第六章介绍后处理。
Chapter 2
指导手册
在这一章中我们详细描述了安装过程,模拟和后进程处理一些OpenFOAM测试案例,以引导用户运行OpenFOAM的基本程序。 $FOAM_TUTORIALS 目录包含许多案件演示of提供的所有求解器以及许多共用程序的使用,在试图运行教程之前,用户必须首先确保他们已经正确地安装了OpenFOAM。
该教程案件描述 blockMesh预处理工具的使用,paraFoam案例设置和运行OpenFOAM求解器及使用paraFoam进行后处理。使用OpenFOAM支持的第三方后处理软件的用户可以选择:他们要么可以按照教程使用paraFoam,或当需要后处理时参阅第六章的第三方软件使用说明。 OpenFOAM安装目录下的tutorials目录中所有的指导手册都是可复制的。教程根据流动类型分列在不同的目录下,对应子目录根据求解器slover分类。例如,所有icoFoam的案件存储在一个子目录“incompressible / icoFoam”, incompressible表示流动类型为不可压。如果用户希望运行一套例子,建议该用户复制tutorials目录到本地运行目录。他们可以轻松的通过输入下边的命令来复制:
mkdir -p $FOAM RUN
cp -r $FOAM TUTORIALS $FOAM RUN
2.1盖驱动腔流Lid-driven cavity flow
本节将介绍如何进行预处理,运行和后处理一个例子,涉及二维正方形区域内的等温,不可压缩流动。图2.1中几何体的所有边界都是由壁面。在x方向顶层墙体以1米/秒的速度移动,而其他3个墙壁是静止的。最初,流动会假设为层流,将在均匀网格上使用icoFoam求解器来求解层流等温不可压流动。在本教程中,将研究加强网格的划分的效果和网格朝向壁面分级的效果。最终,流动雷诺数增加,必须使用用于恒温不可压缩紊流的pisoFoam求解器.
2.1.1前处理
通过编辑实例文件在OpenFOAM中设置实例,用户应选择一个xeditor进行前处理,如emacs,vi,gedit,kate,nedit等。编辑文件可能在OpenFOAM中,因为I / O的目录格式的关键字意思很明确,很容易使没有经验的用户理解。
模拟实例涉及网格,流场,属性,控制参数等数据。如4.1节所述,在OpenFOAM,这些数据是存储在实例目录下的一组文件中,而不是单个实例文件,如许多其他流体力学软件包。实例目录给予适当的描述性名称,例如:该教程中的第一个例子就叫cavity。在编辑实例文件和运行cavity实例前的准备工作中,用户应打开该案例的目录:
cd $FOAM RUN/tutorials/incompressible/icoFoam/cavity
2.1.1.1生成网格
OF经常运行在三维直角坐标系统中,所有的几何形状都是三维的。OF默认求解三维问题,可以通过在某些边界上指定一个'special' empty边界条件,这些边界垂直于不要求解的第三维,从而来求解二维问题。
cavity腔域是一个在xy平面上边长d= 0.1m的正方形。起初用20*20的均匀网格。块结构见图2.2。网格生成器是OpenFOAM的blockMesh,根据一个输入文档blockMeshDict(在给定实例的constant/polyMesh目录下)中的指定描述生成网格。对该实例输入的blockMeshDict如下所示:
11
format ascii;
12
class dictionary;
13 object blockMeshDict;
14 }
15
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
16 17
convertToMeters 0.1;
18 19 vertices 20 ( 21 (0 0 0) 22 (1 0 0) 23 (1 1 0) 24 (0 1 0) 25 (0 0 0.1) 26 (1 0 0.1) 27 (1 1 0.1) 28 (0 1 0.1) 29 ); 30 31
blocks
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
(
hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1) ); edges ( ); patches (
wall movingWall ( (3 7 6 2) )
wall fixedWalls ( (0 4 7 3) (2 6 5 1) (1 5 4 0) )
empty frontAndBack ( (0 3 2 1) (4 5 6 7) ) );
mergePatchPairs ( );
// ************************************************************************* //
头7行是文件头信息,用寬显线表示。接下来是FoamFile子目录中的文件信息,用{...}大括号界定。
注释(来自苏军伟博客):
FoamFile //文件头 {
version 2.0; //版本号
format ascii; //存储形式二进制或者ascii
class volScalarField;//场的类型,体心标量场 object p; //场的名字