FreeFOAM The Cross-Platform CFD Toolkit
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 | Copyright (C) 1991-2010 OpenCFD Ltd.
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 assymetric 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 <OpenFOAM/lduMatrix.H>
44 
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 
47 namespace Foam
48 {
49 
50 /*---------------------------------------------------------------------------*\
51  Class smoothSolver Declaration
52 \*---------------------------------------------------------------------------*/
53 
55 :
56  public lduMatrix::solver
57 {
58 protected:
59 
60  // Protected data
61 
62  //- Number of sweeps before the evaluation of residual
63  label nSweeps_;
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 
90  virtual ~smoothSolver()
91  {}
92 
93  // Member Functions
94 
95  //- Solve the matrix with this solver
97  (
99  const scalarField& source,
100  const direction cmpt=0
101  ) const;
102 };
103 
104 
105 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
106 
107 } // End namespace Foam
108 
109 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
110 
111 #endif
112 
113 // ************************ vim: set sw=4 sts=4 et: ************************ //