escript  Revision_
Public Member Functions | Static Public Member Functions | Public Attributes | Private Member Functions | List of all members
paso::SystemMatrix< T > Class Template Reference

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

#include <SystemMatrix.h>

Public Member Functions

 SystemMatrix ()
 default constructor - throws exception. More...
 
 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
 
virtual void saveHB (const std::string &filename) const
 
virtual void resetValues (bool preserveSolverData=false)
 
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_t * borrowMainDiagonalPointer () 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_t * borrowMainDiagonalPointer () 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_t > mergeSystemMatrix () const
 
SparseMatrix_ptr< double > mergeSystemMatrix () const
 
SparseMatrix_ptr< cplx_t > mergeSystemMatrix () 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
 

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_t > col_coupler
 
Coupler_ptr< real_t > row_coupler
 
SparseMatrix_ptr< T > mainBlock
 main block More...
 
SparseMatrix_ptr< T > col_coupleBlock
 coupling to neighbouring processors (row - col) More...
 
SparseMatrix_ptr< T > row_coupleBlock
 coupling to neighbouring processors (col - row) More...
 
SparseMatrix_ptr< T > remote_coupleBlock
 coupling of rows-cols on neighbouring processors (may not be valid) More...
 
bool is_balanced
 
double * balance_vector
 
index_t * global_id
 stores the global ids for all cols in col_coupleBlock More...
 
index_t solver_package
 package code controlling the solver pointer More...
 
void * solver_p
 pointer to data needed by a solver More...
 

Private Member Functions

virtual void setToSolution (escript::Data &out, escript::Data &in, boost::python::object &options) const
 
virtual void ypAx (escript::Data &y, escript::Data &x) const
 
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()

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

◆ getGlobalNumRows()

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

◆ 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()

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

◆ getSystemMatrixTypeId()

template<class T >
int paso::SystemMatrix< T >::getSystemMatrixTypeId ( int  solver,
int  preconditioner,
int  package,
bool  is_complex,
bool  symmetry,
const escript::JMPI mpi_info 
)
static

◆ 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]

SystemMatrix_ptr< double > paso::SystemMatrix< double >::loadMM_toCSC ( const char *  filename)

◆ loadMM_toCSR() [1/2]

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

◆ loadMM_toCSR() [2/2]

SystemMatrix_ptr< double > paso::SystemMatrix< double >::loadMM_toCSR ( const char *  filename)

◆ 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]

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

◆ 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.

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 ( void  ) const

◆ resetValues()

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

References paso::solve_free().

◆ rowSum()

template<class T >
void paso::SystemMatrix< T >::rowSum ( double *  row_sum) const
inline

◆ saveHB()

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

◆ saveMM()

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

◆ setPreconditioner() [1/2]

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

◆ setPreconditioner() [2/2]

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

◆ setToSolution()

template<class T >
void paso::SystemMatrix< T >::setToSolution ( escript::Data out,
escript::Data in,
boost::python::object &  options 
) const
privatevirtual

◆ setValues()

template<class T >
void paso::SystemMatrix< T >::setValues ( double  value)
inline

◆ solve() [1/5]

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

◆ solve() [2/5]

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

◆ solve() [3/5]

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

◆ 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()

template<class T >
void paso::SystemMatrix< T >::ypAx ( escript::Data y,
escript::Data x 
) const
privatevirtual

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

template<class T >
dim_t paso::SystemMatrix< T >::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

template<class T >
Coupler_ptr<real_t> paso::SystemMatrix< T >::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

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

◆ mpi_info

template<class T >
escript::JMPI paso::SystemMatrix< T >::mpi_info

◆ pattern

template<class T >
SystemMatrixPattern_ptr paso::SystemMatrix< T >::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

template<class T >
dim_t paso::SystemMatrix< T >::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

template<class T >
Coupler_ptr<real_t> paso::SystemMatrix< T >::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

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

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