/*********************************************************/ /* TAUCS */ /* Author: Sivan Toledo */ /*********************************************************/ /* Evgenii Rudnyi: only functions necessary for mor4ansys */ typedef struct { int n; /* columns */ int m; /* rows; don't use if symmetric */ int flags; int* colptr; /* pointers to where columns begin in rowind and values. */ /* 0-based. Length is (n+1). */ int* rowind; /* row indices */ union { void* v; double* d; } values; } taucs_ccs_matrix; typedef struct { int type; int nmatrices; void* type_specific; /* the following may change! do not rely on them. */ double nreads, nwrites, bytes_read, bytes_written, read_time, write_time; } taucs_io_handle; #define TAUCS_SYMMETRIC 8 #define TAUCS_DOUBLE 2048 #define TAUCS_LOWER 1 void taucs_logfile(char* file_prefix); void taucs_dccs_times_vec(taucs_ccs_matrix* m, double* X, double* B); void taucs_dccs_free (taucs_ccs_matrix* matrix); void taucs_dvec_permute(int n, double v[], double pv[], int p[]); void taucs_dvec_ipermute(int n, double pv[], double v[], int invp[]); int taucs_dooc_factor_llt(taucs_ccs_matrix* A, taucs_io_handle* L, double memory); int taucs_dooc_solve_llt (void* L /* actual type: taucs_io_handle* */, void* x, void* b); void* taucs_dccs_factor_llt_ll (taucs_ccs_matrix* A); taucs_ccs_matrix* taucs_dccs_factor_llt (taucs_ccs_matrix* A, double droptol, int modified); int taucs_dccs_solve_llt (void* L, double* x, double* b); taucs_ccs_matrix* taucs_dccs_factor_ldlt (taucs_ccs_matrix* A); int taucs_dccs_solve_ldlt (void* L, double* x, double* b); void* taucs_dccs_factor_llt_mf (taucs_ccs_matrix* A); int taucs_dsupernodal_solve_llt (void* vL, void* x, void* b); void taucs_dsupernodal_factor_free (void* L); taucs_io_handle* taucs_io_create_multifile(char* filename); int taucs_io_delete(taucs_io_handle* f); double taucs_available_memory_size(void); void taucs_ccs_order (taucs_ccs_matrix* matrix, int** perm, int** invperm, char* which); int taucs_ooc_factor_lu (taucs_ccs_matrix* A_in, int* colperm, taucs_io_handle* LU, double memory); int taucs_dooc_solve_lu(taucs_io_handle* LU, double* x, double* b); taucs_ccs_matrix* taucs_dccs_create (int m, int n, int nnz); taucs_ccs_matrix* taucs_dccs_permute_symmetrically(taucs_ccs_matrix* A, int* perm, int* invperm);