#include <SystemMatrixAdapter.h>
Public Member Functions | |
SystemMatrixAdapter () | |
Wrapper for Paso_SystemMatrix. | |
SystemMatrixAdapter (Paso_SystemMatrix *system_matrix, const int row_blocksize, const escript::FunctionSpace &row_functionspace, const int column_blocksize, const escript::FunctionSpace &colum_functionspace) | |
~SystemMatrixAdapter () | |
Destructor for SystemMatrixAdapter. As specified in the constructor this deallocates the pointer given to the constructor. | |
Paso_SystemMatrix * | getPaso_SystemMatrix () const |
Returns the pointer to the system matrix. | |
const escript::AbstractSystemMatrix & | asAbstractSystemMatrix () const |
Returns the system matrix as a const AbstractSystemMatrix&. | |
void | nullifyRowsAndCols (escript::Data &row_q, escript::Data &col_q, const double mdv) const |
nullifyRowsAndCols - calls Paso_SystemMatrix_nullifyRowsAndCols. | |
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 () const |
sets the matrix entries to zero | |
void | Print_Matrix_Info (const bool) const |
prints information about a system matrix | |
Static Public Member Functions | |
static const SystemMatrixAdapter & | asSystemMatrixAdapter (const AbstractSystemMatrix &systemmatrix) |
Returns a system matrix as a const SystemMatrixAdapter&. | |
static int | mapOptionToPaso (const int option) |
maps escript options onto Paso options: | |
static void | escriptToPasoOptions (Paso_Options *paso_options, const boost::python::object &options) |
extract paso options from SolutionOptions class | |
static void | pasoToEscriptOptions (const Paso_Options *paso_options, boost::python::object &options) |
copied diagonistic data back to the solver option. | |
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 | |
Private Attributes | |
boost::shared_ptr < Paso_SystemMatrix > | m_system_matrix |
finley::SystemMatrixAdapter::SystemMatrixAdapter | ( | ) |
Wrapper for Paso_SystemMatrix.
Description: Wrapper for Paso_SystemMatrix. /brief Default Constructor for SystemMatrixAdapter. NB: Only throws an exception.
finley::SystemMatrixAdapter::SystemMatrixAdapter | ( | Paso_SystemMatrix * | system_matrix, | |
const int | row_blocksize, | |||
const escript::FunctionSpace & | row_functionspace, | |||
const int | column_blocksize, | |||
const escript::FunctionSpace & | colum_functionspace | |||
) |
/brief Constructor for SystemMatrixAdapter.
References m_system_matrix.
finley::SystemMatrixAdapter::~SystemMatrixAdapter | ( | ) |
Destructor for SystemMatrixAdapter. As specified in the constructor this deallocates the pointer given to the constructor.
References m_system_matrix, and Paso_SystemMatrix_free().
Paso_SystemMatrix * finley::SystemMatrixAdapter::getPaso_SystemMatrix | ( | ) | const |
Returns the pointer to the system matrix.
References m_system_matrix.
Referenced by finley::MeshAdapter::addPDEToSystem(), nullifyRowsAndCols(), resetValues(), saveHB(), saveMM(), setToSolution(), and ypAx().
const escript::AbstractSystemMatrix& finley::SystemMatrixAdapter::asAbstractSystemMatrix | ( | ) | const [inline] |
Returns the system matrix as a const AbstractSystemMatrix&.
static const SystemMatrixAdapter& finley::SystemMatrixAdapter::asSystemMatrixAdapter | ( | const AbstractSystemMatrix & | systemmatrix | ) | [inline, static] |
Returns a system matrix as a const SystemMatrixAdapter&.
void finley::SystemMatrixAdapter::nullifyRowsAndCols | ( | escript::Data & | row_q, | |
escript::Data & | col_q, | |||
const double | mdv | |||
) | const |
nullifyRowsAndCols - calls Paso_SystemMatrix_nullifyRowsAndCols.
References finley::checkPasoError(), escript::Data::expand(), escript::AbstractSystemMatrix::getColumnBlockSize(), escript::AbstractSystemMatrix::getColumnFunctionSpace(), escript::Data::getDataPointSize(), escript::Data::getFunctionSpace(), getPaso_SystemMatrix(), escript::AbstractSystemMatrix::getRowBlockSize(), escript::AbstractSystemMatrix::getRowFunctionSpace(), escript::Data::getSampleDataRW(), Paso_SystemMatrix_nullifyRowsAndCols(), and escript::Data::requireWrite().
Referenced by BOOST_PYTHON_MODULE().
void finley::SystemMatrixAdapter::saveMM | ( | const std::string & | fileName | ) | const [virtual] |
writes the matrix to a file using the Matrix Market file format
Reimplemented from escript::AbstractSystemMatrix.
References finley::checkPasoError(), getPaso_SystemMatrix(), Paso_SystemMatrix_saveMM(), TMPMEMALLOC, and TMPMEMFREE.
Referenced by BOOST_PYTHON_MODULE().
void finley::SystemMatrixAdapter::saveHB | ( | const std::string & | fileName | ) | const [virtual] |
writes the matrix to a file using the Harwell-Boeing file format
Reimplemented from escript::AbstractSystemMatrix.
References finley::checkPasoError(), getPaso_SystemMatrix(), Paso_SystemMatrix_saveHB(), TMPMEMALLOC, and TMPMEMFREE.
Referenced by BOOST_PYTHON_MODULE().
void finley::SystemMatrixAdapter::resetValues | ( | ) | const [virtual] |
sets the matrix entries to zero
Reimplemented from escript::AbstractSystemMatrix.
References finley::checkPasoError(), getPaso_SystemMatrix(), Paso_solve_free(), and Paso_SystemMatrix_setValues().
Referenced by BOOST_PYTHON_MODULE().
int finley::SystemMatrixAdapter::mapOptionToPaso | ( | const int | option | ) | [static] |
maps escript options onto Paso options:
References ESCRIPT_AGGREGATION_COARSENING, ESCRIPT_AMG, ESCRIPT_BICGSTAB, ESCRIPT_CGS, ESCRIPT_CHOLEVSKY, ESCRIPT_CR, ESCRIPT_DEFAULT, ESCRIPT_DEFAULT_REORDERING, ESCRIPT_DIRECT, ESCRIPT_GAUSS_SEIDEL, ESCRIPT_GMRES, ESCRIPT_ILU0, ESCRIPT_ILUT, ESCRIPT_ITERATIVE, ESCRIPT_JACOBI, ESCRIPT_LUMPING, ESCRIPT_MIN_COARSE_MATRIX_SIZE, ESCRIPT_MINIMUM_FILL_IN, ESCRIPT_MINRES, ESCRIPT_MKL, ESCRIPT_NESTED_DISSECTION, ESCRIPT_NO_PRECONDITIONER, ESCRIPT_NO_REORDERING, ESCRIPT_NONLINEAR_GMRES, ESCRIPT_PASO, ESCRIPT_PASTIX, ESCRIPT_PCG, ESCRIPT_PRES20, ESCRIPT_REC_ILU, ESCRIPT_RILU, ESCRIPT_RUGE_STUEBEN_COARSENING, ESCRIPT_SSOR, ESCRIPT_SUPER_LU, ESCRIPT_TFQMR, ESCRIPT_TRILINOS, ESCRIPT_UMFPACK, ESCRIPT_YAIR_SHAPIRA_COARSENING, PASO_AGGREGATION_COARSENING, PASO_AMG, PASO_BICGSTAB, PASO_CGS, PASO_CHOLEVSKY, PASO_CR, PASO_DEFAULT, PASO_DEFAULT_REORDERING, PASO_DIRECT, PASO_GAUSS_SEIDEL, PASO_GMRES, PASO_ILU0, PASO_ILUT, PASO_ITERATIVE, PASO_JACOBI, PASO_LUMPING, PASO_MIN_COARSE_MATRIX_SIZE, PASO_MINIMUM_FILL_IN, PASO_MINRES, PASO_MKL, PASO_NESTED_DISSECTION, PASO_NO_PRECONDITIONER, PASO_NO_REORDERING, PASO_NONLINEAR_GMRES, PASO_PASO, PASO_PASTIX, PASO_PCG, PASO_PRES20, PASO_REC_ILU, PASO_RILU, PASO_RUGE_STUEBEN_COARSENING, PASO_SSOR, PASO_SUPER_LU, PASO_TFQMR, PASO_TRILINOS, PASO_UMFPACK, and PASO_YAIR_SHAPIRA_COARSENING.
Referenced by finley::MeshAdapter::getSystemMatrixTypeId(), and finley::MeshAdapter::getTransportTypeId().
void finley::SystemMatrixAdapter::escriptToPasoOptions | ( | Paso_Options * | paso_options, | |
const boost::python::object & | options | |||
) | [static] |
extract paso options from SolutionOptions class
References EXTRACT, EXTRACT_OPTION, Paso_Options_setDefaults(), and escript::DataMaths::symmetric().
Referenced by finley::TransportProblemAdapter::setToSolution(), and setToSolution().
void finley::SystemMatrixAdapter::pasoToEscriptOptions | ( | const Paso_Options * | paso_options, | |
boost::python::object & | options | |||
) | [static] |
copied diagonistic data back to the solver option.
References SET.
Referenced by finley::TransportProblemAdapter::setToSolution(), and setToSolution().
void finley::SystemMatrixAdapter::Print_Matrix_Info | ( | const bool | full = false |
) | const |
prints information about a system matrix
References Paso_SystemMatrix::block_size, Paso_SystemMatrix::col_block_size, Paso_SystemMatrix::col_coupleBlock, Paso_SystemMatrix::col_distribution, Paso_Distribution::first_component, Paso_SystemMatrix::logical_col_block_size, Paso_SystemMatrix::logical_row_block_size, m_system_matrix, Paso_SystemMatrix::mainBlock, MATRIX_FORMAT_BLK1, MATRIX_FORMAT_CSC, MATRIX_FORMAT_DEFAULT, MATRIX_FORMAT_OFFSET1, MATRIX_FORMAT_SYM, MATRIX_FORMAT_TRILINOS_CRS, Paso_SystemMatrix::mpi_info, Paso_SparseMatrix::numCols, Paso_Pattern::numOutput, Paso_SparseMatrix::numRows, Paso_SparseMatrix::pattern, Paso_MPIInfo::rank, Paso_SystemMatrix::row_block_size, Paso_SystemMatrix::row_coupleBlock, Paso_SystemMatrix::row_distribution, Paso_MPIInfo::size, and Paso_SystemMatrix::type.
Referenced by BOOST_PYTHON_MODULE().
void finley::SystemMatrixAdapter::setToSolution | ( | escript::Data & | out, | |
escript::Data & | in, | |||
boost::python::object & | options | |||
) | const [private, virtual] |
solves the linear system this*out=in
Reimplemented from escript::AbstractSystemMatrix.
References finley::checkPasoError(), escriptToPasoOptions(), escript::Data::expand(), escript::AbstractSystemMatrix::getColumnBlockSize(), escript::AbstractSystemMatrix::getColumnFunctionSpace(), escript::Data::getDataPointSize(), escript::Data::getFunctionSpace(), getPaso_SystemMatrix(), escript::AbstractSystemMatrix::getRowBlockSize(), escript::AbstractSystemMatrix::getRowFunctionSpace(), escript::Data::getSampleDataRW(), Paso_solve(), and pasoToEscriptOptions().
void finley::SystemMatrixAdapter::ypAx | ( | escript::Data & | y, | |
escript::Data & | x | |||
) | const [private, virtual] |
performs y+=this*x
Reimplemented from escript::AbstractSystemMatrix.
References finley::checkPasoError(), escript::Data::expand(), escript::AbstractSystemMatrix::getColumnBlockSize(), escript::AbstractSystemMatrix::getColumnFunctionSpace(), escript::Data::getDataPointSize(), escript::Data::getFunctionSpace(), getPaso_SystemMatrix(), escript::AbstractSystemMatrix::getRowBlockSize(), escript::AbstractSystemMatrix::getRowFunctionSpace(), escript::Data::getSampleDataRW(), Paso_SystemMatrix_MatrixVector(), and escript::Data::requireWrite().
boost::shared_ptr<Paso_SystemMatrix> finley::SystemMatrixAdapter::m_system_matrix [private] |
Referenced by getPaso_SystemMatrix(), Print_Matrix_Info(), SystemMatrixAdapter(), and ~SystemMatrixAdapter().