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-2018 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.
31 
32  To improve efficiency, the residual is evaluated after every nSweeps
33  smoothing iterations.
34 
35 SourceFiles
36  smoothSolver.C
37 
38 \*---------------------------------------------------------------------------*/
39 
40 #ifndef smoothSolver_H
41 #define smoothSolver_H
42 
43 #include "lduMatrix.H"
44 
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 
47 namespace Foam
48 {
49 
50 /*---------------------------------------------------------------------------*\
51  Class smoothSolver Declaration
52 \*---------------------------------------------------------------------------*/
53 
54 class smoothSolver
55 :
56  public lduMatrix::solver
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 public:
69 
70  //- Runtime type information
71  TypeName("smoothSolver");
72 
73 
74  // Constructors
75 
76  //- Construct from matrix components and solver controls
78  (
79  const word& fieldName,
80  const lduMatrix& matrix,
84  const dictionary& solverControls
85  );
86 
87 
88  //- Destructor
89  virtual ~smoothSolver()
90  {}
91 
92  // Member Functions
93 
94  //- Solve the matrix with this solver
95  virtual solverPerformance solve
96  (
98  const scalarField& source,
99  const direction cmpt=0
100  ) const;
101 };
102 
103 
104 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
105 
106 } // End namespace Foam
107 
108 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
109 
110 #endif
111 
112 // ************************************************************************* //
virtual solverPerformance solve(scalarField &psi, const scalarField &source, const direction cmpt=0) const
Solve the matrix with this solver.
Definition: smoothSolver.C:78
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
virtual ~smoothSolver()
Destructor.
Definition: smoothSolver.H:88
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:158
label nSweeps_
Number of sweeps before the evaluation of residual.
Definition: smoothSolver.H:62
uint8_t direction
Definition: direction.H:45
const lduMatrix & matrix() const
Definition: lduMatrix.H:226
const FieldField< Field, scalar > & interfaceBouCoeffs() const
Definition: lduMatrix.H:231
Generic field type.
Definition: FieldField.H:51
const FieldField< Field, scalar > & interfaceIntCoeffs() const
Definition: lduMatrix.H:236
A class for handling words, derived from string.
Definition: word.H:59
SolverPerformance is the class returned by the LduMatrix solver containing performance statistics...
Abstract base-class for lduMatrix solvers.
Definition: lduMatrix.H:93
const lduInterfaceFieldPtrsList & interfaces() const
Definition: lduMatrix.H:241
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:45
virtual void readControls()
Read the control parameters from the controlDict_.
Definition: smoothSolver.C:70
lduMatrix is a general matrix class in which the coefficients are stored as three arrays...
Definition: lduMatrix.H:79
const word & fieldName() const
Definition: lduMatrix.H:221
Iterative solver for symmetric and asymmetric matrices which uses a run-time selected smoother e...
Definition: smoothSolver.H:53
const volScalarField & psi
TypeName("smoothSolver")
Runtime type information.
Namespace for OpenFOAM.