Iterative solver for symmetric and assymetric 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. More...
Public Member Functions | |
TypeName ("SmoothSolver") | |
Runtime type information. More... | |
SmoothSolver (const word &fieldName, const LduMatrix< Type, DType, LUType > &matrix, const dictionary &solverDict) | |
Construct from matrix components and solver data dictionary. More... | |
virtual SolverPerformance< Type > | solve (Field< Type > &psi) const |
Solve the matrix with this solver. More... | |
![]() | |
virtual const word & | type () const =0 |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, solver, symMatrix,(const word &fieldName, const LduMatrix< Type, DType, LUType > &matrix, const dictionary &solverDict),(fieldName, matrix, solverDict)) | |
declareRunTimeSelectionTable (autoPtr, solver, asymMatrix,(const word &fieldName, const LduMatrix< Type, DType, LUType > &matrix, const dictionary &solverDict),(fieldName, matrix, solverDict)) | |
solver (const word &fieldName, const LduMatrix< Type, DType, LUType > &matrix, const dictionary &solverDict) | |
virtual | ~solver () |
const word & | fieldName () const |
const LduMatrix< Type, DType, LUType > & | matrix () const |
virtual void | read (const dictionary &solverDict) |
Read and reset the solver parameters from the given dictionary. More... | |
Type | normFactor (const Field< Type > &psi, const Field< Type > &Apsi, Field< Type > &tmpField) const |
Return the matrix norm used to normalise the residual for the. More... | |
Protected Member Functions | |
virtual void | readControls () |
Read the control parameters from the controlDict_. More... | |
![]() | |
template<class T > | |
void | readControl (const dictionary &controlDict, T &control, const word &controlName) |
Read a control parameter from controlDict. More... | |
Protected Attributes | |
label | nSweeps_ |
Number of sweeps before the evaluation of residual. More... | |
![]() | |
word | fieldName_ |
const LduMatrix< Type, DType, LUType > & | matrix_ |
dictionary | controlDict_ |
Dictionary of controls. More... | |
label | maxIter_ |
Maximum number of iterations in the solver. More... | |
label | minIter_ |
Minimum number of iterations in the solver. More... | |
Type | tolerance_ |
Final convergence tolerance. More... | |
Type | relTol_ |
Convergence tolerance relative to the initial. More... | |
Additional Inherited Members | |
![]() | |
static autoPtr< solver > | New (const word &fieldName, const LduMatrix< Type, DType, LUType > &matrix, const dictionary &solverDict) |
Return a new solver. More... | |
Iterative solver for symmetric and assymetric 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.
Definition at line 52 of file SmoothSolver.H.
SmoothSolver | ( | const word & | fieldName, |
const LduMatrix< Type, DType, LUType > & | matrix, | ||
const dictionary & | solverDict | ||
) |
Construct from matrix components and solver data dictionary.
Definition at line 32 of file SmoothSolver.C.
|
protectedvirtual |
Read the control parameters from the controlDict_.
Reimplemented from LduMatrix< Type, DType, LUType >::solver.
Definition at line 53 of file SmoothSolver.C.
TypeName | ( | "SmoothSolver< Type, DType, LUType >" | ) |
Runtime type information.
|
virtual |
Solve the matrix with this solver.
Implements LduMatrix< Type, DType, LUType >::solver.
Definition at line 62 of file SmoothSolver.C.
References SolverPerformance< Type >::checkConvergence(), Foam::cmptDivide(), Foam::endl(), SolverPerformance< Type >::finalResidual(), Foam::gSumCmptMag(), Foam::Info, SolverPerformance< Type >::initialResidual(), Foam::New(), SolverPerformance< Type >::nIterations(), List< Type >::size(), and Foam::Zero.
|
protected |
Number of sweeps before the evaluation of residual.
Definition at line 62 of file SmoothSolver.H.