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 -------------------------------------------------------------------------------
10 License
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 
26 Class
27  Foam::SmoothSolver
28 
29 Description
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 
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 template<class Type, class DType, class LUType>
55 class SmoothSolver
56 :
57  public LduMatrix<Type, DType, LUType>::solver
58 {
59 
60 protected:
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 
71 public:
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 // ************************************************************************* //
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:65
Foam::SmoothSolver::SmoothSolver
SmoothSolver(const word &fieldName, const LduMatrix< Type, DType, LUType > &matrix, const dictionary &solverDict)
Construct from matrix components and solver data dictionary.
Definition: SmoothSolver.C:35
Foam::SmoothSolver::readControls
virtual void readControls()
Read the control parameters from the controlDict_.
Definition: SmoothSolver.C:56
Foam::LduMatrix
LduMatrix is a general matrix class in which the coefficients are stored as three arrays,...
Definition: LduMatrix.H:72
SmoothSolver.C
lduMatrix.H
Foam::LduMatrix::solver::fieldName
const word & fieldName() const noexcept
Definition: LduMatrix.H:234
Foam::SmoothSolver
Iterative solver for symmetric and asymmetric matrices which uses a run-time selected smoother e....
Definition: SmoothSolver.H:54
Foam::Field
Generic templated field type.
Definition: Field.H:63
Foam::solver
Base class for solution control classes.
Definition: solver.H:51
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
Foam::SmoothSolver::TypeName
TypeName("SmoothSolver")
Runtime type information.
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::SmoothSolver::nSweeps_
label nSweeps_
Number of sweeps before the evaluation of residual.
Definition: SmoothSolver.H:64
psi
const volScalarField & psi
Definition: createFieldRefs.H:1
Foam::SolverPerformance
SolverPerformance is the class returned by the LduMatrix solver containing performance statistics.
Definition: SolverPerformance.H:52
Foam::SmoothSolver::solve
virtual SolverPerformance< Type > solve(Field< Type > &psi) const
Solve the matrix with this solver.
Definition: SmoothSolver.C:65
Foam::LduMatrix::solver::matrix
const LduMatrix< Type, DType, LUType > & matrix() const noexcept
Definition: LduMatrix.H:239