管网:https://doc.cfd.direct/openfoam/user-guide-v9/cavity
一、算例实现
文件结构
- 0:存放初场
- constant:存放网格信息
- system:存放网格划分、计算等工具

1、画网格

2、求解

3、保存文件
4、后处理
使用openFoamReader打开

显示所有边界

apply

二、网格加密
1、网格划分
在icoFoam文件夹内创建cavityFine文件夹,复制cavity文件夹内的constant和system文件夹至该文件夹。
在system/blockMeshDict文件改变网格数量,由之前的(20,20,1)改为(40,40,1),之后使用blockMesh生成网格信息

2、mapFields映射结果
将粗网格中的0.5结果,映射到细网格中。
修改controlDict文件

映射
mapFields ../cavity/cavity -consistent

3、计算并输出log文件
- // 计算并输出log文件
- icoFoam > log
- // 查看log文件
- cat log
- // 可以合并运行
- icoFoam > log && cat log
复制代码 4、calcType
可以对速度的某个量进行可视化处理并咬着计算域内的一条线来绘制一个二维的图- postProcess -func "components(U)"
复制代码 此时会在时间步长文件夹下出现3个新文件

5、后处理
使用paraview加载数据,就会显示刚才计算出的值。

三、网格非均匀分布
1、修改blockMeshDict
在icoFoam文件夹内创建asMeshCavity文件夹,复制cavity文件夹内的constant和system文件夹至该文件夹。
修改constant/blockMeshDict文件,如下
 - /*--------------------------------*- C++ -*----------------------------------*\
- ========= |
- \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
- \\ / O peration | Website: https://openfoam.org
- \\ / A nd | Version: 9
- \\/ M anipulation |
- \*---------------------------------------------------------------------------*/
- FoamFile
- {
- format ascii;
- class dictionary;
- object blockMeshDict;
- }
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- convertToMeters 0.1;
- vertices
- (
- (0 0 0)
- (0.5 0 0)
- (1 0 0)
- (0 0.5 0)
- (0.5 0.5 0)
- (1 0.5 0)
- (0 1 0)
- (0.5 1 0)
- (1 1 0)
- (0 0 0.1)
- (0.5 0 0.1)
- (1 0 0.1)
- (0 0.5 0.1)
- (0.5 0.5 0.1)
- (1 0.5 0.1)
- (0 1 0.1)
- (0.5 1 0.1)
- (1 1 0.1)
- );
- blocks
- (
- hex (0 1 4 3 9 10 13 12) (10 10 1) simpleGrading (2 2 1)
- hex (1 2 5 4 10 11 14 13) (10 10 1) simpleGrading (0.5 2 1)
- hex (3 4 7 6 12 13 16 15) (10 10 1) simpleGrading (2 0.5 1)
- hex (4 5 8 7 13 14 17 16) (10 10 1) simpleGrading (0.5 0.5 1)
- );
- edges
- (
- );
- boundary
- (
- movingWall
- {
- type wall;
- faces
- (
- (6 15 16 7)
- (7 16 17 8)
- );
- }
- fixedWalls
- {
- type wall;
- faces
- (
- (3 12 15 6)
- (0 9 12 3)
- (0 1 10 9)
- (1 2 11 10)
- (2 5 14 11)
- (5 8 17 14)
- );
- }
- frontAndBack
- {
- type empty;
- faces
- (
- (0 3 4 1)
- (1 4 5 2)
- (3 6 7 4)
- (4 7 8 5)
- (9 10 13 12)
- (10 11 14 13)
- (12 13 16 15)
- (13 14 17 16)
- );
- }
- );
- mergePatchPairs
- (
- );
- // ************************************************************************* //
复制代码 2、画网格
3、生成asyMeshCavity.OpenFOAM文件
- touch asyMeshCavity.OpenFOAM
复制代码 4、后处理

5、修改时间步长


6、映射场
将cavityFine中的0.7文件映射过来- mapFields -consistent ../cavityFine
复制代码 7、计算输出

四、大雷诺数
1、创建文件夹并拷贝
创建文件夹拷贝cavity文件夹至该文件夹- cp -r ../cavity/cavity/ .
复制代码 2、修改雷诺数
修改constant/transportProperties文件

即可提高雷诺数10倍
3、修改控制文件
从0.5开始计算到2s

4、计算
- nohup nice -19 icoFoam > log && cat log
复制代码
- nohup:党用户退出登录时,程序依然执行;
- nice:调整程序优先级,-20对应优先级最高,19对应优先级最低进程。
可以看出1.4s时Ux结束迭代,No Iterations 0表示速度求解停止。

五、RAS模型
进入pisoFoam/RAS/cavity

可以看到在0文件夹下有许多有关湍流模型的参数

在momentumTransport文件里定义模型- /*--------------------------------*- C++ -*----------------------------------*\
- ========= |
- \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
- \\ / O peration | Website: https://openfoam.org
- \\ / A nd | Version: 9
- \\/ M anipulation |
- \*---------------------------------------------------------------------------*/
- FoamFile
- {
- format ascii;
- class dictionary;
- location "constant";
- object momentumTransport;
- }
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- simulationType RAS;
- RAS
- {
- model kEpsilon;
- turbulence on;
- printCoeffs on;
- }
- // ************************************************************************* //
复制代码 simulationType:laminar, RAS and LES
printCoeffs:为on时,这些参数会被输出到终端
六、CavityClipped
1、划分网格
2、复制0文件夹内容至0.5
3、设置
controlDict文件开始时间设置为0.5,结束时间设置为0.6
system/mapFieldsDict文件
有两个参数- patchMap (lid movingWall);
- cuttingPatches ();
复制代码
- 当用户向把原始场的patches条件投影到背投影场的patches的时候,我们使用patchMap。
- 当用户打算把原始场内的数据投影到被投影场的边界时,我们使用cuttingPatches列表
这里lib边界条件根cavity算例的movingWall边界条件是一致的。

4、计算
5、后处理

修改样式


修改Legend

绘制矢量图


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |