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

#inputMode merge;

surfaceConformation
{
    pointPairDistanceCoeff              0.1;
    mixedFeaturePointPPDistanceCoeff    5.0;
    featurePointExclusionDistanceCoeff  0.65;
    featureEdgeExclusionDistanceCoeff   0.65;
    surfaceSearchDistanceCoeff          5;
    maxSurfaceProtrusionCoeff           0.1;
    maxQuadAngle                        125;
    surfaceConformationRebuildFrequency 10;

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

    conformationControls
    {
        edgeSearchDistCoeff             5;
        surfacePtReplaceDistCoeff       0.5;
        surfacePtExclusionDistanceCoeff 0.5;
        maxIterations                   15;
        iterationToInitialHitRatioLimit 0.001;
    }

    additionalFeatures
    {}
}


initialPoints
{
    minimumSurfaceDistanceCoeff 0.55;
    fixInitialPoints            false;

    initialPointsMethod         autoDensity;
    autoDensityCoeffs
    {
        minLevels               4;
        maxSizeRatio            5.0;
        sampleResolution        5;
        surfaceSampleResolution 5;
    }
}


motionControl
{
    maxSmoothingIterations      100;

    cellAspectRatioControl
    {
        aspectRatio             1.0;
        aspectRatioDirection    (1 0 0);
    }

    relaxationModel             adaptiveLinear;
    adaptiveLinearCoeffs
    {
        relaxationStart         1.0;
        relaxationEnd           0.0;
    }

    objOutput                   no;
    timeChecks                  no;
    printVertexInfo             off;

    maxLoadUnbalance            0.2;

    alignmentAcceptanceAngle    48;

    pointInsertionCriteria
    {
        cellCentreDistCoeff     1.75;
        faceAreaRatioCoeff      0.0025;
        acceptanceAngle         21.5;
    }

    pointRemovalCriteria
    {
        cellCentreDistCoeff     0.65;
    }

    faceAreaWeightModel         piecewiseLinearRamp;
    piecewiseLinearRampCoeffs
    {
        lowerAreaFraction       0.5;
        upperAreaFraction       1.0;
    }
}


polyMeshFiltering
{
    filterEdges                         on;
    filterFaces                         off;
    writeTetDualMesh                    true;
    writeCellShapeControlMesh           true;
    writeBackgroundMeshDecomposition    true;
}


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


meshQualityControls
{
    #include "meshQualityDict"
}


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