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

scale   1;

# include "parameters"	
	
// dimensions

x0	#eval "$a";
x1	#eval "$L/2";
x2	#eval "$L/2+$H/2";
x3	#eval "$L/2+0.5*$T*cos(degToRad($alpha))";	
negx0 	#eval "-1*$x0";
negx1 	#eval "-1*$x1";
negx2 	#eval "-1*$x2";
negx3 	#eval "-1*$x3";

y0	#eval "$H/2";
y1	#eval "0.5*$T*sin(degToRad($alpha))";
y2	#eval "0.5*$T";
y3    	#eval "$b/2";
negy0 	#eval "-1*$y0";
negy1 	#eval "-1*$y1";
negy2 	#eval "-1*$y2";
negy3	#eval "-1*$y3";

z0 	-0.5;
z1	0.5;

vertices
(
    ($negx2 $negy0 $z0) // 0	
    ($negx2 $negy0 $z1) // 1
    ($negx0 $negy3 $z0) // ($negx0 $negy0 $z0) // 2
    ($negx0 $negy3 $z1) // ($negx0 $negy0 $z1) // 3
    ($x0    $negy3 $z0) // ($x0    $negy0 $z0) // 4
    ($x0    $negy3 $z1) // ($x0    $negy0 $z1) // 5
    ($x2    $negy0 $z0) // 6
    ($x2    $negy0 $z1) // 7
    ($x2    $y0    $z0) // 8	
    ($x2    $y0    $z1) // 9
    ($x0    $y3    $z0) // ($x0    $y0    $z0) // 10
    ($x0    $y3    $z1) // ($x0    $y0    $z1) // 11
    ($negx0 $y3    $z0) // ($negx0 $y0    $z0) // 12
    ($negx0 $y3    $z1) // ($negx0 $y0    $z1) // 13
    ($negx2 $y0    $z0) // 14
    ($negx2 $y0    $z1) // 15
    
    ($negx3 $negy1 $z0) // 16 
    ($negx3 $negy1 $z1) // 17
    ($negx1 $negy2 $z0) // 18
    ($negx1 $negy2 $z1) // 19
    ($x1    $negy2 $z0) // 20
    ($x1    $negy2 $z1) // 21
    ($x3    $negy1 $z0) // 22
    ($x3    $negy1 $z1) // 23
    ($x3    $y1    $z0) // 24 	
    ($x3    $y1    $z1) // 25
    ($x1    $y2    $z0) // 26
    ($x1    $y2    $z1) // 27
    ($negx1 $y2    $z0) // 28
    ($negx1 $y2    $z1) // 29
    ($negx3 $y1    $z0) // 30
    ($negx3 $y1    $z1) // 31

);



blocks
(
    hex (0  2  12 14 1  3  13 15) fluid ($N2 $N1 1) simpleGrading ($tGrad2 $tGrad1 1)
    hex (2  4  10 12 3  5  11 13) fluid ($N3 $N1 1) simpleGrading ($tGrad3 $tGrad1 1)
    hex (4  6  8  10 5  7  9  11) fluid ($N2 $N1 1) simpleGrading ($tGrad2 $tGrad1 1)
    
    hex (0  16 18 2  1  17 19 3 ) fluid ($N4 $N2 1) simpleGrading ($tGrad4 $tGrad2 1)
    hex (2  18 20 4  3  19 21 5 ) fluid ($N4 $N3 1) simpleGrading ($tGrad4 $tGrad3 1)
    hex (4  20 22 6  5  21 23 7 ) fluid ($N4 $N2 1) simpleGrading ($tGrad4 $tGrad2 1)
    hex (6  22 24 8  7  23 25 9 ) fluid ($N4 $N1 1) simpleGrading ($tGrad4 $tGrad1 1)
    hex (8  24 26 10 9  25 27 11) fluid ($N4 $N2 1) simpleGrading ($tGrad4 $tGrad2 1)
    hex (10 26 28 12 11 27 29 13) fluid ($N4 $N3 1) simpleGrading ($tGrad4 $tGrad3 1)
    hex (12 28 30 14 13 29 31 15) fluid ($N4 $N2 1) simpleGrading ($tGrad4 $tGrad2 1)
    hex (14 30 16 0  15 31 17 1 ) fluid ($N4 $N1 1) simpleGrading ($tGrad4 $tGrad1 1)
);

edges
(
    arc 20 22 origin ($x1 0 $z0)    // left side
    arc 21 23 origin ($x1 0 $z1)
    arc 22 24 origin ($x1 0 $z0)
    arc 23 25 origin ($x1 0 $z1)    
    arc 24 26 origin ($x1 0 $z0)
    arc 25 27 origin ($x1 0 $z1)
 
    arc 28 30 origin ($negx1 0 $z0) // rigth side
    arc 29 31 origin ($negx1 0 $z1)
    arc 30 16 origin ($negx1 0 $z0)
    arc 31 17 origin ($negx1 0 $z1)    
    arc 16 18 origin ($negx1 0 $z0)
    arc 17 19 origin ($negx1 0 $z1)
    
    arc 6  8  origin (0 0 $z0)
    arc 7  9  origin (0 0 $z1)
    arc 14 0  origin (0 0 $z0)
    arc 15 1  origin (0 0 $z1)
    

);

defaultPatch
{
    name frontAndBack;
    type empty;
}

boundary
(

    oversetFaces_impeller1
    {
        type overset;
        faces ();
    }
    
    oversetFaces_impeller2
    {
        type overset;
        faces ();
    }

    walls
    {
        type wall;
        faces
        (
            (16 18 19 17)(18 20 21 19)(20 22 23 21)(22 24 25 23)
            (24 26 27 25)(26 28 29 27)(28 30 31 29)(30 16 17 31)
        );
    }

);

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