Loading...
Searching...
No Matches
PPCR Class Reference

Preconditioned pipelined conjugate residuals solver for symmetric lduMatrices using a run-time selectable preconditioner. More...

#include <PPCR.H>

Inheritance diagram for PPCR:
Collaboration diagram for PPCR:

Public Member Functions

 TypeName ("PPCR")
 Runtime type information.
 PPCR (const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces, const dictionary &solverControls)
 Construct from matrix components and solver controls.
virtual ~PPCR ()=default
 Destructor.
virtual solverPerformance solve (scalarField &psi, const scalarField &source, const direction cmpt=0) const
 Solve the matrix with this solver.
Public Member Functions inherited from PPCG
 TypeName ("PPCG")
 Runtime type information.
 PPCG (const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces, const dictionary &solverControls)
 Construct from matrix components and solver controls.
virtual ~PPCG ()=default
 Destructor.
Public Member Functions inherited from lduMatrix::solver
virtual const wordtype () const =0
 Runtime type information.
 declareRunTimeSelectionTable (autoPtr, solver, 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, solver, 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))
 solver (const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces, const dictionary &solverControls)
 Construct solver for given field name, matrix etc.
virtual ~solver ()=default
 Destructor.
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
virtual void read (const dictionary &)
 Read and reset the solver parameters from the given stream.
virtual solverPerformance scalarSolve (solveScalarField &psi, const solveScalarField &source, const direction cmpt=0) const
 Solve with given field and rhs (in solveScalar precision).
solveScalarField::cmptType normFactor (const solveScalarField &psi, const solveScalarField &source, const solveScalarField &Apsi, solveScalarField &tmpField, const lduMatrix::normTypes normType) const
 Return the matrix norm using the specified norm method.
solveScalarField::cmptType normFactor (const solveScalarField &psi, const solveScalarField &source, const solveScalarField &Apsi, solveScalarField &tmpField) const
 Return the matrix norm used to normalise the residual for the stopping criterion.

Additional Inherited Members

Static Public Member Functions inherited from lduMatrix::solver
static autoPtr< solverNew (const word &solverName, 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 solver of given type.
static autoPtr< solverNew (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 solver given dictionary.
Protected Member Functions inherited from PPCG
solverPerformance scalarSolveCG (solveScalarField &psi, const solveScalarField &source, const direction cmpt, const bool cgMode) const
 CG solver. Operates either in conjugate-gradient mode or conjugate residual.
Protected Member Functions inherited from lduMatrix::solver
virtual void readControls ()
 Read the control parameters from controlDict_.
Protected Attributes inherited from lduMatrix::solver
word fieldName_
const lduMatrixmatrix_
const FieldField< Field, scalar > & interfaceBouCoeffs_
const FieldField< Field, scalar > & interfaceIntCoeffs_
lduInterfaceFieldPtrsList interfaces_
dictionary controlDict_
 Dictionary of solution controls.
int log_
 Verbosity level for solver output statements.
label minIter_
 Minimum number of iterations in the solver.
label maxIter_
 Maximum number of iterations in the solver.
lduMatrix::normTypes normType_
 The normalisation type.
scalar tolerance_
 Final convergence tolerance.
scalar relTol_
 Convergence tolerance relative to the initial.
profilingTrigger profiling_
 Profiling instrumentation.

Detailed Description

Preconditioned pipelined conjugate residuals solver for symmetric lduMatrices using a run-time selectable preconditioner.

Reference:

    P. Ghysels, W. Vanroose.
    "Hiding global synchronization latency in the
     preconditioned Conjugate Gradient algorithm"

and implementation details from

    Paul Eller, William Gropp
    "Scalable Non-blocking Preconditioned Conjugate Gradient Methods"
See also
PPCG
Source files

Definition at line 62 of file PPCR.H.

Constructor & Destructor Documentation

◆ PPCR()

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

Construct from matrix components and solver controls.

Definition at line 37 of file PPCR.C.

References lduMatrix::solver::fieldName(), lduMatrix::solver::interfaceBouCoeffs(), lduMatrix::solver::interfaceIntCoeffs(), lduMatrix::solver::interfaces(), and lduMatrix::solver::matrix().

Here is the call graph for this function:

◆ ~PPCR()

virtual ~PPCR ( )
virtualdefault

Destructor.

References psi.

Member Function Documentation

◆ TypeName()

TypeName ( "PPCR" )

◆ solve()

Foam::solverPerformance solve ( scalarField & psi,
const scalarField & source,
const direction cmpt = 0 ) const
virtual

Solve the matrix with this solver.

Reimplemented from PPCG.

Definition at line 61 of file PPCR.C.

References refPtr< T >::ref(), and PPCG::scalarSolveCG().

Here is the call graph for this function:

The documentation for this class was generated from the following files:
  • src/OpenFOAM/matrices/lduMatrix/solvers/PPCR/PPCR.H
  • src/OpenFOAM/matrices/lduMatrix/solvers/PPCR/PPCR.C