最近需要仿真一个带有coflow的气固两相流射流火焰,其中气相采用DNS,如果进行完整计算域的CFD,网格量在千万级别,对初期的代码测试非常不友好,所以计划采用一个四分之一同心圆柱体加两个对称边界条件代替。Google了一下发现并没有现成的网格划分方案,就自己动手写了一个blockMeshDict,今天和大家分享一下。工作虽然难度不大,但是如果能帮到一些CFDer,还是可以节省不少时间。
网格划分方案.png
网格划分采用非常典型的圆柱网格划分方法,主射流入口(0-2-6-0)包括三个block,伴流(2-3-5-6)包括两个block,两个对称边界(13-3-0-10)和(10-0-5-15),侧边出口(13-3-5-15)。这里需要注意,因为圆弧的存在,edge必须用arc来定义,不然圆柱体就变三棱柱了。
arc的定义方法是三点确定一条圆弧,即
arc pointA pointB (x_pointC y_pointC z_pointC)
下面是具体的blockMeshDict文件
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
scale 0.001; //mm
vertices
(
(0 0 0) // vertex number 0
(4 0 0) // vertex number 1
(10 0 0) // vertex number 2
(40 0 0) // vertex number 3
(28.284271247462 28.284271247462 0) // vertex number 4
(0 40 0) // vertex number 5
(0 10 0) // vertex number 6
(0 4 0) // vertex number 7
(3 3 0) // vertex number 8
(7.071067811865 7.071067811865 0) // vertex number 9
(0 0 60) // vertex number 0
(4 0 60) // vertex number 1
(10 0 60) // vertex number 2
(40 0 60) // vertex number 3
(28.284271247462 28.284271247462 60) // vertex number 4
(0 40 60) // vertex number 5
(0 10 60) // vertex number 6
(0 4 60) // vertex number 7
(3 3 60) // vertex number 8
(7.071067811865 7.071067811865 60) // vertex number 9
);
edges
(
arc 2 9 (8.660254037844 5 0)
arc 9 6 (5 8.660254037844 0)
arc 4 5 (20 34.641016151378 0)
arc 3 4 (34.641016151378 20 0)
arc 12 19 (8.660254037844 5 60)
arc 19 16 (5 8.660254037844 60)
arc 14 15 (20 34.641016151378 60)
arc 13 14 (34.641016151378 20 60)
);
blocks
(
// coarse mesh 0.4mm
hex (0 1 8 7 10 11 18 17) (10 10 150) simpleGrading (1 1 1) // block 0
hex (1 2 9 8 11 12 19 18) (15 10 150) simpleGrading (1 1 1) // block 1
hex (8 9 6 7 18 19 16 17) (15 10 150) simpleGrading (1 1 1) // block 2
hex (2 3 4 9 12 13 14 19) (50 10 150) simpleGrading (3 1 1) // block 3
hex (9 4 5 6 19 14 15 16) (50 10 150) simpleGrading (3 1 1) // block 4
);
boundary
(
Particleinlet
{
type patch;
faces
(
(0 1 8 7)
(1 2 9 8)
(8 9 6 7)
);
}
Symmetry1
{
type symmetryPlane;
faces
(
(0 10 11 1)
(1 11 12 2)
(2 12 13 3)
);
}
Symmetry2
{
type symmetryPlane;
faces
(
(10 0 7 17)
(17 7 6 16)
(16 6 5 15)
);
}
Coflowinlet
{
type patch;
faces
(
(2 3 4 9)
(9 4 5 6)
);
}
TopOutlet
{
type patch;
faces
(
(10 11 18 17)
(11 12 19 18)
(18 19 16 17)
(12 13 14 19)
(19 14 15 16)
);
}
SideOutlet
{
type patch;
faces
(
(13 3 4 14)
(14 4 5 15)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //
以下是成品图片
Mesh
现在的网格分辨率大概是0.4mm,远远达不到DNS的标准,但是网格数量已经有21万,计算起来还是比较吃力的。小编正在考虑用楔形切片网格加wedge性边界在保证网格精度的情况下,进一步减小网格量
网友评论