#include "slu_sdefs.h"
Functions | |
void | spsolve (int n, float x[], float y[]) |
void | smatvec_mult (float alpha, float x[], float beta, float y[]) |
int | main (int argc, char *argv[]) |
Variables | |
superlu_options_t * | GLOBAL_OPTIONS |
float * | GLOBAL_R |
float * | 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 SGSISX is called twice to perform factorization and apply preconditioner separately.
Note that SGSISX 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
int main | ( | int | argc, | |
char * | argv[] | |||
) |
void smatvec_mult | ( | float | alpha, | |
float | x[], | |||
float | beta, | |||
float | y[] | |||
) |
void spsolve | ( | int | n, | |
float | x[], | |||
float | y[] | |||
) |
float * GLOBAL_C |
int* GLOBAL_PERM_C |
int * GLOBAL_PERM_R |
float* GLOBAL_R |