00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _IFP_C_WRAPPER_H_
00031 #define _IFP_C_WRAPPER_H_
00032
00033 #define IFP_DENSE 0
00034 #define IFP_SPARSE 1
00035
00036 #define IFP_NONE 0
00037 #define IFP_BJACOBI 1
00038 #define IFP_BSOR 2
00039 #define IFP_BSSOR 3
00040 #define IFP_BILUK 4
00041
00042 #define IFP_LU 1
00043 #define IFP_INVERSE 2
00044 #define IFP_SVD 3
00045 #define IFP_DIAG 10
00046 #define IFP_SOR 12
00047 #define IFP_SSOR 13
00048
00049 #ifdef __cplusplus
00050 extern "C" {
00051 #endif
00052
00053 void ifp_blockmatrix(
00054 void **bmat,
00055 int n,
00056 double *a,
00057 int *ja,
00058 int *ia,
00059 int nb,
00060 int *kvst,
00061 int type);
00062
00063 void ifp_freeblockmatrix(
00064 void *bmat);
00065
00066 void ifp_preconditioner(
00067 void **precon,
00068 const void *bmat,
00069 const int global,
00070 const double gparam1,
00071 const double gparam2,
00072 const int local,
00073 const double lparam1,
00074 const double lparam2);
00075
00076 void ifp_freepreconditioner( void *precon);
00077
00078 void ifp_freebiluk( void *precon);
00079
00080 void ifp_matvec(
00081 void *bmat,
00082 int nr,
00083 int nc,
00084 const double *u,
00085 int ldu,
00086 double *v,
00087 int ldv);
00088
00089 void ifp_apply(
00090 void *prec,
00091 int nr,
00092 int nc,
00093 const double *u,
00094 int ldu,
00095 double *v,
00096 int ldv);
00097
00098 void ifp_BJacobi_condest(void *M);
00099
00100 void ifp_biluk_condest(void *M);
00101 void ifp_biluk_stats(void *M);
00102
00103 #ifdef __cplusplus
00104 }
00105 #endif
00106
00107 #endif