Elsevier Science Home
Computer Physics Communications Program Library
Full text online from Science Direct
Programs in Physics & Physical Chemistry
CPC Home

[Licence| Download | New Version Template] acev_v1_0.gz(15 Kbytes)
Manuscript Title: ICCG2: subprograms for the solution of a linear symmetric matrix equation arising from a 9-point discretization. See erratum Comp. Phys. Commun. 31(1984)435.
Authors: D.V. Anderson, A.I. Shestakov
Program title: ICCG2
Catalogue identifier: ACEV_v1_0
Distribution format: gz
Journal reference: Comput. Phys. Commun. 30(1983)37
Programming language: Fortran.
Computer: CRAY-1.
Operating system: CTSS.
Word size: 64
Keywords: General purpose, Matrix, Partial differential Equations, Elliptic, Parabolic, Two-dimensional, Implicit, Pre-conditioned, Conjugate gradient Algorithm, Iccg, Symmetric matrix, Incomplete cholesky Method.
Classification: 4.8.

Nature of problem:
Elliptic and parabolic partial differential equations which arise in plasma physics applications (as well as in others) are solved in two dimensions. Plasma diffusion, equilibria, and phase space transport (Fokker-Planck equation) have been treated by these methods. These problems share the common feature of being stiff and requiring implicit solution techniques. Sometimes, the resulting matrix equations are symmetric; we solve them here with the ICCG2 coding. In a previous article we described a slower more general algorithm, ILUCG2, which must be used when the matrix is asymmetric.

Solution method:
The incomplete Cholesky conjugate gradient (ICCG) algorithm is used to solve the linear symmetric matrix equation.

The discretization of the two-dimensional PDE and its boundary conditions must result in a spatial 9-point operator stencil which can be represented by a symmetric block tridiagonal supermatrix composed of elementary tridiagonal matrices.

Unusual features:
The loops are arranged to vectorize on the Cray-1 (with the CFT compiler) wherever possible. Recursive loops (which cannot be vectorized) are written for optimum scalar speed. Some of these loops were made more efficient by increasing the arithmetric per pass and at the same time reducing the number of passes. This trick significantly reduced loop overhead and made these scalar loops 30% faster.

Running time:
These are problem dependent because ill-conditioned matrices will require more iterations than well-conditioned ones. However, the running times per iteration are known. For enough equations (1189) here the time for the incomplete Cholesky factorization is 4.8 mu s per unknown. Each conjugate gradient iteration requires 2.4 mu s per unknown. In the three test problems the number of iterations required to reach a relative residual error of 10**-10 (in the L2 norm) ranged from 8 to 75.