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-2013 OpenFOAM Foundation
9  Copyright (C) 2019 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::smoothSolver
29 
30 Group
31  grpLduMatrixSolvers
32 
33 Description
34  Iterative solver for symmetric and asymmetric matrices which uses a
35  run-time selected smoother e.g. GaussSeidel to converge the solution to
36  the required tolerance.
37 
38  To improve efficiency, the residual is evaluated after every nSweeps
39  smoothing iterations.
40 
41 SourceFiles
42  smoothSolver.C
43 
44 \*---------------------------------------------------------------------------*/
45 
46 #ifndef Foam_smoothSolver_H
47 #define Foam_smoothSolver_H
48 
49 #include "lduMatrix.H"
50 
51 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
52 
53 namespace Foam
54 {
55 
56 /*---------------------------------------------------------------------------*\
57  Class smoothSolver Declaration
58 \*---------------------------------------------------------------------------*/
59 
60 class smoothSolver
61 :
62  public lduMatrix::solver
63 {
64 protected:
65 
66  // Protected Data
67 
68  //- Number of sweeps before the evaluation of residual
69  label nSweeps_;
70 
71  //- Read the control parameters from the controlDict_
72  virtual void readControls();
73 
74 
75 public:
76 
77  //- Runtime type information
78  TypeName("smoothSolver");
79 
80 
81  // Constructors
82 
83  //- Construct from matrix components and solver controls
85  (
86  const word& fieldName,
87  const lduMatrix& matrix,
91  const dictionary& solverControls
92  );
93 
94 
95  //- Destructor
96  virtual ~smoothSolver() = default;
97 
98 
99  // Member Functions
100 
101  //- Solve the matrix with this solver
102  virtual solverPerformance solve
103  (
104  scalarField& psi,
105  const scalarField& source,
106  const direction cmpt=0
107  ) const;
108 };
109 
110 
111 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
112 
113 } // End namespace Foam
114 
115 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
116 
117 #endif
118 
119 // ************************************************************************* //
const FieldField< Field, scalar > & interfaceBouCoeffs() const noexcept
Definition: lduMatrix.H:311
virtual solverPerformance solve(scalarField &psi, const scalarField &source, const direction cmpt=0) const
Solve the matrix with this solver.
Definition: smoothSolver.C:76
virtual ~smoothSolver()=default
Destructor.
uint8_t direction
Definition: direction.H:46
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
label nSweeps_
Number of sweeps before the evaluation of residual.
Definition: smoothSolver.H:66
const lduMatrix & matrix() const noexcept
Definition: lduMatrix.H:306
A field of fields is a PtrList of fields with reference counting.
Definition: FieldField.H:51
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...
Abstract base-class for lduMatrix solvers.
Definition: lduMatrix.H:129
const lduInterfaceFieldPtrsList & interfaces() const noexcept
Definition: lduMatrix.H:321
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: smoothSolver.C:43
virtual void readControls()
Read the control parameters from the controlDict_.
Definition: smoothSolver.C:68
lduMatrix is a general matrix class in which the coefficients are stored as three arrays...
Definition: lduMatrix.H:79
const FieldField< Field, scalar > & interfaceIntCoeffs() const noexcept
Definition: lduMatrix.H:316
Iterative solver for symmetric and asymmetric matrices which uses a run-time selected smoother e...
Definition: smoothSolver.H:55
const volScalarField & psi
const word & fieldName() const noexcept
Definition: lduMatrix.H:301
TypeName("smoothSolver")
Runtime type information.
Namespace for OpenFOAM.