/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  9
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

D 0.0372;
L 0.3125;

xn 50;
yn 10;
rn 4;

r     #calc "$D*0.5";
rNeg  #calc "-1.0*$r";
r2    #calc "$r*0.5";
r2Neg #calc "$rNeg*0.5";
b     #calc "0.707*$r";
bNeg  #calc "-1.0*$b";  
c     #calc "$r2*1.2";
cNeg  #calc "-1.0*$c";

vertices
(
    //inlet
    ($r2 $r2Neg 0) // Vertex A0 = 0
    ($r2 $r2 0) // Vertex A1 = 1
    ($r2Neg $r2 0) // Vertex A2 = 2
    ($r2Neg $r2Neg 0) // Vertex A3 = 3
    ($b $bNeg 0) // Vertex A4 = 4
    ($b $b 0) // Vertex A5 = 5
    ($bNeg $b 0) // Vertex A6 = 6
    ($bNeg $bNeg 0) // Vertex A7 = 7
    //outlet
    ($r2 $r2Neg $L) // Vertex B0 = 8
    ($r2 $r2 $L) // Vertex B1 = 9
    ($r2Neg $r2 $L) // Vertex B2 = 10
    ($r2Neg $r2Neg $L) // Vertex B7 = 15
    ($b $bNeg $L) // Vertex B4 = 12
    ($b $b $L) // Vertex B5 = 13
    ($bNeg $b $L) // Vertex B6 = 14
    ($bNeg $bNeg $L) // Vertex B7 = 15
);

blocks
(
    hex (5 1 0 4 13 9  8  12) ($rn $yn $xn) simpleGrading (1 1 1) 
    hex (6 2 1 5 14 10 9  13) ($rn $yn $xn) simpleGrading (1 1 1)
    hex (7 3 2 6 15 11 10 14) ($rn $yn $xn) simpleGrading (1 1 1)
    hex (4 0 3 7 12 8  11 15) ($rn $yn $xn) simpleGrading (1 1 1)
    hex (0 1 2 3 8  9  10 11) ($yn $yn $xn) simpleGrading (1 1 1)
);
edges
(
arc 0 1 ($c 0 0)
arc 1 2 (0 $c 0)
arc 2 3 ($cNeg 0 0)
arc 3 0 (0 $cNeg 0)
arc 4 5 ($r 0 0)
arc 5 6 (0 $r 0)
arc 6 7 ($rNeg 0 0)
arc 7 4 (0 $rNeg 0)
arc 8 9 ($c 0 $L)
arc 9 10 (0 $c $L)
arc 10 11 ($cNeg 0 $L)
arc 11 8 (0 $cNeg $L)
arc 12 13 ($r 0 $L)
arc 13 14 (0 $r $L)
arc 14 15 ($rNeg 0 $L)
arc 15 12 (0 $rNeg $L)
);

boundary
(
    inlet
    {
        type patch;
        faces
        (
            (1 5 4 0)
            (2 6 5 1)
            (3 7 6 2)
            (0 4 7 3)
            (3 2 1 0)
        );
    }
    outlet
    {   
        type patch;
        faces
        (   
            (13 9 8 12)
            (14 10 9 13)
            (15 11 10 14)
            (12 8 11 15)
            (8 9 10 11)
       );
    }
    porosityWall
    {
        type wall;
        faces
        (
            (4 5 13 12)
            (5 6 14 13)
            (6 7 15 14)
            (7 4 12 15)
        );
    }
);

// ************************************************************************* //
