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

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

// Any scalar with a name <name>Coeff specifies a value that will be implemented
// as a faction of the target cell size

geometry
{
    #include "meshDict.geometry"
}

initialPoints
{
    initialPointsMethod         autoDensity;

    autoDensityCoeffs
    {
        minLevels               2;
        maxSizeRatio            3.0;
        sampleResolution        4;
        surfaceSampleResolution 5;
    }
}

surfaceConformation
{
    locationInMesh      (0 0 0);

    geometryToConformTo
    {
        flange
        {
            featureMethod           extractFeatures;
            includedAngle           140;

            regions
            {
                patch1
                {
                    patchInfo
                    {
                        type        wall;
                        inGroups    (groupFlange groupWalls);
                    }
                }

                patch2
                {
                    patchInfo
                    {
                        type        wall;
                        inGroups    (groupFlange groupWalls);
                    }
                }

                patch3
                {
                    patchInfo
                    {
                        type        wall;
                        inGroups    (groupFlange);
                    }
                }

                patch4
                {
                    patchInfo
                    {
                        type        patch;
                        inGroups    (groupFlange);
                    }
                }
            }
        }
    }
}

motionControl
{
    defaultCellSize             0.0008;

    minimumCellSizeCoeff        0;

    maxSmoothingIterations      100;

    maxRefinementIterations     0;

    shapeControlFunctions
    {
        flange
        {
            type                        searchableSurfaceControl;
            priority                    1;
            mode                        inside;
            surfaceCellSizeFunction     uniformValue;
            uniformValueCoeffs
            {
                surfaceCellSizeCoeff    1;
            }
            cellSizeFunction            surfaceOffsetLinearDistance;
            surfaceOffsetLinearDistanceCoeffs
            {
                distanceCellSizeCoeff   1;
                surfaceOffsetCoeff      2.5;
                linearDistanceCoeff     2.5;
            }

            regions
            {
                patch3
                {
                    type                        searchableSurfaceControl;
                    priority                    2;
                    mode                        inside;
                    surfaceCellSizeFunction     uniformValue;
                    uniformValueCoeffs
                    {
                        surfaceCellSizeCoeff    0.25;
                    }
                    cellSizeFunction            surfaceOffsetLinearDistance;
                    surfaceOffsetLinearDistanceCoeffs
                    {
                        distanceCellSizeCoeff   1;
                        surfaceOffsetCoeff      2;
                        linearDistanceCoeff     2;
                    }
                }
            }
        }
    }

    adaptiveLinearCoeffs
    {
        relaxationStart         1.0;
        relaxationEnd           0.0;
    }

    objOutput                   no;

    timeChecks                  no;
}

backgroundMeshDecomposition
{
    minLevels           1;
    sampleResolution    4;
    spanScale           5;
    maxCellWeightCoeff  10;
}

meshQualityControls
{
    #include "meshQualityDict"
}

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