/*--------------------------------*- 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;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

convertToMeters 0.001;

r0          1.35;
rMid        #calc "$r0";
yMid        #calc "1.5 * $r0";
domainR     #calc "3 * $r0";
domainH     #calc "12 * $r0";
half_angle  2.5;


radAoa      #calc "degToRad($half_angle)";
cosAoa      #calc "cos($radAoa)";
sinAoa      #calc "sin($radAoa)";


vertices
(
    (0 0 0)
    (0 $yMid 0)
    (0 $domainH 0)

    (#calc "$rMid*$cosAoa"    0        #calc "-$rMid*$sinAoa")    
    (#calc "$rMid*$cosAoa"    $yMid    #calc "-$rMid*$sinAoa")    
    (#calc "$rMid*$cosAoa"    $domainH #calc "-$rMid*$sinAoa")    
    (#calc "$domainR*$cosAoa" 0        #calc "-$domainR*$sinAoa") 
    (#calc "$domainR*$cosAoa" $yMid    #calc "-$domainR*$sinAoa") 
    (#calc "$domainR*$cosAoa" $domainH #calc "-$domainR*$sinAoa") 

    (#calc "$rMid*$cosAoa"    0        #calc "$rMid*$sinAoa")     
    (#calc "$rMid*$cosAoa"    $yMid    #calc "$rMid*$sinAoa")     
    (#calc "$rMid*$cosAoa"    $domainH #calc "$rMid*$sinAoa")     
    (#calc "$domainR*$cosAoa" 0        #calc "$domainR*$sinAoa")  
    (#calc "$domainR*$cosAoa" $yMid    #calc "$domainR*$sinAoa")  
    (#calc "$domainR*$cosAoa" $domainH #calc "$domainR*$sinAoa")  
);

blocks
(
    hex (0 3 4 1 0 9 10 1) (24 24 1) simpleGrading (1 1 1) 
    hex (1 4 5 2 1 10 11 2) (24 126 1) simpleGrading (1 5 1)
    hex (3 6 7 4 9 12 13 10) (51 24 1) simpleGrading (5 1 1)
    hex (4 7 8 5 10 13 14 11) (51 126 1) simpleGrading (5 5 1)
);

edges ();

boundary
(
    inlet
    {
        type patch;
        faces ( (0 3 9 0) );
    }
    bottomWall
    {
        type wall;
        faces ( (3 6 12 9) );
    }
    sideWall
    {
        type wall;
        faces ( (6 7 13 12) (7 8 14 13) );
    }
    outlet
    {
        type patch;
        faces ( (2 5 11 2) (5 8 14 11) );
    }
    front
    {
        type wedge;
        faces ( (0 3 4 1) (1 4 5 2) (3 6 7 4) (4 7 8 5) );
    }
    back
    {
        type wedge;
        faces ( (0 9 10 1) (1 10 11 2) (9 12 13 10) (10 13 14 11) );
    }
);

mergePatchPairs ();
// ************************************************************************* //