Abstract base class for matrices of complex doubles – adds abstract interfaces for solving, LU decomposition and multiplication by vectors. More...
#include <complex_matrices.h>
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... | |
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.
|
inline |
(Empty) constructor.
Definition at line 59 of file complex_matrices.h.
|
delete |
Broken copy constructor.
|
inlinevirtual |
virtual (empty) destructor
Definition at line 74 of file complex_matrices.h.
|
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().
|
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().
|
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().
|
pure virtual |
Multiply the matrix by the vector x: soln=Ax.
Implemented in oomph::CCComplexMatrix, oomph::CRComplexMatrix, and oomph::DenseComplexMatrix.
|
pure virtual |
Multiply the transposed matrix by the vector x: soln=A^T x.
Implemented in oomph::CCComplexMatrix, oomph::CRComplexMatrix, and oomph::DenseComplexMatrix.
|
pure virtual |
Return the number of columns of the matrix.
Implemented in oomph::CCComplexMatrix, oomph::CRComplexMatrix, and oomph::DenseComplexMatrix.
Referenced by solve().
|
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().
|
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.
|
delete |
Broken assignment operator.
|
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().
|
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().
|
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().