CFD Online Discussion Forums

CFD Online Discussion Forums (
-   Main CFD Forum (
-   -   Is there an alternative method for TDMA (Thomas algorithm) (

katakgoreng January 18, 2010 02:29

Is there an alternative method for TDMA (Thomas algorithm)
I'm using TDMA to solve for the SIMPLE algorithm. For small grid, the TDMA converged quite fast but for large grid the convergence rate is killing me. Is there an alternative to TDMA that is simple to code and give faster convergence apart from Gauss elimination (consume alot of memory)?

DoHander January 18, 2010 13:03

Try an iterative solver - check lapack library for example, you can find some hints about what solver you can use for a linear system in the book of Peric.

BTW TDMA is just a specialized Gauss elimination for tridiagonal system.


katakgoreng January 18, 2010 13:29

Thanks alot..really appreciate your response..

julien.decharentenay January 19, 2010 00:33

I am slightly puzzled by the use of the term "convergence"... The Thomas algorithm is a direct solver (i.e not iterative), as pointed out.

I think that the Thomas algorithm is part of an algorithm that itself takes a while to converge (ADI, under-relaxation, treatment of non-orthogonal terms, other). You may want to have a check of the algorithm as well.

Hope this help.

jed January 19, 2010 07:23

Krylov with Schur-complement preconditioning
Classical SIMPLE is really not a very robust algorithm, a much better approach is to discretize implicitly in time and solve the linear systems with a Krylov method (like GMRES) preconditioned with a Schur-complement scheme. For example,


  title={{A taxonomy and comparison of parallel block multi-level preconditioners for the incompressible Navier-Stokes equations}},
  author={Elman, H.C. and Howle, V.E. and Shadid, J. and Shuttleworth, R. and Tuminaro, R.},
  journal={Journal of Computational Physics},
  publisher={Academic Press}

As for software, Lapack offers only dense/banded direct solvers (contrary to DoHander's suggestion). I recommend using PETSc because it offers a great deal of composability so that you can try very exotic schemes with low effort (usually without touching your source code).

All times are GMT -4. The time now is 16:51.