CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM (https://www.cfd-online.com/Forums/openfoam/)
-   -   GAMG hexa vs. tetrahedron meshes (https://www.cfd-online.com/Forums/openfoam/78273-gamg-hexa-vs-tetrahedron-meshes.html)

idrama July 16, 2010 12:14

GAMG hexa vs. tetrahedron meshes
 
Hello Foamers!

Has anybody experience to set up GAMG for hexa or tetraeder? On tet, Do I have to increase, for instance, smoother iteration or merge levels?

Cheers in advance

MartinB July 16, 2010 13:23

Hi Claus,

in my opinion it doesn't matter for GAMG if you are using hexas or tetras. A good choice of settings for my projects is:
Code:

solvers
{
    U                                  // linear equation system solver for U
    {
        solver          smoothSolver;  // solver type
        smoother        GaussSeidel;    // smoother type
        tolerance      1e-06;          // solver finishes if either absolute
        relTol          0.01;          // tolerance is reached or the relative
                                        // tolerance here
        nSweeps        1;              // setting for smoothSolver
        maxIter        100;            // limitation of iterations number
    }
    pd                                  // linear equation system solver for pd
    {
        solver          GAMG;          // very efficient multigrid solver
        tolerance      1e-07;          // solver finishes if either absolute
        relTol          0.001;          // tolerance is reached or the relative
                                        // tolerance here
        minIter        3;              // a minimum number of iterations
        maxIter        100;            // limitation of iterions number
        smoother        DIC;            // setting for GAMG
        nPreSweeps      1;              // 1 for pd, set to 0 for all other!
        nPostSweeps    2;              // 2 is fine
        nFinestSweeps  2;              // 2 is fine
        scaleCorrection true;          // true is fine
        directSolveCoarsestLevel false; // false is fine
        cacheAgglomeration on;          // on is fine; set to off, if dynamic
                                        // mesh refinement is used!
        nCellsInCoarsestLevel 500;      // 500 is fine,
                                        // otherwise sqrt(number of cells)
        agglomerator    faceAreaPair;  // faceAreaPair is fine
        mergeLevels    1;              // 1 is fine
    }
}

Important to note:
- nPreSweeps must be 0 for other equation systems than pressure
- to use the minIter option you must patch GAMG sources in most OpenFOAM versions
- cacheAgglomeration must be switched off when using dynamic mesh refinement

Playing with the options don't give remarkable speedup for my problems.

Martin

idrama July 17, 2010 05:19

Thanks MartinB, the informations are valueable for me! However, there is one question concernins the option nCellsInCorseLeve: Why the sqrt of the cells? Have you an paper or something like that?

Cheers

MartinB July 17, 2010 06:03

Hi Claus,
I found the hint for sqrt(#cells) in the forum some time ago and made a note in my fvSolution template without paying too much attention to it...

This might be an interesting thread (especially the links to the PDFs), if you want to use some variants of AMG:
http://www.cfd-online.com/Forums/ope...41dev-svn.html
However it could be some work to integrate these solvers and preconditioners in the newer OpenFOAM versions.

Martin

idrama July 19, 2010 08:59

Do you probaly mean: If I have n processors then I have to take (total no. cells)^(1/n)?

MartinB July 19, 2010 09:30

I mean: sqrt(1000000) = 1000
But: I never tested it in more detail... my value of 500 was fine, changing it had no big influence on my computation speed.
You can test it out: start your simulation, change the value after a few iterations and check the new iteration times. Then make another change and check again...

Many other posts in the forum prefer values of 10 to 30 for nCellsInCoarsestLevel...
http://www.cfd-online.com/OpenFOAM_D...tml?1162930507

Martin

wyldckat September 1, 2013 05:54

FYI: For future reference, the link on the previous post is for the following thread in the new forum format: http://www.cfd-online.com/Forums/ope...rsus-iccg.html

mszeto715 September 26, 2018 10:49

Hi,

Thank you for your assistance. I am wondering: where do these values stem from? Specifically, why does nPreSweeps need to be 1 for pd?

-Mimi

wyldckat September 26, 2018 17:06

Quick answer: I can never remember off-hand which equations have a symmetric A matrix and which ones have an asymmetric A matrix... but the "nPreSweeps" has to be set to 1 probably because the "pd" (pressure) equation is the opposite type of symmetry from the other equations.

mszeto715 September 27, 2018 16:44

Thanks for responding. I have an easier simpler question. What encompasses one iteration? In the log file, I'll get something like "GAMG: Solving for pd, Initial residual = 3.833447548e-13, Final residual = 3.908110229e-15, No Iterations 2."

What are the two iterations? Is that one V cycle? multiple V cycles? I can't seem to find a good answer anywhere.

-Mimi

wyldckat September 27, 2018 17:14

Quick answer: I don't know what a V-cycle technically is, but the number of iterations is how many iterations it does to try and solve the "A*x=b" equation.
It (usually) does not include how many intermediate passes it does within the matrix solver, e.g. pre/post-sweeps are not accounted by the number of iterations.

In foam-extend, you can find:
  • the GAMG solver code in the folder "$FOAM_SRC/foam/matrices/lduMatrix/solvers/AMG";
  • the GAMG preconditioner at "$FOAM_SRC/foam/matrices/lduMatrix/preconditioners/GAMGPreconditioner".
As a quick reference, the number of iterations increments can be seen in this do-while cycle: $FOAM_SC/foam/matrices/lduMatrix/solvers/AMG/GAMGSolverSolve.C starting line 82 and in line 103 is where the number of iterations increases.

mszeto715 September 27, 2018 17:37

Thanks for your help! So it looks like one iteration IS one V-cycle. The V Cycle goes from fine to coarse and then fine again.


All times are GMT -4. The time now is 06:04.