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

radius      0.25;
box         0.07;
zMax        0;
zMin       -0.1;
nB          8;
nR          12;

nZ          1;
radiusNeg   #neg $radius;
boxNeg      #neg $box;


verbose no;

geometry
{
    cylinder
    {
        type      cylinder;
        point1    (0 0 -210);
        point2    (0 0 240);
        radius    $radius;
    }
}

scale 1;

vertices
(
    // Inner
    ($boxNeg $boxNeg $zMin)
    ($box    $boxNeg $zMin)
    ($boxNeg $box    $zMin)
    ($box    $box    $zMin)

    // Outer block points
    project ($radiusNeg $radiusNeg $zMin) (cylinder)
    project ($radius    $radiusNeg $zMin) (cylinder)
    project ($radiusNeg $radius    $zMin) (cylinder)
    project ($radius    $radius    $zMin) (cylinder)

    // Inner
    ($boxNeg $boxNeg $zMax)
    ($box    $boxNeg $zMax)
    ($boxNeg $box    $zMax)
    ($box    $box    $zMax)

    // Outer block points
    project ($radiusNeg $radiusNeg $zMax) (cylinder)
    project ($radius    $radiusNeg $zMax) (cylinder)
    project ($radiusNeg $radius    $zMax) (cylinder)
    project ($radius    $radius    $zMax) (cylinder)
);

blocks
(
    hex ( 4  5  1  0 12 13  9  8) ($nB $nR $nZ) simpleGrading (1 1 1)
    hex ( 4  0  2  6 12  8 10 14) ($nR $nB $nZ) simpleGrading (1 1 1)
    hex ( 1  5  7  3  9 13 15 11) ($nR $nB $nZ) simpleGrading (1 1 1)
    hex ( 2  3  7  6 10 11 15 14) ($nB $nR $nZ) simpleGrading (1 1 1)
    hex ( 0  1  3  2  8  9 11 10) ($nB $nB $nZ) simpleGrading (1 1 1)
);

edges
(
    project  4  5 (cylinder)
    project  7  5 (cylinder)
    project  6  7 (cylinder)
    project  4  6 (cylinder)
    project 12 13 (cylinder)
    project 13 15 (cylinder)
    project 12 14 (cylinder)
    project 14 15 (cylinder)
);

defaultPatch
{
    type patch;
}

boundary
(
    outlet
    {
        type patch;
        faces
        (
            (12 13  9  8)
            (12  8 10 14)
            (9 13 15 11)
            (10 11 15 14)
            (8  9 11 10)
        );
    }
);

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