LduMatrix is a general matrix class in which the coefficients are stored as three arrays, one for the upper triangle, one for the lower triangle and a third for the diagonal. More...
#include <LduMatrix.H>

Classes | |
| class | solver |
| Abstract base-class for LduMatrix solvers. More... | |
| class | smoother |
| Abstract base-class for LduMatrix smoothers. More... | |
| class | preconditioner |
| Abstract base-class for LduMatrix preconditioners. More... | |
Public Member Functions | |
| ClassName ("LduMatrix") | |
| LduMatrix (const lduMesh &mesh) | |
| Construct given an LDU addressed mesh. | |
| LduMatrix (const LduMatrix< Type, DType, LUType > &) | |
| Copy construct. | |
| LduMatrix (LduMatrix< Type, DType, LUType > &&) | |
| Move construct. | |
| LduMatrix (LduMatrix< Type, DType, LUType > &, bool reuse) | |
| Construct as copy or re-use as specified. | |
| LduMatrix (const lduMesh &mesh, Istream &is) | |
| Construct given an LDU addressed mesh and an Istream from which the coefficients are read. | |
| ~LduMatrix ()=default | |
| Destructor. | |
| const lduMesh & | mesh () const noexcept |
| Return the LDU mesh from which the addressing is obtained. | |
| const lduAddressing & | lduAddr () const |
| Return the LDU addressing. | |
| const lduSchedule & | patchSchedule () const |
| Return the patch evaluation schedule. | |
| const LduInterfaceFieldPtrsList< Type > & | interfaces () const noexcept |
| Const access to the interfaces. | |
| LduInterfaceFieldPtrsList< Type > & | interfaces () noexcept |
| Non-const access to the interfaces. | |
| const Field< DType > & | diag () const |
| const Field< LUType > & | upper () const |
| const Field< LUType > & | lower () const |
| const Field< Type > & | source () const |
| Field< DType > & | diag () |
| Field< LUType > & | upper () |
| Field< LUType > & | lower () |
| Field< Type > & | source () |
| const FieldField< Field, LUType > & | interfacesUpper () const noexcept |
| const FieldField< Field, LUType > & | interfacesLower () const noexcept |
| FieldField< Field, LUType > & | interfacesUpper () noexcept |
| FieldField< Field, LUType > & | interfacesLower () noexcept |
| word | matrixTypeName () const |
| The matrix type (empty, diagonal, symmetric, ...). | |
| bool | hasDiag () const noexcept |
| bool | hasUpper () const noexcept |
| bool | hasLower () const noexcept |
| bool | hasSource () const noexcept |
| bool | diagonal () const noexcept |
| Matrix has diagonal only. | |
| bool | symmetric () const noexcept |
| Matrix is symmetric. | |
| bool | asymmetric () const noexcept |
| Matrix is asymmetric (ie, full). | |
| void | sumDiag () |
| void | negSumDiag () |
| void | sumMagOffDiag (Field< LUType > &sumOff) const |
| void | Amul (Field< Type > &, const tmp< Field< Type > > &) const |
| Matrix multiplication. | |
| void | Tmul (Field< Type > &, const tmp< Field< Type > > &) const |
| Matrix transpose multiplication. | |
| void | sumA (Field< Type > &) const |
| Sum the coefficients on each row of the matrix. | |
| void | residual (Field< Type > &rA, const Field< Type > &psi) const |
| tmp< Field< Type > > | residual (const Field< Type > &psi) const |
| void | initMatrixInterfaces (const bool add, const FieldField< Field, LUType > &interfaceCoeffs, const Field< Type > &psiif, Field< Type > &result) const |
| Initialise the update of interfaced interfaces. | |
| void | updateMatrixInterfaces (const bool add, const FieldField< Field, LUType > &interfaceCoeffs, const Field< Type > &psiif, Field< Type > &result, const label startRequest) const |
| Update interfaced interfaces for matrix operations. | |
| tmp< Field< Type > > | H (const Field< Type > &) const |
| tmp< Field< Type > > | H (const tmp< Field< Type > > &) const |
| tmp< Field< Type > > | faceH (const Field< Type > &) const |
| tmp< Field< Type > > | faceH (const tmp< Field< Type > > &) const |
| void | operator= (const LduMatrix< Type, DType, LUType > &) |
| Copy assignment. | |
| void | operator= (LduMatrix< Type, DType, LUType > &&) |
| Move assignment. | |
| void | negate () |
| void | operator+= (const LduMatrix< Type, DType, LUType > &) |
| void | operator-= (const LduMatrix< Type, DType, LUType > &) |
| void | operator*= (const scalarField &) |
| void | operator*= (scalar) |
Friends | |
| class | SolverPerformance< Type > |
| Ostream & | operator (Ostream &, const LduMatrix< Type, DType, LUType > &) |
LduMatrix is a general matrix class in which the coefficients are stored as three arrays, one for the upper triangle, one for the lower triangle and a third for the diagonal.
Addressing arrays must be supplied for the upper and lower triangles.
Definition at line 83 of file LduMatrix.H.
| LduMatrix | ( | const lduMesh & | mesh | ) |
Construct given an LDU addressed mesh.
The coefficients are initially empty for subsequent setting. Not yet 'explicit' (legacy code may rely on implicit construct)
Definition at line 28 of file LduMatrix.C.
References mesh().
Referenced by LduMatrix< Type, DType, LUType >::smoother::declareRunTimeSelectionTable(), LduMatrix< Type, DType, LUType >::smoother::declareRunTimeSelectionTable(), LduMatrix< Type, DType, LUType >::solver::declareRunTimeSelectionTable(), LduMatrix< Type, DType, LUType >::solver::declareRunTimeSelectionTable(), faceH(), LduMatrix< Type, DType, LUType >::smoother::matrix(), LduMatrix< Type, DType, LUType >::solver::matrix(), negSumDiag(), LduMatrix< Type, DType, LUType >::smoother::New(), LduMatrix< Type, DType, LUType >::solver::New(), operator+=(), operator-=(), LduMatrix< Type, DType, LUType >::smoother::smoother(), LduMatrix< Type, DType, LUType >::solver::solver(), sumDiag(), and sumMagOffDiag().


| LduMatrix | ( | const LduMatrix< Type, DType, LUType > & | ) |
Copy construct.
| LduMatrix | ( | LduMatrix< Type, DType, LUType > && | ) |
Move construct.
| LduMatrix | ( | LduMatrix< Type, DType, LUType > & | , |
| bool | reuse ) |
Construct as copy or re-use as specified.
Construct given an LDU addressed mesh and an Istream from which the coefficients are read.
Definition at line 116 of file LduMatrix.C.
References mesh().

|
default |
Destructor.
| ClassName | ( | "LduMatrix< Type, DType, LUType >" | ) |
|
inlinenoexcept |
Return the LDU mesh from which the addressing is obtained.
Definition at line 608 of file LduMatrix.H.
Referenced by LduMatrix(), and LduMatrix().

|
inline |
Return the LDU addressing.
Definition at line 616 of file LduMatrix.H.
Referenced by Amul(), TDILUPreconditioner< Type, DType, LUType >::calcInvD(), diag(), faceH(), H(), lower(), negSumDiag(), operator*=(), residual(), source(), sumA(), sumDiag(), sumMagOffDiag(), Tmul(), and upper().

|
inline |
Return the patch evaluation schedule.
Definition at line 624 of file LduMatrix.H.
Referenced by initMatrixInterfaces(), and updateMatrixInterfaces().

|
inlinenoexcept |
Const access to the interfaces.
Definition at line 632 of file LduMatrix.H.
Referenced by fvMatrix< Type >::solveCoupled().

|
inlinenoexcept |
Non-const access to the interfaces.
Definition at line 640 of file LduMatrix.H.
| const Foam::Field< DType > & diag | ( | ) | const |
Definition at line 151 of file LduMatrix.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
Referenced by Amul(), negSumDiag(), operator+=(), operator-=(), residual(), fvMatrix< Type >::solveCoupled(), sumA(), sumDiag(), and Tmul().


| const Foam::Field< LUType > & upper | ( | ) | const |
Definition at line 178 of file LduMatrix.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
Referenced by Amul(), TDILUPreconditioner< Type, DType, LUType >::calcInvD(), H(), operator*=(), operator+=(), operator-=(), residual(), fvMatrix< Type >::solveCoupled(), sumA(), and Tmul().


| const Foam::Field< LUType > & lower | ( | ) | const |
Definition at line 223 of file LduMatrix.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
Referenced by Amul(), TDILUPreconditioner< Type, DType, LUType >::calcInvD(), H(), operator*=(), operator+=(), operator-=(), residual(), fvMatrix< Type >::solveCoupled(), sumA(), and Tmul().


| const Foam::Field< Type > & source | ( | ) | const |
Definition at line 267 of file LduMatrix.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
Referenced by operator+=(), operator-=(), residual(), and fvMatrix< Type >::solveCoupled().


| Foam::Field< DType > & diag | ( | ) |
Definition at line 165 of file LduMatrix.C.
References lduAddr().

| Foam::Field< LUType > & upper | ( | ) |
Definition at line 199 of file LduMatrix.C.
References lduAddr().

| Foam::Field< LUType > & lower | ( | ) |
Definition at line 244 of file LduMatrix.C.
References lduAddr().

| Foam::Field< Type > & source | ( | ) |
Definition at line 281 of file LduMatrix.C.
References lduAddr().

|
inlinenoexcept |
Definition at line 661 of file LduMatrix.H.
Referenced by fvMatrix< Type >::solveCoupled().

|
inlinenoexcept |
Definition at line 666 of file LduMatrix.H.
Referenced by fvMatrix< Type >::solveCoupled().

|
inlinenoexcept |
Definition at line 671 of file LduMatrix.H.
|
inlinenoexcept |
Definition at line 676 of file LduMatrix.H.
| Foam::word matrixTypeName | ( | ) | const |
The matrix type (empty, diagonal, symmetric, ...).
Definition at line 133 of file LduMatrix.C.
|
inlinenoexcept |
Definition at line 689 of file LduMatrix.H.
|
inlinenoexcept |
Definition at line 690 of file LduMatrix.H.
Referenced by H().

|
inlinenoexcept |
Definition at line 691 of file LduMatrix.H.
Referenced by H().

|
inlinenoexcept |
Definition at line 692 of file LduMatrix.H.
|
inlinenoexcept |
Matrix has diagonal only.
Definition at line 697 of file LduMatrix.H.
Referenced by operator+=(), and operator-=().

|
inlinenoexcept |
Matrix is symmetric.
Definition at line 705 of file LduMatrix.H.
Referenced by operator*=(), operator+=(), and operator-=().

|
inlinenoexcept |
Matrix is asymmetric (ie, full).
Definition at line 713 of file LduMatrix.H.
Referenced by operator*=(), operator+=(), and operator-=().

| void sumDiag | ( | ) |
Definition at line 27 of file LduMatrixOperations.C.
References diag(), lduAddr(), LduMatrix(), and UList< T >::size().

| void negSumDiag | ( | ) |
Definition at line 45 of file LduMatrixOperations.C.
References diag(), lduAddr(), LduMatrix(), and UList< T >::size().

| void sumMagOffDiag | ( | Field< LUType > & | sumOff | ) | const |
Definition at line 63 of file LduMatrixOperations.C.
References Foam::cmptMag(), lduAddr(), LduMatrix(), and UList< T >::size().

| void Amul | ( | Field< Type > & | Apsi, |
| const tmp< Field< Type > > & | tpsi ) const |
Matrix multiplication.
Definition at line 27 of file LduMatrixATmul.C.
References UList< T >::begin(), diag(), Foam::dot(), initMatrixInterfaces(), lduAddr(), lower(), UPstream::nRequests(), psi, updateMatrixInterfaces(), and upper().

| void Tmul | ( | Field< Type > & | Tpsi, |
| const tmp< Field< Type > > & | tpsi ) const |
Matrix transpose multiplication.
Definition at line 86 of file LduMatrixATmul.C.
References UList< T >::begin(), diag(), Foam::dot(), initMatrixInterfaces(), lduAddr(), lower(), UPstream::nRequests(), psi, updateMatrixInterfaces(), and upper().

| void sumA | ( | Field< Type > & | sumA | ) | const |
Sum the coefficients on each row of the matrix.
Definition at line 144 of file LduMatrixATmul.C.
References diag(), Foam::dot(), forAll, lduAddr(), lower(), sumA(), and upper().
Referenced by sumA().


| void residual | ( | Field< Type > & | rA, |
| const Field< Type > & | psi ) const |
Definition at line 192 of file LduMatrixATmul.C.
References UList< T >::begin(), diag(), Foam::dot(), initMatrixInterfaces(), lduAddr(), lower(), UPstream::nRequests(), psi, source(), updateMatrixInterfaces(), and upper().
Referenced by residual().


| Foam::tmp< Foam::Field< Type > > residual | ( | const Field< Type > & | psi | ) | const |
Definition at line 252 of file LduMatrixATmul.C.
References Foam::New(), psi, and residual().

| void initMatrixInterfaces | ( | const bool | add, |
| const FieldField< Field, LUType > & | interfaceCoeffs, | ||
| const Field< Type > & | psiif, | ||
| Field< Type > & | result ) const |
Initialise the update of interfaced interfaces.
for matrix operations
Definition at line 28 of file LduMatrixUpdateMatrixInterfaces.C.
References Foam::add(), UPstream::buffered, UPstream::commsTypeNames, UPstream::defaultCommsType, Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, UPstream::nonBlocking, patchSchedule(), and UPstream::scheduled.
Referenced by Amul(), residual(), and Tmul().


| void updateMatrixInterfaces | ( | const bool | add, |
| const FieldField< Field, LUType > & | interfaceCoeffs, | ||
| const Field< Type > & | psiif, | ||
| Field< Type > & | result, | ||
| const label | startRequest ) const |
Update interfaced interfaces for matrix operations.
Definition at line 100 of file LduMatrixUpdateMatrixInterfaces.C.
References Foam::add(), UPstream::buffered, UPstream::commsTypeNames, UPstream::defaultCommsType, Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, UPstream::nonBlocking, UPstream::nPollProcInterfaces, patchSchedule(), UPstream::scheduled, UPstream::waitRequests(), and UPstream::waitSomeRequests().
Referenced by Amul(), residual(), and Tmul().


| Foam::tmp< Foam::Field< Type > > H | ( | const Field< Type > & | psi | ) | const |
Definition at line 84 of file LduMatrixOperations.C.
References hasLower(), hasUpper(), lduAddr(), lower(), Foam::New(), psi, and upper().

| Foam::tmp< Foam::Field< Type > > H | ( | const tmp< Field< Type > > & | tpsi | ) | const |
Definition at line 114 of file LduMatrixOperations.C.
References H().

| Foam::tmp< Foam::Field< Type > > faceH | ( | const Field< Type > & | psi | ) | const |
Definition at line 124 of file LduMatrixOperations.C.
References lduAddr(), LduMatrix(), Foam::New(), psi, and UList< T >::size().
Referenced by faceH().


| Foam::tmp< Foam::Field< Type > > faceH | ( | const tmp< Field< Type > > & | tpsi | ) | const |
Definition at line 147 of file LduMatrixOperations.C.
References faceH().

| void operator= | ( | const LduMatrix< Type, DType, LUType > & | ) |
Copy assignment.
| void operator= | ( | LduMatrix< Type, DType, LUType > && | ) |
Move assignment.
| void negate | ( | ) |
Definition at line 217 of file LduMatrixOperations.C.
References negate().
Referenced by negate().


| void operator+= | ( | const LduMatrix< Type, DType, LUType > & | ) |
Definition at line 245 of file LduMatrixOperations.C.
References A, Foam::abort(), asymmetric(), diag(), diagonal(), Foam::FatalError, FatalErrorInFunction, LduMatrix(), lower(), source(), symmetric(), and upper().

| void operator-= | ( | const LduMatrix< Type, DType, LUType > & | ) |
Definition at line 322 of file LduMatrixOperations.C.
References A, Foam::abort(), asymmetric(), diag(), diagonal(), Foam::FatalError, FatalErrorInFunction, LduMatrix(), lower(), source(), symmetric(), and upper().

| void operator*= | ( | const scalarField & | sf | ) |
Definition at line 399 of file LduMatrixOperations.C.
References Foam::abort(), asymmetric(), Foam::FatalError, FatalErrorInFunction, lduAddr(), lower(), operator, symmetric(), and upper().

| void operator*= | ( | scalar | s | ) |
Definition at line 447 of file LduMatrixOperations.C.
References s().

|
friend |
Definition at line 125 of file LduMatrix.H.
|
friend |
Referenced by operator*=().