29 #ifndef __PASO_SYSTEMMATRIX_H__ 30 #define __PASO_SYSTEMMATRIX_H__ 49 bool patternIsUnrolled);
58 double main_diagonal_value);
64 void nullifyRows(
double* mask_row,
double main_diagonal_value);
103 void applyBalance(
double* x_out,
const double* x,
bool RHS)
const;
184 return pattern->input_distribution->getGlobalNumComponents();
186 return pattern->output_distribution->getGlobalNumComponents();
192 return pattern->output_distribution->getGlobalNumComponents();
194 return pattern->input_distribution->getGlobalNumComponents();
215 return pattern->getNumOutput();
220 mainBlock->copyBlockFromMainDiagonal(out);
246 inline void saveMM(
const char* filename)
const 255 inline void saveHB(
const char *filename)
const 266 inline void rowSum(
double* row_sum)
const 270 "available for compressed sparse column or index offset 1.");
273 #pragma omp parallel for 274 for (
index_t irow=0; irow<nrow; ++irow) {
282 static SystemMatrix_ptr
loadMM_toCSR(
const char* filename);
284 static SystemMatrix_ptr
loadMM_toCSC(
const char* filename);
288 index_t package,
bool symmetry,
349 #endif // __PASO_SYSTEMMATRIX_H__ void copyToMainDiagonal(const double *in)
Definition: SystemMatrix.h:233
#define PASO_DLL_API
Definition: Paso.h:41
void nullifyRowsAndCols(double *mask_row, double *mask_col, double main_diagonal_value)
Definition: SystemMatrix.cpp:243
Distribution_ptr col_distribution
Definition: SystemMatrix.h:302
SparseMatrix_ptr row_coupleBlock
coupling to neighbouring processors (col - row)
Definition: SystemMatrix.h:313
void mergeMainAndCouple_CSR_OFFSET0_Block(index_t **p_ptr, index_t **p_idx, double **p_val) const
Definition: SystemMatrix_mergeMainAndCouple.cpp:173
SparseMatrix_ptr mergeSystemMatrix() const
Definition: SystemMatrix.cpp:500
SparseMatrix_ptr mainBlock
main block
Definition: SystemMatrix.h:309
void copyBlockFromMainDiagonal(double *out) const
Definition: SystemMatrix.h:218
dim_t getTotalNumRows() const
Definition: SystemMatrix.h:161
dim_t logical_col_block_size
Definition: SystemMatrix.h:295
void startColCollect(const double *in)
Definition: SystemMatrix.h:131
void * trilinos_data
this is only used for a trilinos matrix
Definition: SystemMatrix.h:336
dim_t logical_row_block_size
Definition: SystemMatrix.h:294
void * solver_p
pointer to data needed by a solver
Definition: SystemMatrix.h:333
double * finishCollect()
Definition: SystemMatrix.h:126
#define MATRIX_FORMAT_OFFSET1
Definition: Paso.h:56
double * finishRowCollect()
Definition: SystemMatrix.h:146
void applyBalance(double *x_out, const double *x, bool RHS) const
Definition: SystemMatrix.cpp:390
SystemMatrixPattern_ptr pattern
Definition: SystemMatrix.h:292
void mergeMainAndCouple_CSR_OFFSET0(index_t **p_ptr, index_t **p_idx, double **p_val) const
Definition: SystemMatrix_mergeMainAndCouple.cpp:59
Distribution_ptr row_distribution
Definition: SystemMatrix.h:301
dim_t getNumRows() const
Definition: SystemMatrix.h:151
index_t * global_id
stores the global ids for all cols in col_coupleBlock
Definition: SystemMatrix.h:327
static SystemMatrix_ptr loadMM_toCSR(const char *filename)
Definition: SystemMatrix_loadMM.cpp:103
void Esys_setError(Esys_ErrorCodeType err, __const char *msg)
Definition: error.cpp:38
dim_t getGlobalNumCols() const
Definition: SystemMatrix.h:189
bool is_balanced
Definition: SystemMatrix.h:317
void startCollect(const double *in)
Definition: SystemMatrix.h:121
dim_t getGlobalNumRows() const
Definition: SystemMatrix.h:181
void freePreconditioner()
Definition: SystemMatrix.cpp:161
void saveHB(const char *filename) const
Definition: SystemMatrix.h:255
dim_t getGlobalTotalNumCols() const
Definition: SystemMatrix.h:202
boost::shared_ptr< SparseMatrix > SparseMatrix_ptr
Definition: SparseMatrix.h:35
boost::shared_ptr< Distribution > Distribution_ptr
Definition: Distribution.h:36
void balance()
Definition: SystemMatrix.cpp:409
SystemMatrixType type
Definition: SystemMatrix.h:291
dim_t getNumOutput() const
Definition: SystemMatrix.h:213
void rowSum(double *row_sum) const
Definition: SystemMatrix.h:266
void extendedRowsForST(dim_t *degree_ST, index_t *offset_ST, index_t *ST)
Definition: SystemMatrix_extendedRows.cpp:41
void SystemMatrix_MatrixVector_CSR_OFFSET0(double alpha, SystemMatrix_ptr A, const double *in, double beta, double *out)
Definition: SystemMatrix_MatrixVector.cpp:72
dim_t getRowOverlap() const
Definition: SystemMatrix.h:171
boost::shared_ptr< SystemMatrixPattern > SystemMatrixPattern_ptr
Definition: SystemMatrixPattern.h:38
void RHS_loadMM_toCSR(const char *filename, double *b, dim_t size)
Definition: SystemMatrix_loadMM.cpp:314
boost::shared_ptr< SystemMatrix > SystemMatrix_ptr
Definition: SystemMatrix.h:38
static index_t getSystemMatrixTypeId(index_t solver, index_t preconditioner, index_t package, bool symmetry, const esysUtils::JMPI &mpi_info)
Definition: SystemMatrix.cpp:461
dim_t getTotalNumCols() const
Definition: SystemMatrix.h:166
SparseMatrix_ptr col_coupleBlock
coupling to neighbouring processors (row - col)
Definition: SystemMatrix.h:311
~SystemMatrix()
Definition: SystemMatrix.cpp:141
void fillWithGlobalCoordinates(double f1)
Definition: SystemMatrix_debug.cpp:36
void setValues(double value)
Definition: SystemMatrix.h:238
double getSparsity() const
Definition: SystemMatrix.h:207
Definition: SystemMatrix.h:46
void SystemMatrix_MatrixVector(double alpha, SystemMatrix_ptr A, const double *in, double beta, double *out)
Definition: SystemMatrix_MatrixVector.cpp:35
void startRowCollect(const double *in)
Definition: SystemMatrix.h:141
Coupler_ptr col_coupler
Definition: SystemMatrix.h:305
dim_t row_block_size
Definition: SystemMatrix.h:297
dim_t block_size
Definition: SystemMatrix.h:299
SystemMatrix(SystemMatrixType, SystemMatrixPattern_ptr, dim_t, dim_t, bool patternIsUnrolled)
Definition: SystemMatrix.cpp:42
void copyRemoteCoupleBlock(bool recreatePattern)
Definition: SystemMatrix_copyRemoteCoupleBlock.cpp:39
double getGlobalSize() const
Definition: SystemMatrix.cpp:168
boost::shared_ptr< const SystemMatrix > const_SystemMatrix_ptr
Definition: SystemMatrix.h:40
void print() const
Definition: SystemMatrix_debug.cpp:100
int SystemMatrixType
Definition: SystemMatrix.h:42
double * balance_vector
Definition: SystemMatrix.h:324
void copyFromMainDiagonal(double *out) const
Definition: SystemMatrix.h:228
void add(dim_t, index_t *, dim_t, dim_t, index_t *, dim_t, double *)
void mergeMainAndCouple_CSC_OFFSET1(index_t **p_ptr, index_t **p_idx, double **p_val) const
Definition: SystemMatrix_mergeMainAndCouple.cpp:283
void nullifyRows(double *mask_row, double main_diagonal_value)
Definition: SystemMatrix.cpp:220
int index_t
Definition: types.h:24
dim_t getNumCols() const
Definition: SystemMatrix.h:156
static SystemMatrix_ptr loadMM_toCSC(const char *filename)
Definition: SystemMatrix_loadMM.cpp:209
dim_t col_block_size
Definition: SystemMatrix.h:298
index_t * borrowMainDiagonalPointer() const
Definition: SystemMatrix.cpp:184
SparseMatrix_ptr remote_coupleBlock
coupling of rows-cols on neighbouring processors (may not be valid)
Definition: SystemMatrix.h:315
boost::shared_ptr< Coupler > Coupler_ptr
Definition: Coupler.h:39
void solvePreconditioner(double *x, double *b)
Definition: SystemMatrix.cpp:155
index_t dim_t
Definition: types.h:27
void makeZeroRowSums(double *left_over)
Definition: SystemMatrix.cpp:198
void applyBalanceInPlace(double *x, bool RHS) const
Definition: SystemMatrix.cpp:371
#define MATRIX_FORMAT_CSC
Definition: Paso.h:54
dim_t getColOverlap() const
Definition: SystemMatrix.h:176
void mergeMainAndCouple(index_t **p_ptr, index_t **p_idx, double **p_val) const
Definition: SystemMatrix_mergeMainAndCouple.cpp:41
void copyBlockToMainDiagonal(const double *in)
Definition: SystemMatrix.h:223
Coupler_ptr row_coupler
Definition: SystemMatrix.h:306
void setPreconditioner(Options *options)
Definition: SystemMatrix.cpp:148
dim_t getGlobalTotalNumRows() const
Definition: SystemMatrix.h:197
boost::shared_ptr< JMPI_ > JMPI
Definition: Esys_MPI.h:79
index_t solver_package
package code controlling the solver pointer
Definition: SystemMatrix.h:330
double * finishColCollect()
Definition: SystemMatrix.h:136
void copyColCoupleBlock()
Definition: SystemMatrix.cpp:291
void saveMM(const char *filename) const
Definition: SystemMatrix.h:246
void copyMain_CSC_OFFSET1(index_t **p_ptr, index_t **p_idx, double **p_val)
esysUtils::JMPI mpi_info
Definition: SystemMatrix.h:303