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