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

// Include defaults parameters from master dictionary
#includeEtc "caseDicts/mesh/generation/foamyHexMeshDict"

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

    refinementBox
    {
        type searchableBox;
        min (-0.2  -0.6 -0.2);
        max ( 0.4   0.2  0.35);
    }
}

backgroundMeshDecomposition
{
    minLevels           0;
    sampleResolution    4;
    spanScale           20;
    maxCellWeightCoeff  20;
}

initialPoints
{
    initialPointsMethod         autoDensity;
    // initialPointsMethod     pointFile;

    autoDensityCoeffs
    {
        minLevels               0;
        maxSizeRatio            5.0;
        sampleResolution        5;
        surfaceSampleResolution 5;
    }

    pointFileCoeffs
    {
        pointFile               "constant/internalDelaunayVertices";
    }
}

surfaceConformation
{
    locationInMesh              (0.1 0.1 0.2);

    featurePointControls
    {
        specialiseFeaturePoints off;
        edgeAiming              off;
        guardFeaturePoints      off;
        snapFeaturePoints       off;
        circulateEdges          off;
    }

    geometryToConformTo
    {
        blob
        {
            featureMethod       none;
        }
    }
}

motionControl
{
    defaultCellSize             0.1;

    minimumCellSizeCoeff        0;

    maxSmoothingIterations      100;

    maxRefinementIterations     0;

    shapeControlFunctions
    {
        blob
        {
            type                    searchableSurfaceControl;
            priority                1;
            mode                    bothSides;

            surfaceCellSizeFunction uniformValue;
            uniformValueCoeffs
            {
                surfaceCellSizeCoeff     1;
            }

            cellSizeFunction        uniform;
            uniformCoeffs
            {}
        }
    }

    objOutput                   no;

    timeChecks                  no;
}

meshQualityControls
{
    #include "meshQualityDict"
}

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