How I learned to mesh a pipe using blockMesh

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
(
);

// ************************************************************************* //
Ogrid mesh generated using blockMesh

I thank wolfdynamics.com for the detailed tutorial provided for the benefit of learners 🙂 🙂

Points on Cap plane and Cap-Neck plane

Points on Body-Neck plane and Body plane
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
(
);

Leave a Comment

Your email address will not be published.