Templated class to perform the Cholesky decomposition on a symmetric positive-definite matrix. More...
Public Member Functions | |
LLTMatrix () | |
Construct null. More... | |
LLTMatrix (const SquareMatrix< Type > &mat) | |
Construct and perform the decomposition on input square matrix. More... | |
void | decompose (const SquareMatrix< Type > &mat) |
Copy matrix and perform Cholesky decomposition. More... | |
void | solve (List< Type > &x, const UList< Type > &source) const |
template<class Addr > | |
void | solve (List< Type > &x, const IndirectListBase< Type, Addr > &source) const |
tmp< Field< Type > > | solve (const UList< Type > &source) const |
template<class Addr > | |
tmp< Field< Type > > | solve (const IndirectListBase< Type, Addr > &source) const |
template<class Addr > | |
Foam::tmp< Foam::Field< Type > > | solve (const IndirectListBase< Type, Addr > &source) const |
Public Member Functions inherited from SquareMatrix< Type > | |
SquareMatrix ()=default | |
Default construct. More... | |
SquareMatrix (const SquareMatrix &)=default | |
Copy construct. More... | |
SquareMatrix & | operator= (const SquareMatrix &)=default |
Copy assignment. More... | |
SquareMatrix (const label n) | |
Construct for given size (rows == cols) More... | |
SquareMatrix (const label n, const Foam::zero) | |
SquareMatrix (const label n, const Type &val) | |
template<class AnyType > | |
SquareMatrix (const label n, const Identity< AnyType >) | |
template<class AnyType > | |
SquareMatrix (const labelPair &dims, const Identity< AnyType >) | |
SquareMatrix (const labelPair &dims) | |
SquareMatrix (const labelPair &dims, const Foam::zero) | |
SquareMatrix (const labelPair &dims, const Type &val) | |
SquareMatrix (const label m, const label n, const Foam::zero) | |
template<class MatrixType > | |
SquareMatrix (const ConstMatrixBlock< MatrixType > &mat) | |
Construct from const sub-matrix block. More... | |
template<class MatrixType > | |
SquareMatrix (const MatrixBlock< MatrixType > &mat) | |
Construct from sub-matrix block. More... | |
SquareMatrix (const RectangularMatrix< Type > &mat) | |
SquareMatrix (Istream &is) | |
Construct from Istream. More... | |
autoPtr< SquareMatrix< Type > > | 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... | |
template<class CompOp > | |
List< label > | sortPermutation (CompOp &compare) const |
void | applyPermutation (const List< label > &p) |
void | operator= (SquareMatrix< Type > &&mat) |
Move assignment. More... | |
void | operator= (const Foam::zero) |
Assign all elements to zero. More... | |
void | operator= (const Type &val) |
Assign all elements to value. More... | |
template<class AnyType > | |
void | operator= (const Identity< AnyType >) |
Set to identity matrix. More... | |
template<class CompOp > | |
Foam::List< Foam::label > | sortPermutation (CompOp &compare) const |
Public Member Functions inherited from Matrix< SquareMatrix< Type >, Type > | |
Foam::tmp< Foam::Field< Type > > | AmulImpl (const ListType &x) const |
Foam::tmp< Foam::Field< Type > > | TmulImpl (const ListType &x) const |
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< SquareMatrix< Type >, Type > &mat) | |
Copy construct. More... | |
Matrix (Matrix< SquareMatrix< Type >, Type > &&mat) | |
Move construct. More... | |
Matrix (const Matrix< Form2, Type > &mat) | |
Copy constructor from Matrix of a different form. More... | |
Matrix (const ConstMatrixBlock< MatrixType > &Mb) | |
Construct from a block of another Matrix. More... | |
Matrix (const MatrixBlock< MatrixType > &Mb) | |
Construct from a block of another Matrix. More... | |
Matrix (Istream &is) | |
Construct from Istream. More... | |
autoPtr< mType > | clone () 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< mType > | subColumn (const label colIndex, const label rowIndex=0, label len=-1) const |
Return const column or column's subset of Matrix. More... | |
MatrixBlock< mType > | subColumn (const label colIndex, const label rowIndex=0, label len=-1) |
Return column or column's subset of Matrix. More... | |
ConstMatrixBlock< mType > | subRow (const label rowIndex, const label colIndex=0, label len=-1) const |
Return const row or const row's subset of Matrix. More... | |
MatrixBlock< mType > | subRow (const label rowIndex, const label colIndex=0, label len=-1) |
Return row or row's subset of Matrix. More... | |
ConstMatrixBlock< mType > | subMatrix (const label rowIndex, const label colIndex, label szRows=-1, label szCols=-1) const |
Return const sub-block of Matrix. More... | |
MatrixBlock< mType > | subMatrix (const label rowIndex, const label colIndex, label szRows=-1, label szCols=-1) |
Return sub-block of Matrix. More... | |
ConstMatrixBlock< mType > | block (const label rowIndex, const label colIndex) const |
Access Field as a ConstMatrixBlock. More... | |
MatrixBlock< mType > | block (const label rowIndex, const label colIndex) |
Access Field as a MatrixBlock. More... | |
ConstMatrixBlock< mType > | block (const label m, const label n, const label mStart, const label nStart) const |
Deprecated(2019-04) - use subMatrix() More... | |
MatrixBlock< mType > | block (const label m, const label n, const label mStart, const label nStart) |
Deprecated(2019-04) - use subMatrix() More... | |
Foam::ConstMatrixBlock< Foam::Matrix< SquareMatrix< Type >, Type > > | block (const label rowIndex, const label colIndex) const |
Foam::MatrixBlock< Foam::Matrix< SquareMatrix< Type >, Type > > | block (const label rowIndex, const label colIndex) |
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< SquareMatrix< Type >, Type > &mat) |
Swap contents. More... | |
void | transfer (Matrix< SquareMatrix< Type >, 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... | |
SquareMatrix< Type > | T () const |
Return conjugate transpose of Matrix. More... | |
SquareMatrix< Type > | 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... | |
tmp< Field< Type > > | Amul (const IndirectListBase< Type, Addr > &x) const |
Right-multiply Matrix by a column vector (A * x) More... | |
Foam::tmp< Foam::Field< Type > > | Amul (const IndirectListBase< Type, Addr > &x) const |
tmp< Field< Type > > | Tmul (const UList< Type > &x) const |
Left-multiply Matrix by a row vector (x * A) More... | |
tmp< Field< Type > > | Tmul (const IndirectListBase< Type, Addr > &x) const |
Left-multiply Matrix by a row vector (x * A) More... | |
Foam::tmp< Foam::Field< Type > > | Tmul (const IndirectListBase< Type, Addr > &x) const |
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< SquareMatrix< Type >, Type > &mat) |
Copy assignment. Takes linear time. More... | |
void | operator= (Matrix< SquareMatrix< Type >, Type > &&mat) |
Move assignment. More... | |
void | operator= (const ConstMatrixBlock< MatrixType > &Mb) |
Assignment to a block of another Matrix. More... | |
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< SquareMatrix< Type >, Type > &other) |
Matrix addition. More... | |
void | operator+= (const Type &s) |
Matrix scalar addition. More... | |
void | operator-= (const Matrix< SquareMatrix< Type >, Type > &other) |
Matrix subtraction. 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... | |
const_iterator | begin () const noexcept |
Return const_iterator to begin traversing a constant Matrix. More... | |
iterator | end () noexcept |
Return an iterator to end traversing a Matrix. More... | |
const_iterator | end () const noexcept |
Return const_iterator to end traversing a constant 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... | |
bool | readMatrix (Istream &is) |
Read Matrix from Istream, discarding existing contents. More... | |
Ostream & | writeMatrix (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< mType > | col (const label m, const label mStart, const label nStart) const |
Deprecated(2019-04) - use subColumn() More... | |
MatrixBlock< mType > | col (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... | |
Additional Inherited Members | |
Public Types inherited from Matrix< SquareMatrix< Type >, Type > | |
typedef Matrix< SquareMatrix< Type >, 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< SquareMatrix< Type >, Type > | |
static const Matrix< SquareMatrix< Type >, Type > & | null () |
Return a null Matrix. More... | |
Templated class to perform the Cholesky decomposition on a symmetric positive-definite matrix.
Member functions are provided to solve linear systems using the LLT decomposition.
Definition at line 57 of file LLTMatrix.H.
Construct null.
Definition at line 34 of file LLTMatrix.C.
LLTMatrix | ( | const SquareMatrix< Type > & | mat | ) |
Construct and perform the decomposition on input square matrix.
Definition at line 39 of file LLTMatrix.C.
void decompose | ( | const SquareMatrix< Type > & | mat | ) |
Copy matrix and perform Cholesky decomposition.
Definition at line 48 of file LLTMatrix.C.
References Foam::abort(), Foam::FatalError, FatalErrorInFunction, k, Matrix< Form, Type >::m(), Foam::sqrt(), and Foam::sum().
Solve the linear system with the given source and return the solution in the argument x.
This function may be called with the same field for x and source.
Definition at line 138 of file LLTMatrix.C.
References x.
void solve | ( | List< Type > & | x, |
const IndirectListBase< Type, Addr > & | source | ||
) | const |
Solve the linear system with the given source and return the solution in the argument x.
This function may be called with the same field for x and source.
Definition at line 150 of file LLTMatrix.C.
References x.
Foam::tmp< Foam::Field< Type > > solve | ( | const UList< Type > & | source | ) | const |
Solve the linear system with the given source return the solution
Definition at line 160 of file LLTMatrix.C.
References UList< T >::size(), and solve().
tmp< Field< Type > > solve | ( | const IndirectListBase< Type, Addr > & | source | ) | const |
Solve the linear system with the given source return the solution
Foam::tmp< Foam::Field< Type > > solve | ( | const IndirectListBase< Type, Addr > & | source | ) | const |
Definition at line 175 of file LLTMatrix.C.
References IndirectListBase< T, Addr >::size(), and solve().