/*--------------------------------*- C++ -*----------------------------------*\
|                                                                             |
|                Generated by the CfdOF workbench for FreeCAD                 |
|                      https://github.com/jaheyns/CfdOF                       |
|                                                                             |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

pseudoTime
{
    pseudoTol          0.001 (0.001 0.001 0.001) 0.001;
    pseudoCoNum        1;
    pseudoCoNumMax     25.0;

    pseudoCoNumMaxIncreaseFactor  1.2;
    pseudoCoNumMin                0.1;

    localTimestepping             true;
    localTimesteppingBounding     true;
    localTimesteppingLowerBound   0.95;
    localTimesteppingUpperBound   1.05;

    // Last line of defense, in case of very poor grid
    // TODO: Generalise
    rhoMin              1e-3;
    TMin                10;
}

flowSolver
{
    solver             GMRES;
    GMRES
    {
        inviscidJacobian  LaxFriedrich;
        viscousJacobian   laplacian;
        preconditioner    LUSGS;

        maxIter           5;
        nKrylov           8;
        solverTolRel      1e-1 (1e-1 1e-1 1e-1) 1e-1;
    }
}

potentialFlow
{
    nNonOrthogonalCorrectors 8;

    PhiRefValue 0;
    PhiRefCell 0;
}

solvers
{
    "(k|omega|epsilon|nuTilda|gammaInt|ReThetat)"
    {
        solver           smoothSolver;
        smoother         GaussSeidel;
        tolerance        1e-8;
        relTol           0.1;
        nSweeps          1;
        minIter          1;
    }

    "(k|omega|epsilon|nuTilda|gammaInt|ReThetat)Final"
    {
        $k;
        relTol          0;
    }

    yPsi
    {
        solver          GAMG;
        smoother        GaussSeidel;
        nCellsInCoarsestLevel 10;
        agglomerator    faceAreaPair;
        mergeLevels     1;
        tolerance       1e-3;
        relTol          0;
    }

    yWall
    {
        solver          GAMG;
        smoother        symGaussSeidel;
        nCellsInCoarsestLevel 10;
        agglomerator    faceAreaPair;
        mergeLevels     1;
        tolerance       1e-8;
        relTol          0;
    }

    Phi
    {
        solver           GAMG;
        tolerance        1e-7;
        relTol           0.01;
        smoother         GaussSeidel;
        nPreSweeps       0;
        nPostSweeps      2;
        cacheAgglomeration on;
        agglomerator     faceAreaPair;
        nCellsInCoarsestLevel 10;
        mergeLevels      1;
    }
}

relaxationFactors
{
    // Conservative settings to solve reliably on bad
    // meshes
    equations
    {
        U               0.7;
        k               0.7;
        omega           0.7;
    }

    fields
    {
        p               0.3;
    }
}

cache
{
    grad(U);
}

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