Public Member Functions | Protected Attributes | Private Attributes | List of all members
oomph::CRComplexMatrix Class Reference

A class for compressed row matrices. More...

#include <complex_matrices.h>

+ Inheritance diagram for oomph::CRComplexMatrix:

Public Member Functions

 CRComplexMatrix ()
 Default constructor. More...
 
 CRComplexMatrix (const Vector< std::complex< double > > &value, const Vector< int > &column_index, const Vector< int > &row_start, const unsigned long &n, const unsigned long &m)
 Constructor: Pass vector of values, vector of column indices, vector of row starts and number of columns (can be suppressed for square matrices) More...
 
 CRComplexMatrix (const CRComplexMatrix &matrix)
 Broken copy constructor. More...
 
void operator= (const CRComplexMatrix &)
 Broken assignment operator. More...
 
virtual ~CRComplexMatrix ()
 Destructor: Kill the LU decomposition if it has been computed. More...
 
void enable_doc_stats ()
 Set flag to indicate that stats are to be displayed during solution of linear system with SuperLU. More...
 
void disable_doc_stats ()
 the solve More...
 
unsigned long nrow () const
 Return the number of rows of the matrix. More...
 
unsigned long ncol () const
 Return the number of columns of the matrix. More...
 
std::complex< double > operator() (const unsigned long &i, const unsigned long &j) const
 Overload the round-bracket access operator for read-only access. More...
 
int ludecompose ()
 LU decomposition using SuperLU. More...
 
void lubksub (Vector< std::complex< double > > &rhs)
 LU back solve for given RHS. More...
 
void clean_up_memory ()
 LU clean up (perhaps this should happen in the destructor) More...
 
void residual (const Vector< std::complex< double > > &x, const Vector< std::complex< double > > &b, Vector< std::complex< double > > &residual)
 Find the residual to x of Ax=b, i.e. r=b-Ax. More...
 
void multiply (const Vector< std::complex< double > > &x, Vector< std::complex< double > > &soln)
 Multiply the matrix by the vector x: soln=Ax. More...
 
void multiply_transpose (const Vector< std::complex< double > > &x, Vector< std::complex< double > > &soln)
 Multiply the transposed matrix by the vector x: soln=A^T x. More...
 
- Public Member Functions inherited from oomph::CRMatrix< std::complex< double > >
 CRMatrix ()
 Default constructor. More...
 
 CRMatrix (const Vector< std::complex< double > > &value, const Vector< int > &column_index_, const Vector< int > &row_start_, const unsigned long &n, const unsigned long &m)
 Constructor: Pass vector of values, vector of column indices, vector of row starts and number of rows and columns Number of nonzero entries is read off from value, so make sure the vector has been shrunk to its correct length. More...
 
 CRMatrix (const CRMatrix &source_matrix)
 Copy constructor. More...
 
void operator= (const CRMatrix &)
 Broken assignment operator. More...
 
virtual ~CRMatrix ()
 Destructor, delete any allocated memory. More...
 
std::complex< double > get_entry (const unsigned long &i, const unsigned long &j) const
 Access function that will be called by the read-only round-bracket operator (const) More...
 
std::complex< double > & entry (const unsigned long &i, const unsigned long &j)
 The read-write access function is deliberately broken. More...
 
int * row_start ()
 Access to C-style row_start array. More...
 
const int * row_start () const
 Access to C-style row_start array (const version) More...
 
int * column_index ()
 Access to C-style column index array. More...
 
const int * column_index () const
 Access to C-style column index array (const version) More...
 
void output_bottom_right_zero_helper (std::ostream &outfile) const
 Output the "bottom right" entry regardless of it being zero or not (this allows automatic detection of matrix size in e.g. matlab, python). More...
 
void sparse_indexed_output_helper (std::ostream &outfile) const
 Indexed output function to print a matrix to the stream outfile as i,j,a(i,j) for a(i,j)!=0 only. More...
 
void clean_up_memory ()
 Wipe matrix data and set all values to 0. More...
 
void build (const Vector< std::complex< double > > &value, const Vector< int > &column_index, const Vector< int > &row_start, const unsigned long &n, const unsigned long &m)
 Build matrix from compressed representation. Number of nonzero entries is read off from value, so make sure the vector has been shrunk to its correct length. This matrix forms the storage for CRDoubleMatrices which are distributable. The argument n should be the number of local rows. The argument m is the number of columns. More...
 
void build_without_copy (std::complex< double > *value, int *column_index, int *row_start, const unsigned long &nnz, const unsigned long &n, const unsigned long &m)
 Function to build matrix from pointers to arrays which hold the row starts, column indices and non-zero values. The final two arguments are the number of rows and columns. Note that, as the name suggests, this function does not make a copy of the data pointed to by the first three arguments! More...
 
- Public Member Functions inherited from oomph::SparseMatrix< std::complex< double >, CRMatrix< std::complex< double > > >
 SparseMatrix ()
 Default constructor. More...
 
 SparseMatrix (const SparseMatrix &source_matrix)
 Copy constructor. More...
 
void operator= (const SparseMatrix &)
 Broken assignment operator. More...
 
virtual ~SparseMatrix ()
 Destructor, delete the memory associated with the values. More...
 
std::complex< double > * value ()
 Access to C-style value array. More...
 
const std::complex< double > * value () const
 Access to C-style value array (const version) More...
 
unsigned long nrow () const
 Return the number of rows of the matrix. More...
 
unsigned long ncol () const
 Return the number of columns of the matrix. More...
 
unsigned long nnz () const
 Return the number of nonzero entries. More...
 
- Public Member Functions inherited from oomph::Matrix< std::complex< double >, CRMatrix< std::complex< double > > >
 Matrix ()
 (Empty) constructor More...
 
 Matrix (const Matrix &matrix)
 Broken copy constructor. More...
 
void operator= (const Matrix &)
 Broken assignment operator. More...
 
virtual ~Matrix ()
 Virtual (empty) destructor. More...
 
std::complex< double > operator() (const unsigned long &i, const unsigned long &j) const
 Round brackets to give access as a(i,j) for read only (we're not providing a general interface for component-wise write access since not all matrix formats allow efficient direct access!) The function uses the MATRIX_TYPE template parameter to call the get_entry() function which must be defined in all derived classes that are to be fully instantiated. More...
 
std::complex< double > & operator() (const unsigned long &i, const unsigned long &j)
 Round brackets to give access as a(i,j) for read-write access. The function uses the MATRIX_TYPE template parameter to call the entry() function which must be defined in all derived classes that are to be fully instantiated. If the particular Matrix does not allow write access, the function should break with an error message. More...
 
virtual void output (std::ostream &outfile) const
 Output function to print a matrix row-by-row, in the form a(0,0) a(0,1) ... a(1,0) a(1,1) ... ... to the stream outfile. Broken virtual since it might not be sensible to implement this for some sparse matrices. More...
 
void sparse_indexed_output (std::ostream &outfile, const unsigned &precision=0, const bool &output_bottom_right_zero=false) const
 Indexed output function to print a matrix to the stream outfile as i,j,a(i,j) for a(i,j)!=0 only with specified precision (if precision=0 then nothing is changed). If optional boolean flag is set to true we also output the "bottom right" entry regardless of it being zero or not (this allows automatic detection of matrix size in e.g. matlab, python). More...
 
void sparse_indexed_output (std::string filename, const unsigned &precision=0, const bool &output_bottom_right_zero=false) const
 Indexed output function to print a matrix to the file named filename as i,j,a(i,j) for a(i,j)!=0 only with specified precision. If optional boolean flag is set to true we also output the "bottom right" entry regardless of it being zero or not (this allows automatic detection of matrix size in e.g. matlab, python). More...
 
- Public Member Functions inherited from oomph::ComplexMatrixBase
 ComplexMatrixBase ()
 (Empty) constructor. More...
 
 ComplexMatrixBase (const ComplexMatrixBase &matrix)
 Broken copy constructor. More...
 
void operator= (const ComplexMatrixBase &)
 Broken assignment operator. More...
 
virtual ~ComplexMatrixBase ()
 virtual (empty) destructor More...
 
virtual void solve (Vector< std::complex< double > > &rhs)
 Complete LU solve (replaces matrix by its LU decomposition and overwrites RHS with solution). The default should not need to be over-written. More...
 
virtual void solve (const Vector< std::complex< double > > &rhs, Vector< std::complex< double > > &soln)
 Complete LU solve (Nothing gets overwritten!). The default should not need to be overwritten. More...
 
virtual double max_residual (const Vector< std::complex< double > > &x, const Vector< std::complex< double > > &rhs)
 Find the maximum residual r=b-Ax – generic version, can be overloaded for specific derived classes where the max. can be determined "on the fly". More...
 

Protected Attributes

bool Doc_stats_during_solve
 Flag to indicate if stats are to be displayed during solution of linear system with SuperLU. More...
 
- Protected Attributes inherited from oomph::CRMatrix< std::complex< double > >
int * Column_index
 Column index. More...
 
int * Row_start
 Start index for row. More...
 
- Protected Attributes inherited from oomph::SparseMatrix< std::complex< double >, CRMatrix< std::complex< double > > >
std::complex< double > * Value
 Internal representation of the matrix values, a pointer. More...
 
unsigned long N
 Number of rows. More...
 
unsigned long M
 Number of columns. More...
 
unsigned long Nnz
 Number of non-zero values (i.e. size of Value array) More...
 

Private Attributes

void * F_factors
 Storage for the LU factors as required by SuperLU. More...
 
int Info
 Info flag for the SuperLU solver. More...
 

Additional Inherited Members

- Protected Member Functions inherited from oomph::Matrix< std::complex< double >, CRMatrix< std::complex< double > > >
void range_check (const unsigned long &i, const unsigned long &j) const
 Range check to catch when an index is out of bounds, if so, it issues a warning message and dies by throwing an OomphLibError. More...
 
- Static Protected Attributes inherited from oomph::SparseMatrix< std::complex< double >, CRMatrix< std::complex< double > > >
static std::complex< double > Zero
 Dummy zero. More...
 

Detailed Description

A class for compressed row matrices.

Definition at line 343 of file complex_matrices.h.

Constructor & Destructor Documentation

◆ CRComplexMatrix() [1/3]

oomph::CRComplexMatrix::CRComplexMatrix ( )
inline

Default constructor.

Definition at line 357 of file complex_matrices.h.

◆ CRComplexMatrix() [2/3]

oomph::CRComplexMatrix::CRComplexMatrix ( const Vector< std::complex< double > > &  value,
const Vector< int > &  column_index,
const Vector< int > &  row_start,
const unsigned long &  n,
const unsigned long &  m 
)
inline

Constructor: Pass vector of values, vector of column indices, vector of row starts and number of columns (can be suppressed for square matrices)

Definition at line 366 of file complex_matrices.h.

◆ CRComplexMatrix() [3/3]

oomph::CRComplexMatrix::CRComplexMatrix ( const CRComplexMatrix matrix)
inline

Broken copy constructor.

Definition at line 380 of file complex_matrices.h.

References oomph::BrokenCopy::broken_copy().

◆ ~CRComplexMatrix()

virtual oomph::CRComplexMatrix::~CRComplexMatrix ( )
inlinevirtual

Destructor: Kill the LU decomposition if it has been computed.

Definition at line 393 of file complex_matrices.h.

Member Function Documentation

◆ clean_up_memory()

void oomph::CRComplexMatrix::clean_up_memory ( )

LU clean up (perhaps this should happen in the destructor)

Cleanup memory.

Definition at line 1200 of file complex_matrices.cc.

References oomph::LeakCheckNames::doc(), i, oomph::QuadTreeNames::N, and oomph::superlu_complex().

◆ disable_doc_stats()

void oomph::CRComplexMatrix::disable_doc_stats ( )
inline

the solve

Definition at line 401 of file complex_matrices.h.

◆ enable_doc_stats()

void oomph::CRComplexMatrix::enable_doc_stats ( )
inline

Set flag to indicate that stats are to be displayed during solution of linear system with SuperLU.

Definition at line 397 of file complex_matrices.h.

◆ lubksub()

void oomph::CRComplexMatrix::lubksub ( Vector< std::complex< double > > &  rhs)
virtual

LU back solve for given RHS.

Do back-substitution.

RHS vector

Reimplemented from oomph::ComplexMatrixBase.

Definition at line 1130 of file complex_matrices.cc.

References oomph::LeakCheckNames::doc(), i, oomph::QuadTreeNames::N, and oomph::superlu_complex().

◆ ludecompose()

int oomph::CRComplexMatrix::ludecompose ( )
virtual

LU decomposition using SuperLU.

Do LU decomposition and return sign of determinant.

Reimplemented from oomph::ComplexMatrixBase.

Definition at line 1084 of file complex_matrices.cc.

References oomph::LeakCheckNames::doc(), i, oomph::QuadTreeNames::N, and oomph::superlu_complex().

◆ multiply()

void oomph::CRComplexMatrix::multiply ( const Vector< std::complex< double > > &  x,
Vector< std::complex< double > > &  soln 
)
virtual

Multiply the matrix by the vector x: soln=Ax.

Multiply the matrix by the vector x.

Implements oomph::ComplexMatrixBase.

Definition at line 1284 of file complex_matrices.cc.

References i, and oomph::QuadTreeNames::N.

◆ multiply_transpose()

void oomph::CRComplexMatrix::multiply_transpose ( const Vector< std::complex< double > > &  x,
Vector< std::complex< double > > &  soln 
)
virtual

Multiply the transposed matrix by the vector x: soln=A^T x.

Implements oomph::ComplexMatrixBase.

Definition at line 1327 of file complex_matrices.cc.

References i, and oomph::QuadTreeNames::N.

◆ ncol()

unsigned long oomph::CRComplexMatrix::ncol ( ) const
inlinevirtual

Return the number of columns of the matrix.

Implements oomph::ComplexMatrixBase.

Definition at line 408 of file complex_matrices.h.

References oomph::ComplexMatrixBase::ncol().

◆ nrow()

unsigned long oomph::CRComplexMatrix::nrow ( ) const
inlinevirtual

Return the number of rows of the matrix.

Implements oomph::ComplexMatrixBase.

Definition at line 404 of file complex_matrices.h.

References oomph::ComplexMatrixBase::nrow().

◆ operator()()

std::complex<double> oomph::CRComplexMatrix::operator() ( const unsigned long &  i,
const unsigned long &  j 
) const
inlinevirtual

◆ operator=()

void oomph::CRComplexMatrix::operator= ( const CRComplexMatrix )
inline

Broken assignment operator.

Definition at line 387 of file complex_matrices.h.

References oomph::BrokenCopy::broken_assign().

◆ residual()

void oomph::CRComplexMatrix::residual ( const Vector< std::complex< double > > &  x,
const Vector< std::complex< double > > &  b,
Vector< std::complex< double > > &  residual 
)
virtual

Find the residual to x of Ax=b, i.e. r=b-Ax.

Find the residulal to x of Ax=b, ie r=b-Ax.

Implements oomph::ComplexMatrixBase.

Definition at line 1231 of file complex_matrices.cc.

References i, oomph::QuadTreeNames::N, and oomph::ComplexMatrixBase::residual().

Member Data Documentation

◆ Doc_stats_during_solve

bool oomph::CRComplexMatrix::Doc_stats_during_solve
protected

Flag to indicate if stats are to be displayed during solution of linear system with SuperLU.

Definition at line 443 of file complex_matrices.h.

◆ F_factors

void* oomph::CRComplexMatrix::F_factors
private

Storage for the LU factors as required by SuperLU.

Definition at line 349 of file complex_matrices.h.

◆ Info

int oomph::CRComplexMatrix::Info
private

Info flag for the SuperLU solver.

Definition at line 352 of file complex_matrices.h.


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