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

convertToMeters 1;
max_grad 80;
min_grad 40;
vertices #codeStream
{
    codeInclude
    #{
        #include "pointField.H"
    #};

    code
    #{
        pointField points(76);
        points[0]  = point(0.5, 0, -0.5);
        points[1]  = point(1, 0, -0.5);
        points[2]  = point(10, 0, -0.5);
        points[3]  = point(10, 0.707107, -0.5);
        points[4]  = point(0.707107, 0.707107, -0.5);
        points[5]  = point(0.353553, 0.353553, -0.5);
        points[6]  = point(10, 2, -0.5);
        points[7]  = point(0.707107, 2, -0.5);
        points[8]  = point(0, 2, -0.5);
        points[9]  = point(0, 1, -0.5);
        points[10] = point(0, 0.5, -0.5);
        points[11] = point(-0.5, 0, -0.5);
        points[12] = point(-1, 0, -0.5);
        points[13] = point(-10, 0, -0.5);
        points[14] = point(-10, 0.707107, -0.5);
        points[15] = point(-0.707107, 0.707107, -0.5);
        points[16] = point(-0.353553, 0.353553, -0.5);
        points[17] = point(-10, 2, -0.5);
        points[18] = point(-0.707107, 2, -0.5);
	points[19] = point(10,-0.707107,-0.5);
	points[20] = point(0.707107,-0.707107,-0.5);
	points[21] = point(0.353553,-0.353553,-0.5);
	points[22] = point(10,-2,-0.5);
	points[23] = point(0.707107,-2,-0.5);
	points[24] = point(0,-2,-0.5);
	points[25] = point(0,-1,-0.5);
	points[26] = point(0,-0.5,-0.5);
	points[27] = point(-10,-0.707107,-0.5);
	points[28] = point(-0.707107,-0.707107,-0.5);
	points[29] = point(-0.353553,-0.353553,-0.5);
	points[30] = point(-10,-2,-0.5);
	points[31] = point(-0.707107,-2,-0.5);
        points[32]  = point(3.292893, -2, -0.5);
        points[33]  = point(4, -2, -0.5);
        points[34]  = point(4.707107, -2, -0.5);
        points[35]  = point(4.707107, -0.707107, -0.5);
        points[36]  = point(4.353553, -0.353553, -0.5);
        points[37]  = point(4,-0.5, -0.5);
        points[38]  = point(4, -1, -0.5);
        points[39]  = point(3.292893, -0.707107, -0.5);
        points[40]  = point(3.646447, -0.353553, -0.5);
        points[41]  = point(3.5, 0, -0.5);
        points[42] = point(3, 0, -0.5);
        points[43] = point(3.646447, 0.353553, -0.5);
        points[44] = point(3.292893, 0.707107, -0.5);
        points[45] = point(4, 0.5, -0.5);
        points[46] = point(4, 1, -0.5);
        points[47] = point(4.353553, 0.353553, -0.5);
        points[48] = point(4.707107, 0.707107, -0.5);
        points[49] = point(4.5, 0, -0.5);
        points[50] = point(5, 0, -0.5);
	points[51] = point(4.707107, 2, -0.5);
	points[52] = point(4, 2, -0.5);
	points[53] = point(3.292893, 2, -0.5);
	points[54] = point(-4.707107,-2,-0.5);
	points[55] = point(-4,-2,-0.5);
	points[56] = point(-3.292893,-2,-0.5);
	points[57] = point(-3, 0, -0.5);
	points[58] = point(-3.5, 0, -0.5);
	points[59] = point(-3.292893,-0.707107,-0.5);
	points[60] = point(-3.646447,-0.353553,-0.5);
	points[61] = point(-4,-1,-0.5);
	points[62] = point(-4,-0.5,-0.5);
	points[63] = point(-4.707107,-0.707107,-0.5);
        points[64]  = point(-4.353553,-0.353553,-0.5);
        points[65]  = point(-5, 0, -0.5);
        points[66]  = point(-4.5, 0, -0.5);
        points[67]  = point(-4.707107, 0.707107, -0.5);
        points[68]  =  point(-4.353553, 0.353553, -0.5);
        points[69]  =point(-4, 1, -0.5);
        points[70] = point(-4, 0.5, -0.5);
        points[71] =point(-3.292893, 0.707107, -0.5);
        points[72] = point(-3.646447, 0.353553, -0.5);
        points[73] = point(-3.292893, 2, -0.5);
        points[74] = point(-4, 2, -0.5);
        points[75] = point(-4.707107, 2, -0.5);
        

        // Duplicate z points
        label sz = points.size();
        points.setSize(2*sz);
        for (label i = 0; i < sz; i++)
        {
            const point& pt = points[i];
            points[i+sz] = point(pt.x(), pt.y(), -pt.z());
        }

        os  << points;
    #};
};
blocks
(
    hex (5 4 9 10 81 80 85 86) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (0 1 4 5 76 77 80 81) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (1 42 44 4 77 118 120 80) ($max_grad $min_grad 1) simpleGrading (1 1 1)
    hex (4 44 53 7 80 120 129 83) ($max_grad $max_grad 1) simpleGrading (1 1 1)
    hex (9 4 7 8 85 80 83 84) ($min_grad $max_grad 1) simpleGrading (1 1 1)
    hex (15 16 10 9 91 92 86 85) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (12 11 16 15 88 87 92 91) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (57 12 15 71 133 88 91 147) ($max_grad $min_grad 1) simpleGrading (1 1 1)
    hex (71 15 18 73 147 91 94 149) ($max_grad $max_grad 1) simpleGrading (1 1 1)
    hex (15 9 8 18 91 85 84 94) ($min_grad $max_grad 1) simpleGrading (1 1 1)
    hex (25 20 21 26 101 96 97 102) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (21 20 1 0 97 96 77 76) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (20 39 42 1 96 115 118 77) ($max_grad $min_grad 1) simpleGrading (1 1 1)
    hex (23 32 39 20 99 108 115 96) ($max_grad $max_grad 1) simpleGrading (1 1 1)
    hex (24 23 20 25 100 99 96 101) ($min_grad $max_grad 1) simpleGrading (1 1 1)
    hex (29 28 25 26 105 104 101 102) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (28 29 11 12 104 105 87 88) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (59 28 12 57 135 104 88 133) ($max_grad $min_grad 1) simpleGrading (1 1 1)
    hex (56 31 28 59 132 107 104 135)($max_grad $max_grad 1) simpleGrading (1 1 1)
    hex (31 24 25 28 107 100 101 104) ($min_grad $max_grad 1) simpleGrading (1 1 1)
    hex (38 35 36 37 114 111 112 113) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (36 35 50 49 112 111 126 125) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (35 19 2 50 111 95 78 126) ($max_grad $min_grad 1) simpleGrading (1 1 1)
    hex (48 3 6 51 124 79 82 127) ($max_grad $max_grad 1) simpleGrading (1 1 1)
    hex (46 48 51 52 122 124 127 128) ($min_grad $max_grad 1) simpleGrading (1 1 1)
    hex (40 39 38 37 116 115 114 113) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (39 40 41 42 115 116 117 118) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (32 33 38 39 108 109 114 115) ($min_grad $max_grad 1) simpleGrading (1 1 1)
    hex (47 48 46 45 123 124 122 121) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (49 50 48 47 125 126 124 123) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (50 2 3 48 126 78 79 124) ($max_grad $min_grad 1) simpleGrading (1 1 1)
    hex (34 22 19 35 110 98 95 111) ($max_grad $max_grad 1) simpleGrading (1 1 1)
    hex (33 34 35 38 109 110 111 114) ($min_grad $max_grad 1) simpleGrading (1 1 1)
    hex (46 44 43 45 122 120 119 121) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (42 41 43 44 118 117 119 120) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (44 46 52 53 120 122 128 129) ($min_grad $max_grad 1) simpleGrading (1 1 1)
    hex (72 71 69 70 148 147 145 146) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (58 57 71 72 134 133 147 148) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (55 56 59 61 131 132 135 137) ($min_grad $max_grad 1) simpleGrading (1 1 1)
    hex (64 63 61 62 140 139 137 138) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (63 64 66 65 139 140 142 141) ($min_grad $min_grad 1) simpleGrading (1 1 1) //40
    hex (54 55 61 63 130 131 137 139) ($min_grad $max_grad 1) simpleGrading (1 1 1)
    hex (61 59 60 62 137 135 136 138) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (68 70 69 67 144 146 145 143) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (66 68 67 65 142 144 143 141) ($min_grad $min_grad 1) simpleGrading (1 1 1)
    hex (69 71 73 74 145 147 149 150) ($min_grad $max_grad 1) simpleGrading (1 1 1)
    hex (67 69 74 75 143 145 150 151) ($min_grad $max_grad 1) simpleGrading (1 1 1)
    hex (67 75 17 14 143 151 93 90) ($max_grad $max_grad 1) simpleGrading (1 1 1)
    hex (65 67 14 13 141 143 90 89) ($min_grad $max_grad 1) simpleGrading (1 1 1) //48
    hex (63 65 13 27 139 141 89 103) ($min_grad $max_grad 1) simpleGrading (1 1 1) //49
    hex (54 63 27 30 130 139 103 106) ($max_grad $max_grad 1) simpleGrading (1 1 1)
    hex (58 60 59 57 134 136 135 133) ($min_grad $min_grad 1) simpleGrading (1 1 1)
);

edges
(
    arc 0 5 (0.469846 0.17101 -0.5)
    arc 5 10 (0.17101 0.469846 -0.5)
    arc 1 4 (0.939693 0.34202 -0.5)
    arc 4 9 (0.34202 0.939693 -0.5)
    arc 76 81 (0.469846 0.17101 0.5)
    arc 81 86 (0.17101 0.469846 0.5)
    arc 77 80 (0.939693 0.34202 0.5)
    arc 80 85 (0.34202 0.939693 0.5)
    arc 11 16 (-0.469846 0.17101 -0.5)
    arc 16 10 (-0.17101 0.469846 -0.5)
    arc 12 15 (-0.939693 0.34202 -0.5)
    arc 15 9 (-0.34202 0.939693 -0.5)
    arc 87 92 (-0.469846 0.17101 0.5)
    arc 92 86 (-0.17101 0.469846 0.5)
    arc 88 91 (-0.939693 0.34202 0.5)
    arc 91 85 (-0.34202 0.939693 0.5)

    arc 0 21 (0.469846 -0.17101 -0.5)
    arc 21 26 (0.17101 -0.469846 -0.5)
    arc 1 20 (0.939693 -0.34202 -0.5)
    arc 20 25 (0.34202 -0.939693 -0.5)
    arc 76 97 (0.469846 -0.17101 0.5)
    arc 97 102 (0.17101 -0.469846 0.5)
    arc 77 96 (0.939693 -0.34202 0.5)
    arc 96 101 (0.34202 -0.939693 0.5)
    arc 11 29 (-0.469846 -0.17101 -0.5)
    arc 29 26 (-0.17101 -0.469846 -0.5)
    arc 12 28 (-0.939693 -0.34202 -0.5)
    arc 28 25 (-0.34202 -0.939693 -0.5)
    arc 87 105 (-0.469846 -0.17101 0.5)
    arc 105 102 (-0.17101 -0.469848 0.5)
    arc 88 104 (-0.939693 -0.34202 0.5)
    arc 104 101 (-0.34202 -0.939693 0.5)

    arc 49 47 (4.469846 0.17101 -0.5)
    arc 47 45 (4.17101 0.469846 -0.5)
    arc 50 48 (4.939693 0.34202 -0.5)
    arc 48 46 (4.34202 0.939693 -0.5)
    arc 125 123 (4.469846 0.17101 0.5)
    arc 123 121 (4.17101 0.469846 0.5)
    arc 126 124 (4.939693 0.34202 0.5)
    arc 124 122 (4.34202 0.939693 0.5)
    arc 41 43 (3.530154 0.17101 -0.5)
    arc 43 45 (3.83899 0.469846 -0.5)
    arc 42 44 (3.060307 0.34202 -0.5)
    arc 44 46 (3.65798 0.939693 -0.5)
    arc 117 119 (3.530154 0.17101 0.5)
    arc 119 121 (3.83899 0.469846 0.5)
    arc 118 120 (3.060307 0.34202 0.5)
    arc 120 122 (3.65798 0.939693 0.5)

    arc 49 36 (4.469846 -0.17101 -0.5)
    arc 36 37 (4.17101 -0.469846 -0.5)
    arc 50 35 (4.939693 -0.34202 -0.5)
    arc 35 38 (4.34202 -0.939693 -0.5)
    arc 125 112 (4.469846 -0.17101 0.5)
    arc 112 113 (4.17101 -0.469846 0.5)
    arc 126 111 (4.939693 -0.34202 0.5)
    arc 111 114 (4.34202 -0.939693 0.5)
    arc 41 40 (3.530154 -0.17101 -0.5)
    arc 40 37 (3.83899 -0.469846 -0.5)
    arc 42 39 (3.060307 -0.34202 -0.5)
    arc 39 38 (3.65798 -0.939693 -0.5)
    arc 117 116 (3.530154 -0.17101 0.5)
    arc 116 113 (3.83899 -0.469848 0.5)
    arc 118 115 (3.060307 -0.34202 0.5)
    arc 115 114 (3.65798 -0.939693 0.5)

    arc 58 72 (-3.530154 0.17101 -0.5)
    arc 72 70 (-3.83899 0.469846 -0.5)
    arc 57 71 (-3.060307 0.34202 -0.5)
    arc 71 69 (-3.65798 0.939693 -0.5)
    arc 134 148 (-3.530154 0.17101 0.5)
    arc 148 146 (-3.83899 0.469846 0.5)
    arc 133 147 (-3.060307 0.34202 0.5)
    arc 147 145 (-3.65798 0.939693 0.5)
    arc 66 68 (-4.469846 0.17101 -0.5)
    arc 68 70 (-4.17101 0.469846 -0.5)
    arc 65 67 (-4.939693 0.34202 -0.5)
    arc 67 69 (-4.34202 0.939693 -0.5)
    arc 142 144 (-4.469846 0.17101 0.5)
    arc 144 146 (-4.17101 0.469846 0.5)
    arc 141 143 (-4.939693 0.34202 0.5)
    arc 143 145 (-4.34202 0.939693 0.5)

    arc 58 60 (-3.530154 -0.17101 -0.5)
    arc 60 62 (-3.83899 -0.469846 -0.5)
    arc 57 59 (-3.060307 -0.34202 -0.5)
    arc 59 61 (-3.65789 -0.939693 -0.5)
    arc 134 136 (-3.530154 -0.17101 0.5)
    arc 136 138 (-3.83899 -0.469846 0.5)
    arc 133 135 (-3.060307 -0.34202 0.5)
    arc 135 137 (-3.65789 -0.939693 0.5)
    arc 66 64 (-4.469846 -0.17101 -0.5)
    arc 64 62 (-4.17101 -0.469846 -0.5)
    arc 65 63 (-4.939693 -0.34202 -0.5)
    arc 63 61 (-4.34202 -0.939693 -0.5)
    arc 142 140 (-4.469846 -0.17101 0.5)
    arc 140 138 (-4.17101 -0.469848 0.5)
    arc 141 139 (-4.939693 -0.34202 0.5)
    arc 139 137 (-4.34202 -0.939693 0.5)
);

boundary
(
    inlet
    {
        type 	patch;
        faces	(
            (14 13 89 90)
            (17 14 90 93)
	    (13 27 103 89)
	    (27 30 106 103)
                );
    }

    outlet
    {
        type 	patch;
        faces	((2 3 79 78)
            (3 6 82 79)
	    (19 2 78 95)
	    (22 19 95 98));
    }

    pipe_adiabatic
    {
        type 	wall;
        faces	(
             (24 23 99 100)
	   (23 32 108 99)
           (32 33 109 108)
           (33 34 110 109)
           (34 22 98 110)
	   (31 24 100 107)
	   (30 54 130 106)
           (54 55 131 130)
           (55 56 132 131)
           (56 31 107 132)
           (7 8 84 83)
           (6 51 127 82)
           (51 52 128 127)
           (52 53 129 128)
           (53 7 83 129)
           (8 18 94 84)
           (18 73 149 94)
	   (73 74 150 149)
	   (74 75 151 150)
	   (75 17 93 151)                
                         );
    }
    
    
	
	pipe_heated
    {
        type 	wall;
        faces	((10 5 81 86)
            (5 0 76 81)
            (16 10 86 92)
            (11 16 92 87)
	    (0 21 97 76)
	    (21 26 102 97)
	    (26 29 105 102)
	    (29 11 87 105)

            (70 72 148 146)
            (72 58 134 148)
            (68 70 146 144)
            (66 68 144 142)
	    (58 60 136 134)
	    (60 62 138 136)
	    (62 64 140 138)
	    (64 66 142 140)

            (45 47 123 121)
            (47 49 125 123)
            (43 45 121 119)
            (41 43 119 117)
	    (49 36 112 125)
	    (36 37 113 112)
	    (37 40 116 113)
	    (40 41 117 116));
    }

    back
    {
        type 	empty;
        faces	
		(
			(73 18 15 71)
			(18 8 9 15)
                        (8 7 4 9)
                        (7 53 44 4)
                        (71 15 12 57)
			(15 16 11 12)
			(15 9 10 16)
			(9 4 5 10)
			(4 1 0 5)
			(4 44 42 1)
			(57 12 28 59)
			(12 11 29 28)
			(28 29 26 25)
			(26 21 20 25)
			(21 0 1 20)
			(20 1 42 39)
			(59 28 31 56)
			(28 25 24 31)
			(25 20 23 24)
			(20 39 32 23)

			(53 52 46 44)
			(52 51 48 46)
			(51 6 3 48)
			(48 3 2 50)
			(50 2 19 35)
			(35 19 22 34)
			(38 35 34 33)
			(39 38 33 32)
			(44 46 45 43)
			(46 48 47 45)
			(48 50 49 47)
			(50 35 36 49)
			(35 38 37 36)
			(38 39 40 37)
			(39 42 41 40)
			(42 44 43 41)

			
                        (71 57 58 72)
			(58 57 59 60)
			(60 59 61 62)
			(62 61 63 64)
			(64 63 65 66)
			(66 65 67 68)
			(68 67 69 70)
			(70 69 71 72)
			(61 59 56 55)
			(54 63 61 55)
			(30 27 63 54)
			(27 13 65 63)
			(13 14 67 65)
			(14 17 75 67)
			(67 75 74 69)
			(69 74 73 71)
		
		);
    }

    front
    {
        type	empty;
        faces	
		(       
			(93 90 143 151)
			(90 89 141 143)
			(89 103 139 141)
			(106 103 139 130)
			(151 143 145 150)
			(143 144 146 145)
			(143 141 142 144)
			(141 139 140 142)
			(139 140 138 137)
			(130 139 137 131)
			(150 145 147 149)
			(145 146 148 147)
			(147 148 134 133)
			(133 134 136 135)
			(135 136 138 137)
			(132 135 137 131)
			(149 147 91 94)
			(147 133 88 91)
			(133 135 104 88)
			(135 132 107 104)

			(94 91 85 84)
			(91 92 86 85)
			(91 88 87 92)
			(88 104 105 87)
			(104 101 102 105)
			(107 104 101 100)
			(85 84 83 80)
			(86 85 80 81)
			(81 80 77 76)
			(77 76 97 96)
			(96 97 102 101)
			(101 100 99 96)
			(83 80 120 129)
			(80 77 118 120)
			(77 96 115 118)
			(96 99 108 115)

			(129 120 122 128)
			(120 119 121 122)
			(120 118 117 119)
			(118 115 116 117)
			(116 115 114 113)
			(115 108 109 114)
			(128 122 124 127)
			(122 121 123 124)
			(124 123 125 126)
			(126 125 112 111)
			(111 112 113 114)
			(110 111 114 109)
			(127 124 79 82)
			(124 126 78 79)
			(126 111 95 78)
			(111 110 98 95)
			
			
			
                        
		);
    }
    
);

mergePatchPairs
(
);

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




	
	

