SuperLU  5.2.0
Functions | Variables
ditersol1.c File Reference

Example #2 showing how to use ILU to precondition GMRES. More...

#include "slu_ddefs.h"
Include dependency graph for ditersol1.c:

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

char * GLOBAL_EQUED
 
superlu_options_tGLOBAL_OPTIONS
 
double * GLOBAL_R
 
double * GLOBAL_C
 
int * GLOBAL_PERM_C
 
int * GLOBAL_PERM_R
 
SuperMatrixGLOBAL_A
 
SuperMatrixGLOBAL_A_ORIG
 
SuperMatrixGLOBAL_L
 
SuperMatrixGLOBAL_U
 
SuperLUStat_tGLOBAL_STAT
 
mem_usage_tGLOBAL_MEM_USAGE
 

Detailed Description

Copyright (c) 2003, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from U.S. Dept. of Energy)

All rights reserved.

The source code is distributed under BSD license, see the file License.txt at the top-level directory.

– SuperLU routine (version 5.0) –
Lawrence Berkeley National Laboratory
November, 2010
August, 2011
This example shows that ILU is computed from the equilibrated matrix,
but the preconditioned GMRES is applied to the original 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
dynamically. On return, A is overwritten as A1 = Dr*A*Dc.
We need to save a copy of the original matrix A, then solve
the original system, A*x = B, using FGMRES.
Each GMRES step requires requires 2 procedures:
  1) Apply preconditioner M^{-1} = Dc*Pc^T*U^{-1}*L^{-1}*Pr*Dr
  2) Matrix-vector multiplication: w = A*v
 

Function Documentation

void dmatvec_mult ( double  alpha,
double  x[],
double  beta,
double  y[] 
)

Here is the call graph for this function:

void dpsolve ( int  n,
double  x[],
double  y[] 
)

Here is the call graph for this function:

int main ( int  argc,
char *  argv[] 
)

Here is the call graph for this function:

Variable Documentation

SuperMatrix* GLOBAL_A
SuperMatrix * GLOBAL_A_ORIG
double * GLOBAL_C
char* GLOBAL_EQUED
SuperMatrix * GLOBAL_L
mem_usage_t* GLOBAL_MEM_USAGE
superlu_options_t* GLOBAL_OPTIONS
int* GLOBAL_PERM_C
int * GLOBAL_PERM_R
double* GLOBAL_R
SuperLUStat_t* GLOBAL_STAT
SuperMatrix * GLOBAL_U