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...
Classes | |
class | preconditioner |
Abstract base-class for LduMatrix preconditioners. More... | |
class | smoother |
Abstract base-class for LduMatrix smoothers. More... | |
class | solver |
Abstract base-class for LduMatrix solvers. More... | |
Public Member Functions | |
ClassName ("LduMatrix") | |
LduMatrix (const lduMesh &) | |
Construct given an LDU addressed mesh. More... | |
LduMatrix (const LduMatrix< Type, DType, LUType > &) | |
Copy constructor. More... | |
LduMatrix (LduMatrix< Type, DType, LUType > &, bool reuse) | |
Copy constructor or re-use as specified. More... | |
LduMatrix (const lduMesh &, Istream &) | |
Construct given an LDU addressed mesh and an Istream. More... | |
~LduMatrix () | |
const lduMesh & | mesh () const |
Return the LDU mesh from which the addressing is obtained. More... | |
const lduAddressing & | lduAddr () const |
Return the LDU addressing. More... | |
const lduSchedule & | patchSchedule () const |
Return the patch evaluation schedule. More... | |
const LduInterfaceFieldPtrsList< Type > & | interfaces () const |
Return interfaces. More... | |
LduInterfaceFieldPtrsList< Type > & | interfaces () |
Return interfaces. More... | |
Field< DType > & | diag () |
Field< LUType > & | upper () |
Field< LUType > & | lower () |
Field< Type > & | source () |
FieldField< Field, LUType > & | interfacesUpper () |
FieldField< Field, LUType > & | interfacesLower () |
const Field< DType > & | diag () const |
const Field< LUType > & | upper () const |
const Field< LUType > & | lower () const |
const Field< Type > & | source () const |
const FieldField< Field, LUType > & | interfacesUpper () const |
const FieldField< Field, LUType > & | interfacesLower () const |
bool | hasDiag () const |
bool | hasUpper () const |
bool | hasLower () const |
bool | hasSource () const |
bool | diagonal () const |
bool | symmetric () const |
bool | asymmetric () const |
void | sumDiag () |
void | negSumDiag () |
void | sumMagOffDiag (Field< LUType > &sumOff) const |
void | Amul (Field< Type > &, const tmp< Field< Type >> &) const |
Matrix multiplication. More... | |
void | Tmul (Field< Type > &, const tmp< Field< Type >> &) const |
Matrix transpose multiplication. More... | |
void | sumA (Field< Type > &) const |
Sum the coefficients on each row of the matrix. More... | |
void | residual (Field< Type > &rA, const Field< Type > &psi) const |
tmp< Field< Type > > | residual (const Field< Type > &psi) const |
void | initMatrixInterfaces (const FieldField< Field, LUType > &interfaceCoeffs, const Field< Type > &psiif, Field< Type > &result) const |
Initialise the update of interfaced interfaces. More... | |
void | updateMatrixInterfaces (const FieldField< Field, LUType > &interfaceCoeffs, const Field< Type > &psiif, Field< Type > &result) const |
Update interfaced interfaces for matrix operations. More... | |
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 > &) |
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 69 of file LduMatrix.H.
Construct given an LDU addressed mesh.
The coefficients are initially empty for subsequent setting.
Definition at line 32 of file LduMatrix.C.
Referenced by LduMatrix< Type, DType, LUType >::preconditioner::preconditionT().
Copy constructor or re-use as specified.
Construct given an LDU addressed mesh and an Istream.
from which the coefficients are read
Definition at line 144 of file LduMatrix.C.
~LduMatrix | ( | ) |
Definition at line 163 of file LduMatrix.C.
Referenced by LduMatrix< Type, DType, LUType >::preconditioner::preconditionT().
ClassName | ( | "LduMatrix< Type, DType, LUType >" | ) |
Referenced by LduMatrix< Type, DType, LUType >::preconditioner::preconditionT().
|
inline |
Return the LDU mesh from which the addressing is obtained.
Definition at line 492 of file LduMatrix.H.
|
inline |
Return the LDU addressing.
Definition at line 498 of file LduMatrix.H.
Referenced by TDILUPreconditioner< Type, DType, LUType >::calcInvD(), LduMatrix< Type, DType, LUType >::diag(), LduMatrix< Type, DType, LUType >::lower(), LduMatrix< Type, DType, LUType >::patchSchedule(), TGaussSeidelSmoother< Type, DType, LUType >::smooth(), LduMatrix< Type, DType, LUType >::source(), and LduMatrix< Type, DType, LUType >::upper().
|
inline |
Return the patch evaluation schedule.
Definition at line 504 of file LduMatrix.H.
References LduMatrix< Type, DType, LUType >::lduAddr(), and lduAddressing::patchSchedule().
|
inline |
Return interfaces.
Definition at line 510 of file LduMatrix.H.
Referenced by TGaussSeidelSmoother< Type, DType, LUType >::smooth().
|
inline |
Return interfaces.
Definition at line 516 of file LduMatrix.H.
References LduMatrix< Type, DType, LUType >::diag(), LduMatrix< Type, DType, LUType >::lower(), LduMatrix< Type, DType, LUType >::source(), and LduMatrix< Type, DType, LUType >::upper().
Foam::Field< DType > & diag | ( | ) |
Definition at line 190 of file LduMatrix.C.
References LduMatrix< Type, DType, LUType >::lduAddr(), lduAddressing::size(), and Foam::Zero.
Referenced by LduMatrix< Type, DType, LUType >::interfaces(), LduMatrix< Type, DType, LUType >::interfacesLower(), LduMatrix< Type, DType, LUType >::operator+=(), LduMatrix< Type, DType, LUType >::operator-=(), LduMatrix< Type, DType, LUType >::operator=(), fvMatrix< Type >::solveCoupled(), and TGaussSeidelSmoother< Type, DType, LUType >::TGaussSeidelSmoother().
Foam::Field< LUType > & upper | ( | ) |
Definition at line 202 of file LduMatrix.C.
References LduMatrix< Type, DType, LUType >::lduAddr(), lduAddressing::lowerAddr(), UList< T >::size(), and Foam::Zero.
Referenced by TDILUPreconditioner< Type, DType, LUType >::calcInvD(), LduMatrix< Type, DType, LUType >::faceH(), LduMatrix< Type, DType, LUType >::interfaces(), LduMatrix< Type, DType, LUType >::interfacesLower(), LduMatrix< Type, DType, LUType >::negSumDiag(), LduMatrix< Type, DType, LUType >::operator+=(), LduMatrix< Type, DType, LUType >::operator-=(), LduMatrix< Type, DType, LUType >::operator=(), TGaussSeidelSmoother< Type, DType, LUType >::smooth(), LduMatrix< Type, DType, LUType >::sumDiag(), and LduMatrix< Type, DType, LUType >::sumMagOffDiag().
Foam::Field< LUType > & lower | ( | ) |
Definition at line 225 of file LduMatrix.C.
References LduMatrix< Type, DType, LUType >::lduAddr(), lduAddressing::lowerAddr(), UList< T >::size(), and Foam::Zero.
Referenced by TDILUPreconditioner< Type, DType, LUType >::calcInvD(), LduMatrix< Type, DType, LUType >::faceH(), LduMatrix< Type, DType, LUType >::interfaces(), LduMatrix< Type, DType, LUType >::interfacesLower(), LduMatrix< Type, DType, LUType >::negSumDiag(), LduMatrix< Type, DType, LUType >::operator+=(), LduMatrix< Type, DType, LUType >::operator-=(), LduMatrix< Type, DType, LUType >::operator=(), TGaussSeidelSmoother< Type, DType, LUType >::smooth(), LduMatrix< Type, DType, LUType >::sumDiag(), and LduMatrix< Type, DType, LUType >::sumMagOffDiag().
Foam::Field< Type > & source | ( | ) |
Definition at line 248 of file LduMatrix.C.
References LduMatrix< Type, DType, LUType >::lduAddr(), lduAddressing::size(), and Foam::Zero.
Referenced by LduMatrix< Type, DType, LUType >::interfaces(), LduMatrix< Type, DType, LUType >::interfacesLower(), LduMatrix< Type, DType, LUType >::operator+=(), LduMatrix< Type, DType, LUType >::operator-=(), LduMatrix< Type, DType, LUType >::operator=(), and TGaussSeidelSmoother< Type, DType, LUType >::smooth().
|
inline |
Definition at line 529 of file LduMatrix.H.
Referenced by TGaussSeidelSmoother< Type, DType, LUType >::smooth().
|
inline |
Definition at line 534 of file LduMatrix.H.
References LduMatrix< Type, DType, LUType >::diag(), LduMatrix< Type, DType, LUType >::lower(), LduMatrix< Type, DType, LUType >::source(), and LduMatrix< Type, DType, LUType >::upper().
const Foam::Field< DType > & diag | ( | ) | const |
Definition at line 260 of file LduMatrix.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
const Foam::Field< LUType > & upper | ( | ) | const |
Definition at line 274 of file LduMatrix.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
const Foam::Field< LUType > & lower | ( | ) | const |
Definition at line 295 of file LduMatrix.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
const Foam::Field< Type > & source | ( | ) | const |
Definition at line 316 of file LduMatrix.C.
References Foam::abort(), IOstream::check(), Foam::endl(), Foam::FatalError, and FatalErrorInFunction.
|
inline |
Definition at line 545 of file LduMatrix.H.
|
inline |
Definition at line 550 of file LduMatrix.H.
|
inline |
Definition at line 556 of file LduMatrix.H.
|
inline |
Definition at line 561 of file LduMatrix.H.
|
inline |
Definition at line 566 of file LduMatrix.H.
|
inline |
Definition at line 571 of file LduMatrix.H.
|
inline |
Definition at line 576 of file LduMatrix.H.
References UPstream::parRun(), and List< T >::size().
Referenced by LduMatrix< Type, DType, LUType >::solver::New(), LduMatrix< Type, DType, LUType >::operator+=(), and LduMatrix< Type, DType, LUType >::operator-=().
|
inline |
Definition at line 590 of file LduMatrix.H.
References UPstream::parRun(), and List< T >::size().
Referenced by LduMatrix< Type, DType, LUType >::solver::New(), LduMatrix< Type, DType, LUType >::smoother::New(), LduMatrix< Type, DType, LUType >::operator+=(), and LduMatrix< Type, DType, LUType >::operator-=().
|
inline |
Definition at line 604 of file LduMatrix.H.
References LduMatrix< Type, DType, LUType >::Amul(), LduMatrix< Type, DType, LUType >::faceH(), LduMatrix< Type, DType, LUType >::H(), LduMatrix< Type, DType, LUType >::initMatrixInterfaces(), LduMatrix< Type, DType, LUType >::negate(), LduMatrix< Type, DType, LUType >::negSumDiag(), LduMatrix< Type, DType, LUType >::operator*=(), LduMatrix< Type, DType, LUType >::operator+=(), LduMatrix< Type, DType, LUType >::operator-=(), LduMatrix< Type, DType, LUType >::operator=(), UPstream::parRun(), psi, LduMatrix< Type, DType, LUType >::residual(), List< T >::size(), LduMatrix< Type, DType, LUType >::sumA(), LduMatrix< Type, DType, LUType >::sumDiag(), LduMatrix< Type, DType, LUType >::sumMagOffDiag(), LduMatrix< Type, DType, LUType >::Tmul(), and LduMatrix< Type, DType, LUType >::updateMatrixInterfaces().
Referenced by LduMatrix< Type, DType, LUType >::solver::New(), LduMatrix< Type, DType, LUType >::smoother::New(), LduMatrix< Type, DType, LUType >::operator+=(), and LduMatrix< Type, DType, LUType >::operator-=().
void sumDiag | ( | ) |
Definition at line 31 of file LduMatrixOperations.C.
References Foam::diag(), LduMatrix< Type, DType, LUType >::lower(), UList< T >::size(), and LduMatrix< Type, DType, LUType >::upper().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric().
void negSumDiag | ( | ) |
Definition at line 54 of file LduMatrixOperations.C.
References Foam::diag(), LduMatrix< Type, DType, LUType >::lower(), UList< T >::size(), LduMatrix< Type, DType, LUType >::sumMagOffDiag(), and LduMatrix< Type, DType, LUType >::upper().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric().
void sumMagOffDiag | ( | Field< LUType > & | sumOff | ) | const |
Definition at line 78 of file LduMatrixOperations.C.
References Foam::cmptMag(), LduMatrix< Type, DType, LUType >::lower(), UList< T >::size(), and LduMatrix< Type, DType, LUType >::upper().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric(), and LduMatrix< Type, DType, LUType >::negSumDiag().
Matrix multiplication.
Definition at line 64 of file LduMatrixATmul.C.
References UList< Type >::begin(), Foam::diag(), Foam::dot(), psi, and LduMatrix< Type, DType, LUType >::Tmul().
Referenced by Amultiplier< Type, LUType >::addAmul(), and LduMatrix< Type, DType, LUType >::asymmetric().
Matrix transpose multiplication.
Definition at line 118 of file LduMatrixATmul.C.
References UList< Type >::begin(), Foam::diag(), Foam::dot(), psi, and LduMatrix< Type, DType, LUType >::sumA().
Referenced by LduMatrix< Type, DType, LUType >::Amul(), and LduMatrix< Type, DType, LUType >::asymmetric().
void sumA | ( | Field< Type > & | sumA | ) | const |
Sum the coefficients on each row of the matrix.
Definition at line 171 of file LduMatrixATmul.C.
References UList< Type >::begin(), Foam::diag(), Foam::dot(), forAll, patchi, and LduMatrix< Type, DType, LUType >::residual().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric(), and LduMatrix< Type, DType, LUType >::Tmul().
Definition at line 219 of file LduMatrixATmul.C.
References UList< Type >::begin(), Foam::diag(), Foam::dot(), forAll, patchi, and source().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric(), and LduMatrix< Type, DType, LUType >::sumA().
Foam::tmp< Foam::Field< Type > > residual | ( | const Field< Type > & | psi | ) | const |
Definition at line 284 of file LduMatrixATmul.C.
References psi, tmp< T >::ref(), and List< Type >::size().
void initMatrixInterfaces | ( | 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 33 of file LduMatrixUpdateMatrixInterfaces.C.
References Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, List< T >::size(), and LduMatrix< Type, DType, LUType >::updateMatrixInterfaces().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric(), and TGaussSeidelSmoother< Type, DType, LUType >::smooth().
void updateMatrixInterfaces | ( | const FieldField< Field, LUType > & | interfaceCoeffs, |
const Field< Type > & | psiif, | ||
Field< Type > & | result | ||
) | const |
Update interfaced interfaces for matrix operations.
Definition at line 98 of file LduMatrixUpdateMatrixInterfaces.C.
References Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, and List< T >::size().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric(), LduMatrix< Type, DType, LUType >::initMatrixInterfaces(), and TGaussSeidelSmoother< Type, DType, LUType >::smooth().
Foam::tmp< Foam::Field< Type > > H | ( | const Field< Type > & | psi | ) | const |
Definition at line 103 of file LduMatrixOperations.C.
References UList< Type >::begin(), and Foam::Zero.
Referenced by LduMatrix< Type, DType, LUType >::asymmetric().
Foam::tmp< Foam::Field< Type > > H | ( | const tmp< Field< Type >> & | tpsi | ) | const |
Definition at line 138 of file LduMatrixOperations.C.
Foam::tmp< Foam::Field< Type > > faceH | ( | const Field< Type > & | psi | ) | const |
Definition at line 148 of file LduMatrixOperations.C.
References LduMatrix< Type, DType, LUType >::lower(), List< T >::size(), UList< T >::size(), and LduMatrix< Type, DType, LUType >::upper().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric().
Foam::tmp< Foam::Field< Type > > faceH | ( | const tmp< Field< Type >> & | tpsi | ) | const |
Definition at line 171 of file LduMatrixOperations.C.
Definition at line 182 of file LduMatrixOperations.C.
References Foam::abort(), Foam::diag(), LduMatrix< Type, DType, LUType >::diag(), Foam::FatalError, FatalErrorInFunction, LduMatrix< Type, DType, LUType >::lower(), source(), LduMatrix< Type, DType, LUType >::source(), and LduMatrix< Type, DType, LUType >::upper().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric().
void negate | ( | ) |
Definition at line 227 of file LduMatrixOperations.C.
References Foam::negate().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric().
Definition at line 255 of file LduMatrixOperations.C.
References Foam::abort(), LduMatrix< Type, DType, LUType >::asymmetric(), Foam::diag(), LduMatrix< Type, DType, LUType >::diag(), LduMatrix< Type, DType, LUType >::diagonal(), Foam::FatalError, FatalErrorInFunction, LduMatrix< Type, DType, LUType >::lower(), source(), LduMatrix< Type, DType, LUType >::source(), LduMatrix< Type, DType, LUType >::symmetric(), and LduMatrix< Type, DType, LUType >::upper().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric().
Definition at line 332 of file LduMatrixOperations.C.
References Foam::abort(), LduMatrix< Type, DType, LUType >::asymmetric(), Foam::diag(), LduMatrix< Type, DType, LUType >::diag(), LduMatrix< Type, DType, LUType >::diagonal(), Foam::FatalError, FatalErrorInFunction, LduMatrix< Type, DType, LUType >::lower(), source(), LduMatrix< Type, DType, LUType >::source(), LduMatrix< Type, DType, LUType >::symmetric(), and LduMatrix< Type, DType, LUType >::upper().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric().
void operator*= | ( | const scalarField & | sf | ) |
Definition at line 410 of file LduMatrixOperations.C.
References Foam::abort(), Foam::FatalError, FatalErrorInFunction, sf(), and List< T >::size().
Referenced by LduMatrix< Type, DType, LUType >::asymmetric().
void operator*= | ( | scalar | s | ) |
Definition at line 457 of file LduMatrixOperations.C.
References s().
|
friend |
Definition at line 109 of file LduMatrix.H.