DITSOL_DRIVER (dmatvec_driver, dpcondl_driver, dpcondr_driver, mstop, a, ia, x, b, n, ql, iql , qr, iqr, iparam, rparam, iwork, rwork, ierror)
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.
DITSOL_DRIVER solves the system of linear equations A * x = b using one of the six iterative methods provided in CXML. 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 CXML Reference Manual.