Data Structures | Public Member Functions | Private Attributes | Friends
LduMatrix Class Reference

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...

Inheritance diagram for LduMatrix:
Inheritance graph
[legend]
Collaboration diagram for LduMatrix:
Collaboration graph
[legend]

Data Structures

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 > &)
 Construct as copy. More...
 
 LduMatrix (LduMatrix< Type, DType, LUType > &, bool reUse)
 Construct as copy or re-use as specified. More...
 
 LduMatrix (const lduMesh &, Istream &)
 Construct given an LDU addressed mesh and an Istream. More...
 
 ~LduMatrix ()
 
const lduMeshmesh () const
 Return the LDU mesh from which the addressing is obtained. More...
 
const lduAddressinglduAddr () const
 Return the LDU addressing. More...
 
const lduSchedulepatchSchedule () 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)
 

Private Attributes

const lduMeshlduMesh_
 LDU mesh reference. More...
 
Field< DType > * diagPtr_
 Diagonal coefficients. More...
 
Field< LUType > * upperPtr_
 Off-diagonal coefficients. More...
 
Field< LUType > * lowerPtr_
 
Field< Type > * sourcePtr_
 Source. More...
 
LduInterfaceFieldPtrsList< Type > interfaces_
 Field interfaces (processor patches etc.) More...
 
FieldField< Field, LUType > interfacesUpper_
 Off-diagonal coefficients for interfaces. More...
 
FieldField< Field, LUType > interfacesLower_
 

Friends

class SolverPerformance< Type >
 
Ostreamoperator (Ostream &, const LduMatrix< Type, DType, LUType > &)
 

Detailed Description

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.

Note
It might be better if this class were organised as a hierachy starting from an empty matrix, then deriving diagonal, symmetric and asymmetric matrices.
Source files

Definition at line 69 of file LduMatrix.H.

Constructor & Destructor Documentation

◆ LduMatrix() [1/4]

LduMatrix ( const lduMesh )

Construct given an LDU addressed mesh.

The coefficients are initially empty for subsequent setting.

◆ LduMatrix() [2/4]

LduMatrix ( const LduMatrix< Type, DType, LUType > &  )

Construct as copy.

◆ LduMatrix() [3/4]

LduMatrix ( LduMatrix< Type, DType, LUType > &  ,
bool  reUse 
)

Construct as copy or re-use as specified.

◆ LduMatrix() [4/4]

LduMatrix ( const lduMesh ,
Istream  
)

Construct given an LDU addressed mesh and an Istream.

from which the coefficients are read

◆ ~LduMatrix()

~LduMatrix ( )

Definition at line 163 of file LduMatrix.C.

Member Function Documentation

◆ ClassName()

ClassName ( "LduMatrix"  )

◆ mesh()

const lduMesh& mesh ( ) const
inline

Return the LDU mesh from which the addressing is obtained.

Definition at line 489 of file LduMatrix.H.

◆ lduAddr()

const lduAddressing& lduAddr ( ) const
inline

Return the LDU addressing.

Definition at line 495 of file LduMatrix.H.

Referenced by TDILUPreconditioner< Type, DType, LUType >::calcInvD(), LduMatrix< Type, DType, LUType >::patchSchedule(), and TGaussSeidelSmoother< Type, DType, LUType >::smooth().

Here is the caller graph for this function:

◆ patchSchedule()

const lduSchedule& patchSchedule ( ) const
inline

Return the patch evaluation schedule.

Definition at line 501 of file LduMatrix.H.

◆ interfaces() [1/2]

const LduInterfaceFieldPtrsList<Type>& interfaces ( ) const
inline

Return interfaces.

Definition at line 507 of file LduMatrix.H.

Referenced by TGaussSeidelSmoother< Type, DType, LUType >::smooth().

Here is the caller graph for this function:

◆ interfaces() [2/2]

LduInterfaceFieldPtrsList<Type>& interfaces ( )
inline

Return interfaces.

Definition at line 513 of file LduMatrix.H.

◆ diag() [1/2]

Foam::Field< DType > & diag ( )

◆ upper() [1/2]

Foam::Field< LUType > & upper ( )

◆ lower() [1/2]

Foam::Field< LUType > & lower ( )

◆ source() [1/2]

Foam::Field< Type > & source ( )

Definition at line 248 of file LduMatrix.C.

Referenced by TGaussSeidelSmoother< Type, DType, LUType >::smooth().

Here is the caller graph for this function:

◆ interfacesUpper() [1/2]

FieldField<Field, LUType>& interfacesUpper ( )
inline

Definition at line 526 of file LduMatrix.H.

Referenced by TGaussSeidelSmoother< Type, DType, LUType >::smooth().

Here is the caller graph for this function:

◆ interfacesLower() [1/2]

FieldField<Field, LUType>& interfacesLower ( )
inline

Definition at line 531 of file LduMatrix.H.

◆ diag() [2/2]

const Foam::Field< DType > & diag ( ) const

Definition at line 260 of file LduMatrix.C.

◆ upper() [2/2]

const Foam::Field< LUType > & upper ( ) const

Definition at line 274 of file LduMatrix.C.

◆ lower() [2/2]

const Foam::Field< LUType > & lower ( ) const

Definition at line 295 of file LduMatrix.C.

◆ source() [2/2]

const Foam::Field< Type > & source ( ) const

Definition at line 316 of file LduMatrix.C.

◆ interfacesUpper() [2/2]

const FieldField<Field, LUType>& interfacesUpper ( ) const
inline

Definition at line 542 of file LduMatrix.H.

◆ interfacesLower() [2/2]

const FieldField<Field, LUType>& interfacesLower ( ) const
inline

Definition at line 547 of file LduMatrix.H.

◆ hasDiag()

bool hasDiag ( ) const
inline

Definition at line 553 of file LduMatrix.H.

◆ hasUpper()

bool hasUpper ( ) const
inline

Definition at line 558 of file LduMatrix.H.

◆ hasLower()

bool hasLower ( ) const
inline

Definition at line 563 of file LduMatrix.H.

◆ hasSource()

bool hasSource ( ) const
inline

Definition at line 568 of file LduMatrix.H.

◆ diagonal()

bool diagonal ( ) const
inline

Definition at line 573 of file LduMatrix.H.

Referenced by LduMatrix::solver::New().

Here is the caller graph for this function:

◆ symmetric()

bool symmetric ( ) const
inline

Definition at line 578 of file LduMatrix.H.

Referenced by LduMatrix::solver::New(), LduMatrix::smoother::New(), and LduMatrix::preconditioner::New().

Here is the caller graph for this function:

◆ asymmetric()

bool asymmetric ( ) const
inline

Definition at line 583 of file LduMatrix.H.

Referenced by LduMatrix::solver::New(), LduMatrix::smoother::New(), and LduMatrix::preconditioner::New().

Here is the caller graph for this function:

◆ sumDiag()

void sumDiag ( )

Definition at line 31 of file LduMatrixOperations.C.

◆ negSumDiag()

void negSumDiag ( )

Definition at line 49 of file LduMatrixOperations.C.

◆ sumMagOffDiag()

void sumMagOffDiag ( Field< LUType > &  sumOff) const

Definition at line 68 of file LduMatrixOperations.C.

◆ Amul()

void Amul ( Field< Type > &  Apsi,
const tmp< Field< Type > > &  tpsi 
) const

Matrix multiplication.

Definition at line 64 of file LduMatrixATmul.C.

◆ Tmul()

void Tmul ( Field< Type > &  Tpsi,
const tmp< Field< Type > > &  tpsi 
) const

Matrix transpose multiplication.

Definition at line 118 of file LduMatrixATmul.C.

◆ sumA()

void sumA ( Field< Type > &  sumA) const

Sum the coefficients on each row of the matrix.

Definition at line 171 of file LduMatrixATmul.C.

◆ residual() [1/2]

void residual ( Field< Type > &  rA,
const Field< Type > &  psi 
) const

Definition at line 219 of file LduMatrixATmul.C.

◆ residual() [2/2]

Foam::tmp< Foam::Field< Type > > residual ( const Field< Type > &  psi) const

Definition at line 284 of file LduMatrixATmul.C.

◆ initMatrixInterfaces()

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.

Referenced by TGaussSeidelSmoother< Type, DType, LUType >::smooth().

Here is the caller graph for this function:

◆ updateMatrixInterfaces()

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.

Referenced by TGaussSeidelSmoother< Type, DType, LUType >::smooth().

Here is the caller graph for this function:

◆ H() [1/2]

tmp<Field<Type> > H ( const Field< Type > &  ) const

◆ H() [2/2]

tmp<Field<Type> > H ( const tmp< Field< Type > > &  ) const

◆ faceH() [1/2]

tmp<Field<Type> > faceH ( const Field< Type > &  ) const

◆ faceH() [2/2]

tmp<Field<Type> > faceH ( const tmp< Field< Type > > &  ) const

◆ operator=()

void operator= ( const LduMatrix< Type, DType, LUType > &  )

Definition at line 167 of file LduMatrixOperations.C.

◆ negate()

void negate ( )

Definition at line 212 of file LduMatrixOperations.C.

◆ operator+=()

void operator+= ( const LduMatrix< Type, DType, LUType > &  )

Definition at line 240 of file LduMatrixOperations.C.

◆ operator-=()

void operator-= ( const LduMatrix< Type, DType, LUType > &  )

Definition at line 317 of file LduMatrixOperations.C.

◆ operator*=() [1/2]

void operator*= ( const scalarField )

◆ operator*=() [2/2]

void operator*= ( scalar  )

Friends And Related Function Documentation

◆ SolverPerformance< Type >

friend class SolverPerformance< Type >
friend

Definition at line 109 of file LduMatrix.H.

◆ operator

Ostream& operator ( Ostream ,
const LduMatrix< Type, DType, LUType > &   
)
friend

Field Documentation

◆ lduMesh_

const lduMesh& lduMesh_
private

LDU mesh reference.

Definition at line 89 of file LduMatrix.H.

Referenced by LduMatrix< Type, DType, LUType >::lduAddr(), and LduMatrix< Type, DType, LUType >::mesh().

◆ diagPtr_

Field<DType>* diagPtr_
private

◆ upperPtr_

Field<LUType>* upperPtr_
private

◆ lowerPtr_

Field<LUType> * lowerPtr_
private

◆ sourcePtr_

Field<Type>* sourcePtr_
private

Source.

Definition at line 98 of file LduMatrix.H.

Referenced by LduMatrix< Type, DType, LUType >::hasSource().

◆ interfaces_

LduInterfaceFieldPtrsList<Type> interfaces_
private

Field interfaces (processor patches etc.)

Definition at line 101 of file LduMatrix.H.

Referenced by LduMatrix< Type, DType, LUType >::interfaces().

◆ interfacesUpper_

FieldField<Field, LUType> interfacesUpper_
private

Off-diagonal coefficients for interfaces.

Definition at line 104 of file LduMatrix.H.

Referenced by LduMatrix< Type, DType, LUType >::interfacesUpper().

◆ interfacesLower_

FieldField<Field, LUType> interfacesLower_
private

Definition at line 104 of file LduMatrix.H.

Referenced by LduMatrix< Type, DType, LUType >::interfacesLower().


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