Loading...
Searching...
No Matches
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-------------------------------------------------------------------------------
10License
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
26Class
27 Foam::SmoothSolver
28
29Description
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
35SourceFiles
36 SmoothSolver.C
37
38\*---------------------------------------------------------------------------*/
39
40#ifndef Foam_SmoothSolver_H
41#define Foam_SmoothSolver_H
42
43#include "lduMatrix.H"
44
45// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46
47namespace Foam
48{
49
50/*---------------------------------------------------------------------------*\
51 Class SmoothSolver Declaration
52\*---------------------------------------------------------------------------*/
53
54template<class Type, class DType, class LUType>
55class SmoothSolver
56:
57 public LduMatrix<Type, DType, LUType>::solver
58{
59protected:
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
70public:
71
72 //- Runtime type information
73 TypeName("SmoothSolver");
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// ************************************************************************* //
Generic templated field type that is much like a Foam::List except that it is expected to hold numeri...
Definition Field.H:172
solver(const word &fieldName, const LduMatrix< Type, DType, LUType > &matrix, const dictionary &solverDict)
Construct for given field name, matrix and controls.
const LduMatrix< Type, DType, LUType > & matrix() const noexcept
Definition LduMatrix.H:287
const word & fieldName() const noexcept
Definition LduMatrix.H:282
LduMatrix is a general matrix class in which the coefficients are stored as three arrays,...
Definition LduMatrix.H:84
SmoothSolver(const word &fieldName, const LduMatrix< Type, DType, LUType > &matrix, const dictionary &solverDict)
Construct from matrix components and solver data dictionary.
TypeName("SmoothSolver")
Runtime type information.
label nSweeps_
Number of sweeps before the evaluation of residual.
virtual void readControls()
Read the control parameters from the controlDict_.
SolverPerformance is the class returned by the LduMatrix solver containing performance statistics.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
A class for handling words, derived from Foam::string.
Definition word.H:66
const volScalarField & psi
Namespace for OpenFOAM.
CEqn solve()
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68