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

// Almost identical to basic/potentialFoam/cylinder

scale   0.016;

// Geometric parameters
rInner  0.5;
rOuter  1;
xmax    2;
ymax    2;

zmin    0;   // Back/front locations
zmax    0.5;

// Divisions: Radial, quarter circumference, outer region and z-directions.
nRadial  10;
nQuarter 10;
nxOuter  20;
nyOuter  20;
nz       1;

// ----------------

// Derived quantities
rInner45    ${{ $rInner * sqrt(0.5) }};
rOuter45    ${{ $rOuter * sqrt(0.5) }};
xmin        ${{ -$xmax }};

vertices
(
    /* 0*/  ( $rInner  0  $zmin )
    /* 1*/  ( $rOuter  0  $zmin )
    /* 2*/  ( $xmax  0  $zmin )
    /* 3*/  ( $xmax  $rOuter45  $zmin )
    /* 4*/  ( $rOuter45  $rOuter45  $zmin )
    /* 5*/  ( $rInner45  $rInner45  $zmin )
    /* 6*/  ( $xmax  $ymax  $zmin )
    /* 7*/  ( $rOuter45  $ymax  $zmin )
    /* 8*/  ( 0  $ymax  $zmin )
    /* 9*/  ( 0  $rOuter  $zmin )
    /*10*/  ( 0  $rInner  $zmin )
    /*11*/  ( -$rInner  0  $zmin )
    /*12*/  ( -$rOuter  0  $zmin )
    /*13*/  ( -$xmax  0  $zmin )
    /*14*/  ( -$xmax  $rOuter45  $zmin )
    /*15*/  ( -$rOuter45  $rOuter45  $zmin )
    /*16*/  ( -$rInner45  $rInner45  $zmin )
    /*17*/  ( -$xmax  $ymax  $zmin )
    /*18*/  ( -$rOuter45  $ymax  $zmin )

    /*19*/  ( $rInner  0  $zmax )
    /*20*/  ( $rOuter  0  $zmax )
    /*21*/  ( $xmax  0  $zmax )
    /*22*/  ( $xmax  $rOuter45  $zmax )
    /*23*/  ( $rOuter45  $rOuter45  $zmax )
    /*24*/  ( $rInner45  $rInner45  $zmax )
    /*25*/  ( $xmax  $ymax  $zmax )
    /*26*/  ( $rOuter45  $ymax  $zmax )
    /*27*/  ( 0  $ymax  $zmax )
    /*28*/  ( 0  $rOuter  $zmax )
    /*29*/  ( 0  $rInner  $zmax )
    /*30*/  ( -$rInner  0  $zmax )
    /*31*/  ( -$rOuter  0  $zmax )
    /*32*/  ( -$xmax  0  $zmax )
    /*33*/  ( -$xmax  $rOuter45  $zmax )
    /*34*/  ( -$rOuter45  $rOuter45  $zmax )
    /*35*/  ( -$rInner45  $rInner45  $zmax )
    /*36*/  ( -$xmax  $ymax  $zmax )
    /*37*/  ( -$rOuter45  $ymax  $zmax )
);

// Can remove some unneeded variables
#remove ( "r(Inner|Outer).*"  "[xy](min|max)" )


blocks
(
    hex (5 4 9 10 24 23 28 29)    ($nRadial  $nQuarter $nz) grading (1 1 1)
    hex (0 1 4 5 19 20 23 24)     ($nRadial  $nQuarter $nz) grading (1 1 1)
    hex (1 2 3 4 20 21 22 23)     ($nxOuter  $nQuarter $nz) grading (1 1 1)
    hex (4 3 6 7 23 22 25 26)     ($nxOuter  $nyOuter  $nz) grading (1 1 1)
    hex (9 4 7 8 28 23 26 27)     ($nQuarter $nyOuter  $nz) grading (1 1 1)
    hex (15 16 10 9 34 35 29 28)  ($nRadial  $nQuarter $nz) grading (1 1 1)
    hex (12 11 16 15 31 30 35 34) ($nRadial  $nQuarter $nz) grading (1 1 1)
    hex (13 12 15 14 32 31 34 33) ($nxOuter  $nQuarter $nz) grading (1 1 1)
    hex (14 15 18 17 33 34 37 36) ($nxOuter  $nyOuter  $nz) grading (1 1 1)
    hex (15 9 8 18 34 28 27 37)   ($nQuarter $nyOuter  $nz) grading (1 1 1)
);


edges
(
    // Inner cylinder
    arc  0  5 origin (0 0 $zmin)
    arc  5 10 origin (0 0 $zmin)
    arc  1  4 origin (0 0 $zmin)
    arc  4  9 origin (0 0 $zmin)
    arc 19 24 origin (0 0 $zmax)
    arc 24 29 origin (0 0 $zmax)
    arc 20 23 origin (0 0 $zmax)
    arc 23 28 origin (0 0 $zmax)
    // Intermediate cylinder
    arc 11 16 origin (0 0 $zmin)
    arc 16 10 origin (0 0 $zmin)
    arc 12 15 origin (0 0 $zmin)
    arc 15  9 origin (0 0 $zmin)
    arc 30 35 origin (0 0 $zmax)
    arc 35 29 origin (0 0 $zmax)
    arc 31 34 origin (0 0 $zmax)
    arc 34 28 origin (0 0 $zmax)
);

patches
(
    symmetry symmetry
    (
        (0 1 20 19)
        (1 2 21 20)
        (12 11 30 31)
        (13 12 31 32)
    )
    patch outlet
    (
        (2 3 22 21)
        (3 6 25 22)
    )
    patch side
    (
        (7 8 27 26)
        (6 7 26 25)
        (8 18 37 27)
        (18 17 36 37)
    )
    patch inlet
    (
        (14 13 32 33)
        (17 14 33 36)
    )
    wall cylinder
    (
        (10 5 24 29)
        (5 0 19 24)
        (16 10 29 35)
        (11 16 35 30)
    )
    patch film
    (
        (5 4 1 0)
        (4 3 2 1)
        (7 6 3 4)
        (8 7 4 9)
        (9 4 5 10)
        (18 8 9 15)
        (15 9 10 16)
        (17 18 15 14)
        (14 15 12 13)
        (15 16 11 12)
    )
    patch top
    (
        (19 20 23 24)
        (20 21 22 23)
        (23 22 25 26)
        (29 24 23 28)
        (28 23 26 27)
        (35 29 28 34)
        (34 28 27 37)
        (32 31 34 33)
        (33 34 37 36)
        (31 30 35 34)
    )
);


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