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

///////////////////////////////////////////////////////////////////////////////////////
castellatedMesh true;
snap            true;
addLayers       true;
///////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////

geometry
{
    inlet.stl
    {
        type triSurfaceMesh;
        name inlet;
    }

    outlet.stl
    {
        type triSurfaceMesh;
        name outlet;
    }

    wall_rest.stl
    {
        type triSurfaceMesh;
        name wall_rest;
    }

    wall_ribs_bottom.stl
    {
        type triSurfaceMesh;
        name wall_ribs_bottom;
    }

    wall_ribs_bsides.stl
    {
        type triSurfaceMesh;
        name wall_ribs_bsides;
    }

    wall_ribs_mid.stl
    {
        type triSurfaceMesh;
        name wall_ribs_mid;
    }

    wall_ribs_side.stl
    {
        type triSurfaceMesh;
        name wall_ribs_side;
    }

    wall_ribs_top.stl
    {
        type triSurfaceMesh;
        name wall_ribs_top;
    }

    wall_ribs_tsides.stl
    {
        type triSurfaceMesh;
        name wall_ribs_tsides;
    }

}

//////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////

castellatedMeshControls
{

    maxLocalCells 1000000;

    maxGlobalCells 20000000;

    minRefinementCells 10;

    maxLoadUnbalance 0.10;

    nCellsBetweenLevels 3;

    // Explicit feature edge refinement

    features
    (

    {
        file "inlet.eMesh";
        level 2;
    }

    
    {
        file "outlet.eMesh";
        level 2;
    }

    
    {
        file "wall_rest.eMesh";
        level 2;
    }

    
    {
        file "wall_ribs_bottom.eMesh";
        level 2;
    }

    
    {
        file "wall_ribs_bsides.eMesh";
        level 2;
    }

    
    {
        file "wall_ribs_mid.eMesh";
        level 2;
    }

    
    {
        file "wall_ribs_side.eMesh";
        level 2;
    }

    
    {
        file "wall_ribs_top.eMesh";
        level 2;
    }

    
    {
        file "wall_ribs_tsides.eMesh";
        level 2;
    }

    );

    refinementSurfaces
    {
        inlet
        {
            level (2 2);
        patchInfo
        {
            type patch;
            inGroups (inlet);
        }
        }

    outlet
    {
        level (2 2);
    patchInfo
        {
            type patch;
            inGroups (outlet);
        }
    }

    wall_rest
    {
        level (2 2);
    patchInfo
        {
            type wall;
            inGroups (wall);
        }
    }

    wall_ribs_bottom
    {
        level (2 2);
    patchInfo
        {
            type wall;
            inGroups (wall);
        }
    }

    wall_ribs_bsides
    {
        level (2 2);
    patchInfo
        {
            type wall;
            inGroups (wall);
        }
    }

    wall_ribs_mid
    {
        level (2 2);
    patchInfo
        {
            type wall;
            inGroups (wall);
        }
    }

    wall_ribs_side
    {
        level (2 2);
    patchInfo
        {
            type wall;
            inGroups (wall);
        }
    }

    wall_ribs_top
    {
        level (2 2);
    patchInfo
        {
            type wall;
            inGroups (wall);
        }
    }

    wall_ribs_tsides
    {
        level (2 2);
    patchInfo
        {
            type wall;
            inGroups (wall);
        }
    }

    }

    
    resolveFeatureAngle 30;

    
     refinementRegions
     {
     }
    

    locationInMesh (-0.03 0.134 0.005);

    allowFreeStandingZoneFaces false;
}

//////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////

snapControls
{
    nSmoothPatch 3;

    tolerance 2.0;

    nSolveIter 300;

    nRelaxIter 5;

  // Feature snapping
        nFeatureSnapIter 10;

        implicitFeatureSnap false;

        explicitFeatureSnap true;

        multiRegionFeatureSnap false;
}


//////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////

addLayersControls
{
    relativeSizes false;

    layers
    {
        wall_ribs_top
        {
            nSurfaceLayers 8;
        }
        
        wall_ribs_bottom
        {
            nSurfaceLayers 8;
        }
        
         wall_ribs_tsides
        {
            nSurfaceLayers 8;
        }
            
          wall_ribs_bsides
        {
            nSurfaceLayers 8;
        }
        
          wall_ribs_mid
        {
            nSurfaceLayers 8;
        }
        
          wall_ribs_side
        {
            nSurfaceLayers 8;
        }
        
           wall_rest
        {
            nSurfaceLayers 8;
        }
        
    }

  
    expansionRatio 1.3;
    
    firstLayerThickness 2.5e-6;

   // finalLayerThickness 0.3;

    minThickness 1e-7;

    nGrow 0;


    // Advanced settings

   
    featureAngle 130;

    slipFeatureAngle 30;

    nRelaxIter 5;

    nSmoothSurfaceNormals 1;

    nSmoothNormals 3;

    nSmoothThickness 10;

    maxFaceThicknessRatio 0.5; // 0.6, 0.7

    maxThicknessToMedialRatio 0.3;

    minMedialAxisAngle 90;

    nBufferCellsNoExtrude 0;

    nLayerIter 50;
}

//////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////

meshQualityControls
{
    maxNonOrtho 75;

    maxBoundarySkewness 20;
    maxInternalSkewness 4;

    maxConcave 80;

    minFlatness 0.5;

    minVol 1e-13;
    minTetQuality 1e-30;

    minArea -1;

    minTwist 0.02;

    minDeterminant 0.001;

    minFaceWeight 0.02;

    minVolRatio 0.01;

    minTriangleTwist -1;

    nSmoothScale 4;
    
    errorReduction 0.75;
}

//////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////

// Advanced

mergeTolerance 1E-6;


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