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

convertToMeters 1;

l	1;	// Lenght before expansion
H2	0.5;	// Half of the widht of the channel 
D2	1;	// Half of the width of the expansion part
m	0.5;	// Half of the lenght of the expansion part
n	#calc "($D2+$H2)/2";	// Intermediate point to refinement
o	1;	// Lenght after expansion

vertices
(
 
 // -------- Blocks 0 and 1 --------
 
 (0 #neg $H2 -1)	//0
 ($l #neg $H2 -1)	//1
 ($l 0 -1)		//2
 ($l $H2 -1)		//3
 (0 $H2 -1)		//4
 (0 0 -1)		//5

 (0 #neg $H2 1)		//6
 ($l #neg $H2 1)	//7
 ($l 0 1)		//8
 ($l $H2 1)		//9
 (0 $H2 1)		//10
 (0 0 1)		//11
 
 // -------- Blocks 2,3,4 and 5 --------
 
 ($l #neg $n -1)		//12
 (#calc "$l+$m" #neg $n -1) 	//13
 (#calc "$l+$m" #neg $H2 -1) 	//14
 (#calc "$l+$m" 0 -1)		//15
 (#calc "$l+$m" $H2 -1) 	//16
 (#calc "$l+$m" $n -1) 		//17
 ($l $n -1)			//18
 
 ($l #neg $n 1)			//19
 (#calc "$l+$m" #neg $n 1) 	//20
 (#calc "$l+$m" #neg $H2 1) 	//21
 (#calc "$l+$m" 0 1)		//22
 (#calc "$l+$m" $H2 1)	 	//23
 (#calc "$l+$m" $n 1) 		//24
 ($l $n 1)			//25
 
 // -------- Blocks 6 and 7 --------
 
 ($l #neg $D2 -1) 		//26
 (#calc "$l+$m" #neg $D2 -1)	//27
 (#calc "$l+$m" $D2 -1) 	//28
 ($l $D2 -1) 			//29
 
 ($l #neg $D2 1)	 	//30
 (#calc "$l+$m" #neg $D2 1) 	//31
 (#calc "$l+$m" $D2 1) 		//32
 ($l $D2 1) 			//33
 
 // -------- Blocks 8, 9, 10, 11, 12 and 13 --------
 
 (#calc "$l+2*$m" #neg $D2 -1)	//34
 (#calc "$l+2*$m" #neg $n -1)	//35
 (#calc "$l+2*$m" #neg $H2 -1)	//36
 (#calc "$l+2*$m" 0 -1)		//37
 (#calc "$l+2*$m" $H2 -1)	//38
 (#calc "$l+2*$m" $n -1)	//39
 (#calc "$l+2*$m" $D2 -1)	//40
 
 (#calc "$l+2*$m" #neg $D2 1)	//41
 (#calc "$l+2*$m" #neg $n 1)	//42
 (#calc "$l+2*$m" #neg $H2 1)	//43
 (#calc "$l+2*$m" 0 1)		//44
 (#calc "$l+2*$m" $H2 1)	//45
 (#calc "$l+2*$m" $n 1)		//46
 (#calc "$l+2*$m" $D2 1)	//47
 
 // -------- Blocks 14 and 15 --------
 
 (#calc "$l+2*$m+$o" #neg $H2 -1)	//48
 (#calc "$l+2*$m+$o" 0 -1)		//49
 (#calc "$l+2*$m+$o" $H2 -1)		//50
 
 (#calc "$l+2*$m+$o" #neg $H2 1)	//51
 (#calc "$l+2*$m+$o" 0 1)		//52
 (#calc "$l+2*$m+$o" $H2 1)		//53

);

blocks
(

    hex (0 1 2 5 6 7 8 11) (30 20 1) simpleGrading (0.5 10 1) 		//B0 
    hex (5 2 3 4 11 8 9 10) (30 20 1) simpleGrading (0.5 0.1 1)	 	//B1
    hex (1 14 15 2 7 21 22 8) (15 20 1) simpleGrading (5 10 1) 		//B2  
    hex (2 15 16 3 8 22 23 9) (15 20 1) simpleGrading (5 0.1 1)	 	//B3
    hex (12 13 14 1 19 20 21 7) (15 20 1) simpleGrading (5 0.5 1)	//B4
    hex (3 16 17 18 9 23 24 25) (15 20 1) simpleGrading (5 5 1)		//B5 
    hex (26 27 13 12 30 31 20 19) (15 20 1) simpleGrading (5 5 1)	//B6 
    hex (18 17 28 29 25 24 32 33) (15 20 1) simpleGrading (5 0.5 1)	//B7 
    hex (27 34 35 13 31 41 42 20) (15 20 1) simpleGrading (0.5 5 1)	//B8
    hex (13 35 36 14 20 42 43 21) (15 20 1) simpleGrading (0.5 0.5 1)	//B9
    hex (14 36 37 15 21 43 44 22) (15 20 1) simpleGrading (0.5 10 1) 	//B10
    hex (15 37 38 16 22 44 45 23) (15 20 1) simpleGrading (0.5 0.1 1) 	//B11
    hex (16 38 39 17 23 45 46 24) (15 20 1) simpleGrading (0.5 5 1)	//B12
    hex (17 39 40 28 24 46 47 32) (15 20 1) simpleGrading (0.5 0.5 1)	//B13 
    hex (36 48 49 37 43 51 52 44) (30 20 1) simpleGrading (5 10 1) 	//B14
    hex (37 49 50 38 44 52 53 45) (30 20 1) simpleGrading (5 0.1 1) 	//B15
   
);

edges
(

  
);

boundary
(
   
  inlet
     {
      type patch;
      faces
      (
      
            (0 5 11 6)
            (5 4 10 11)
            
        );
    }
    
  
    
    outlet
    {
        type patch;
        faces
        (
            (48 49 52 51)
            (49 50 53 52)
            
        );
    }     
    
    walls
    {
        type wall;
        faces
        (
            (0 1 7 6)
            (4 3 9 10)
            (1 12 19 7)
            (12 26 30 19)
            (26 27 31 30)
            (3 9 25 18)
            (18 25 33 29)
            (28 29 33 32)
            (28 32 47 40)
            (40 47 46 39)
            (39 46 45 38)
            (27 34 41 31)
            (34 35 42 41)
            (35 36 43 42)
            (36 48 51 43)
            (38 45 53 50)
            
        );
    }
    
    frontAndBack
    {
        type empty;
        faces
        (
            (0 1 2 5)		//B0
            (5 2 3 4)		//B1
            (1 14 15 2)		//B2
            (2 15 16 3)		//B3
            (12 13 14 1)	//B4
            (3 16 17 18)	//B5
            (26 27 13 12)	//B6
            (18 17 28 29)	//B7
            (27 34 35 13)	//B8
	    (13 35 36 14)	//B9
	    (14 36 37 15)	//B10
	    (15 37 38 16)	//B11
	    (16 38 39 17)	//B12
	    (17 39 40 28)	//B13
	    (36 48 49 37)	//B14
	    (37 49 50 38)	//B15
            
            (6 7 8 11)		//B0
            (11 8 9 10)		//B1
            (7 21 22 8)		//B2
            (8 22 23 9)		//B3
            (19 20 21 7)	//B4
            (9 23 24 25)	//B5
            (30 31 20 19)	//B6
            (25 24 32 33)	//B7
            (31 41 42 20)	//B8
	    (20 42 43 21)	//B9
	    (21 43 44 22)	//B10
	    (22 44 45 23)	//B11
	    (23 45 46 24)	//B12
	    (24 46 47 32)	//B13
	    (43 51 52 44)	//B14
	    (44 52 53 45)	//B15
            
        );
    }

);

mergePatchPairs
(
);

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