SmoothSolver.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2011-2016 OpenFOAM Foundation
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 Class
27  Foam::SmoothSolver
28 
29 Description
30  Iterative solver for symmetric and asymmetric matrices which uses a
31  run-time selected smoother e.g. GaussSeidel to converge the solution to
32  the required tolerance. To improve efficiency, the residual is evaluated
33  after every nSweeps smoothing iterations.
34 
35 SourceFiles
36  SmoothSolver.C
37 
38 \*---------------------------------------------------------------------------*/
39 
40 #ifndef Foam_SmoothSolver_H
41 #define Foam_SmoothSolver_H
42 
43 #include "lduMatrix.H"
44 
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 
47 namespace Foam
48 {
49 
50 /*---------------------------------------------------------------------------*\
51  Class SmoothSolver Declaration
52 \*---------------------------------------------------------------------------*/
53 
54 template<class Type, class DType, class LUType>
55 class SmoothSolver
56 :
57  public LduMatrix<Type, DType, LUType>::solver
58 {
59 protected:
60 
61  // Protected Data
62 
63  //- Number of sweeps before the evaluation of residual
64  label nSweeps_;
65 
66  //- Read the control parameters from the controlDict_
67  virtual void readControls();
68 
69 
70 public:
71 
72  //- Runtime type information
73  TypeName("SmoothSolver");
74 
75 
76  // Constructors
77 
78  //- Construct from matrix components and solver data dictionary
80  (
81  const word& fieldName,
83  const dictionary& solverDict
84  );
85 
86 
87  // Member Functions
88 
89  //- Solve the matrix with this solver
91 };
92 
93 
94 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
95 
96 } // End namespace Foam
97 
98 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
99 
100 #ifdef NoRepository
101  #include "SmoothSolver.C"
102 #endif
103 
104 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
105 
106 #endif
107 
108 // ************************************************************************* //
Base solver class.
Definition: solver.H:45
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
virtual SolverPerformance< Type > solve(Field< Type > &psi) const
Solve the matrix with this solver.
Definition: SmoothSolver.C:58
Iterative solver for symmetric and asymmetric matrices which uses a run-time selected smoother e...
Definition: SmoothSolver.H:50
const LduMatrix< Type, DType, LUType > & matrix() const noexcept
Definition: LduMatrix.H:276
label nSweeps_
Number of sweeps before the evaluation of residual.
Definition: SmoothSolver.H:61
Generic templated field type.
Definition: Field.H:62
A class for handling words, derived from Foam::string.
Definition: word.H:63
SolverPerformance is the class returned by the LduMatrix solver containing performance statistics...
virtual void readControls()
Read the control parameters from the controlDict_.
Definition: SmoothSolver.C:49
SmoothSolver(const word &fieldName, const LduMatrix< Type, DType, LUType > &matrix, const dictionary &solverDict)
Construct from matrix components and solver data dictionary.
Definition: SmoothSolver.C:28
const word & fieldName() const noexcept
Definition: LduMatrix.H:271
TypeName("SmoothSolver")
Runtime type information.
LduMatrix is a general matrix class in which the coefficients are stored as three arrays...
Definition: LduMatrix.H:68
const volScalarField & psi
Namespace for OpenFOAM.