CFD Online Logo CFD Online URL
Home > Forums > OpenFOAM Running, Solving & CFD

Diagonally preconditioned biconjugate gradient

Register Blogs Members List Search Today's Posts Mark Forums Read

LinkBack Thread Tools Display Modes
Old   June 14, 2005, 12:55
Default Hi, I would like to know wh
Senior Member
Join Date: Mar 2009
Posts: 167
Rep Power: 8
billy is on a distinguished road

I would like to know what are the major diferences between "Diagonally preconditioned biconjugate gradient" and the "Incomplete-Cholesky preconditioned biconjugate gradient" solvers.

billy is offline   Reply With Quote

Old   June 14, 2005, 13:16
Default There's some brief technical i
New Member
Chris Greenshields
Join Date: Mar 2009
Posts: 28
Rep Power: 8
chris is on a distinguished road
There's some brief technical info at the following link [paper page 41, PDF page 47]:
chris is offline   Reply With Quote

Old   June 14, 2005, 15:20
Default Hi Billy, This is to do wit
Senior Member
Hrvoje Jasak
Join Date: Mar 2009
Location: London, England
Posts: 1,765
Rep Power: 21
hjasak will become famous soon enough
Hi Billy,

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.


Hrvoje Jasak
Providing commercial FOAM/OpenFOAM and CFD Consulting:
hjasak is offline   Reply With Quote


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
Preconditioned Conjugate Gradient Solver! Chidu Main CFD Forum 1 January 21, 2004 12:43
Help with Biconjugate Gradient to solve a system Isa Main CFD Forum 2 December 20, 2003 08:19
Preconditioned Gmres carlos Main CFD Forum 2 April 14, 2003 05:24
Diagonally Implicit Runge Kutta Anthony Iannetti Main CFD Forum 1 February 3, 2001 01:14
Diagonally Dominate Runge Kutta Method Anthony Iannetti Main CFD Forum 0 January 23, 2001 22:27

All times are GMT -4. The time now is 01:07.