II.6) fvSchemes et fvSolution

Dans le dossier 'system', on trouve les fichiers fvSchemes et fvSolution.

fvSchemes

Ce fichier permet de choisir le type de discrétisation utilisée pour résoudre les équations du problème. Il existe de nombreux schémas numériques pour discrétiser qui sont partiellement répertoriés http://www.openfoam.org/docs/user/fvSchemes.php .

Par exemple, ici, pour calculer une dérivée temporelle, on prendra par défaut: Euler. C'est à dire, une dérivé temporelle au premier ordre implicite.
Pour la divergence, on ne prend pas de modèle par défaut, chaque divergence se calcule différemment.

ddtSchemes                                          dérivée temporel
{

    default         Euler;
}

gradSchemes                                          gradient
{
    default         Gauss linear;
}

divSchemes                                            divergence
{
    default         none;

    div(rho*phi,U)  Gauss linear;
    div(phi,alpha1) Gauss vanLeer;
    div(phi,k)      Gauss limitedLinear 1;
    div((muEff*dev(T(grad(U))))) Gauss linear;
}

laplacianSchemes                                  laplacien
{
    default         Gauss linear corrected;  
}

interpolationSchemes                             interpolation de valeurs
{
    default         linear;
}

snGradSchemes
{
    default         corrected;
}

fluxRequired                                          valeurs exigées aux limites
{
    default         no;
    p_rgh;
    alpha1;

fvSolution

Ce dossier permet de contrôler les solveurs d'équations et les algorithmes. 
Pour chaque solveurs, les sous dictionnaires à remplir sont différents, cependant, il en existe des communs, par exemple 'solvers' décrit sur la page http://www.openfoam.org/docs/user/fvSolution.php.

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

solvers                                                                                  
{
    "alpha1.*"             

Pour résoudre alpha1 (la proportion en phase 1), on utilise un smoothsolver   (solveur qui utilise un smoother). La résolution des matrices se fait de manière itérative. Après chaque itération, le résidu est évalué. Le solveur s'arrète pour un résidu inférieur à la tolérance ou bien si le ratio (résidu actuel /résidu initial) passe en dessous de relTol .                
    {
        solver          smoothSolver;
        smoother        GaussSeidel;
        tolerance       1e-9;
        relTol          0;
        nSweeps         1;
    }

    p_rgh
    {
        solver          GAMG;
        tolerance       1e-7;
        relTol          0.01;
        smoother        GaussSeidel;
        cacheAgglomeration true;
        nCellsInCoarsestLevel 10;
        agglomerator    faceAreaPair;
        mergeLevels     1;
    }

    p_rghFinal
    {
        $p_rgh;
        relTol          0;
    }

    U
    {
        solver          smoothSolver;
        smoother        GaussSeidel;
        tolerance       1e-7;
        relTol          0.1;
        nSweeps         1;
    }

    UFinal
    {
        $U;
        relTol          0;
    }
}

PIMPLE
{
    momentumPredictor   yes;
    nOuterCorrectors    1;
    nCorrectors         2;
    nNonOrthogonalCorrectors 0;
    nAlphaSubCycles     2;
    nAlphaCorr          1;
    pRefValue           0;
    pRefPoint           (0.1 0.1 1);
}

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