escript Revision_
paso::SystemMatrix< T > Class Template Reference

this class holds a (distributed) stiffness matrix More...

#include <SystemMatrix.h>

Inheritance diagram for paso::SystemMatrix< T >:
escript::AbstractSystemMatrix

Public Member Functions

 SystemMatrix ()
 default constructor - throws exception.
 
 SystemMatrix (SystemMatrixType type, SystemMatrixPattern_ptr pattern, dim_t rowBlockSize, dim_t columnBlockSize, bool patternIsUnrolled, const escript::FunctionSpace &rowFS, const escript::FunctionSpace &colFS)
 
 ~SystemMatrix ()
 
virtual void nullifyRowsAndCols (escript::Data &mask_row, escript::Data &mask_col, double main_diagonal_value)
 
virtual void saveMM (const std::string &filename) const
 writes the matrix to a file using the Matrix Market file format
 
virtual void saveHB (const std::string &filename) const
 writes the matrix to a file using the Harwell-Boeing file format
 
virtual void resetValues (bool preserveSolverData=false)
 resets the matrix entries
 
void nullifyRows (double *mask_row, double main_diagonal_value)
 
void add (dim_t, index_t *, dim_t, dim_t, index_t *, dim_t, double *)
 
void makeZeroRowSums (double *left_over)
 
void copyColCoupleBlock ()
 
void copyRemoteCoupleBlock (bool recreatePattern)
 
void fillWithGlobalCoordinates (double f1)
 
void print () const
 
SparseMatrix_ptr< T > mergeSystemMatrix () const
 
void mergeMainAndCouple (index_t **p_ptr, index_t **p_idx, double **p_val) const
 
void mergeMainAndCouple_CSR_OFFSET0 (index_t **p_ptr, index_t **p_idx, double **p_val) const
 
void mergeMainAndCouple_CSR_OFFSET0_Block (index_t **p_ptr, index_t **p_idx, double **p_val) const
 
void mergeMainAndCouple_CSC_OFFSET1 (index_t **p_ptr, index_t **p_idx, double **p_val) const
 
void copyMain_CSC_OFFSET1 (index_t **p_ptr, index_t **p_idx, double **p_val)
 
void extendedRowsForST (dim_t *degree_ST, index_t *offset_ST, index_t *ST)
 
void applyBalanceInPlace (double *x, bool RHS) const
 
void applyBalance (double *x_out, const double *x, bool RHS) const
 
void balance ()
 
double getGlobalSize () const
 
void setPreconditioner (Options *options)
 
void solvePreconditioner (double *x, double *b)
 
void freePreconditioner ()
 
index_tborrowMainDiagonalPointer () const
 
void startCollect (const double *in) const
 
double * finishCollect () const
 
void startColCollect (const double *in) const
 
double * finishColCollect () const
 
void startRowCollect (const double *in)
 
double * finishRowCollect ()
 
dim_t getNumRows () const
 
dim_t getNumCols () const
 
dim_t getTotalNumRows () const
 
dim_t getTotalNumCols () const
 
dim_t getRowOverlap () const
 
dim_t getColOverlap () const
 
dim_t getGlobalNumRows () const
 
dim_t getGlobalNumCols () const
 
dim_t getGlobalTotalNumRows () const
 
dim_t getGlobalTotalNumCols () const
 
double getSparsity () const
 
dim_t getNumOutput () const
 
void copyBlockFromMainDiagonal (double *out) const
 
void copyBlockToMainDiagonal (const double *in)
 
void copyFromMainDiagonal (double *out) const
 
void copyToMainDiagonal (const double *in)
 
void setValues (double value)
 
void rowSum (double *row_sum) const
 
void MatrixVector (double alpha, const T *in, double beta, T *out) const
 
void MatrixVector_CSR_OFFSET0 (double alpha, const double *in, double beta, double *out) const
 
void setPreconditioner (Options *options)
 
void solvePreconditioner (double *x, double *b)
 
void freePreconditioner ()
 
double getGlobalSize () const
 
index_tborrowMainDiagonalPointer () const
 
void makeZeroRowSums (double *left_over)
 
void nullifyRows (double *mask_row, double main_diagonal_value)
 
void copyColCoupleBlock ()
 
void applyBalanceInPlace (double *x, const bool RHS) const
 
void applyBalance (double *x_out, const double *x, bool RHS) const
 
void balance ()
 
SparseMatrix_ptr< double > mergeSystemMatrix () const
 
SparseMatrix_ptr< cplx_tmergeSystemMatrix () const
 
SparseMatrix_ptr< double > mergeSystemMatrix () const
 
SparseMatrix_ptr< cplx_tmergeSystemMatrix () const
 
void MatrixVector (double alpha, const double *in, double beta, double *out) const
 
void MatrixVector (double alpha, const cplx_t *in, double beta, cplx_t *out) const
 
void copyRemoteCoupleBlock (bool recreatePattern)
 
void fillWithGlobalCoordinates (double f1)
 
void print () const
 
void extendedRowsForST (dim_t *degree_ST, index_t *offset_ST, index_t *ST)
 
SystemMatrix_ptr< double > loadMM_toCSR (const char *filename)
 
SystemMatrix_ptr< double > loadMM_toCSC (const char *filename)
 
void MatrixVector_CSR_OFFSET0 (double alpha, const double *in, double beta, double *out) const
 
void MatrixVector (double alpha, const double *in, double beta, double *out) const
 
void MatrixVector (double alpha, const cplx_t *in, double beta, cplx_t *out) const
 
void mergeMainAndCouple_CSR_OFFSET0_Block (index_t **p_ptr, index_t **p_idx, double **p_val) const
 
void mergeMainAndCouple_CSR_OFFSET0 (index_t **p_ptr, index_t **p_idx, double **p_val) const
 
void mergeMainAndCouple_CSC_OFFSET1 (index_t **p_ptr, index_t **p_idx, double **p_val) const
 
void mergeMainAndCouple (index_t **p_ptr, index_t **p_idx, double **p_val) const
 
- Public Member Functions inherited from escript::AbstractSystemMatrix
 AbstractSystemMatrix ()
 Default constructor for AbstractSystemMatrix.
 
 AbstractSystemMatrix (int row_blocksize, const FunctionSpace &row_functionspace, int column_blocksize, const FunctionSpace &column_functionspace)
 
virtual ~AbstractSystemMatrix ()
 Destructor.
 
ASM_ptr getPtr ()
 Returns smart pointer which is managing this object. If one does not exist yet it creates one.
 
const_ASM_ptr getPtr () const
 Returns smart pointer which is managing this object. If one does not exist yet it creates one.
 
Data vectorMultiply (const Data &right) const
 returns the matrix-vector product this*right
 
bool isEmpty () const
 returns true if the matrix is empty
 
FunctionSpace getColumnFunctionSpace () const
 returns the column function space
 
FunctionSpace getRowFunctionSpace () const
 returns the row function space
 
int getRowBlockSize () const
 returns the row block size
 
int getColumnBlockSize () const
 returns the column block size
 
Data solve (const Data &in, boost::python::object &options) const
 returns the solution u of the linear system this*u=in
 

Static Public Member Functions

static SystemMatrix_ptr< double > loadMM_toCSR (const char *filename)
 
static SystemMatrix_ptr< double > loadMM_toCSC (const char *filename)
 
static int getSystemMatrixTypeId (int solver, int preconditioner, int package, bool is_complex, bool symmetry, const escript::JMPI &mpi_info)
 

Public Attributes

SystemMatrixType type
 
SystemMatrixPattern_ptr pattern
 
dim_t logical_row_block_size
 
dim_t logical_col_block_size
 
dim_t row_block_size
 
dim_t col_block_size
 
dim_t block_size
 
escript::Distribution_ptr row_distribution
 
escript::Distribution_ptr col_distribution
 
escript::JMPI mpi_info
 
Coupler_ptr< real_tcol_coupler
 
Coupler_ptr< real_trow_coupler
 
SparseMatrix_ptr< T > mainBlock
 main block
 
SparseMatrix_ptr< T > col_coupleBlock
 coupling to neighbouring processors (row - col)
 
SparseMatrix_ptr< T > row_coupleBlock
 coupling to neighbouring processors (col - row)
 
SparseMatrix_ptr< T > remote_coupleBlock
 coupling of rows-cols on neighbouring processors (may not be valid)
 
bool is_balanced
 
double * balance_vector
 
index_tglobal_id
 stores the global ids for all cols in col_coupleBlock
 
index_t solver_package
 package code controlling the solver pointer
 
void * solver_p
 pointer to data needed by a solver
 

Private Member Functions

virtual void setToSolution (escript::Data &out, escript::Data &in, boost::python::object &options) const
 solves the linear system this*out=in
 
virtual void ypAx (escript::Data &y, escript::Data &x) const
 performs y+=this*x
 
void solve (T *out, T *in, Options *options) const
 
void solve (double *out, double *in, Options *options) const
 
void solve (cplx_t *out, cplx_t *in, Options *options) const
 
void solve (double *out, double *in, Options *options) const
 
void solve (cplx_t *out, cplx_t *in, Options *options) const
 

Detailed Description

template<class T>
class paso::SystemMatrix< T >

this class holds a (distributed) stiffness matrix

Constructor & Destructor Documentation

◆ SystemMatrix() [1/2]

template<class T >
paso::SystemMatrix< T >::SystemMatrix ( )

default constructor - throws exception.

◆ SystemMatrix() [2/2]

template<class T >
paso::SystemMatrix< T >::SystemMatrix ( SystemMatrixType ntype,
SystemMatrixPattern_ptr npattern,
dim_t rowBlockSize,
dim_t colBlockSize,
bool patternIsUnrolled,
const escript::FunctionSpace & rowFS,
const escript::FunctionSpace & colFS )

◆ ~SystemMatrix()

template<class T >
paso::SystemMatrix< T >::~SystemMatrix ( )

References paso::solve_free().

Member Function Documentation

◆ add()

template<class T >
void paso::SystemMatrix< T >::add ( dim_t ,
index_t * ,
dim_t ,
dim_t ,
index_t * ,
dim_t ,
double *  )

◆ applyBalance() [1/2]

void paso::SystemMatrix< double >::applyBalance ( double * x_out,
const double * x,
bool RHS ) const

◆ applyBalance() [2/2]

template<class T >
void paso::SystemMatrix< T >::applyBalance ( double * x_out,
const double * x,
bool RHS ) const

◆ applyBalanceInPlace() [1/2]

template<class T >
void paso::SystemMatrix< T >::applyBalanceInPlace ( double * x,
bool RHS ) const

◆ applyBalanceInPlace() [2/2]

void paso::SystemMatrix< double >::applyBalanceInPlace ( double * x,
const bool RHS ) const

◆ balance() [1/2]

void paso::SystemMatrix< double >::balance ( )

◆ balance() [2/2]

template<class T >
void paso::SystemMatrix< T >::balance ( )

◆ borrowMainDiagonalPointer() [1/2]

index_t * paso::SystemMatrix< double >::borrowMainDiagonalPointer ( ) const

References MPI_INT, and MPI_MAX.

◆ borrowMainDiagonalPointer() [2/2]

template<class T >
index_t * paso::SystemMatrix< T >::borrowMainDiagonalPointer ( ) const

◆ copyBlockFromMainDiagonal()

template<class T >
void paso::SystemMatrix< T >::copyBlockFromMainDiagonal ( double * out) const
inline

◆ copyBlockToMainDiagonal()

template<class T >
void paso::SystemMatrix< T >::copyBlockToMainDiagonal ( const double * in)
inline

◆ copyColCoupleBlock() [1/2]

void paso::SystemMatrix< double >::copyColCoupleBlock ( )

References MPI_DOUBLE.

◆ copyColCoupleBlock() [2/2]

template<class T >
void paso::SystemMatrix< T >::copyColCoupleBlock ( )

copies the col_coupleBlock into row_coupleBlock. WARNING: this method uses mpi_requests of the coupler attached to the matrix. No reordering on the received columns is performed. In practice this means that components in row_coupleBlock->pattern->index and row_coupler->connector->recv->shared are ordered by increasing value. Note that send and receive row_coupler->connectors are swapping roles.

◆ copyFromMainDiagonal()

template<class T >
void paso::SystemMatrix< T >::copyFromMainDiagonal ( double * out) const
inline

◆ copyMain_CSC_OFFSET1()

template<class T >
void paso::SystemMatrix< T >::copyMain_CSC_OFFSET1 ( index_t ** p_ptr,
index_t ** p_idx,
double ** p_val )

◆ copyRemoteCoupleBlock() [1/2]

template<class T >
void paso::SystemMatrix< T >::copyRemoteCoupleBlock ( bool recreatePattern)

◆ copyRemoteCoupleBlock() [2/2]

void paso::SystemMatrix< double >::copyRemoteCoupleBlock ( bool recreatePattern)

References MPI_DOUBLE, and MPI_INT.

◆ copyToMainDiagonal()

template<class T >
void paso::SystemMatrix< T >::copyToMainDiagonal ( const double * in)
inline

◆ extendedRowsForST() [1/2]

template<class T >
void paso::SystemMatrix< T >::extendedRowsForST ( dim_t * degree_ST,
index_t * offset_ST,
index_t * ST )

◆ extendedRowsForST() [2/2]

void paso::SystemMatrix< double >::extendedRowsForST ( dim_t * degree_ST,
index_t * offset_ST,
index_t * ST )

◆ fillWithGlobalCoordinates() [1/2]

template<class T >
void paso::SystemMatrix< T >::fillWithGlobalCoordinates ( double f1)

◆ fillWithGlobalCoordinates() [2/2]

void paso::SystemMatrix< double >::fillWithGlobalCoordinates ( double f1)

◆ finishColCollect()

template<class T >
double * paso::SystemMatrix< T >::finishColCollect ( ) const
inline

◆ finishCollect()

template<class T >
double * paso::SystemMatrix< T >::finishCollect ( ) const
inline

◆ finishRowCollect()

template<class T >
double * paso::SystemMatrix< T >::finishRowCollect ( )
inline

◆ freePreconditioner() [1/2]

void paso::SystemMatrix< double >::freePreconditioner ( )

◆ freePreconditioner() [2/2]

template<class T >
void paso::SystemMatrix< T >::freePreconditioner ( )

Referenced by paso::Solver_free().

◆ getColOverlap()

template<class T >
dim_t paso::SystemMatrix< T >::getColOverlap ( ) const
inline

◆ getGlobalNumCols()

◆ getGlobalNumRows()

◆ getGlobalSize() [1/2]

double paso::SystemMatrix< double >::getGlobalSize ( ) const

References MPI_DOUBLE, and MPI_SUM.

◆ getGlobalSize() [2/2]

template<class T >
double paso::SystemMatrix< T >::getGlobalSize ( ) const

◆ getGlobalTotalNumCols()

template<class T >
dim_t paso::SystemMatrix< T >::getGlobalTotalNumCols ( ) const
inline

◆ getGlobalTotalNumRows()

template<class T >
dim_t paso::SystemMatrix< T >::getGlobalTotalNumRows ( ) const
inline

◆ getNumCols()

template<class T >
dim_t paso::SystemMatrix< T >::getNumCols ( ) const
inline

◆ getNumOutput()

template<class T >
dim_t paso::SystemMatrix< T >::getNumOutput ( ) const
inline

◆ getNumRows()

template<class T >
dim_t paso::SystemMatrix< T >::getNumRows ( ) const
inline

◆ getRowOverlap()

template<class T >
dim_t paso::SystemMatrix< T >::getRowOverlap ( ) const
inline

◆ getSparsity()

◆ getSystemMatrixTypeId()

◆ getTotalNumCols()

template<class T >
dim_t paso::SystemMatrix< T >::getTotalNumCols ( ) const
inline

◆ getTotalNumRows()

template<class T >
dim_t paso::SystemMatrix< T >::getTotalNumRows ( ) const
inline

◆ loadMM_toCSC() [1/2]

template<class T >
static SystemMatrix_ptr< double > paso::SystemMatrix< T >::loadMM_toCSC ( const char * filename)
static

◆ loadMM_toCSC() [2/2]

◆ loadMM_toCSR() [1/2]

template<class T >
static SystemMatrix_ptr< double > paso::SystemMatrix< T >::loadMM_toCSR ( const char * filename)
static

◆ loadMM_toCSR() [2/2]

◆ makeZeroRowSums() [1/2]

void paso::SystemMatrix< double >::makeZeroRowSums ( double * left_over)

◆ makeZeroRowSums() [2/2]

template<class T >
void paso::SystemMatrix< T >::makeZeroRowSums ( double * left_over)

◆ MatrixVector() [1/5]

void paso::SystemMatrix< cplx_t >::MatrixVector ( double alpha,
const cplx_t * in,
double beta,
cplx_t * out ) const

◆ MatrixVector() [2/5]

void paso::SystemMatrix< cplx_t >::MatrixVector ( double alpha,
const cplx_t * in,
double beta,
cplx_t * out ) const

◆ MatrixVector() [3/5]

void paso::SystemMatrix< double >::MatrixVector ( double alpha,
const double * in,
double beta,
double * out ) const

◆ MatrixVector() [4/5]

◆ MatrixVector() [5/5]

template<class T >
void paso::SystemMatrix< T >::MatrixVector ( double alpha,
const T * in,
double beta,
T * out ) const

◆ MatrixVector_CSR_OFFSET0() [1/2]

template<class T >
void paso::SystemMatrix< T >::MatrixVector_CSR_OFFSET0 ( double alpha,
const double * in,
double beta,
double * out ) const

◆ MatrixVector_CSR_OFFSET0() [2/2]

void paso::SystemMatrix< double >::MatrixVector_CSR_OFFSET0 ( double alpha,
const double * in,
double beta,
double * out ) const

◆ mergeMainAndCouple() [1/2]

template<class T >
void paso::SystemMatrix< T >::mergeMainAndCouple ( index_t ** p_ptr,
index_t ** p_idx,
double ** p_val ) const

◆ mergeMainAndCouple() [2/2]

void paso::SystemMatrix< double >::mergeMainAndCouple ( index_t ** p_ptr,
index_t ** p_idx,
double ** p_val ) const

◆ mergeMainAndCouple_CSC_OFFSET1() [1/2]

template<class T >
void paso::SystemMatrix< T >::mergeMainAndCouple_CSC_OFFSET1 ( index_t ** p_ptr,
index_t ** p_idx,
double ** p_val ) const

◆ mergeMainAndCouple_CSC_OFFSET1() [2/2]

void paso::SystemMatrix< double >::mergeMainAndCouple_CSC_OFFSET1 ( index_t ** p_ptr,
index_t ** p_idx,
double ** p_val ) const

◆ mergeMainAndCouple_CSR_OFFSET0() [1/2]

template<class T >
void paso::SystemMatrix< T >::mergeMainAndCouple_CSR_OFFSET0 ( index_t ** p_ptr,
index_t ** p_idx,
double ** p_val ) const

◆ mergeMainAndCouple_CSR_OFFSET0() [2/2]

void paso::SystemMatrix< double >::mergeMainAndCouple_CSR_OFFSET0 ( index_t ** p_ptr,
index_t ** p_idx,
double ** p_val ) const

◆ mergeMainAndCouple_CSR_OFFSET0_Block() [1/2]

template<class T >
void paso::SystemMatrix< T >::mergeMainAndCouple_CSR_OFFSET0_Block ( index_t ** p_ptr,
index_t ** p_idx,
double ** p_val ) const

◆ mergeMainAndCouple_CSR_OFFSET0_Block() [2/2]

void paso::SystemMatrix< double >::mergeMainAndCouple_CSR_OFFSET0_Block ( index_t ** p_ptr,
index_t ** p_idx,
double ** p_val ) const

◆ mergeSystemMatrix() [1/5]

SparseMatrix_ptr< double > paso::SystemMatrix< double >::mergeSystemMatrix ( ) const

References MPI_DOUBLE, and MPI_INT.

◆ mergeSystemMatrix() [2/5]

SparseMatrix_ptr< cplx_t > paso::SystemMatrix< cplx_t >::mergeSystemMatrix ( ) const

◆ mergeSystemMatrix() [3/5]

template<class T >
SparseMatrix_ptr< T > paso::SystemMatrix< T >::mergeSystemMatrix ( ) const

Merges the system matrix which is distributed on several MPI ranks into a complete sparse matrix on rank 0. Used by the Merged Solver.

Referenced by paso::SystemMatrix< T >::saveMM().

◆ mergeSystemMatrix() [4/5]

SparseMatrix_ptr< double > paso::SystemMatrix< double >::mergeSystemMatrix ( ) const

◆ mergeSystemMatrix() [5/5]

SparseMatrix_ptr< cplx_t > paso::SystemMatrix< cplx_t >::mergeSystemMatrix ( ) const

◆ nullifyRows() [1/2]

void paso::SystemMatrix< double >::nullifyRows ( double * mask_row,
double main_diagonal_value )

References MATRIX_FORMAT_CSC.

◆ nullifyRows() [2/2]

template<class T >
void paso::SystemMatrix< T >::nullifyRows ( double * mask_row,
double main_diagonal_value )

Nullifies rows in the matrix. The rows are marked by positive values in mask_row. Values on the main diagonal which are marked to set to zero by mask_row are set to main_diagonal_value.

◆ nullifyRowsAndCols()

template<class T >
void paso::SystemMatrix< T >::nullifyRowsAndCols ( escript::Data & mask_row,
escript::Data & mask_col,
double main_diagonal_value )
virtual

Nullifies rows and columns in the matrix. The rows and columns are marked by positive values in mask_row and mask_col. Values on the main diagonal which are marked to set to zero by both mask_row and mask_col are set to main_diagonal_value.

Reimplemented from escript::AbstractSystemMatrix.

References escript::DataTypes::DataVectorAlt< T >::data(), escript::Data::expand(), escript::Data::getDataPointSize(), escript::Data::getExpandedVectorReference(), escript::Data::getFunctionSpace(), escript::Data::isComplex(), MATRIX_FORMAT_CSC, and escript::Data::requireWrite().

◆ print() [1/2]

template<class T >
void paso::SystemMatrix< T >::print ( ) const

◆ print() [2/2]

void paso::SystemMatrix< double >::print ( ) const

◆ resetValues()

template<class T >
void paso::SystemMatrix< T >::resetValues ( bool preserveSolverData = false)
virtual

resets the matrix entries

Reimplemented from escript::AbstractSystemMatrix.

References paso::solve_free().

◆ rowSum()

◆ saveHB()

template<class T >
virtual void paso::SystemMatrix< T >::saveHB ( const std::string & filename) const
inlinevirtual

writes the matrix to a file using the Harwell-Boeing file format

Reimplemented from escript::AbstractSystemMatrix.

References paso::SystemMatrix< T >::mainBlock, MATRIX_FORMAT_CSC, paso::SystemMatrix< T >::mpi_info, and paso::SystemMatrix< T >::type.

◆ saveMM()

template<class T >
virtual void paso::SystemMatrix< T >::saveMM ( const std::string & filename) const
inlinevirtual

writes the matrix to a file using the Matrix Market file format

Reimplemented from escript::AbstractSystemMatrix.

References paso::SystemMatrix< T >::mainBlock, paso::SystemMatrix< T >::mergeSystemMatrix(), and paso::SystemMatrix< T >::mpi_info.

◆ setPreconditioner() [1/2]

void paso::SystemMatrix< double >::setPreconditioner ( Options * options)

◆ setPreconditioner() [2/2]

template<class T >
void paso::SystemMatrix< T >::setPreconditioner ( Options * options)

◆ setToSolution()

◆ setValues()

◆ solve() [1/5]

◆ solve() [2/5]

void paso::SystemMatrix< cplx_t >::solve ( cplx_t * out,
cplx_t * in,
Options * options ) const
private

◆ solve() [3/5]

◆ solve() [4/5]

void paso::SystemMatrix< double >::solve ( double * out,
double * in,
Options * options ) const
private

◆ solve() [5/5]

template<class T >
void paso::SystemMatrix< T >::solve ( T * out,
T * in,
Options * options ) const
private

◆ solvePreconditioner() [1/2]

void paso::SystemMatrix< double >::solvePreconditioner ( double * x,
double * b )

◆ solvePreconditioner() [2/2]

template<class T >
void paso::SystemMatrix< T >::solvePreconditioner ( double * x,
double * b )

Applies the preconditioner. This method needs to be called within a parallel region. Barrier synchronization is performed before the evaluation to make sure that the input vector is available

◆ startColCollect()

template<class T >
void paso::SystemMatrix< T >::startColCollect ( const double * in) const
inline

◆ startCollect()

template<class T >
void paso::SystemMatrix< T >::startCollect ( const double * in) const
inline

◆ startRowCollect()

template<class T >
void paso::SystemMatrix< T >::startRowCollect ( const double * in)
inline

◆ ypAx()

Member Data Documentation

◆ balance_vector

template<class T >
double* paso::SystemMatrix< T >::balance_vector

matrix may be balanced by a diagonal matrix D=diagonal(balance_vector) if is_balanced is true, the matrix stored is D*A*D where A is the original matrix. When the system of linear equations is solved we solve D*A*D*y=c. So to solve A*x=b one needs to set c=D*b and x=D*y.

Referenced by paso::SystemMatrix< T >::SystemMatrix().

◆ block_size

template<class T >
dim_t paso::SystemMatrix< T >::block_size

◆ col_block_size

◆ col_coupleBlock

template<class T >
SparseMatrix_ptr<T> paso::SystemMatrix< T >::col_coupleBlock

coupling to neighbouring processors (row - col)

Referenced by paso::SystemMatrix< T >::rowSum(), paso::SystemMatrix< T >::setValues(), and paso::SystemMatrix< T >::SystemMatrix().

◆ col_coupler

◆ col_distribution

template<class T >
escript::Distribution_ptr paso::SystemMatrix< T >::col_distribution

◆ global_id

template<class T >
index_t* paso::SystemMatrix< T >::global_id
mutable

stores the global ids for all cols in col_coupleBlock

◆ is_balanced

template<class T >
bool paso::SystemMatrix< T >::is_balanced

◆ logical_col_block_size

template<class T >
dim_t paso::SystemMatrix< T >::logical_col_block_size

◆ logical_row_block_size

template<class T >
dim_t paso::SystemMatrix< T >::logical_row_block_size

◆ mainBlock

◆ mpi_info

◆ pattern

◆ remote_coupleBlock

template<class T >
SparseMatrix_ptr<T> paso::SystemMatrix< T >::remote_coupleBlock

coupling of rows-cols on neighbouring processors (may not be valid)

◆ row_block_size

◆ row_coupleBlock

template<class T >
SparseMatrix_ptr<T> paso::SystemMatrix< T >::row_coupleBlock

coupling to neighbouring processors (col - row)

Referenced by paso::SystemMatrix< T >::setValues(), and paso::SystemMatrix< T >::SystemMatrix().

◆ row_coupler

◆ row_distribution

template<class T >
escript::Distribution_ptr paso::SystemMatrix< T >::row_distribution

◆ solver_p

template<class T >
void* paso::SystemMatrix< T >::solver_p

pointer to data needed by a solver

Referenced by paso::solve_free().

◆ solver_package

template<class T >
index_t paso::SystemMatrix< T >::solver_package
mutable

package code controlling the solver pointer

Referenced by paso::solve_free().

◆ type


The documentation for this class was generated from the following file: