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 &) | |
Copy constructor. More... | |
lduMatrix (lduMatrix &, bool reuse) | |
Copy constructor or reuse as specified. More... | |
lduMatrix (const lduMesh &, Istream &) | |
Construct given an LDU addressed mesh and an Istream. More... | |
~lduMatrix () | |
Destructor. More... | |
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... | |
scalarField & | lower () |
scalarField & | diag () |
scalarField & | upper () |
scalarField & | lower (const label size) |
scalarField & | diag (const label nCoeffs) |
scalarField & | upper (const label nCoeffs) |
const scalarField & | lower () const |
const scalarField & | diag () const |
const scalarField & | upper () const |
bool | hasDiag () const |
bool | hasUpper () const |
bool | hasLower () const |
bool | diagonal () const |
bool | symmetric () const |
bool | asymmetric () const |
void | sumDiag () |
void | negSumDiag () |
void | sumMagOffDiag (scalarField &sumOff) const |
void | Amul (scalarField &, const tmp< scalarField > &, const FieldField< Field, scalar > &, const lduInterfaceFieldPtrsList &, const direction cmpt) const |
Matrix multiplication with updated interfaces. More... | |
void | Tmul (scalarField &, const tmp< scalarField > &, const FieldField< Field, scalar > &, const lduInterfaceFieldPtrsList &, const direction cmpt) const |
Matrix transpose multiplication with updated interfaces. More... | |
void | sumA (scalarField &, const FieldField< Field, scalar > &, const lduInterfaceFieldPtrsList &) const |
Sum the coefficients on each row of the matrix. More... | |
void | residual (scalarField &rA, const scalarField &psi, const scalarField &source, const FieldField< Field, scalar > &interfaceBouCoeffs, const lduInterfaceFieldPtrsList &interfaces, const direction cmpt) const |
tmp< scalarField > | residual (const scalarField &psi, const scalarField &source, const FieldField< Field, scalar > &interfaceBouCoeffs, const lduInterfaceFieldPtrsList &interfaces, const direction cmpt) const |
void | initMatrixInterfaces (const FieldField< Field, scalar > &interfaceCoeffs, const lduInterfaceFieldPtrsList &interfaces, const scalarField &psiif, scalarField &result, const direction cmpt) const |
Initialise the update of interfaced interfaces. More... | |
void | updateMatrixInterfaces (const FieldField< Field, scalar > &interfaceCoeffs, const lduInterfaceFieldPtrsList &interfaces, const scalarField &psiif, scalarField &result, const direction cmpt) const |
Update interfaced interfaces for matrix operations. More... | |
template<class Type > | |
tmp< Field< Type > > | H (const Field< Type > &) const |
template<class Type > | |
tmp< Field< Type > > | H (const tmp< Field< Type >> &) const |
tmp< scalarField > | H1 () const |
template<class Type > | |
tmp< Field< Type > > | faceH (const Field< Type > &) const |
template<class Type > | |
tmp< Field< Type > > | faceH (const tmp< Field< Type >> &) const |
InfoProxy< lduMatrix > | info () const |
Return info proxy. More... | |
void | operator= (const lduMatrix &) |
void | negate () |
void | operator+= (const lduMatrix &) |
void | operator-= (const lduMatrix &) |
void | operator*= (const scalarField &) |
void | operator*= (scalar) |
void | operator/= (const scalarField &) |
void | operator/= (scalar) |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | H (const Field< Type > &psi) const |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | H (const tmp< Field< Type >> &tpsi) const |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | faceH (const Field< Type > &psi) const |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | faceH (const tmp< Field< Type >> &tpsi) const |
Friends | |
Ostream & | operator<< (Ostream &, const lduMatrix &) |
Ostream & | operator<< (Ostream &, const InfoProxy< lduMatrix > &) |
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.
It might be better if this class were organised as a hierarchy starting from an empty matrix, then deriving diagonal, symmetric and asymmetric matrices.
Definition at line 79 of file lduMatrix.H.
Construct given an LDU addressed mesh.
The coefficients are initially empty for subsequent setting.
Definition at line 43 of file lduMatrix.C.
Construct given an LDU addressed mesh and an Istream.
from which the coefficients are read
Definition at line 123 of file lduMatrix.C.
References lduMatrix::hasDiag().
~lduMatrix | ( | ) |
Destructor.
Definition at line 149 of file lduMatrix.C.
ClassName | ( | "lduMatrix" | ) |
|
inline |
Return the LDU mesh from which the addressing is obtained.
Definition at line 544 of file lduMatrix.H.
Referenced by algebraicPairGAMGAgglomeration::algebraicPairGAMGAgglomeration(), GAMGAgglomeration::New(), and fvMatrix< Type >::solveSegregated().
|
inline |
Return the LDU addressing.
Definition at line 550 of file lduMatrix.H.
References lduMesh::lduAddr().
Referenced by lduMatrix::Amul(), DICPreconditioner::calcReciprocalD(), DILUPreconditioner::calcReciprocalD(), FDICPreconditioner::FDICPreconditioner(), FDICSmoother::FDICSmoother(), lduMatrix::H(), LUscalarMatrix::LUscalarMatrix(), nonBlockingGaussSeidelSmoother::nonBlockingGaussSeidelSmoother(), lduMatrix::patchSchedule(), nonBlockingGaussSeidelSmoother::smooth(), GaussSeidelSmoother::smooth(), symGaussSeidelSmoother::smooth(), and lduMatrix::sumDiag().
|
inline |
Return the patch evaluation schedule.
Definition at line 556 of file lduMatrix.H.
References lduMatrix::lduAddr(), and lduAddressing::patchSchedule().
Referenced by lduMatrix::initMatrixInterfaces().
Foam::scalarField & lower | ( | ) |
Definition at line 168 of file lduMatrix.C.
Referenced by algebraicPairGAMGAgglomeration::algebraicPairGAMGAgglomeration(), lduMatrix::Amul(), DILUPreconditioner::calcReciprocalD(), lduMatrix::faceH(), gaussConvectionScheme< Type >::fvmDiv(), GAMGSolver::GAMGSolver(), lduMatrix::H(), lduMatrix::negSumDiag(), Foam::operator<<(), nonBlockingGaussSeidelSmoother::smooth(), GaussSeidelSmoother::smooth(), symGaussSeidelSmoother::smooth(), lduMatrix::sumDiag(), and lduMatrix::sumMagOffDiag().
Foam::scalarField & diag | ( | ) |
Definition at line 186 of file lduMatrix.C.
Referenced by VoFSolidificationMelting::addSup(), solidificationMelting::addSup(), fvTotalSource::addSupType(), lduMatrix::Amul(), XiFluid::bSolve(), diagonalPreconditioner::diagonalPreconditioner(), EulerD2dt2Scheme< Type >::fvmD2dt2(), backwardDdtScheme< Type >::fvmDdt(), CoEulerDdtScheme< Type >::fvmDdt(), CrankNicolsonDdtScheme< Type >::fvmDdt(), EulerDdtScheme< Type >::fvmDdt(), localEulerDdtScheme< Type >::fvmDdt(), SLTSDdtScheme< Type >::fvmDdt(), GAMGSolver::GAMGSolver(), nonBlockingGaussSeidelSmoother::nonBlockingGaussSeidelSmoother(), Foam::operator<<(), incompressibleDenseParticleFluid::prePredictor(), fvMatrix< Type >::setValues(), nonBlockingGaussSeidelSmoother::smooth(), GaussSeidelSmoother::smooth(), symGaussSeidelSmoother::smooth(), fvMatrix< Type >::solveSegregated(), and lduMatrix::sumDiag().
Foam::scalarField & upper | ( | ) |
Definition at line 197 of file lduMatrix.C.
Referenced by algebraicPairGAMGAgglomeration::algebraicPairGAMGAgglomeration(), lduMatrix::Amul(), DICPreconditioner::calcReciprocalD(), DILUPreconditioner::calcReciprocalD(), lduMatrix::faceH(), FDICPreconditioner::FDICPreconditioner(), FDICSmoother::FDICSmoother(), gaussConvectionScheme< Type >::fvmDiv(), gaussLaplacianScheme< Type, GType >::fvmLaplacianUncorrected(), lduMatrix::H(), lduMatrix::negSumDiag(), Foam::operator<<(), nonBlockingGaussSeidelSmoother::smooth(), GaussSeidelSmoother::smooth(), symGaussSeidelSmoother::smooth(), lduMatrix::sumDiag(), and lduMatrix::sumMagOffDiag().
Foam::scalarField & lower | ( | const label | size | ) |
Definition at line 215 of file lduMatrix.C.
Foam::scalarField & diag | ( | const label | nCoeffs | ) |
Definition at line 233 of file lduMatrix.C.
Foam::scalarField & upper | ( | const label | nCoeffs | ) |
Definition at line 244 of file lduMatrix.C.
const Foam::scalarField & lower | ( | ) | const |
Definition at line 262 of file lduMatrix.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
const Foam::scalarField & diag | ( | ) | const |
Definition at line 282 of file lduMatrix.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
const Foam::scalarField & upper | ( | ) | const |
Definition at line 295 of file lduMatrix.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
|
inline |
Definition at line 580 of file lduMatrix.H.
Referenced by lduMatrix::lduMatrix(), Foam::operator<<(), fvMatrix< Type >::setValues(), and compressibleVoF::thermophysicalPredictor().
|
inline |
Definition at line 585 of file lduMatrix.H.
Referenced by Foam::operator<<().
|
inline |
Definition at line 590 of file lduMatrix.H.
Referenced by algebraicPairGAMGAgglomeration::algebraicPairGAMGAgglomeration(), and Foam::operator<<().
|
inline |
Definition at line 595 of file lduMatrix.H.
References UPstream::parRun(), and List< T >::size().
Referenced by lduMatrix::solver::New().
|
inline |
Definition at line 609 of file lduMatrix.H.
References UPstream::parRun(), and List< T >::size().
Referenced by lduMatrix::preconditioner::New(), lduMatrix::solver::New(), and lduMatrix::smoother::New().
|
inline |
Definition at line 623 of file lduMatrix.H.
References UPstream::parRun(), and List< T >::size().
Referenced by lduMatrix::preconditioner::New(), lduMatrix::solver::New(), and lduMatrix::smoother::New().
void sumDiag | ( | ) |
Definition at line 33 of file lduMatrixOperations.C.
References lduMatrix::diag(), lduMatrix::lduAddr(), lduMatrix::lower(), lduAddressing::lowerAddr(), UList< T >::size(), lduMatrix::upper(), and lduAddressing::upperAddr().
void negSumDiag | ( | ) |
Definition at line 55 of file lduMatrixOperations.C.
References Foam::diag(), lduMatrix::lower(), UList< T >::size(), and lduMatrix::upper().
Referenced by gaussConvectionScheme< Type >::fvmDiv(), and gaussLaplacianScheme< Type, GType >::fvmLaplacianUncorrected().
void sumMagOffDiag | ( | scalarField & | sumOff | ) | const |
Definition at line 77 of file lduMatrixOperations.C.
References lduMatrix::lower(), Foam::mag(), UList< T >::size(), and lduMatrix::upper().
void Amul | ( | scalarField & | Apsi, |
const tmp< scalarField > & | tpsi, | ||
const FieldField< Field, scalar > & | interfaceBouCoeffs, | ||
const lduInterfaceFieldPtrsList & | interfaces, | ||
const direction | cmpt | ||
) | const |
Matrix multiplication with updated interfaces.
Definition at line 34 of file lduMatrixATmul.C.
References UList< T >::begin(), tmp< T >::clear(), lduMatrix::diag(), lduMatrix::initMatrixInterfaces(), lduMatrix::lduAddr(), lduMatrix::lower(), lduAddressing::lowerAddr(), psi, List< T >::size(), lduMatrix::updateMatrixInterfaces(), lduMatrix::upper(), and lduAddressing::upperAddr().
Referenced by GAMGSolver::solve().
void Tmul | ( | scalarField & | Tpsi, |
const tmp< scalarField > & | tpsi, | ||
const FieldField< Field, scalar > & | interfaceIntCoeffs, | ||
const lduInterfaceFieldPtrsList & | interfaces, | ||
const direction | cmpt | ||
) | const |
Matrix transpose multiplication with updated interfaces.
Definition at line 95 of file lduMatrixATmul.C.
References UList< T >::begin(), tmp< T >::clear(), Foam::diag(), and psi.
void sumA | ( | scalarField & | sumA, |
const FieldField< Field, scalar > & | interfaceBouCoeffs, | ||
const lduInterfaceFieldPtrsList & | interfaces | ||
) | const |
Sum the coefficients on each row of the matrix.
Definition at line 154 of file lduMatrixATmul.C.
References UList< T >::begin(), Foam::diag(), forAll, patchi, and UPtrList< T >::set().
void residual | ( | scalarField & | rA, |
const scalarField & | psi, | ||
const scalarField & | source, | ||
const FieldField< Field, scalar > & | interfaceBouCoeffs, | ||
const lduInterfaceFieldPtrsList & | interfaces, | ||
const direction | cmpt | ||
) | const |
Definition at line 203 of file lduMatrixATmul.C.
References UList< T >::begin(), Foam::diag(), forAll, patchi, psi, PtrList< T >::set(), UPtrList< T >::set(), and UPtrList< T >::size().
Referenced by fvMatrix< Type >::residual().
Foam::tmp< Foam::scalarField > residual | ( | const scalarField & | psi, |
const scalarField & | source, | ||
const FieldField< Field, scalar > & | interfaceBouCoeffs, | ||
const lduInterfaceFieldPtrsList & | interfaces, | ||
const direction | cmpt | ||
) | const |
Definition at line 283 of file lduMatrixATmul.C.
References psi, tmp< T >::ref(), and List< T >::size().
void initMatrixInterfaces | ( | const FieldField< Field, scalar > & | interfaceCoeffs, |
const lduInterfaceFieldPtrsList & | interfaces, | ||
const scalarField & | psiif, | ||
scalarField & | result, | ||
const direction | cmpt | ||
) | const |
Initialise the update of interfaced interfaces.
for matrix operations
Definition at line 30 of file lduMatrixUpdateMatrixInterfaces.C.
References UPstream::blocking, UPstream::commsTypeNames, UPstream::defaultCommsType, Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, UPstream::nonBlocking, lduMatrix::patchSchedule(), UPstream::scheduled, UPtrList< T >::set(), UPtrList< T >::size(), and List< T >::size().
Referenced by lduMatrix::Amul(), nonBlockingGaussSeidelSmoother::smooth(), GaussSeidelSmoother::smooth(), and symGaussSeidelSmoother::smooth().
void updateMatrixInterfaces | ( | const FieldField< Field, scalar > & | interfaceCoeffs, |
const lduInterfaceFieldPtrsList & | interfaces, | ||
const scalarField & | psiif, | ||
scalarField & | result, | ||
const direction | cmpt | ||
) | const |
Update interfaced interfaces for matrix operations.
Definition at line 96 of file lduMatrixUpdateMatrixInterfaces.C.
References UPstream::blocking, UPstream::commsTypeNames, UPstream::defaultCommsType, Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, UPstream::nonBlocking, UPstream::nPollProcInterfaces, UPstream::parRun(), UPstream::resetRequests(), UPstream::scheduled, UPtrList< T >::set(), UPtrList< T >::size(), List< T >::size(), and UPstream::waitRequests().
Referenced by lduMatrix::Amul(), nonBlockingGaussSeidelSmoother::smooth(), GaussSeidelSmoother::smooth(), and symGaussSeidelSmoother::smooth().
Foam::tmp< Foam::scalarField > H1 | ( | ) | const |
Definition at line 298 of file lduMatrixATmul.C.
References UList< T >::begin(), and tmp< T >::ref().
Referenced by fvMatrix< Type >::H1().
Return info proxy.
Used to print matrix information to a stream
Definition at line 736 of file lduMatrix.H.
void operator= | ( | const lduMatrix & | A | ) |
Definition at line 103 of file lduMatrixOperations.C.
References A, Foam::abort(), Foam::diag(), and Foam::FatalError.
Referenced by fvMatrix< Type >::operator=().
void negate | ( | ) |
Definition at line 140 of file lduMatrixOperations.C.
Referenced by fvMatrix< Type >::negate().
void operator+= | ( | const lduMatrix & | A | ) |
Definition at line 159 of file lduMatrixOperations.C.
References A, Foam::diag(), Foam::endl(), Foam::nl, and WarningInFunction.
Referenced by fvMatrix< Type >::operator+=().
void operator-= | ( | const lduMatrix & | A | ) |
Definition at line 238 of file lduMatrixOperations.C.
References A, Foam::diag(), Foam::endl(), Foam::nl, and WarningInFunction.
Referenced by fvMatrix< Type >::operator-=().
void operator*= | ( | const scalarField & | sf | ) |
Definition at line 317 of file lduMatrixOperations.C.
References sf(), and List< T >::size().
Referenced by fvMatrix< Type >::operator*=().
void operator*= | ( | scalar | s | ) |
Definition at line 347 of file lduMatrixOperations.C.
References s().
void operator/= | ( | const scalarField & | sf | ) |
Definition at line 366 of file lduMatrixOperations.C.
References sf(), and List< T >::size().
Referenced by fvMatrix< Type >::operator/=().
void operator/= | ( | scalar | s | ) |
Definition at line 396 of file lduMatrixOperations.C.
References s().
Foam::tmp<Foam::Field<Type> > H | ( | const Field< Type > & | psi | ) | const |
Definition at line 34 of file lduMatrixTemplates.C.
References UList< T >::begin(), lduMatrix::lduAddr(), lduMatrix::lower(), lduAddressing::lowerAddr(), psi, tmp< T >::ref(), List< T >::size(), lduMatrix::upper(), lduAddressing::upperAddr(), and Foam::Zero.
Foam::tmp<Foam::Field<Type> > H | ( | const tmp< Field< Type >> & | tpsi | ) | const |
Definition at line 69 of file lduMatrixTemplates.C.
Foam::tmp<Foam::Field<Type> > faceH | ( | const Field< Type > & | psi | ) | const |
Definition at line 79 of file lduMatrixTemplates.C.
References Foam::exit(), Foam::FatalError, FatalErrorInFunction, lduMatrix::lower(), psi, tmp< T >::ref(), UList< T >::size(), List< T >::size(), and lduMatrix::upper().
Foam::tmp<Foam::Field<Type> > faceH | ( | const tmp< Field< Type >> & | tpsi | ) | const |
Definition at line 115 of file lduMatrixTemplates.C.