simpleMatrix< Type > Class Template Reference

A simple square matrix solver with scalar coefficients. More...

Inheritance diagram for simpleMatrix< Type >:
[legend]
Collaboration diagram for simpleMatrix< Type >:
[legend]

Public Member Functions

 simpleMatrix (const label)
 Construct given size. More...
 
 simpleMatrix (const label, const scalar, const Type &)
 Construct given size and initial values for coefficients and source. More...
 
 simpleMatrix (const scalarSquareMatrix &, const Field< Type > &)
 Construct from components. More...
 
 simpleMatrix (Istream &)
 Construct from Istream. More...
 
 simpleMatrix (const simpleMatrix< Type > &)
 Construct as copy. More...
 
Field< Type > & source ()
 Return access to the source. More...
 
const Field< Type > & source () const
 Return const-access to the source. More...
 
Field< Type > solve () const
 Solve the matrix using Gaussian elimination with pivoting. More...
 
Field< Type > LUsolve () const
 Solve the matrix using LU decomposition with pivoting. More...
 
void operator= (const simpleMatrix< Type > &)
 
- Public Member Functions inherited from SquareMatrix< scalar >
 SquareMatrix ()=default
 Default construct. More...
 
 SquareMatrix (const SquareMatrix &)=default
 Copy construct. More...
 
 SquareMatrix (const label n)
 Construct for given size (rows == cols) More...
 
 SquareMatrix (const label n, const Foam::zero)
 
 SquareMatrix (const label n, const scalar &val)
 
 SquareMatrix (const label n, const Identity< AnyType >)
 
 SquareMatrix (const labelPair &dims, const Identity< AnyType >)
 
 SquareMatrix (const labelPair &dims)
 
 SquareMatrix (const labelPair &dims, const Foam::zero)
 
 SquareMatrix (const labelPair &dims, const scalar &val)
 
 SquareMatrix (const label m, const label n, const Foam::zero)
 
 SquareMatrix (const ConstMatrixBlock< MatrixType > &mat)
 Construct from const sub-matrix block. More...
 
 SquareMatrix (const MatrixBlock< MatrixType > &mat)
 Construct from sub-matrix block. More...
 
 SquareMatrix (const RectangularMatrix< scalar > &mat)
 
 SquareMatrix (Istream &is)
 Construct from Istream. More...
 
SquareMatrixoperator= (const SquareMatrix &)=default
 Copy assignment. More...
 
void operator= (SquareMatrix< scalar > &&mat)
 Move assignment. More...
 
void operator= (const Foam::zero)
 Assign all elements to zero. More...
 
void operator= (const scalar &val)
 Assign all elements to value. More...
 
void operator= (const Identity< AnyType >)
 Set to identity matrix. More...
 
autoPtr< SquareMatrix< scalar > > clone () const
 Clone. More...
 
void resize (const label m)
 Resize the matrix preserving the elements. More...
 
void resize (const label m, const label n)
 Resize the matrix preserving the elements (compatibility) More...
 
void setSize (const label m)
 Resize the matrix preserving the elements. More...
 
void shallowResize (const label m)
 Resize the matrix without reallocating storage (unsafe) More...
 
bool symmetric () const
 Return true if the square matrix is effectively symmetric/Hermitian. More...
 
bool tridiagonal () const
 Return true if the square matrix is reduced tridiagonal. More...
 
List< label > sortPermutation (CompOp &compare) const
 
Foam::List< Foam::label > sortPermutation (CompOp &compare) const
 
void applyPermutation (const List< label > &p)
 
- Public Member Functions inherited from Matrix< Form, Type >
 Matrix () noexcept
 Default construct (empty matrix) More...
 
 Matrix (const label m, const label n)
 Construct given number of rows/columns. More...
 
 Matrix (const label m, const label n, const Foam::zero)
 
 Matrix (const label m, const label n, const Type &val)
 
 Matrix (const labelPair &dims)
 Construct given number of rows/columns. More...
 
 Matrix (const labelPair &dims, const Foam::zero)
 
 Matrix (const labelPair &dims, const Type &val)
 
 Matrix (const Matrix< Form, Type > &mat)
 Copy construct. More...
 
 Matrix (Matrix< Form, Type > &&mat)
 Move construct. More...
 
template<class Form2 >
 Matrix (const Matrix< Form2, Type > &mat)
 Copy constructor from Matrix of a different form. More...
 
template<class MatrixType >
 Matrix (const ConstMatrixBlock< MatrixType > &Mb)
 Construct from a block of another Matrix. More...
 
template<class MatrixType >
 Matrix (const MatrixBlock< MatrixType > &Mb)
 Construct from a block of another Matrix. More...
 
 Matrix (Istream &is)
 Construct from Istream. More...
 
autoPtr< mTypeclone () const
 Clone. More...
 
 ~Matrix ()
 Destructor. More...
 
label m () const noexcept
 The number of rows. More...
 
label n () const noexcept
 The number of columns. More...
 
label size () const
 The number of elements in Matrix (m*n) More...
 
labelPair sizes () const
 Return row/column sizes. More...
 
bool empty () const noexcept
 Return true if Matrix is empty (i.e., size() is zero) More...
 
const Type * cdata () const noexcept
 
Type * data () noexcept
 
const char * cdata_bytes () const noexcept
 
char * data_bytes () noexcept
 
std::streamsize size_bytes () const noexcept
 
std::streamsize byteSize () const
 
const Type * rowData (const label irow) const
 Return const pointer to data in the specified row. More...
 
Type * rowData (const label irow)
 Return pointer to data in the specified row. More...
 
const Type & at (const label idx) const
 Linear addressing const element access. More...
 
Type & at (const label idx)
 Linear addressing element access. More...
 
ConstMatrixBlock< mTypesubColumn (const label colIndex, const label rowIndex=0, label len=-1) const
 Return const column or column's subset of Matrix. More...
 
ConstMatrixBlock< mTypesubRow (const label rowIndex, const label colIndex=0, label len=-1) const
 Return const row or const row's subset of Matrix. More...
 
ConstMatrixBlock< mTypesubMatrix (const label rowIndex, const label colIndex, label szRows=-1, label szCols=-1) const
 Return const sub-block of Matrix. More...
 
template<class VectorSpace >
ConstMatrixBlock< mTypeblock (const label rowIndex, const label colIndex) const
 Access Field as a ConstMatrixBlock. More...
 
MatrixBlock< mTypesubColumn (const label colIndex, const label rowIndex=0, label len=-1)
 Return column or column's subset of Matrix. More...
 
MatrixBlock< mTypesubRow (const label rowIndex, const label colIndex=0, label len=-1)
 Return row or row's subset of Matrix. More...
 
MatrixBlock< mTypesubMatrix (const label rowIndex, const label colIndex, label szRows=-1, label szCols=-1)
 Return sub-block of Matrix. More...
 
template<class VectorSpace >
MatrixBlock< mTypeblock (const label rowIndex, const label colIndex)
 Access Field as a MatrixBlock. More...
 
void checki (const label irow) const
 Check index i is within valid range [0, m) More...
 
void checkj (const label jcol) const
 Check index j is within valid range [0, n) More...
 
void checkSize () const
 Check that dimensions are positive, non-zero. More...
 
bool uniform () const
 True if all entries have identical values, and Matrix is non-empty. More...
 
void clear ()
 Clear Matrix, i.e. set sizes to zero. More...
 
List< Type > release ()
 
void swap (Matrix< Form, Type > &mat)
 Swap contents. More...
 
void transfer (Matrix< Form, Type > &mat)
 
void resize (const label m, const label n)
 Change Matrix dimensions, preserving the elements. More...
 
void resize_nocopy (const label mrow, const label ncol)
 Change Matrix dimensions without preserving existing content. More...
 
void setSize (const label m, const label n)
 Change Matrix dimensions, preserving the elements. More...
 
void shallowResize (const label m, const label n)
 Resize Matrix without reallocating storage (unsafe) More...
 
void round (const scalar tol=SMALL)
 Round elements with magnitude smaller than tol (SMALL) to zero. More...
 
Form T () const
 Return conjugate transpose of Matrix. More...
 
Form transpose () const
 Return non-conjugate transpose of Matrix. More...
 
tmp< Field< Type > > Amul (const UList< Type > &x) const
 Right-multiply Matrix by a column vector (A * x) More...
 
template<class Addr >
tmp< Field< Type > > Amul (const IndirectListBase< Type, Addr > &x) const
 Right-multiply Matrix by a column vector (A * x) More...
 
tmp< Field< Type > > Tmul (const UList< Type > &x) const
 Left-multiply Matrix by a row vector (x * A) More...
 
template<class Addr >
tmp< Field< Type > > Tmul (const IndirectListBase< Type, Addr > &x) const
 Left-multiply Matrix by a row vector (x * A) More...
 
List< Type > diag () const
 Extract the diagonal elements. Method may change in the future. More...
 
void diag (const UList< Type > &list)
 Assign diagonal of Matrix. More...
 
Type trace () const
 Return the trace. More...
 
scalar columnNorm (const label colIndex, const bool noSqrt=false) const
 Return L2-Norm of chosen column. More...
 
scalar norm (const bool noSqrt=false) const
 Return Frobenius norm of Matrix. More...
 
const Type * operator[] (const label irow) const
 Return const pointer to data in the specified row - rowData(). More...
 
Type * operator[] (const label irow)
 Return pointer to data in the specified row - rowData(). More...
 
const Type & operator() (const label irow, const label jcol) const
 (i, j) const element access operator More...
 
Type & operator() (const label irow, const label jcol)
 (i, j) element access operator More...
 
void operator= (const Matrix< Form, Type > &mat)
 Copy assignment. Takes linear time. More...
 
void operator= (Matrix< Form, Type > &&mat)
 Move assignment. More...
 
template<class MatrixType >
void operator= (const ConstMatrixBlock< MatrixType > &Mb)
 Assignment to a block of another Matrix. More...
 
template<class MatrixType >
void operator= (const MatrixBlock< MatrixType > &Mb)
 Assignment to a block of another Matrix. More...
 
void operator= (const Foam::zero)
 Assignment of all elements to zero. More...
 
void operator= (const Type &val)
 Assignment of all elements to the given value. More...
 
void operator+= (const Matrix< Form, Type > &other)
 Matrix addition. More...
 
void operator-= (const Matrix< Form, Type > &other)
 Matrix subtraction. More...
 
void operator+= (const Type &s)
 Matrix scalar addition. More...
 
void operator-= (const Type &s)
 Matrix scalar subtraction. More...
 
void operator*= (const Type &s)
 Matrix scalar multiplication. More...
 
void operator/= (const Type &s)
 Matrix scalar division. More...
 
iterator begin () noexcept
 Return an iterator to begin traversing a Matrix. More...
 
iterator end () noexcept
 Return an iterator to end traversing a Matrix. More...
 
const_iterator cbegin () const noexcept
 Return const_iterator to begin traversing a constant Matrix. More...
 
const_iterator cend () const noexcept
 Return const_iterator to end traversing a constant Matrix. More...
 
const_iterator begin () const noexcept
 Return const_iterator to begin traversing a constant Matrix. More...
 
const_iterator end () const noexcept
 Return const_iterator to end traversing a constant Matrix. More...
 
bool readMatrix (Istream &is)
 Read Matrix from Istream, discarding existing contents. More...
 
OstreamwriteMatrix (Ostream &os, const label shortLen=0) const
 
label mRows () const noexcept
 The number of rows - same as m() More...
 
label nRows () const noexcept
 The number of rows - same as m() More...
 
label nCols () const noexcept
 The number of columns - same as n() More...
 
const Type * v () const
 Deprecated(2019-04) raw data pointer, const access. More...
 
Type * v ()
 Deprecated(2019-04) raw data pointer, non-const access. More...
 
ConstMatrixBlock< mTypeblock (const label m, const label n, const label mStart, const label nStart) const
 Deprecated(2019-04) - use subMatrix() More...
 
MatrixBlock< mTypeblock (const label m, const label n, const label mStart, const label nStart)
 Deprecated(2019-04) - use subMatrix() More...
 
ConstMatrixBlock< mTypecol (const label m, const label mStart, const label nStart) const
 Deprecated(2019-04) - use subColumn() More...
 
MatrixBlock< mTypecol (const label m, const label mStart, const label nStart)
 Deprecated(2019-04) - use subColumn() More...
 
void col (const label m, const label rowStart) const =delete
 Deleted(2019-04) - use subColumn() More...
 
void col (const label m, const label rowStart)=delete
 Deleted(2019-04) - use subColumn() More...
 
template<class ListType >
Foam::tmp< Foam::Field< Type > > AmulImpl (const ListType &x) const
 
template<class ListType >
Foam::tmp< Foam::Field< Type > > TmulImpl (const ListType &x) const
 
template<class VectorSpace >
Foam::ConstMatrixBlock< Foam::Matrix< Form, Type > > block (const label rowIndex, const label colIndex) const
 
template<class VectorSpace >
Foam::MatrixBlock< Foam::Matrix< Form, Type > > block (const label rowIndex, const label colIndex)
 
template<class Addr >
Foam::tmp< Foam::Field< Type > > Amul (const IndirectListBase< Type, Addr > &x) const
 
template<class Addr >
Foam::tmp< Foam::Field< Type > > Tmul (const IndirectListBase< Type, Addr > &x) const
 

Friends

Ostreamoperator (Ostream &, const simpleMatrix< Type > &)
 

Additional Inherited Members

- Public Types inherited from Matrix< Form, Type >
typedef Matrix< Form, Type > mType
 Matrix type. More...
 
typedef Type cmptType
 Component type. More...
 
typedef Type * iterator
 Random access iterator for traversing a Matrix. More...
 
typedef const Type * const_iterator
 Random access iterator for traversing a Matrix. More...
 
- Static Public Member Functions inherited from Matrix< Form, Type >
static const Matrix< Form, Type > & null ()
 Return a null Matrix. More...
 

Detailed Description

template<class Type>
class Foam::simpleMatrix< Type >

A simple square matrix solver with scalar coefficients.

Source files

Definition at line 64 of file simpleMatrix.H.

Constructor & Destructor Documentation

◆ simpleMatrix() [1/5]

simpleMatrix ( const label  mSize)

Construct given size.

Note: this does not initialise the coefficients or the source.

Definition at line 34 of file simpleMatrix.C.

◆ simpleMatrix() [2/5]

simpleMatrix ( const label  mSize,
const scalar  coeffVal,
const Type &  sourceVal 
)

Construct given size and initial values for coefficients and source.

Definition at line 42 of file simpleMatrix.C.

◆ simpleMatrix() [3/5]

simpleMatrix ( const scalarSquareMatrix matrix,
const Field< Type > &  source 
)

Construct from components.

Definition at line 55 of file simpleMatrix.C.

◆ simpleMatrix() [4/5]

simpleMatrix ( Istream is)

Construct from Istream.

Definition at line 67 of file simpleMatrix.C.

◆ simpleMatrix() [5/5]

simpleMatrix ( const simpleMatrix< Type > &  )

Construct as copy.

Member Function Documentation

◆ source() [1/2]

Field< Type > & source ( )
inline

Return access to the source.

Definition at line 99 of file simpleMatrix.H.

◆ source() [2/2]

const Field< Type > & source ( ) const
inline

Return const-access to the source.

Definition at line 105 of file simpleMatrix.H.

◆ solve()

Foam::Field< Type > solve

Solve the matrix using Gaussian elimination with pivoting.

and return the solution

Definition at line 77 of file simpleMatrix.C.

◆ LUsolve()

Foam::Field< Type > LUsolve

Solve the matrix using LU decomposition with pivoting.

and return the solution

Definition at line 89 of file simpleMatrix.C.

References Foam::LUsolve().

Here is the call graph for this function:

◆ operator=()

void operator= ( const simpleMatrix< Type > &  m)

Definition at line 103 of file simpleMatrix.C.

References FatalErrorInFunction, and Matrix< Form, Type >::m().

Here is the call graph for this function:

Friends And Related Function Documentation

◆ operator

Ostream & operator ( Ostream ,
const simpleMatrix< Type > &   
)
friend

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