nonBlockingGaussSeidelSmoother Class Reference

Variant of gaussSeidelSmoother that expects processor boundary cells to be sorted last and so can block later. Only when the cells are actually visited does it need the results to be present. It is expected that there is little benefit to be gained from doing this on a patch by patch basis since the number of processor interfaces is quite small and the overhead of checking whether a processor interface is finished might be quite high (call into mpi). Also this would require a dynamic memory allocation to store the state of the outstanding requests. More...

Inheritance diagram for nonBlockingGaussSeidelSmoother:
[legend]
Collaboration diagram for nonBlockingGaussSeidelSmoother:
[legend]

Public Member Functions

 TypeName ("nonBlockingGaussSeidel")
 Runtime type information. More...
 
 nonBlockingGaussSeidelSmoother (const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces)
 Construct from components. More...
 
virtual void smooth (solveScalarField &psi, const scalarField &Source, const direction cmpt, const label nSweeps) const
 Smooth the solution for a given number of sweeps. More...
 
virtual void scalarSmooth (solveScalarField &psi, const solveScalarField &source, const direction cmpt, const label nSweeps) const
 Smooth the solution for a given number of sweeps. More...
 
- Public Member Functions inherited from lduMatrix::smoother
virtual const wordtype () const =0
 Runtime type information. More...
 
 declareRunTimeSelectionTable (autoPtr, smoother, symMatrix,(const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces),(fieldName, matrix, interfaceBouCoeffs, interfaceIntCoeffs, interfaces))
 
 declareRunTimeSelectionTable (autoPtr, smoother, asymMatrix,(const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces),(fieldName, matrix, interfaceBouCoeffs, interfaceIntCoeffs, interfaces))
 
 smoother (const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces)
 
virtual ~smoother ()=default
 Destructor. More...
 
const wordfieldName () const noexcept
 
const lduMatrixmatrix () const noexcept
 
const FieldField< Field, scalar > & interfaceBouCoeffs () const noexcept
 
const FieldField< Field, scalar > & interfaceIntCoeffs () const noexcept
 
const lduInterfaceFieldPtrsListinterfaces () const noexcept
 

Static Public Member Functions

static void smooth (const word &fieldName, solveScalarField &psi, const lduMatrix &matrix, const label blockStart, const solveScalarField &source, const FieldField< Field, scalar > &interfaceBouCoeffs, const lduInterfaceFieldPtrsList &interfaces, const direction cmpt, const label nSweeps)
 Smooth for the given number of sweeps. More...
 
- Static Public Member Functions inherited from lduMatrix::smoother
static word getName (const dictionary &)
 Find the smoother name (directly or from a sub-dictionary) More...
 
static autoPtr< smootherNew (const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces, const dictionary &solverControls)
 Return a new smoother. More...
 

Additional Inherited Members

- Protected Attributes inherited from lduMatrix::smoother
word fieldName_
 
const lduMatrixmatrix_
 
const FieldField< Field, scalar > & interfaceBouCoeffs_
 
const FieldField< Field, scalar > & interfaceIntCoeffs_
 
const lduInterfaceFieldPtrsListinterfaces_
 

Detailed Description

Variant of gaussSeidelSmoother that expects processor boundary cells to be sorted last and so can block later. Only when the cells are actually visited does it need the results to be present. It is expected that there is little benefit to be gained from doing this on a patch by patch basis since the number of processor interfaces is quite small and the overhead of checking whether a processor interface is finished might be quite high (call into mpi). Also this would require a dynamic memory allocation to store the state of the outstanding requests.

Source files

Definition at line 62 of file nonBlockingGaussSeidelSmoother.H.

Constructor & Destructor Documentation

◆ nonBlockingGaussSeidelSmoother()

nonBlockingGaussSeidelSmoother ( const word fieldName,
const lduMatrix matrix,
const FieldField< Field, scalar > &  interfaceBouCoeffs,
const FieldField< Field, scalar > &  interfaceIntCoeffs,
const lduInterfaceFieldPtrsList interfaces 
)

Construct from components.

Definition at line 51 of file nonBlockingGaussSeidelSmoother.C.

References Foam::expressions::patchExpr::debug, lduMatrix::diag(), Foam::endl(), forAll, Foam::min(), Foam::Pout, and UPtrList< T >::set().

Here is the call graph for this function:

Member Function Documentation

◆ TypeName()

TypeName ( "nonBlockingGaussSeidel"  )

Runtime type information.

◆ smooth() [1/2]

void smooth ( const word fieldName,
solveScalarField psi,
const lduMatrix matrix,
const label  blockStart,
const solveScalarField source,
const FieldField< Field, scalar > &  interfaceBouCoeffs,
const lduInterfaceFieldPtrsList interfaces,
const direction  cmpt,
const label  nSweeps 
)
static

Smooth for the given number of sweeps.

Definition at line 98 of file nonBlockingGaussSeidelSmoother.C.

References UList< T >::begin(), lduMatrix::diag(), lduMatrix::initMatrixInterfaces(), lduMatrix::lduAddr(), lduMatrix::lower(), lduAddressing::ownerStartAddr(), psi, Foam::fvc::sweep(), lduMatrix::updateMatrixInterfaces(), lduMatrix::upper(), and lduAddressing::upperAddr().

Here is the call graph for this function:

◆ smooth() [2/2]

void smooth ( solveScalarField psi,
const scalarField Source,
const direction  cmpt,
const label  nSweeps 
) const
virtual

Smooth the solution for a given number of sweeps.

Implements lduMatrix::smoother.

Definition at line 254 of file nonBlockingGaussSeidelSmoother.C.

References psi.

◆ scalarSmooth()

void scalarSmooth ( solveScalarField psi,
const solveScalarField source,
const direction  cmpt,
const label  nSweeps 
) const
virtual

Smooth the solution for a given number of sweeps.

Implements lduMatrix::smoother.

Definition at line 231 of file nonBlockingGaussSeidelSmoother.C.

References psi, and Foam::fvc::smooth().

Here is the call graph for this function:

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