Public Member Functions | List of all members
oomph::ComplexMatrixBase Class Referenceabstract

Abstract base class for matrices of complex doubles – adds abstract interfaces for solving, LU decomposition and multiplication by vectors. More...

#include <complex_matrices.h>

+ Inheritance diagram for oomph::ComplexMatrixBase:

Public Member Functions

 ComplexMatrixBase ()
 (Empty) constructor. More...
 
 ComplexMatrixBase (const ComplexMatrixBase &matrix)=delete
 Broken copy constructor. More...
 
void operator= (const ComplexMatrixBase &)=delete
 Broken assignment operator. More...
 
virtual unsigned long nrow () const =0
 Return the number of rows of the matrix. More...
 
virtual unsigned long ncol () const =0
 Return the number of columns of the matrix. More...
 
virtual ~ComplexMatrixBase ()
 virtual (empty) destructor More...
 
virtual std::complex< double > operator() (const unsigned long &i, const unsigned long &j) const =0
 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!) More...
 
virtual int ludecompose ()
 LU decomposition of the matrix using the appropriate linear solver. Return the sign of the determinant. More...
 
virtual void lubksub (Vector< std::complex< double >> &rhs)
 LU backsubstitue a previously LU-decomposed matrix; The passed rhs will be over-written with the solution vector. 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 void residual (const Vector< std::complex< double >> &x, const Vector< std::complex< double >> &b, Vector< std::complex< double >> &residual)=0
 Find the residual, i.e. r=b-Ax the residual. 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...
 
virtual void multiply (const Vector< std::complex< double >> &x, Vector< std::complex< double >> &soln)=0
 Multiply the matrix by the vector x: soln=Ax. More...
 
virtual void multiply_transpose (const Vector< std::complex< double >> &x, Vector< std::complex< double >> &soln)=0
 Multiply the transposed matrix by the vector x: soln=A^T x. More...
 

Detailed Description

Abstract base class for matrices of complex doubles – adds abstract interfaces for solving, LU decomposition and multiplication by vectors.

Definition at line 55 of file complex_matrices.h.

Constructor & Destructor Documentation

◆ ComplexMatrixBase() [1/2]

oomph::ComplexMatrixBase::ComplexMatrixBase ( )
inline

(Empty) constructor.

Definition at line 59 of file complex_matrices.h.

◆ ComplexMatrixBase() [2/2]

oomph::ComplexMatrixBase::ComplexMatrixBase ( const ComplexMatrixBase matrix)
delete

Broken copy constructor.

◆ ~ComplexMatrixBase()

virtual oomph::ComplexMatrixBase::~ComplexMatrixBase ( )
inlinevirtual

virtual (empty) destructor

Definition at line 74 of file complex_matrices.h.

Member Function Documentation

◆ lubksub()

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

LU backsubstitue a previously LU-decomposed matrix; The passed rhs will be over-written with the solution vector.

Reimplemented in oomph::CCComplexMatrix, oomph::CRComplexMatrix, and oomph::DenseComplexMatrix.

Definition at line 97 of file complex_matrices.h.

Referenced by solve().

◆ ludecompose()

virtual int oomph::ComplexMatrixBase::ludecompose ( )
inlinevirtual

LU decomposition of the matrix using the appropriate linear solver. Return the sign of the determinant.

Dummy return

Reimplemented in oomph::CCComplexMatrix, oomph::CRComplexMatrix, and oomph::DenseComplexMatrix.

Definition at line 84 of file complex_matrices.h.

Referenced by solve().

◆ max_residual()

virtual double oomph::ComplexMatrixBase::max_residual ( const Vector< std::complex< double >> &  x,
const Vector< std::complex< double >> &  rhs 
)
inlinevirtual

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

Definition at line 124 of file complex_matrices.h.

References i, and residual().

◆ multiply()

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

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

Implemented in oomph::CCComplexMatrix, oomph::CRComplexMatrix, and oomph::DenseComplexMatrix.

◆ multiply_transpose()

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

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

Implemented in oomph::CCComplexMatrix, oomph::CRComplexMatrix, and oomph::DenseComplexMatrix.

◆ ncol()

virtual unsigned long oomph::ComplexMatrixBase::ncol ( ) const
pure virtual

Return the number of columns of the matrix.

Implemented in oomph::CCComplexMatrix, oomph::CRComplexMatrix, and oomph::DenseComplexMatrix.

Referenced by solve().

◆ nrow()

virtual unsigned long oomph::ComplexMatrixBase::nrow ( ) const
pure virtual

Return the number of rows of the matrix.

Implemented in oomph::CCComplexMatrix, oomph::CRComplexMatrix, and oomph::DenseComplexMatrix.

Referenced by oomph::LAPACK_QZ::find_eigenvalues(), and solve().

◆ operator()()

virtual std::complex<double> oomph::ComplexMatrixBase::operator() ( const unsigned long &  i,
const unsigned long &  j 
) const
pure virtual

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!)

Implemented in oomph::CCComplexMatrix, oomph::CRComplexMatrix, and oomph::DenseComplexMatrix.

◆ operator=()

void oomph::ComplexMatrixBase::operator= ( const ComplexMatrixBase )
delete

Broken assignment operator.

◆ residual()

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

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

Implemented in oomph::DenseComplexMatrix, oomph::CCComplexMatrix, and oomph::CRComplexMatrix.

Referenced by max_residual().

◆ solve() [1/2]

void oomph::ComplexMatrixBase::solve ( const Vector< std::complex< double >> &  rhs,
Vector< std::complex< double >> &  soln 
)
virtual

Complete LU solve (Nothing gets overwritten!). The default should not need to be overwritten.

Complete LU solve (Nothing gets overwritten!). This generic version should never need to be overwritten.

Definition at line 72 of file complex_matrices.cc.

References solve().

◆ solve() [2/2]

void oomph::ComplexMatrixBase::solve ( Vector< std::complex< double >> &  rhs)
virtual

Complete LU solve (replaces matrix by its LU decomposition and overwrites RHS with solution). The default should not need to be over-written.

Complete LU solve (overwrites RHS with solution). This is the generic version which should not need to be over-written.

Definition at line 35 of file complex_matrices.cc.

References lubksub(), ludecompose(), ncol(), and nrow().

Referenced by solve().


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