DITSOL_DRIVER(3DXML) — Subroutines
Digital
Name
ditsol_driver − Driver for sparse iterative solvers (Serial and Parallel Versions)
FORMAT
DITSOL_DRIVER (dmatvec_driver, dpcondl_driver, dpcondr_driver, mstop, a, ia, x, b, n,
ql, iql , qr, iqr, iparam, rparam, iwork, rwork, ierror)
Arguments
DITSOL_DRIVER has the standard parameter list for an iterative solver, with the exception of the first three arguments which must be DMATVEC_DRIVER, DPCONDL_DRIVER and DPCONDR_DRIVER. These must be declared external in your calling (sub)program.
Description
DITSOL_DRIVER solves the system of linear equations
A ∗ x = b
using one of the six iterative methods provided in DXML. By a suitable choice of the variables isolve, istore and iprec in the array IPARAM, an appropriate solver, storage scheme and preconditioner are selected. The preconditioner must be created in the appropriate storage scheme, prior to the call to the driver routine.
The following table shows the preconditioning options and the perconditioners that are permitted.
| Preconditioner | Left | Right | Split | SPD Split |
| Diagonal | X | X | X | |
| Polynomial | X | X | X | |
| ILU | X | X | X | X |
The preconditioning options applicable to the various iterative solvers are summarized in Table 12.8.
The following table shows the real workspace requirements nrwk for each method and the corresponding preconditioning option.
| Method | None | Left | Right | Split |
| DITSOL_PCG | 3n | 4n (SPD split) | ||
| DITSOL_PLSCG | 4n | 5n | 5n | 6n |
| DITSOL_PBCG | 5n | 7n | 6n | 7n |
| DITSOL_PCGS | 6n | 7n | 6n | 7n |
| DITSOL_PGMRES | nrwk1 | nrwk1+n | nrwk1+n | nrwk1+n |
| DITSOL_PTFQMR | 7n | 8n | 8n | 9n |
In DITSOL_PGMRES, nrwk1=n∗(kprev+1)+kprev∗(kprev+5)+1 where kprev is the number of previous vectors stored. If ILU preconditioning is used, then an additional real workspace of length n is required.
If you use the option of defining your own MSTOP routine, see the reference description of each solver for the definition of the vector z.
This routine is available in both serial and parallel versions. The routine names and parameter list are identical for both versions. For information about linking to the serial or to the parallel library, refer to the DXML Reference Manual.