1 /****************************************************************************/
2 /*                                 mlsolv.h                                 */
3 /****************************************************************************/
4 /*                                                                          */
5 /* Multi-Level SOLVers                                                      */
6 /*                                                                          */
7 /* Copyright (C) 1992-1996 Tomas Skalicky. All rights reserved.             */
8 /*                                                                          */
9 /****************************************************************************/
10 /*                                                                          */
11 /*        ANY USE OF THIS CODE CONSTITUTES ACCEPTANCE OF THE TERMS          */
12 /*              OF THE COPYRIGHT NOTICE (SEE FILE COPYRGHT.H)               */
13 /*                                                                          */
14 /****************************************************************************/
15 
16 #ifndef MLSOLV_H
17 #define MLSOLV_H
18 
19 #include "laspack_config.h"
20 #ifdef _LP_INCLUDED_FROM_CPLUSPLUS
21 extern "C" {
22 #endif
23 
24 
25 #include "qvector.h"
26 #include "matrix.h"
27 #include "qmatrix.h"
28 #include "itersolv.h"
29 #include "copyrght.h"
30 
31 QVector *MGStep(int NoLevels, QMatrix *A, QVector *x, QVector *b,
32 	    Matrix *R, Matrix *P, int Level, int Gamma,
33             IterProcType SmoothProc, int Nu1, int Nu2,
34      	    PrecondProcType PrecondProc, _LPDouble Omega,
35             IterProcType SolvProc, int NuC,
36 	    PrecondProcType PrecondProcC, _LPDouble OmegaC);
37 QVector *MGIter(int NoLevels, QMatrix *A, QVector *x, QVector *b,
38 	    Matrix *R, Matrix *P, int MaxIter, int Gamma,
39             IterProcType SmoothProc, int Nu1, int Nu2,
40 	    PrecondProcType PrecondProc, _LPDouble Omega,
41             IterProcType SolvProc, int NuC,
42 	    PrecondProcType PrecondProcC, _LPDouble OmegaC);
43 QVector *NestedMGIter(int NoLevels, QMatrix *A, QVector *x, QVector *b,
44 	    Matrix *R, Matrix *P, int Gamma,
45             IterProcType SmoothProc, int Nu1, int Nu2,
46 	    PrecondProcType PrecondProc, _LPDouble Omega,
47             IterProcType SolvProc, int NuC,
48 	    PrecondProcType PrecondProcC, _LPDouble OmegaC);
49 QVector *MGPCGIter(int NoLevels, QMatrix *A, QVector *x, QVector *b,
50 	    Matrix *R, Matrix *P, int MaxIter, int NoMGIter, int Gamma,
51             IterProcType SmoothProc, int Nu1, int Nu2,
52 	    PrecondProcType PrecondProc, _LPDouble Omega,
53             IterProcType SolvProc, int NuC,
54 	    PrecondProcType PrecondProcC, _LPDouble OmegaC);
55 QVector *BPXPrecond(int NoLevels, QMatrix *A, QVector *y, QVector *c,
56             Matrix *R, Matrix *P, int Level,
57             IterProcType SmoothProc, int Nu,
58 	    PrecondProcType PrecondProc, _LPDouble Omega,
59             IterProcType SmoothProcC, int NuC,
60 	    PrecondProcType PrecondProcC, _LPDouble OmegaC);
61 QVector *BPXPCGIter(int NoLevels, QMatrix *A, QVector *x, QVector *b,
62 	    Matrix *R, Matrix *P, int MaxIter,
63             IterProcType SmoothProc, int Nu,
64 	    PrecondProcType PrecondProc, _LPDouble Omega,
65             IterProcType SmoothProcC, int NuC,
66 	    PrecondProcType PrecondProcC, _LPDouble OmegaC);
67 
68 #ifdef _LP_INCLUDED_FROM_CPLUSPLUS
69 }
70 #endif
71 
72 #endif /* MLSOLV_H */
73