FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      snappyHexMeshDict;
}

castellatedMesh true;
snap            true;
addLayers       false;

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

castellatedMeshControls
{
    maxLocalCells 2000000;
    maxGlobalCells 4000000;
    minRefinementCells 10;
    maxLoadUnbalance 0.10;

    nCellsBetweenLevels 2;

    features ();

    refinementSurfaces
    {
        obstacle
        {
            level (2 3);
            patchInfo
            {
                type wall;
            }
        }
    }

    resolveFeatureAngle 30;

    refinementRegions {}

    locationInMesh (0.2 0.2 0.2);
}

snapControls
{
    nSmoothPatch 3;
    tolerance 2.0;
    nSolveIter 30;
    nRelaxIter 5;
}

addLayersControls {}

meshQualityControls
{
    maxNonOrtho 75;
    maxBoundarySkewness 20;
    maxInternalSkewness 4;
    maxConcave 80;
    minVol 1e-13;
    minTetQuality 1e-9;
    minArea -1;
    minTwist 0.02;
    minDeterminant 0.001;
    minFaceWeight 0.02;
    minVolRatio 0.01;
    minTriangleTwist -1;
}

writeFlags (scalarLevels layerSets layerFields);

mergeTolerance 1e-6;