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

scale 1;

// ========================================================================= //
// OPTIMIZED
// ========================================================================= //

// X-GRADING (GAPS): Sparse in the bulk, very tight against the rib walls (ratio 20)
PRE_RIB_X_GRAD  ((0.8 0.6 1) (0.2 0.4 0.05));
GAP_X_GRAD      ((0.05 0.2 20) (0.9 0.6 1) (0.05 0.2 0.05));
POST_RIB_X_GRAD ((0.2 0.4 20) (0.8 0.6 1));

// X-GRADING (RIBS): Aggressive squashing at rib corners to drop max y+
RIB_10_X_GRAD   ((0.15 0.3 12) (0.7 0.4 1) (0.15 0.3 0.083));
RIB_6_X_GRAD    ((0.15 0.3 10) (0.7 0.4 1) (0.15 0.3 0.1));
RIB_2_X_GRAD    ((0.2 0.3 6) (0.6 0.4 1) (0.2 0.3 0.166));

// Y-GRADING: Aggressive vertical squashing at the floor, ribs, and ceiling
LAYER1_Y_GRAD   ((0.2 0.3 10) (0.6 0.4 1) (0.2 0.3 0.1));
LAYER2_Y_GRAD   ((0.15 0.25 10) (0.7 0.5 1) (0.15 0.25 0.1));
LAYER3_Y_GRAD   ((0.15 0.25 10) (0.7 0.5 1) (0.15 0.25 0.1));
LAYER4_Y_GRAD   ((0.05 0.15 35) (0.9 0.7 1) (0.05 0.15 0.028)); // Heavy top wall squash

vertices
(
    // BACK PLANE (Z = 0.0)
    // j=0 (y0 = 0.0)
    (0.0   0.0  0.0) 
    (0.6   0.0  0.0) 
    (0.65  0.0  0.0) 
    (0.660 0.0  0.0) 
    (0.75  0.0  0.0) 
    (0.756 0.0  0.0) 
    (0.85  0.0  0.0) 
    (0.852 0.0  0.0) 
    (0.95  0.0  0.0) 
    (0.956 0.0  0.0) 
    (1.05  0.0  0.0) 
    (1.060 0.0  0.0) 
    (1.10  0.0  0.0) 
    (1.50  0.0  0.0) 

    // j=1 (y1 = 0.002)
    (0.0   0.002 0.0) 
    (0.6   0.002 0.0) 
    (0.65  0.002 0.0) 
    (0.660 0.002 0.0) 
    (0.75  0.002 0.0) 
    (0.756 0.002 0.0) 
    (0.85  0.002 0.0) 
    (0.852 0.002 0.0) 
    (0.95  0.002 0.0) 
    (0.956 0.002 0.0) 
    (1.05  0.002 0.0) 
    (1.060 0.002 0.0) 
    (1.10  0.002 0.0) 
    (1.50  0.002 0.0) 

    // j=2 (y2 = 0.006)
    (0.0   0.006 0.0) 
    (0.6   0.006 0.0) 
    (0.65  0.006 0.0) 
    (0.660 0.006 0.0) 
    (0.75  0.006 0.0) 
    (0.756 0.006 0.0) 
    (0.85  0.006 0.0) 
    (0.852 0.006 0.0) 
    (0.95  0.006 0.0) 
    (0.956 0.006 0.0) 
    (1.05  0.006 0.0) 
    (1.060 0.006 0.0) 
    (1.10  0.006 0.0) 
    (1.50  0.006 0.0) 

    // j=3 (y3 = 0.010)
    (0.0   0.010 0.0) 
    (0.6   0.010 0.0) 
    (0.65  0.010 0.0) 
    (0.660 0.010 0.0) 
    (0.75  0.010 0.0) 
    (0.756 0.010 0.0) 
    (0.85  0.010 0.0) 
    (0.852 0.010 0.0) 
    (0.95  0.010 0.0) 
    (0.956 0.010 0.0) 
    (1.05  0.010 0.0) 
    (1.060 0.010 0.0) 
    (1.10  0.010 0.0) 
    (1.50  0.010 0.0) 

    // j=4 (y4 = 0.080)
    (0.0   0.080 0.0) 
    (0.6   0.080 0.0) 
    (0.65  0.080 0.0) 
    (0.660 0.080 0.0) 
    (0.75  0.080 0.0) 
    (0.756 0.080 0.0) 
    (0.85  0.080 0.0) 
    (0.852 0.080 0.0) 
    (0.95  0.080 0.0) 
    (0.956 0.080 0.0) 
    (1.05  0.080 0.0) 
    (1.060 0.080 0.0) 
    (1.10  0.080 0.0) 
    (1.50  0.080 0.0) 

    // FRONT PLANE (Z = 0.01)
    // j=0 (y0 = 0.0)
    (0.0   0.0  0.01) 
    (0.6   0.0  0.01) 
    (0.65  0.0  0.01) 
    (0.660 0.0  0.01) 
    (0.75  0.0  0.01) 
    (0.756 0.0  0.01) 
    (0.85  0.0  0.01) 
    (0.852 0.0  0.01) 
    (0.95  0.0  0.01) 
    (0.956 0.0  0.01) 
    (1.05  0.0  0.01) 
    (1.060 0.0  0.01) 
    (1.10  0.0  0.01) 
    (1.50  0.0  0.01) 

    // j=1 (y1 = 0.002)
    (0.0   0.002 0.01) 
    (0.6   0.002 0.01) 
    (0.65  0.002 0.01) 
    (0.660 0.002 0.01) 
    (0.75  0.002 0.01) 
    (0.756 0.002 0.01) 
    (0.85  0.002 0.01) 
    (0.852 0.002 0.01) 
    (0.95  0.002 0.01) 
    (0.956 0.002 0.01) 
    (1.05  0.002 0.01) 
    (1.060 0.002 0.01) 
    (1.10  0.002 0.01) 
    (1.50  0.002 0.01) 

    // j=2 (y2 = 0.006)
    (0.0   0.006 0.01) 
    (0.6   0.006 0.01) 
    (0.65  0.006 0.01) 
    (0.660 0.006 0.01) 
    (0.75  0.006 0.01) 
    (0.756 0.006 0.01) 
    (0.85  0.006 0.01) 
    (0.852 0.006 0.01) 
    (0.95  0.006 0.01) 
    (0.956 0.006 0.01) 
    (1.05  0.006 0.01) 
    (1.060 0.006 0.01) 
    (1.10  0.006 0.01) 
    (1.50  0.006 0.01) 

    // j=3 (y3 = 0.010)
    (0.0   0.010 0.01) 
    (0.6   0.010 0.01) 
    (0.65  0.010 0.01) 
    (0.660 0.010 0.01) 
    (0.75  0.010 0.01) 
    (0.756 0.010 0.01) 
    (0.85  0.010 0.01) 
    (0.852 0.010 0.01) 
    (0.95  0.010 0.01) 
    (0.956 0.010 0.01) 
    (1.05  0.010 0.01) 
    (1.060 0.010 0.01) 
    (1.10  0.010 0.01) 
    (1.50  0.010 0.01) 

    // j=4 (y4 = 0.080)
    (0.0   0.080 0.01) 
    (0.6   0.080 0.01) 
    (0.65  0.080 0.01) 
    (0.660 0.080 0.01) 
    (0.75  0.080 0.01) 
    (0.756 0.080 0.01) 
    (0.85  0.080 0.01) 
    (0.852 0.080 0.01) 
    (0.95  0.080 0.01) 
    (0.956 0.080 0.01) 
    (1.05  0.080 0.01) 
    (1.060 0.080 0.01) 
    (1.10  0.080 0.01) 
    (1.50  0.080 0.01) 
);

blocks
(
    // --------------------------------------------------------------------- //
    // i=0: INLET SECTION
    // --------------------------------------------------------------------- //
    hex (0 1 15 14 70 71 85 84)       (150 20 1) simpleGrading (1 $LAYER1_Y_GRAD 1)
    hex (14 15 29 28 84 85 99 98)     (150 24 1) simpleGrading (1 $LAYER2_Y_GRAD 1)
    hex (28 29 43 42 98 99 113 112)   (150 24 1) simpleGrading (1 $LAYER3_Y_GRAD 1)
    hex (42 43 57 56 112 113 127 126) (150 50 1) simpleGrading (1 $LAYER4_Y_GRAD 1)

    // --------------------------------------------------------------------- //
    // i=1: PRE-RIB SECTION
    // --------------------------------------------------------------------- //
    hex (1 2 16 15 71 72 86 85)       (30 20 1) simpleGrading ($PRE_RIB_X_GRAD $LAYER1_Y_GRAD 1)
    hex (15 16 30 29 85 86 100 99)    (30 24 1) simpleGrading ($PRE_RIB_X_GRAD $LAYER2_Y_GRAD 1)
    hex (29 30 44 43 99 100 114 113)  (30 24 1) simpleGrading ($PRE_RIB_X_GRAD $LAYER3_Y_GRAD 1)
    hex (43 44 58 57 113 114 128 127) (30 50 1) simpleGrading ($PRE_RIB_X_GRAD $LAYER4_Y_GRAD 1)

    // i=2: RIB 1 (10mm Height)
    hex (44 45 59 58 114 115 129 128) (30 50 1) simpleGrading ($RIB_10_X_GRAD $LAYER4_Y_GRAD 1)

    // i=3: GAP 1 (Between Rib 1 & Rib 2)
    hex (3 4 18 17 73 74 88 87)       (60 20 1) simpleGrading ($GAP_X_GRAD $LAYER1_Y_GRAD 1)
    hex (17 18 32 31 87 88 102 101)   (60 24 1) simpleGrading ($GAP_X_GRAD $LAYER2_Y_GRAD 1)
    hex (31 32 46 45 101 102 116 115) (60 24 1) simpleGrading ($GAP_X_GRAD $LAYER3_Y_GRAD 1)
    hex (45 46 60 59 115 116 130 129) (60 50 1) simpleGrading ($GAP_X_GRAD $LAYER4_Y_GRAD 1)

    // i=4: RIB 2 (6mm Height)
    hex (32 33 47 46 102 103 117 116) (20 24 1) simpleGrading ($RIB_6_X_GRAD $LAYER3_Y_GRAD 1)
    hex (46 47 61 60 116 117 131 130) (20 50 1) simpleGrading ($RIB_6_X_GRAD $LAYER4_Y_GRAD 1)

    // i=5: GAP 2 (Between Rib 2 & Rib 3)
    hex (5 6 20 19 75 76 90 89)       (60 20 1) simpleGrading ($GAP_X_GRAD $LAYER1_Y_GRAD 1)
    hex (19 20 34 33 89 90 104 103)   (60 24 1) simpleGrading ($GAP_X_GRAD $LAYER2_Y_GRAD 1)
    hex (33 34 48 47 103 104 118 117) (60 24 1) simpleGrading ($GAP_X_GRAD $LAYER3_Y_GRAD 1)
    hex (47 48 62 61 117 118 132 131) (60 50 1) simpleGrading ($GAP_X_GRAD $LAYER4_Y_GRAD 1)

    // i=6: RIB 3 (2mm Height)
    hex (20 21 35 34 90 91 105 104)   (10 24 1) simpleGrading ($RIB_2_X_GRAD $LAYER2_Y_GRAD 1)
    hex (34 35 49 48 104 105 119 118) (10 24 1) simpleGrading ($RIB_2_X_GRAD $LAYER3_Y_GRAD 1)
    hex (48 49 63 62 118 119 133 132) (10 50 1) simpleGrading ($RIB_2_X_GRAD $LAYER4_Y_GRAD 1)

    // i=7: GAP 3 (Between Rib 3 & Rib 4)
    hex (7 8 22 21 77 78 92 91)       (60 20 1) simpleGrading ($GAP_X_GRAD $LAYER1_Y_GRAD 1)
    hex (21 22 36 35 91 92 106 105)   (60 24 1) simpleGrading ($GAP_X_GRAD $LAYER2_Y_GRAD 1)
    hex (35 36 50 49 105 106 120 119) (60 24 1) simpleGrading ($GAP_X_GRAD $LAYER3_Y_GRAD 1)
    hex (49 50 64 63 119 120 134 133) (60 50 1) simpleGrading ($GAP_X_GRAD $LAYER4_Y_GRAD 1)

    // i=8: RIB 4 (6mm Height)
    hex (36 37 51 50 106 107 121 120) (20 24 1) simpleGrading ($RIB_6_X_GRAD $LAYER3_Y_GRAD 1)
    hex (50 51 65 64 120 121 135 134) (20 50 1) simpleGrading ($RIB_6_X_GRAD $LAYER4_Y_GRAD 1)

    // i=9: GAP 4 (Between Rib 4 & Rib 5)
    hex (9 10 24 23 79 80 94 93)      (60 20 1) simpleGrading ($GAP_X_GRAD $LAYER1_Y_GRAD 1)
    hex (23 24 38 37 93 94 108 107)   (60 24 1) simpleGrading ($GAP_X_GRAD $LAYER2_Y_GRAD 1)
    hex (37 38 52 51 107 108 122 121) (60 24 1) simpleGrading ($GAP_X_GRAD $LAYER3_Y_GRAD 1)
    hex (51 52 66 65 121 122 136 135) (60 50 1) simpleGrading ($GAP_X_GRAD $LAYER4_Y_GRAD 1)

    // i=10: RIB 5 (10mm Height)
    hex (52 53 67 66 122 123 137 136) (30 50 1) simpleGrading ($RIB_10_X_GRAD $LAYER4_Y_GRAD 1)

    // i=11: POST-RIB SECTION
    hex (11 12 26 25 81 82 96 95)     (25 20 1) simpleGrading ($POST_RIB_X_GRAD $LAYER1_Y_GRAD 1)
    hex (25 26 40 39 95 96 110 109)   (25 24 1) simpleGrading ($POST_RIB_X_GRAD $LAYER2_Y_GRAD 1)
    hex (39 40 54 53 109 110 124 123) (25 24 1) simpleGrading ($POST_RIB_X_GRAD $LAYER3_Y_GRAD 1)
    hex (53 54 68 67 123 124 138 137) (25 50 1) simpleGrading ($POST_RIB_X_GRAD $LAYER4_Y_GRAD 1)

    // --------------------------------------------------------------------- //
    // i=12: OUTLET SECTION
    // --------------------------------------------------------------------- //
    hex (12 13 27 26 82 83 97 96)     (100 20 1) simpleGrading (1 $LAYER1_Y_GRAD 1)
    hex (26 27 41 40 96 97 111 110)   (100 24 1) simpleGrading (1 $LAYER2_Y_GRAD 1)
    hex (40 41 55 54 110 111 125 124) (100 24 1) simpleGrading (1 $LAYER3_Y_GRAD 1)
    hex (54 55 69 68 124 125 139 138) (100 50 1) simpleGrading (1 $LAYER4_Y_GRAD 1)
);

edges
(
);

boundary
(
    inlet
    {
        type patch;
        faces
        (
            (0 14 84 70)
            (14 28 98 84)
            (28 42 112 98)
            (42 56 126 112)
        );
    }
    outlet
    {
        type patch;
        faces
        (
            (13 83 97 27)
            (27 97 111 41)
            (41 111 125 55)
            (55 125 139 69)
        );
    }
    bottomWallInlet
    {
        type wall;
        faces
        (
            (0 1 71 70)
        );
    }
    bottomWallTest
    {
        type wall;
        faces
        (
            (1 2 72 71)
            (3 4 74 73)
            (5 6 76 75)
            (7 8 78 77)
            (9 10 80 79)
            (11 12 82 81)

            // Rib 1 walls (10mm Height)
            (2 16 86 72) (16 30 100 86) (30 44 114 100) // Front
            (44 45 115 114)                             // Top
            (45 31 101 115) (31 17 87 101) (17 3 73 87) // Back

            // Rib 2 walls (6mm Height)
            (4 18 88 74) (18 32 102 88)                 // Front
            (32 33 103 102)                             // Top
            (33 19 89 103) (19 5 75 89)                 // Back

            // Rib 3 walls (2mm Height)
            (6 20 90 76)                                // Front
            (20 21 91 90)                               // Top
            (21 7 77 91)                                // Back

            // Rib 4 walls (6mm Height)
            (8 22 92 78) (22 36 106 92)                 // Front
            (36 37 107 106)                             // Top
            (37 23 93 107) (23 9 79 93)                 // Back

            // Rib 5 walls (10mm Height)
            (10 24 94 80) (24 38 108 94) (38 52 122 108)// Front
            (52 53 123 122)                             // Top
            (53 39 109 123) (39 25 95 109) (25 11 81 95)// Back
        );
    }
    bottomWallOutlet
    {
        type wall;
        faces
        (
            (12 13 83 82)
        );
    }
    topWall
    {
        type wall;
        faces
        (
            (56 126 127 57)
            (57 127 128 58)
            (58 128 129 59)
            (59 129 130 60)
            (60 130 131 61)
            (61 131 132 62)
            (62 132 133 63)
            (63 133 134 64)
            (64 134 135 65)
            (65 135 136 66)
            (66 136 137 67)
            (67 137 138 68)
            (68 138 139 69)
        );
    }
);

mergePatchPairs
(
);

defaultPatch
{
    name frontAndBack;
    type empty;
}

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