00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef UMFPACK_H
00021 #define UMFPACK_H
00022
00023
00024
00025
00026
00027 #define UMFPACK_INFO 90
00028 #define UMFPACK_CONTROL 20
00029
00030
00031
00032
00033
00034
00035 #include "umfpack_symbolic.h"
00036 #include "umfpack_numeric.h"
00037 #include "umfpack_solve.h"
00038 #include "umfpack_free_symbolic.h"
00039 #include "umfpack_free_numeric.h"
00040
00041
00042 #include "umfpack_defaults.h"
00043 #include "umfpack_qsymbolic.h"
00044 #include "umfpack_wsolve.h"
00045
00046
00047 #include "umfpack_triplet_to_col.h"
00048 #include "umfpack_col_to_triplet.h"
00049 #include "umfpack_transpose.h"
00050 #include "umfpack_scale.h"
00051
00052
00053 #include "umfpack_get_lunz.h"
00054 #include "umfpack_get_numeric.h"
00055 #include "umfpack_get_symbolic.h"
00056 #include "umfpack_save_numeric.h"
00057 #include "umfpack_load_numeric.h"
00058 #include "umfpack_save_symbolic.h"
00059 #include "umfpack_load_symbolic.h"
00060
00061
00062 #include "umfpack_report_status.h"
00063 #include "umfpack_report_info.h"
00064 #include "umfpack_report_control.h"
00065 #include "umfpack_report_matrix.h"
00066 #include "umfpack_report_triplet.h"
00067 #include "umfpack_report_vector.h"
00068 #include "umfpack_report_symbolic.h"
00069 #include "umfpack_report_numeric.h"
00070 #include "umfpack_report_perm.h"
00071
00072
00073 #include "umfpack_timer.h"
00074 #include "umfpack_tictoc.h"
00075
00076
00077
00078
00079
00080 #define UMFPACK_VERSION "UMFPACK V4.3 (Jan. 16, 2004)"
00081
00082 #define UMFPACK_COPYRIGHT \
00083 "UMFPACK: Copyright (c) 2004 by Timothy A. Davis. All Rights Reserved.\n"
00084
00085 #define UMFPACK_LICENSE_PART1 \
00086 "\nUMFPACK License:\n" \
00087 "\n" \
00088 " Your use or distribution of UMFPACK or any modified version of\n" \
00089 " UMFPACK implies that you agree to this License.\n" \
00090 "\n" \
00091 " THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY\n" \
00092 " EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK.\n"
00093 #define UMFPACK_LICENSE_PART2 \
00094 "\n" \
00095 " Permission is hereby granted to use or copy this program, provided\n" \
00096 " that the Copyright, this License, and the Availability of the original\n" \
00097 " version is retained on all copies. User documentation of any code that\n" \
00098 " uses UMFPACK or any modified version of UMFPACK code must cite the\n" \
00099 " Copyright, this License, the Availability note, and \"Used by permission.\"\n"
00100 #define UMFPACK_LICENSE_PART3 \
00101 " Permission to modify the code and to distribute modified code is granted,\n" \
00102 " provided the Copyright, this License, and the Availability note are\n" \
00103 " retained, and a notice that the code was modified is included. This\n" \
00104 " software was developed with support from the National Science Foundation,\n" \
00105 " and is provided to you free of charge.\n" \
00106 "\n" \
00107 "Availability: http://www.cise.ufl.edu/research/sparse/umfpack\n" \
00108 "\n"
00109
00110
00111
00112
00113
00114
00115
00116
00117 #define UMFPACK_STATUS 0
00118 #define UMFPACK_NROW 1
00119 #define UMFPACK_NCOL 16
00120 #define UMFPACK_NZ 2
00121
00122
00123 #define UMFPACK_SIZE_OF_UNIT 3
00124
00125
00126 #define UMFPACK_SIZE_OF_INT 4
00127 #define UMFPACK_SIZE_OF_LONG 5
00128 #define UMFPACK_SIZE_OF_POINTER 6
00129 #define UMFPACK_SIZE_OF_ENTRY 7
00130 #define UMFPACK_NDENSE_ROW 8
00131 #define UMFPACK_NEMPTY_ROW 9
00132 #define UMFPACK_NDENSE_COL 10
00133 #define UMFPACK_NEMPTY_COL 11
00134 #define UMFPACK_SYMBOLIC_DEFRAG 12
00135 #define UMFPACK_SYMBOLIC_PEAK_MEMORY 13
00136 #define UMFPACK_SYMBOLIC_SIZE 14
00137 #define UMFPACK_SYMBOLIC_TIME 15
00138 #define UMFPACK_SYMBOLIC_WALLTIME 17
00139 #define UMFPACK_STRATEGY_USED 18
00140 #define UMFPACK_ORDERING_USED 19
00141 #define UMFPACK_QFIXED 31
00142 #define UMFPACK_DIAG_PREFERRED 32
00143 #define UMFPACK_PATTERN_SYMMETRY 33
00144 #define UMFPACK_NZ_A_PLUS_AT 34
00145 #define UMFPACK_NZDIAG 35
00146
00147
00148 #define UMFPACK_SYMMETRIC_LUNZ 36
00149 #define UMFPACK_SYMMETRIC_FLOPS 37
00150 #define UMFPACK_SYMMETRIC_NDENSE 38
00151 #define UMFPACK_SYMMETRIC_DMAX 39
00152
00153
00154 #define UMFPACK_2BY2_NWEAK 51
00155 #define UMFPACK_2BY2_UNMATCHED 52
00156 #define UMFPACK_2BY2_PATTERN_SYMMETRY 53
00157 #define UMFPACK_2BY2_NZ_PA_PLUS_PAT 54
00158 #define UMFPACK_2BY2_NZDIAG 55
00159
00160
00161 #define UMFPACK_COL_SINGLETONS 56
00162 #define UMFPACK_ROW_SINGLETONS 57
00163 #define UMFPACK_N2 58
00164 #define UMFPACK_S_SYMMETRIC 59
00165
00166
00167 #define UMFPACK_NUMERIC_SIZE_ESTIMATE 20
00168 #define UMFPACK_PEAK_MEMORY_ESTIMATE 21
00169 #define UMFPACK_FLOPS_ESTIMATE 22
00170 #define UMFPACK_LNZ_ESTIMATE 23
00171 #define UMFPACK_UNZ_ESTIMATE 24
00172 #define UMFPACK_VARIABLE_INIT_ESTIMATE 25
00173 #define UMFPACK_VARIABLE_PEAK_ESTIMATE 26
00174 #define UMFPACK_VARIABLE_FINAL_ESTIMATE 27
00175 #define UMFPACK_MAX_FRONT_SIZE_ESTIMATE 28
00176 #define UMFPACK_MAX_FRONT_NROWS_ESTIMATE 29
00177 #define UMFPACK_MAX_FRONT_NCOLS_ESTIMATE 30
00178
00179
00180 #define UMFPACK_NUMERIC_SIZE 40
00181 #define UMFPACK_PEAK_MEMORY 41
00182 #define UMFPACK_FLOPS 42
00183 #define UMFPACK_LNZ 43
00184 #define UMFPACK_UNZ 44
00185 #define UMFPACK_VARIABLE_INIT 45
00186 #define UMFPACK_VARIABLE_PEAK 46
00187 #define UMFPACK_VARIABLE_FINAL 47
00188 #define UMFPACK_MAX_FRONT_SIZE 48
00189 #define UMFPACK_MAX_FRONT_NROWS 49
00190 #define UMFPACK_MAX_FRONT_NCOLS 50
00191
00192
00193 #define UMFPACK_NUMERIC_DEFRAG 60
00194 #define UMFPACK_NUMERIC_REALLOC 61
00195 #define UMFPACK_NUMERIC_COSTLY_REALLOC 62
00196 #define UMFPACK_COMPRESSED_PATTERN 63
00197 #define UMFPACK_LU_ENTRIES 64
00198 #define UMFPACK_NUMERIC_TIME 65
00199 #define UMFPACK_UDIAG_NZ 66
00200 #define UMFPACK_RCOND 67
00201 #define UMFPACK_WAS_SCALED 68
00202 #define UMFPACK_RSMIN 69
00203 #define UMFPACK_RSMAX 70
00204 #define UMFPACK_UMIN 71
00205 #define UMFPACK_UMAX 72
00206 #define UMFPACK_ALLOC_INIT_USED 73
00207 #define UMFPACK_FORCED_UPDATES 74
00208 #define UMFPACK_NUMERIC_WALLTIME 75
00209 #define UMFPACK_NOFF_DIAG 76
00210
00211 #define UMFPACK_ALL_LNZ 77
00212 #define UMFPACK_ALL_UNZ 78
00213 #define UMFPACK_NZDROPPED 79
00214
00215
00216 #define UMFPACK_IR_TAKEN 80
00217 #define UMFPACK_IR_ATTEMPTED 81
00218 #define UMFPACK_OMEGA1 82
00219 #define UMFPACK_OMEGA2 83
00220 #define UMFPACK_SOLVE_FLOPS 84
00221 #define UMFPACK_SOLVE_TIME 85
00222 #define UMFPACK_SOLVE_WALLTIME 86
00223
00224
00225
00226
00227
00228
00229
00230
00231 #define UMFPACK_ORDERING_COLAMD 0
00232 #define UMFPACK_ORDERING_AMD 1
00233 #define UMFPACK_ORDERING_GIVEN 2
00234
00235
00236
00237
00238
00239
00240 #define UMFPACK_PRL 0
00241
00242
00243 #define UMFPACK_DENSE_ROW 1
00244 #define UMFPACK_DENSE_COL 2
00245 #define UMFPACK_BLOCK_SIZE 4
00246 #define UMFPACK_STRATEGY 5
00247 #define UMFPACK_2BY2_TOLERANCE 12
00248 #define UMFPACK_FIXQ 13
00249 #define UMFPACK_AMD_DENSE 14
00250 #define UMFPACK_AGGRESSIVE 19
00251
00252
00253
00254 #define UMFPACK_PIVOT_TOLERANCE 3
00255 #define UMFPACK_ALLOC_INIT 6
00256 #define UMFPACK_SYM_PIVOT_TOLERANCE 15
00257 #define UMFPACK_SCALE 16
00258 #define UMFPACK_FRONT_ALLOC_INIT 17
00259 #define UMFPACK_DROPTOL 18
00260
00261
00262 #define UMFPACK_IRSTEP 7
00263
00264
00265 #define UMFPACK_COMPILED_WITH_BLAS 8
00266 #define UMFPACK_COMPILED_FOR_MATLAB 9
00267 #define UMFPACK_COMPILED_WITH_GETRUSAGE 10
00268 #define UMFPACK_COMPILED_IN_DEBUG_MODE 11
00269
00270 #if 0
00271
00272
00273 #define UMFPACK_RELAXED_AMALGAMATION 5
00274 #define UMFPACK_PIVOT_OPTION 12
00275 #define UMFPACK_RELAXED2_AMALGAMATION 13
00276 #define UMFPACK_RELAXED3_AMALGAMATION 14
00277 #endif
00278
00279
00280
00281
00282 #define UMFPACK_STRATEGY_AUTO 0
00283 #define UMFPACK_STRATEGY_UNSYMMETRIC 1
00284
00285 #define UMFPACK_STRATEGY_2BY2 2
00286
00287
00288 #define UMFPACK_STRATEGY_SYMMETRIC 3
00289
00290
00291
00292 #define UMFPACK_SCALE_NONE 0
00293 #define UMFPACK_SCALE_SUM 1
00294 #define UMFPACK_SCALE_MAX 2
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310 #define UMFPACK_DEFAULT_PRL 1
00311 #define UMFPACK_DEFAULT_DENSE_ROW 0.2
00312 #define UMFPACK_DEFAULT_DENSE_COL 0.2
00313 #define UMFPACK_DEFAULT_PIVOT_TOLERANCE 0.1
00314 #define UMFPACK_DEFAULT_2BY2_TOLERANCE 0.01
00315 #define UMFPACK_DEFAULT_SYM_PIVOT_TOLERANCE 0.001
00316 #define UMFPACK_DEFAULT_BLOCK_SIZE 32
00317 #define UMFPACK_DEFAULT_ALLOC_INIT 0.7
00318 #define UMFPACK_DEFAULT_FRONT_ALLOC_INIT 0.5
00319 #define UMFPACK_DEFAULT_IRSTEP 2
00320 #define UMFPACK_DEFAULT_SCALE UMFPACK_SCALE_SUM
00321 #define UMFPACK_DEFAULT_STRATEGY UMFPACK_STRATEGY_AUTO
00322 #define UMFPACK_DEFAULT_AMD_DENSE AMD_DEFAULT_DENSE
00323 #define UMFPACK_DEFAULT_FIXQ 0
00324 #define UMFPACK_DEFAULT_AGGRESSIVE 1
00325 #define UMFPACK_DEFAULT_DROPTOL 0
00326
00327 #if 0
00328
00329 #define UMFPACK_DEFAULT_RELAXED_AMALGAMATION 0.25
00330 #define UMFPACK_DEFAULT_RELAXED2_AMALGAMATION 0.1
00331 #define UMFPACK_DEFAULT_RELAXED3_AMALGAMATION 0.125
00332 #endif
00333
00334
00335
00336
00337
00338
00339
00340 #define UMFPACK_OK (0)
00341
00342
00343
00344 #define UMFPACK_WARNING_singular_matrix (1)
00345
00346
00347
00348 #define UMFPACK_ERROR_out_of_memory (-1)
00349 #define UMFPACK_ERROR_invalid_Numeric_object (-3)
00350 #define UMFPACK_ERROR_invalid_Symbolic_object (-4)
00351 #define UMFPACK_ERROR_argument_missing (-5)
00352 #define UMFPACK_ERROR_n_nonpositive (-6)
00353 #define UMFPACK_ERROR_invalid_matrix (-8)
00354 #define UMFPACK_ERROR_different_pattern (-11)
00355 #define UMFPACK_ERROR_invalid_system (-13)
00356 #define UMFPACK_ERROR_invalid_permutation (-15)
00357 #define UMFPACK_ERROR_internal_error (-911)
00358 #define UMFPACK_ERROR_file_IO (-17)
00359
00360
00361
00362
00363
00364
00365 #define UMFPACK_ERROR_nz_negative (-7)
00366 #define UMFPACK_ERROR_jumbled_matrix (-8)
00367 #define UMFPACK_ERROR_Ap0_nonzero (-9)
00368 #define UMFPACK_ERROR_row_index_out_of_bounds (-10)
00369 #define UMFPACK_ERROR_col_length_negative (-12)
00370 #define UMFPACK_ERROR_invalid_triplet (-14)
00371 #define UMFPACK_ERROR_problem_too_large (-16)
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382 #define UMFPACK_A (0)
00383 #define UMFPACK_At (1)
00384 #define UMFPACK_Aat (2)
00385
00386 #define UMFPACK_Pt_L (3)
00387 #define UMFPACK_L (4)
00388 #define UMFPACK_Lt_P (5)
00389 #define UMFPACK_Lat_P (6)
00390 #define UMFPACK_Lt (7)
00391 #define UMFPACK_Lat (8)
00392
00393 #define UMFPACK_U_Qt (9)
00394 #define UMFPACK_U (10)
00395 #define UMFPACK_Q_Ut (11)
00396 #define UMFPACK_Q_Uat (12)
00397 #define UMFPACK_Ut (13)
00398 #define UMFPACK_Uat (14)
00399
00400
00401
00402
00403
00404
00405 #endif