Loading...
Searching...
No Matches
smoothSolver Class Reference

Iterative solver for symmetric and asymmetric matrices which uses a run-time selected smoother e.g. GaussSeidel to converge the solution to the required tolerance. More...

#include <smoothSolver.H>

Inheritance diagram for smoothSolver:
Collaboration diagram for smoothSolver:

Public Member Functions

 TypeName ("smoothSolver")
 Runtime type information.
 smoothSolver (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 ~smoothSolver ()=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 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.

Protected Member Functions

virtual void readControls ()
 Read the control parameters from the controlDict_.

Protected Attributes

label nSweeps_
 Number of sweeps before the evaluation of residual.
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.

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.

Detailed Description

Iterative solver for symmetric and asymmetric matrices which uses a run-time selected smoother e.g. GaussSeidel to converge the solution to the required tolerance.

To improve efficiency, the residual is evaluated after every nSweeps smoothing iterations.

Source files

Definition at line 55 of file smoothSolver.H.

Constructor & Destructor Documentation

◆ smoothSolver()

smoothSolver ( 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 42 of file smoothSolver.C.

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

Here is the call graph for this function:

◆ ~smoothSolver()

virtual ~smoothSolver ( )
virtualdefault

Destructor.

References psi.

Member Function Documentation

◆ readControls()

void readControls ( )
protectedvirtual

Read the control parameters from the controlDict_.

Reimplemented from lduMatrix::solver.

Definition at line 68 of file smoothSolver.C.

References lduMatrix::solver::controlDict_, nSweeps_, and lduMatrix::solver::readControls().

Referenced by smoothSolver().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TypeName()

TypeName ( "smoothSolver" )

◆ solve()

Member Data Documentation

◆ nSweeps_

label nSweeps_
protected

Number of sweeps before the evaluation of residual.

Definition at line 66 of file smoothSolver.H.

Referenced by readControls(), and solve().


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