All I knew was the mesh generation for cavity case described in the user guide. But a small additional info for generating a curved edge was sufficient to understand how to make a pipe mesh.
I came across a tutorial of wolfdynamics.com describing the whole process in a lucid manner. The following is the blockMeshDict used to generate the above mesh 🙂
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
scale 0.025;
vertices
(
//block 0
(-0.25 0.25 0)
(-0.707106 0.707106 0)
(0.707106 0.707106 0)
(0.25 0.25 0)
(-0.25 0.25 20)
(-0.707106 0.707106 20)
(0.707106 0.707106 20)
(0.25 0.25 20)
//block 1
(0.25 -0.25 0)
(0.707106 -0.707106 0)
(0.25 -0.25 20)
(0.707106 -0.707106 20)
//block 3
(-0.25 -0.25 0)
(-0.707106 -0.707106 0)
(-0.25 -0.25 20)
(-0.707106 -0.707106 20)
);
xcells 20;
ycells 40;
zcells 60;
xcells1 20;
ycells1 20;
zcells1 60;
stretch 0.25;
blocks
(
/*block 0 */ hex (0 3 2 1 4 7 6 5 ) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
/*block 1 */ hex (3 8 9 2 7 10 11 6) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
/*block 2 */ hex (8 12 13 9 10 14 15 11) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
/*block 3 */ hex (12 0 1 13 14 4 5 15) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
/*block 4 */ hex (0 12 8 3 4 14 10 7) ($xcells1 $ycells1 $zcells1) simpleGrading (1 1 1)
);
edges
(
arc 1 2 (0 1 0)
arc 5 6 (0 1 20)
arc 2 9 (1 0 0)
arc 6 11(1 0 20)
arc 9 13 (0 -1 0)
arc 11 15 (0 -1 20)
arc 1 13 (-1 0 0)
arc 5 15 (-1 0 20)
);
boundary
(
inlet
{
type patch;
faces
(
(0 1 2 3)
(2 3 8 9)
(8 9 13 12)
(13 12 0 1)
(0 3 8 12)
);
}
pipe
{
type wall;
faces
(
(1 5 6 2)
(2 6 11 9)
(9 11 15 13)
(15 13 5 1)
);
}
outlet
{
type patch;
faces
(
(4 5 6 7)
(6 7 10 11)
(15 11 10 14)
(15 14 4 5)
(4 7 10 14)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //
I thank wolfdynamics.com for the detailed tutorial provided for the benefit of learners 🙂 🙂
scale 0.005;
vertices
(
//block 0
//front shell coordinates cap bottom plane
(-0.25 0.25 0) //0
(-0.707106 0.707106 0) //1
(0.707106 0.707106 0) //2
(0.25 0.25 0) //3
//front shell coordinates neck - cap plane
(-0.25 0.25 2) //4 above 0
(-0.707106 0.707106 2) //5 above 1
(0.707106 0.707106 2) //6 above 2
(0.25 0.25 2) //7 above 3
//right&back shell common coordinates cap bottom plane
(0.25 -0.25 0) //8
(0.707106 -0.707106 0) //9
//right&back shell common coordinates neck-cap plane
(0.25 -0.25 2) //10 above 8
(0.707106 -0.707106 2) //11 above 9
//back&left shell common coordinates cap bottom plane
(-0.25 -0.25 0) //12
(-0.707106 -0.707106 0) //13
//back & left shell common coordinates neck-cap plane
(-0.25 -0.25 2) //14 above 12
(-0.707106 -0.707106 2)//15 above 13
//front shell coordinates body-neck plane
(-1.0 1.0 7) //16 above 4
(-2.828424 2.828424 7) //17 above 5
(2.828424 2.828424 7) //18 above 6
(1.0 1.0 7) //19 above 7
//right&back shell common coordinates body-neck plane
(1.0 -1.0 7) //20 above 10
(2.828424 -2.828424 7) //21 above 11
//back & left shell common coordinates body-neck plane
(-1.0 -1.0 7) //22 above 14
(-2.828424 -2.828424 7) //23 above 15
//-------------------BODY - TOP plane---------------------------
//front shell coordinates body-top plane
(-1.0 1.0 20) //24 above 16
(-2.828424 2.828424 20) //25 above 17
(2.828424 2.828424 20) //26 above 18
(1.0 1.0 20) //27 above 19
//right&back shell common coordinates body-top plane
(1.0 -1.0 20) //28 above 20
(2.828424 -2.828424 20) //29 above 21
//back & left shell common coordinates body-top plane
(-1.0 -1.0 20) //30 above 22
(-2.828424 -2.828424 20) //31 above 23
);
xcells 1;//20;
ycells 1;//40;
zcells 1;//60;
xcells1 1;//20;
ycells1 1;//20;
zcells1 1;//60;
stretch 1;//0.25;
blocks
(
//---------------------------- CAP ------------------------------------------
//cap front block 0
hex (0 3 2 1 4 7 6 5 ) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
//cap right block 1
hex (3 8 9 2 7 10 11 6) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
//cap back block 2
hex (8 12 13 9 10 14 15 11) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
//cap left block 3
hex (12 0 1 13 14 4 5 15) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
//cap center block 4
hex (0 12 8 3 4 14 10 7) ($xcells1 $ycells1 $zcells1) simpleGrading (1 1 1)
//---------------------------- NECK ------------------------------------------
//neck front block 5
hex (4 7 6 5 16 19 18 17) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
//neck right block 6
hex (7 10 11 6 19 20 21 18) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
//neck back block 7
hex (10 14 15 11 20 22 23 21) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
//neck left block 8
hex (14 4 5 15 22 16 17 23) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
//neck center block 9
hex (4 14 10 7 16 22 20 19) ($xcells1 $ycells1 $zcells1) simpleGrading (1 1 1)
//---------------------------- BODY ------------------------------------------
//body front block 5
hex (16 19 18 17 24 27 26 25) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
//body right block 6
hex (19 20 21 18 27 28 29 26) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
//body back block 7
hex (20 22 23 21 28 30 31 29) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
//body left block 8
hex (22 16 17 23 30 24 25 31) ($xcells $ycells $zcells) simpleGrading (1 $stretch 1)
//body center block 9
hex (16 22 20 19 24 30 28 27) ($xcells1 $ycells1 $zcells1) simpleGrading (1 1 1)
);
edges
(
arc 1 2 (0 1 0)
arc 5 6 (0 1 2)
arc 2 9 (1 0 0)
arc 6 11(1 0 2)
arc 9 13 (0 -1 0)
arc 11 15 (0 -1 2)
arc 1 13 (-1 0 0)
arc 5 15 (-1 0 2)
//body-neck plane
arc 17 18(0 4 7)
arc 18 21(4 0 7)
arc 21 23 (0 -4 7)
arc 17 23(-4 0 7)
//body plane
arc 25 26(0 4 20)
arc 26 29(4 0 20)
arc 29 31 (0 -4 20)
arc 25 31(-4 0 20)
);
boundary
(
inletOutlet
{
type patch;
faces
(
(0 1 2 3)
(2 3 8 9)
(8 9 13 12)
(13 12 0 1)
(0 3 8 12)
);
}
pipe
{
type wall;
faces
(
(1 5 6 2)
(2 6 11 9)
(9 11 15 13)
(15 13 5 1)
(5 17 18 6)
(6 18 21 11)
(11 21 23 15)
(15 23 17 5)
(17 25 26 18)
(18 26 29 21)
(21 29 31 23)
(23 31 25 17)
//bottom plane
(24 25 26 27)
(27 26 29 28)
(28 29 31 30)
(30 31 25 24)
(24 27 28 30)
);
}
);
mergePatchPairs
(
);