SRC/slu_zdefs.h

Go to the documentation of this file.
00001 
00063 #ifndef __SUPERLU_zSP_DEFS /* allow multiple inclusions */
00064 #define __SUPERLU_zSP_DEFS
00065 
00066 /*
00067  * File name:           zsp_defs.h
00068  * Purpose:             Sparse matrix types and function prototypes
00069  * History:
00070  */
00071 
00072 #ifdef _CRAY
00073 #include <fortran.h>
00074 #include <string.h>
00075 #endif
00076 
00077 /* Define my integer type int_t */
00078 typedef int int_t; /* default */
00079 
00080 #include "slu_Cnames.h"
00081 #include "supermatrix.h"
00082 #include "slu_util.h"
00083 #include "slu_dcomplex.h"
00084 
00085 
00086 
00087 typedef struct {
00088     int     *xsup;    /* supernode and column mapping */
00089     int     *supno;   
00090     int     *lsub;    /* compressed L subscripts */
00091     int     *xlsub;
00092     doublecomplex  *lusup;   /* L supernodes */
00093     int     *xlusup;
00094     doublecomplex  *ucol;    /* U columns */
00095     int     *usub;
00096     int     *xusub;
00097     int     nzlmax;   /* current max size of lsub */
00098     int     nzumax;   /*    "    "    "      ucol */
00099     int     nzlumax;  /*    "    "    "     lusup */
00100     int     n;        /* number of columns in the matrix */
00101     LU_space_t MemModel; /* 0 - system malloc'd; 1 - user provided */
00102 } GlobalLU_t;
00103 
00104 
00105 /* -------- Prototypes -------- */
00106 
00107 #ifdef __cplusplus
00108 extern "C" {
00109 #endif
00110 
00112 extern void
00113 zgssv(superlu_options_t *, SuperMatrix *, int *, int *, SuperMatrix *,
00114       SuperMatrix *, SuperMatrix *, SuperLUStat_t *, int *);
00115 extern void
00116 zgssvx(superlu_options_t *, SuperMatrix *, int *, int *, int *,
00117        char *, double *, double *, SuperMatrix *, SuperMatrix *,
00118        void *, int, SuperMatrix *, SuperMatrix *,
00119        double *, double *, double *, double *,
00120        mem_usage_t *, SuperLUStat_t *, int *);
00121 
00123 extern void
00124 zCreate_CompCol_Matrix(SuperMatrix *, int, int, int, doublecomplex *,
00125                        int *, int *, Stype_t, Dtype_t, Mtype_t);
00126 extern void
00127 zCreate_CompRow_Matrix(SuperMatrix *, int, int, int, doublecomplex *,
00128                        int *, int *, Stype_t, Dtype_t, Mtype_t);
00129 extern void
00130 zCopy_CompCol_Matrix(SuperMatrix *, SuperMatrix *);
00131 extern void
00132 zCreate_Dense_Matrix(SuperMatrix *, int, int, doublecomplex *, int,
00133                      Stype_t, Dtype_t, Mtype_t);
00134 extern void
00135 zCreate_SuperNode_Matrix(SuperMatrix *, int, int, int, doublecomplex *, 
00136                          int *, int *, int *, int *, int *,
00137                          Stype_t, Dtype_t, Mtype_t);
00138 extern void
00139 zCopy_Dense_Matrix(int, int, doublecomplex *, int, doublecomplex *, int);
00140 
00141 extern void    countnz (const int, int *, int *, int *, GlobalLU_t *);
00142 extern void    fixupL (const int, const int *, GlobalLU_t *);
00143 
00144 extern void    zallocateA (int, int, doublecomplex **, int **, int **);
00145 extern void    zgstrf (superlu_options_t*, SuperMatrix*, double, 
00146                        int, int, int*, void *, int, int *, int *, 
00147                        SuperMatrix *, SuperMatrix *, SuperLUStat_t*, int *);
00148 extern int     zsnode_dfs (const int, const int, const int *, const int *,
00149                              const int *, int *, int *, GlobalLU_t *);
00150 extern int     zsnode_bmod (const int, const int, const int, doublecomplex *,
00151                               doublecomplex *, GlobalLU_t *, SuperLUStat_t*);
00152 extern void    zpanel_dfs (const int, const int, const int, SuperMatrix *,
00153                            int *, int *, doublecomplex *, int *, int *, int *,
00154                            int *, int *, int *, int *, GlobalLU_t *);
00155 extern void    zpanel_bmod (const int, const int, const int, const int,
00156                            doublecomplex *, doublecomplex *, int *, int *,
00157                            GlobalLU_t *, SuperLUStat_t*);
00158 extern int     zcolumn_dfs (const int, const int, int *, int *, int *, int *,
00159                            int *, int *, int *, int *, int *, GlobalLU_t *);
00160 extern int     zcolumn_bmod (const int, const int, doublecomplex *,
00161                            doublecomplex *, int *, int *, int,
00162                            GlobalLU_t *, SuperLUStat_t*);
00163 extern int     zcopy_to_ucol (int, int, int *, int *, int *,
00164                               doublecomplex *, GlobalLU_t *);         
00165 extern int     zpivotL (const int, const double, int *, int *, 
00166                          int *, int *, int *, GlobalLU_t *, SuperLUStat_t*);
00167 extern void    zpruneL (const int, const int *, const int, const int,
00168                           const int *, const int *, int *, GlobalLU_t *);
00169 extern void    zreadmt (int *, int *, int *, doublecomplex **, int **, int **);
00170 extern void    zGenXtrue (int, int, doublecomplex *, int);
00171 extern void    zFillRHS (trans_t, int, doublecomplex *, int, SuperMatrix *,
00172                           SuperMatrix *);
00173 extern void    zgstrs (trans_t, SuperMatrix *, SuperMatrix *, int *, int *,
00174                         SuperMatrix *, SuperLUStat_t*, int *);
00175 
00176 
00179 extern void    zgsequ (SuperMatrix *, double *, double *, double *,
00180                         double *, double *, int *);
00181 extern void    zlaqgs (SuperMatrix *, double *, double *, double,
00182                         double, double, char *);
00183 extern void    zgscon (char *, SuperMatrix *, SuperMatrix *, 
00184                          double, double *, SuperLUStat_t*, int *);
00185 extern double   zPivotGrowth(int, SuperMatrix *, int *, 
00186                             SuperMatrix *, SuperMatrix *);
00187 extern void    zgsrfs (trans_t, SuperMatrix *, SuperMatrix *,
00188                        SuperMatrix *, int *, int *, char *, double *, 
00189                        double *, SuperMatrix *, SuperMatrix *,
00190                        double *, double *, SuperLUStat_t*, int *);
00191 
00192 extern int     sp_ztrsv (char *, char *, char *, SuperMatrix *,
00193                         SuperMatrix *, doublecomplex *, SuperLUStat_t*, int *);
00194 extern int     sp_zgemv (char *, doublecomplex, SuperMatrix *, doublecomplex *,
00195                         int, doublecomplex, doublecomplex *, int);
00196 
00197 extern int     sp_zgemm (char *, char *, int, int, int, doublecomplex,
00198                         SuperMatrix *, doublecomplex *, int, doublecomplex, 
00199                         doublecomplex *, int);
00200 
00202 extern int     zLUMemInit (fact_t, void *, int, int, int, int, int,
00203                              SuperMatrix *, SuperMatrix *,
00204                              GlobalLU_t *, int **, doublecomplex **);
00205 extern void    zSetRWork (int, int, doublecomplex *, doublecomplex **, doublecomplex **);
00206 extern void    zLUWorkFree (int *, doublecomplex *, GlobalLU_t *);
00207 extern int     zLUMemXpand (int, int, MemType, int *, GlobalLU_t *);
00208 
00209 extern doublecomplex  *doublecomplexMalloc(int);
00210 extern doublecomplex  *doublecomplexCalloc(int);
00211 extern double  *doubleMalloc(int);
00212 extern double  *doubleCalloc(int);
00213 extern int     zmemory_usage(const int, const int, const int, const int);
00214 extern int     zQuerySpace (SuperMatrix *, SuperMatrix *, mem_usage_t *);
00215 
00217 extern void    zreadhb(int *, int *, int *, doublecomplex **, int **, int **);
00218 extern void    zCompRow_to_CompCol(int, int, int, doublecomplex*, int*, int*,
00219                                    doublecomplex **, int **, int **);
00220 extern void    zfill (doublecomplex *, int, doublecomplex);
00221 extern void    zinf_norm_error (int, SuperMatrix *, doublecomplex *);
00222 extern void    PrintPerf (SuperMatrix *, SuperMatrix *, mem_usage_t *,
00223                          doublecomplex, doublecomplex, doublecomplex *, doublecomplex *, char *);
00224 
00226 extern void    zPrint_CompCol_Matrix(char *, SuperMatrix *);
00227 extern void    zPrint_SuperNode_Matrix(char *, SuperMatrix *);
00228 extern void    zPrint_Dense_Matrix(char *, SuperMatrix *);
00229 extern void    print_lu_col(char *, int, int, int *, GlobalLU_t *);
00230 extern void    check_tempv(int, doublecomplex *);
00231 
00232 #ifdef __cplusplus
00233   }
00234 #endif
00235 
00236 #endif /* __SUPERLU_zSP_DEFS */
00237 

Generated on Fri Aug 1 22:40:39 2008 for SuperLU by  doxygen 1.4.6