Hi, I would like to know wh
I would like to know what are the major diferences between "Diagonally preconditioned biconjugate gradient" and the "Incomplete-Cholesky preconditioned biconjugate gradient" solvers.
There's some brief technical i
There's some brief technical info at the following link [paper page 41, PDF page 47]:
Hi Billy, This is to do wit
This is to do with parallelism. Basically, you can do various kinds of preconditioning with the Conjugate Gradient solver. If you do nothing, the solver is a disaster.
The "best" kind of preconditioning we've got in FOAM is the Incomplete Cholesky. However, the preconditioner works by visiting rows of the matrix (cells) in a particular order and the efficiency of preconditioning depends on that order.
All is well when you're doing simulations on a single CPU. However, when you do a decomposition in parallel, each CPU needs to do its own preconditioning on the local cells (because the cells on other processors cannot be accessed (in order). Therefore, for a parallel run, the incomplete Cholesky preconditioning (ICCG) will give you a slightly different result than the identical run in serial (number of solver iterations may be slightly larger and you get different round-off).
Diagonal preconditioning, on the other hand, does not depend on the ordering of cells, but is much (well, hmm) worse than ICCG. Therefore, when doing single-CPU runs, you really have no reason to run anything else than ICCG (maybe AMG, but that's another, and painful, topic).
However, sometimes you can get into a situation when you absolutely desperately need the same result in parallel and serial, e.g. when chasing bugs. :-) In that case, using Diagonal preconditioning (DCG) will allow you to do that, but you'll pay with the increased simulation time.
|All times are GMT -4. The time now is 11:17.|