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...
#include <nonBlockingGaussSeidelSmoother.H>


Public Member Functions | |
| TypeName ("nonBlockingGaussSeidel") | |
| Runtime type information. | |
| nonBlockingGaussSeidelSmoother (const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces, const dictionary &solverControls) | |
| Construct from components. | |
| virtual void | smooth (solveScalarField &psi, const scalarField &Source, const direction cmpt, const label nSweeps) const |
| Smooth the solution for a given number of sweeps. | |
| virtual void | scalarSmooth (solveScalarField &psi, const solveScalarField &source, const direction cmpt, const label nSweeps) const |
| Smooth the solution for a given number of sweeps. | |
| Public Member Functions inherited from lduMatrix::smoother | |
| virtual const word & | type () const =0 |
| Runtime type information. | |
| declareRunTimeSelectionTable (autoPtr, smoother, symMatrix,(const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces, const dictionary &solverControls),(fieldName, matrix, interfaceBouCoeffs, interfaceIntCoeffs, interfaces, solverControls)) | |
| declareRunTimeSelectionTable (autoPtr, smoother, asymMatrix,(const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces, const dictionary &solverControls),(fieldName, matrix, interfaceBouCoeffs, interfaceIntCoeffs, interfaces, solverControls)) | |
| smoother (const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces) | |
| Construct for given field name, matrix etc. | |
| virtual | ~smoother ()=default |
| Destructor. | |
| const word & | fieldName () const noexcept |
| const lduMatrix & | matrix () const noexcept |
| const FieldField< Field, scalar > & | interfaceBouCoeffs () const noexcept |
| const FieldField< Field, scalar > & | interfaceIntCoeffs () const noexcept |
| const lduInterfaceFieldPtrsList & | interfaces () 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. | |
| Static Public Member Functions inherited from lduMatrix::smoother | |
| static word | getName (const dictionary &) |
| Find the smoother name (directly or from a sub-dictionary). | |
| static autoPtr< smoother > | New (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. | |
Additional Inherited Members | |
| Protected Attributes inherited from lduMatrix::smoother | |
| word | fieldName_ |
| const lduMatrix & | matrix_ |
| const FieldField< Field, scalar > & | interfaceBouCoeffs_ |
| const FieldField< Field, scalar > & | interfaceIntCoeffs_ |
| const lduInterfaceFieldPtrsList & | interfaces_ |
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.
Definition at line 58 of file nonBlockingGaussSeidelSmoother.H.
| nonBlockingGaussSeidelSmoother | ( | const word & | fieldName, |
| const lduMatrix & | matrix, | ||
| const FieldField< Field, scalar > & | interfaceBouCoeffs, | ||
| const FieldField< Field, scalar > & | interfaceIntCoeffs, | ||
| const lduInterfaceFieldPtrsList & | interfaces, | ||
| const dictionary & | solverControls ) |
Construct from components.
Definition at line 43 of file nonBlockingGaussSeidelSmoother.C.
References Foam::endl(), lduMatrix::smoother::fieldName(), forAll, lduMatrix::smoother::interfaceBouCoeffs(), lduMatrix::smoother::interfaceIntCoeffs(), lduMatrix::smoother::interfaces(), lduMatrix::smoother::matrix(), lduMatrix::smoother::matrix_, Foam::min(), Foam::Pout, and lduMatrix::smoother::smoother().

| TypeName | ( | "nonBlockingGaussSeidel" | ) |
Runtime type information.
References lduMatrix::smoother::fieldName(), lduMatrix::smoother::interfaceBouCoeffs(), lduMatrix::smoother::interfaceIntCoeffs(), lduMatrix::smoother::interfaces(), lduMatrix::smoother::matrix(), and psi.

|
static |
Smooth for the given number of sweeps.
Definition at line 91 of file nonBlockingGaussSeidelSmoother.C.
References UList< T >::begin(), lduMatrix::smoother::fieldName_, lduMatrix::smoother::interfaceBouCoeffs_, lduMatrix::smoother::interfaces_, lduMatrix::smoother::matrix_, UPstream::nRequests(), and psi.
Referenced by scalarSmooth().


|
virtual |
Smooth the solution for a given number of sweeps.
Implements lduMatrix::smoother.
Definition at line 247 of file nonBlockingGaussSeidelSmoother.C.
References psi, and scalarSmooth().

|
virtual |
Smooth the solution for a given number of sweeps.
Implements lduMatrix::smoother.
Definition at line 224 of file nonBlockingGaussSeidelSmoother.C.
References lduMatrix::smoother::fieldName_, lduMatrix::smoother::interfaceBouCoeffs_, lduMatrix::smoother::interfaces_, lduMatrix::smoother::matrix_, psi, and smooth().
Referenced by smooth().

