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 SmoothSolver_H
41#define 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{
59
60protected:
61
62 // Protected data
63
64 //- Number of sweeps before the evaluation of residual
65 label nSweeps_;
66
67 //- Read the control parameters from the controlDict_
68 virtual void readControls();
69
70
71public:
72
73 //- Runtime type information
74 TypeName("SmoothSolver");
75
76
77 // Constructors
78
79 //- Construct from matrix components and solver data dictionary
81 (
82 const word& fieldName,
84 const dictionary& solverDict
85 );
86
87
88 // Member Functions
89
90 //- Solve the matrix with this solver
92};
93
94
95// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
96
97} // End namespace Foam
98
99// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
100
101#ifdef NoRepository
102 #include "SmoothSolver.C"
103#endif
104
105// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
106
107#endif
108
109// ************************************************************************* //
Generic templated field type.
Definition: Field.H:82
const LduMatrix< Type, DType, LUType > & matrix() const noexcept
Definition: LduMatrix.H:239
const word & fieldName() const noexcept
Definition: LduMatrix.H:234
LduMatrix is a general matrix class in which the coefficients are stored as three arrays,...
Definition: LduMatrix.H:88
Iterative solver for symmetric and asymmetric matrices which uses a run-time selected smoother e....
Definition: SmoothSolver.H:57
TypeName("SmoothSolver")
Runtime type information.
label nSweeps_
Number of sweeps before the evaluation of residual.
Definition: SmoothSolver.H:64
virtual void readControls()
Read the control parameters from the controlDict_.
Definition: SmoothSolver.C:56
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:126
A class for handling words, derived from Foam::string.
Definition: word.H:68
const volScalarField & psi
Namespace for OpenFOAM.
CEqn solve()
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition: typeInfo.H:73