|
escript Revision_
|
this class holds a (distributed) stiffness matrix More...
#include <SystemMatrix.h>
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_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 |
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_t > | col_coupler |
| Coupler_ptr< real_t > | row_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_t * | global_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 |
this class holds a (distributed) stiffness matrix
| paso::SystemMatrix< T >::SystemMatrix | ( | ) |
default constructor - throws exception.
| 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 | ||
| ) |
Allocates a SystemMatrix of given type using the given matrix pattern. Values are initialized with zero. If patternIsUnrolled and type & MATRIX_FORMAT_BLK1, it is assumed that the pattern is already unrolled to match the requested block size and offsets. Otherwise unrolling and offset adjustment will be performed.
References paso::SystemMatrix< T >::balance_vector, paso::SystemMatrix< T >::block_size, paso::SystemMatrix< T >::col_block_size, paso::SystemMatrix< T >::col_coupleBlock, paso::SystemMatrix< T >::col_coupler, paso::SystemMatrix< T >::col_distribution, paso::SystemMatrix< T >::mainBlock, MATRIX_FORMAT_BLK1, MATRIX_FORMAT_CSC, MATRIX_FORMAT_DEFAULT, MATRIX_FORMAT_DIAGONAL_BLOCK, MATRIX_FORMAT_OFFSET1, paso::SystemMatrix< T >::mpi_info, paso::SystemMatrix< T >::pattern, paso::SystemMatrix< T >::row_block_size, paso::SystemMatrix< T >::row_coupleBlock, paso::SystemMatrix< T >::row_coupler, paso::SystemMatrix< T >::row_distribution, and paso::SystemMatrix< T >::type.
| paso::SystemMatrix< T >::~SystemMatrix | ( | ) |
References paso::solve_free().
| void paso::SystemMatrix< T >::add | ( | dim_t | , |
| index_t * | , | ||
| dim_t | , | ||
| dim_t | , | ||
| index_t * | , | ||
| dim_t | , | ||
| double * | |||
| ) |
| void paso::SystemMatrix< double >::applyBalance | ( | double * | x_out, |
| const double * | x, | ||
| bool | RHS | ||
| ) | const |
| void paso::SystemMatrix< T >::applyBalance | ( | double * | x_out, |
| const double * | x, | ||
| bool | RHS | ||
| ) | const |
| void paso::SystemMatrix< T >::applyBalanceInPlace | ( | double * | x, |
| bool | RHS | ||
| ) | const |
| void paso::SystemMatrix< double >::applyBalanceInPlace | ( | double * | x, |
| const bool | RHS | ||
| ) | const |
| void paso::SystemMatrix< double >::balance | ( | ) |
References MATRIX_FORMAT_CSC, and MATRIX_FORMAT_OFFSET1.
| void paso::SystemMatrix< T >::balance | ( | ) |
| index_t * paso::SystemMatrix< double >::borrowMainDiagonalPointer | ( | ) | const |
| index_t * paso::SystemMatrix< T >::borrowMainDiagonalPointer | ( | ) | const |
|
inline |
References paso::SystemMatrix< T >::mainBlock.
|
inline |
References paso::SystemMatrix< T >::mainBlock.
| void paso::SystemMatrix< double >::copyColCoupleBlock | ( | ) |
References MPI_DOUBLE.
| 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.
|
inline |
References paso::SystemMatrix< T >::mainBlock.
| void paso::SystemMatrix< T >::copyMain_CSC_OFFSET1 | ( | index_t ** | p_ptr, |
| index_t ** | p_idx, | ||
| double ** | p_val | ||
| ) |
| void paso::SystemMatrix< T >::copyRemoteCoupleBlock | ( | bool | recreatePattern | ) |
| void paso::SystemMatrix< double >::copyRemoteCoupleBlock | ( | bool | recreatePattern | ) |
References MPI_DOUBLE, and MPI_INT.
|
inline |
References paso::SystemMatrix< T >::mainBlock.
| void paso::SystemMatrix< T >::extendedRowsForST | ( | dim_t * | degree_ST, |
| index_t * | offset_ST, | ||
| index_t * | ST | ||
| ) |
| void paso::SystemMatrix< double >::extendedRowsForST | ( | dim_t * | degree_ST, |
| index_t * | offset_ST, | ||
| index_t * | ST | ||
| ) |
References paso::util::comparIndex(), and MPI_INT.
| void paso::SystemMatrix< T >::fillWithGlobalCoordinates | ( | double | f1 | ) |
| void paso::SystemMatrix< double >::fillWithGlobalCoordinates | ( | double | f1 | ) |
|
inline |
References paso::SystemMatrix< T >::col_coupler.
Referenced by paso::SystemMatrix< T >::finishCollect().
|
inline |
References paso::SystemMatrix< T >::finishColCollect().
|
inline |
References paso::SystemMatrix< T >::row_coupler.
| void paso::SystemMatrix< double >::freePreconditioner | ( | ) |
References paso::Preconditioner_free().
| void paso::SystemMatrix< T >::freePreconditioner | ( | ) |
Referenced by paso::Solver_free().
|
inline |
References paso::SystemMatrix< T >::col_coupler.
|
inline |
References MATRIX_FORMAT_CSC, paso::SystemMatrix< T >::pattern, and paso::SystemMatrix< T >::type.
Referenced by paso::SystemMatrix< T >::getGlobalTotalNumCols().
|
inline |
References MATRIX_FORMAT_CSC, paso::SystemMatrix< T >::pattern, and paso::SystemMatrix< T >::type.
Referenced by paso::SystemMatrix< T >::getGlobalTotalNumRows().
| double paso::SystemMatrix< double >::getGlobalSize | ( | ) | const |
References MPI_DOUBLE, and MPI_SUM.
| double paso::SystemMatrix< T >::getGlobalSize | ( | ) | const |
Referenced by paso::SystemMatrix< T >::getSparsity().
|
inline |
References paso::SystemMatrix< T >::col_block_size, and paso::SystemMatrix< T >::getGlobalNumCols().
Referenced by paso::SystemMatrix< T >::getSparsity().
|
inline |
References paso::SystemMatrix< T >::getGlobalNumRows(), and paso::SystemMatrix< T >::row_block_size.
Referenced by paso::SystemMatrix< T >::getSparsity().
|
inline |
References paso::SystemMatrix< T >::mainBlock.
Referenced by paso::SystemMatrix< T >::getTotalNumCols().
|
inline |
References paso::SystemMatrix< T >::pattern.
|
inline |
References paso::SystemMatrix< T >::mainBlock.
Referenced by paso::SystemMatrix< T >::getTotalNumRows().
|
inline |
References paso::SystemMatrix< T >::row_coupler.
|
inline |
|
static |
References paso::Options::getPackage(), paso::Options::mapEscriptOption(), MATRIX_FORMAT_BLK1, MATRIX_FORMAT_COMPLEX, MATRIX_FORMAT_CSC, MATRIX_FORMAT_DEFAULT, MATRIX_FORMAT_OFFSET1, PASO_MKL, PASO_MUMPS, PASO_PASO, and PASO_UMFPACK.
Referenced by dudley::DudleyDomain::getSystemMatrixTypeId(), finley::FinleyDomain::getSystemMatrixTypeId(), and ripley::RipleyDomain::getSystemMatrixTypeId().
|
inline |
|
inline |
|
static |
| SystemMatrix_ptr< double > paso::SystemMatrix< double >::loadMM_toCSC | ( | const char * | filename | ) |
|
static |
| SystemMatrix_ptr< double > paso::SystemMatrix< double >::loadMM_toCSR | ( | const char * | filename | ) |
| void paso::SystemMatrix< double >::makeZeroRowSums | ( | double * | left_over | ) |
| void paso::SystemMatrix< T >::makeZeroRowSums | ( | double * | left_over | ) |
| void paso::SystemMatrix< cplx_t >::MatrixVector | ( | double | alpha, |
| const cplx_t * | in, | ||
| double | beta, | ||
| cplx_t * | out | ||
| ) | const |
| void paso::SystemMatrix< cplx_t >::MatrixVector | ( | double | alpha, |
| const cplx_t * | in, | ||
| double | beta, | ||
| cplx_t * | out | ||
| ) | const |
References MATRIX_FORMAT_BLK1, and MATRIX_FORMAT_OFFSET1.
| void paso::SystemMatrix< double >::MatrixVector | ( | double | alpha, |
| const double * | in, | ||
| double | beta, | ||
| double * | out | ||
| ) | const |
| void paso::SystemMatrix< double >::MatrixVector | ( | double | alpha, |
| const double * | in, | ||
| double | beta, | ||
| double * | out | ||
| ) | const |
| void paso::SystemMatrix< T >::MatrixVector | ( | double | alpha, |
| const T * | in, | ||
| double | beta, | ||
| T * | out | ||
| ) | const |
| void paso::SystemMatrix< T >::MatrixVector_CSR_OFFSET0 | ( | double | alpha, |
| const double * | in, | ||
| double | beta, | ||
| double * | out | ||
| ) | const |
| void paso::SystemMatrix< double >::MatrixVector_CSR_OFFSET0 | ( | double | alpha, |
| const double * | in, | ||
| double | beta, | ||
| double * | out | ||
| ) | const |
| void paso::SystemMatrix< T >::mergeMainAndCouple | ( | index_t ** | p_ptr, |
| index_t ** | p_idx, | ||
| double ** | p_val | ||
| ) | const |
| void paso::SystemMatrix< double >::mergeMainAndCouple | ( | index_t ** | p_ptr, |
| index_t ** | p_idx, | ||
| double ** | p_val | ||
| ) | const |
References MATRIX_FORMAT_BLK1, MATRIX_FORMAT_CSC, MATRIX_FORMAT_DEFAULT, and MATRIX_FORMAT_OFFSET1.
| void paso::SystemMatrix< T >::mergeMainAndCouple_CSC_OFFSET1 | ( | index_t ** | p_ptr, |
| index_t ** | p_idx, | ||
| double ** | p_val | ||
| ) | const |
| void paso::SystemMatrix< double >::mergeMainAndCouple_CSC_OFFSET1 | ( | index_t ** | p_ptr, |
| index_t ** | p_idx, | ||
| double ** | p_val | ||
| ) | const |
| void paso::SystemMatrix< T >::mergeMainAndCouple_CSR_OFFSET0 | ( | index_t ** | p_ptr, |
| index_t ** | p_idx, | ||
| double ** | p_val | ||
| ) | const |
| void paso::SystemMatrix< double >::mergeMainAndCouple_CSR_OFFSET0 | ( | index_t ** | p_ptr, |
| index_t ** | p_idx, | ||
| double ** | p_val | ||
| ) | const |
| void paso::SystemMatrix< T >::mergeMainAndCouple_CSR_OFFSET0_Block | ( | index_t ** | p_ptr, |
| index_t ** | p_idx, | ||
| double ** | p_val | ||
| ) | const |
| void paso::SystemMatrix< double >::mergeMainAndCouple_CSR_OFFSET0_Block | ( | index_t ** | p_ptr, |
| index_t ** | p_idx, | ||
| double ** | p_val | ||
| ) | const |
| SparseMatrix_ptr< double > paso::SystemMatrix< double >::mergeSystemMatrix | ( | ) | const |
References MPI_DOUBLE, and MPI_INT.
| SparseMatrix_ptr< cplx_t > paso::SystemMatrix< cplx_t >::mergeSystemMatrix | ( | ) | const |
| 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().
| SparseMatrix_ptr< double > paso::SystemMatrix< double >::mergeSystemMatrix | ( | ) | const |
| SparseMatrix_ptr< cplx_t > paso::SystemMatrix< cplx_t >::mergeSystemMatrix | ( | ) | const |
| void paso::SystemMatrix< double >::nullifyRows | ( | double * | mask_row, |
| double | main_diagonal_value | ||
| ) |
References MATRIX_FORMAT_CSC.
| 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.
|
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().
| void paso::SystemMatrix< T >::print | ( | ) | const |
| void paso::SystemMatrix< double >::print | ( | ) | const |
|
virtual |
resets the matrix entries
Reimplemented from escript::AbstractSystemMatrix.
References paso::solve_free().
|
inline |
|
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.
|
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.
| void paso::SystemMatrix< double >::setPreconditioner | ( | Options * | options | ) |
References paso::Preconditioner_alloc().
| void paso::SystemMatrix< T >::setPreconditioner | ( | Options * | options | ) |
|
privatevirtual |
solves the linear system this*out=in
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(), escript::Data::requireWrite(), and paso::Options::updateEscriptDiagnostics().
|
inline |
|
private |
References paso::Options::accept_failed_convergence, paso::Breakdown, paso::Options::converged, paso::Divergence, escript::gettime(), paso::InputError, paso::MaxIterReached, paso::MUMPS_solve(), paso::NegativeNormError, paso::NoError, paso::Options::num_iter, PASO_MUMPS, PERFORMANCE_ALL, paso::Performance_close(), paso::Performance_open(), paso::Performance_startMonitor(), paso::Performance_stopMonitor(), paso::Options::refinements, paso::Options::residual_norm, paso::Options::set_up_time, paso::Options::time, and paso::Options::verbose.
|
private |
|
private |
References paso::Options::accept_failed_convergence, paso::Breakdown, paso::Options::converged, paso::Divergence, escript::gettime(), paso::InputError, paso::MaxIterReached, paso::MKL_solve(), paso::MUMPS_solve(), paso::NegativeNormError, paso::NoError, paso::Options::num_iter, PASO_MKL, PASO_MUMPS, PASO_PASO, PASO_UMFPACK, PERFORMANCE_ALL, paso::Performance_close(), paso::Performance_open(), paso::Performance_startMonitor(), paso::Performance_stopMonitor(), paso::Options::refinements, paso::Options::reordering, paso::Options::residual_norm, paso::Options::set_up_time, paso::Solver(), paso::Options::time, paso::UMFPACK_solve(), and paso::Options::verbose.
|
private |
|
private |
| void paso::SystemMatrix< double >::solvePreconditioner | ( | double * | x, |
| double * | b | ||
| ) |
References paso::Preconditioner_solve().
| 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
|
inline |
References paso::SystemMatrix< T >::col_coupler.
Referenced by paso::SystemMatrix< T >::startCollect().
|
inline |
References paso::SystemMatrix< T >::startColCollect().
|
inline |
References paso::SystemMatrix< T >::row_coupler.
|
privatevirtual |
performs y+=this*x
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(), and escript::Data::requireWrite().
| 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().
| dim_t paso::SystemMatrix< T >::block_size |
Referenced by paso::SystemMatrix< T >::SystemMatrix().
| dim_t paso::SystemMatrix< T >::col_block_size |
| 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().
| Coupler_ptr<real_t> paso::SystemMatrix< T >::col_coupler |
| escript::Distribution_ptr paso::SystemMatrix< T >::col_distribution |
|
mutable |
stores the global ids for all cols in col_coupleBlock
| bool paso::SystemMatrix< T >::is_balanced |
Referenced by paso::SystemMatrix< T >::setValues().
| dim_t paso::SystemMatrix< T >::logical_col_block_size |
| dim_t paso::SystemMatrix< T >::logical_row_block_size |
| SparseMatrix_ptr<T> paso::SystemMatrix< T >::mainBlock |
main block
Referenced by paso::SystemMatrix< T >::copyBlockFromMainDiagonal(), paso::SystemMatrix< T >::copyBlockToMainDiagonal(), paso::SystemMatrix< T >::copyFromMainDiagonal(), paso::SystemMatrix< T >::copyToMainDiagonal(), paso::SystemMatrix< T >::getNumCols(), paso::SystemMatrix< T >::getNumRows(), paso::SystemMatrix< T >::rowSum(), paso::SystemMatrix< T >::saveHB(), paso::SystemMatrix< T >::saveMM(), paso::SystemMatrix< T >::setValues(), paso::solve_free(), and paso::SystemMatrix< T >::SystemMatrix().
| escript::JMPI paso::SystemMatrix< T >::mpi_info |
| SystemMatrixPattern_ptr paso::SystemMatrix< T >::pattern |
| SparseMatrix_ptr<T> paso::SystemMatrix< T >::remote_coupleBlock |
coupling of rows-cols on neighbouring processors (may not be valid)
| dim_t paso::SystemMatrix< T >::row_block_size |
| 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().
| Coupler_ptr<real_t> paso::SystemMatrix< T >::row_coupler |
| escript::Distribution_ptr paso::SystemMatrix< T >::row_distribution |
| void* paso::SystemMatrix< T >::solver_p |
pointer to data needed by a solver
Referenced by paso::solve_free().
|
mutable |
package code controlling the solver pointer
Referenced by paso::solve_free().
| SystemMatrixType paso::SystemMatrix< T >::type |
Referenced by dudley::Assemble_addToSystemMatrix< cplx_t >(), finley::Assemble_addToSystemMatrix< cplx_t >(), dudley::Assemble_addToSystemMatrix< real_t >(), finley::Assemble_addToSystemMatrix< real_t >(), paso::SystemMatrix< T >::getGlobalNumCols(), paso::SystemMatrix< T >::getGlobalNumRows(), paso::SystemMatrix< T >::rowSum(), paso::SystemMatrix< T >::saveHB(), and paso::SystemMatrix< T >::SystemMatrix().