Go to the documentation of this file.
29 #ifndef __PASO_SPARSEMATRIX_H__
30 #define __PASO_SPARSEMATRIX_H__
43 struct SparseMatrix : boost::enable_shared_from_this<SparseMatrix>
47 bool patternIsUnrolled);
62 const double* b)
const;
70 const index_t* new_col_index)
const;
78 void saveMM(
const char* filename)
const;
82 return pattern->borrowMainDiagonalPointer();
87 return pattern->borrowColoringPointer();
134 const double* mask_col,
135 double main_diagonal_value);
138 const double* mask_col,
139 double main_diagonal_value);
142 double main_diagonal_value);
145 double main_diagonal_value);
148 double main_diagonal_value);
150 void nullifyRows_CSR(
const double* mask_row,
double main_diagonal_value);
184 const double beta,
double* out);
189 const double beta,
double* out);
194 const double beta,
double* out);
199 const double beta,
double* out);
204 const double beta,
double* out);
215 #endif // __PASO_SPARSEMATRIX_H__
#define MATRIX_FORMAT_BLK1
Definition: Paso.h:63
void SparseMatrix_MatrixVector_CSC_OFFSET1(const double alpha, const_SparseMatrix_ptr A, const double *in, const double beta, double *out)
Definition: SparseMatrix_MatrixVector.cpp:134
void UMFPACK_free(SparseMatrix *A)
frees any UMFPACK related data from the matrix
Definition: UMFPACK.cpp:48
dim_t getTotalNumRows() const
Definition: SparseMatrix.h:112
int mm_read_mtx_crd_size(std::istream &f, int *M, int *N, int *nz)
Definition: mmio.cpp:182
void nullifyRowsAndCols_CSR_BLK1(const double *mask_row, const double *mask_col, double main_diagonal_value)
Definition: SparseMatrix_nullifyRowsAndCols.cpp:71
static dim_t N
Definition: SparseMatrix_saveHB.cpp:50
dim_t numCols
Definition: SparseMatrix.h:177
void addAbsRow_CSR_OFFSET0(double *array) const
Definition: SparseMatrix.cpp:356
int mm_write_mtx_crd_size(std::ostream &f, int M, int N, int nz)
Definition: mmio.cpp:174
dim_t block_size
Definition: SparseMatrix.h:175
void copyBlockFromMainDiagonal(double *out) const
Definition: SparseMatrix.cpp:424
dim_t row_block_size
Definition: SparseMatrix.h:173
#define MATRIX_FORMAT_CSC
Definition: Paso.h:62
static SparseMatrix_ptr loadMM_toCSR(const char *filename)
Definition: SparseMatrix.cpp:215
dim_t getTotalNumCols() const
Definition: SparseMatrix.h:117
Pattern_ptr pattern
Definition: SparseMatrix.h:178
dim_t getNumColors() const
Definition: SparseMatrix.h:102
void * solver_p
pointer to data needed by a solver
Definition: SparseMatrix.h:188
#define mm_set_real(typecode)
Definition: mmio.h:78
void BlockOps_invM_2(double *invA, const double *A, int *failed)
Definition: BlockOps.h:111
void nullifyRowsAndCols_CSR(const double *mask_row, const double *mask_col, double main_diagonal_value)
Definition: SparseMatrix_nullifyRowsAndCols.cpp:113
SparseMatrix_ptr getBlock(int blockid) const
Definition: SparseMatrix_getSubmatrix.cpp:91
dim_t maxDeg() const
Definition: SparseMatrix.h:107
SparseMatrix(SparseMatrixType type, Pattern_ptr pattern, dim_t rowBlockSize, dim_t colBlockSize, bool patternIsUnrolled)
Definition: SparseMatrix.cpp:120
#define mm_is_general(typecode)
Definition: mmio.h:62
void setValues(double value)
Definition: SparseMatrix.cpp:489
void BlockOps_invM_N(dim_t N, double *mat, index_t *pivot, int *failed)
LU factorization of NxN matrix mat with partial pivoting.
Definition: BlockOps.h:160
void invMain(double *inv_diag, index_t *pivot) const
Definition: SparseMatrix.cpp:504
#define PASO_MKL
Definition: Options.h:49
void SparseMatrix_MatrixVector_CSR_OFFSET1(const double alpha, const_SparseMatrix_ptr A, const double *in, const double beta, double *out)
Definition: SparseMatrix_MatrixVector.cpp:206
#define MATRIX_FORMAT_OFFSET1
Definition: Paso.h:64
void SparseMatrix_MatrixVector_CSR_OFFSET0_DIAG(const double alpha, const_SparseMatrix_ptr A, const double *in, const double beta, double *out)
Definition: SparseMatrix_MatrixVector.cpp:441
void BlockOps_solveAll(dim_t n_block, dim_t n, double *D, index_t *pivot, double *x)
Definition: BlockOps.h:231
void copy(dim_t N, double *out, const double *in)
out = in
Definition: PasoUtil.h:113
void Preconditioner_LocalSmoother_free(Preconditioner_LocalSmoother *in)
Definition: Smoother.cpp:55
void copyBlockToMainDiagonal(const double *in)
Definition: SparseMatrix.cpp:412
SparseMatrixType type
Definition: SparseMatrix.h:172
static dim_t nz
Definition: SparseMatrix_saveHB.cpp:50
int comparIndex(const void *index1, const void *index2)
this int-comparison function is used by qsort/bsearch in various places
Definition: PasoUtil.cpp:51
index_t dim_t
Definition: DataTypes.h:90
void saveMM(const char *filename) const
Definition: SparseMatrix.cpp:293
void maxAbsRow_CSR_OFFSET0(double *array) const
Definition: SparseMatrix.cpp:375
boost::shared_ptr< const SparseMatrix > const_SparseMatrix_ptr
Definition: SparseMatrix.h:50
void BlockOps_invM_3(double *invA, const double *A, int *failed)
Definition: BlockOps.h:129
void nullifyRows_CSR_BLK1(const double *mask_row, double main_diagonal_value)
Definition: SparseMatrix_nullifyRowsAndCols.cpp:137
double getSparsity() const
Definition: SparseMatrix.h:137
dim_t getNumCols() const
Definition: SparseMatrix.h:127
#define mm_set_matrix(typecode)
Definition: mmio.h:71
char MM_typecode[4]
Definition: mmio.h:34
void swap(index_t *r, index_t *c, double *v, int left, int right)
Definition: SparseMatrix.cpp:69
void nullifyRowsAndCols_CSC_BLK1(const double *mask_row, const double *mask_col, double main_diagonal_value)
Definition: SparseMatrix_nullifyRowsAndCols.cpp:53
void MKL_free(SparseMatrix *A)
Definition: MKL.cpp:49
int SparseMatrixType
Definition: SparseMatrix.h:52
void nullifyRows_CSR(const double *mask_row, double main_diagonal_value)
Definition: SparseMatrix_nullifyRowsAndCols.cpp:154
void copyToMainDiagonal(const double *in)
Definition: SparseMatrix.cpp:450
void saveHB_CSC(const char *filename) const
Definition: SparseMatrix_saveHB.cpp:192
~SparseMatrix()
Definition: SparseMatrix.cpp:197
#define PASO_PASO
Definition: Options.h:55
SparseMatrix_ptr SparseMatrix_MatrixMatrixTranspose(const_SparseMatrix_ptr A, const_SparseMatrix_ptr B, const_SparseMatrix_ptr T)
Definition: SparseMatrix_MatrixMatrixTranspose.cpp:72
dim_t len
Definition: SparseMatrix.h:179
#define PASO_UMFPACK
Definition: Options.h:50
void applyBlockMatrix(double *block_diag, index_t *pivot, double *x, const double *b) const
Definition: SparseMatrix.cpp:554
void copyFromMainDiagonal(double *out) const
Definition: SparseMatrix.cpp:436
index_t solver_package
package controlling the solver pointer
Definition: SparseMatrix.h:185
boost::shared_ptr< SparseMatrix > SparseMatrix_ptr
Definition: SparseMatrix.h:48
void addRow_CSR_OFFSET0(double *array) const
Definition: SparseMatrix.cpp:394
void BlockOps_Cpy_N(dim_t N, double *R, const double *V)
Definition: BlockOps.h:52
PasoException exception class.
Definition: PasoException.h:45
double * val
this is used for classical CSR or CSC
Definition: SparseMatrix.h:182
#define mm_initialize_typecode(typecode)
Definition: mmio.h:91
int index_t
type for array/matrix indices used both globally and on each rank
Definition: DataTypes.h:85
#define mm_is_real(typecode)
Definition: mmio.h:57
int mm_read_banner(std::istream &f, MM_typecode *matcode)
Definition: mmio.cpp:104
void SparseMatrix_MatrixVector_CSR_OFFSET0(const double alpha, const_SparseMatrix_ptr A, const double *in, const double beta, double *out)
Definition: SparseMatrix_MatrixVector.cpp:294
SparseMatrix_ptr getTranspose() const
Definition: SparseMatrix.cpp:563
SparseMatrix_ptr getSubmatrix(dim_t n_row_sub, dim_t n_col_sub, const index_t *row_list, const index_t *new_col_index) const
Definition: SparseMatrix_getSubmatrix.cpp:55
void nullifyRowsAndCols_CSC(const double *mask_row, const double *mask_col, double main_diagonal_value)
Definition: SparseMatrix_nullifyRowsAndCols.cpp:89
double getSize() const
Definition: SparseMatrix.h:132
int mm_write_banner(std::ostream &f, MM_typecode matcode)
Definition: mmio.cpp:356
static dim_t M
Definition: SparseMatrix_saveHB.cpp:50
dim_t numRows
Definition: SparseMatrix.h:176
dim_t getNumRows() const
Definition: SparseMatrix.h:122
boost::shared_ptr< Pattern > Pattern_ptr
Definition: Pattern.h:50
index_t * borrowMainDiagonalPointer() const
Definition: SparseMatrix.h:92
void SparseMatrix_MatrixVector_CSC_OFFSET0(const double alpha, const_SparseMatrix_ptr A, const double *in, const double beta, double *out)
Definition: SparseMatrix_MatrixVector.cpp:58
#define mm_set_coordinate(typecode)
Definition: mmio.h:72
Definition: escriptcore/src/IndexList.h:28
SparseMatrix_ptr SparseMatrix_MatrixMatrix(const_SparseMatrix_ptr A, const_SparseMatrix_ptr B)
Definition: SparseMatrix_MatrixMatrix.cpp:63
Definition: BiCGStab.cpp:26
#define PASO_SMOOTHER
Definition: Options.h:73
Definition: SparseMatrix.h:55
SparseMatrix_ptr unroll(SparseMatrixType type) const
Definition: SparseMatrix.cpp:639
void q_sort(index_t *row, index_t *col, double *val, int begin, int end, int N)
Definition: SparseMatrix.cpp:87
#define MATRIX_FORMAT_DEFAULT
Definition: Paso.h:61
index_t * borrowColoringPointer() const
Definition: SparseMatrix.h:97
#define MATRIX_FORMAT_DIAGONAL_BLOCK
Definition: Paso.h:65
void applyDiagonal_CSR_OFFSET0(const double *left, const double *right)
Definition: SparseMatrix.cpp:464
dim_t col_block_size
Definition: SparseMatrix.h:174
#define mm_is_sparse(typecode)
Definition: mmio.h:51