#include "slu_ddefs.h"
Functions | |
void | dpsolve (int n, double x[], double y[]) |
void | dmatvec_mult (double alpha, double x[], double beta, double y[]) |
int | main (int argc, char *argv[]) |
Variables | |
superlu_options_t * | GLOBAL_OPTIONS |
double * | GLOBAL_R |
double * | GLOBAL_C |
int * | GLOBAL_PERM_C |
int * | GLOBAL_PERM_R |
SuperMatrix * | GLOBAL_A |
SuperMatrix * | GLOBAL_L |
SuperMatrix * | GLOBAL_U |
SuperLUStat_t * | GLOBAL_STAT |
mem_usage_t * | GLOBAL_MEM_USAGE |
-- SuperLU routine (version 4.2) -- Lawrence Berkeley National Laboratory November, 2010 August, 2011
This example shows that ILU is computed from the equilibrated matrix, and the preconditioned GMRES is applied to the equilibrated system. The driver routine DGSISX is called twice to perform factorization and apply preconditioner separately.
Note that DGSISX performs the following factorization: Pr*Dr*A*Dc*Pc^T ~= LU with Pr being obtained from MC64 statically then partial pivoting dybamically. On return, A is overwritten as A1 = Dr*A*Dc.
We can solve the transformed system, A1*y = Dr*B, using FGMRES. B is first overwritten as Dr*B. Then GMRES step requires requires 2 procedures: 1) Apply preconditioner M^{-1} = Pc^T*U^{-1}*L^{-1}*Pr 2) Matrix-vector multiplication: w = A1*v
void dmatvec_mult | ( | double | alpha, | |
double | x[], | |||
double | beta, | |||
double | y[] | |||
) |
void dpsolve | ( | int | n, | |
double | x[], | |||
double | y[] | |||
) |
int main | ( | int | argc, | |
char * | argv[] | |||
) |
double * GLOBAL_C |
int* GLOBAL_PERM_C |
int * GLOBAL_PERM_R |
double* GLOBAL_R |