Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / matrices / lduMatrix / solvers / smoothSolver / smoothSolver.H
blobeb61b96213e6fd5a971ca3d3109b2d483a1e153c
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2010 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
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.
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.
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/>.
24 Class
25     Foam::smoothSolver
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.
32     To improve efficiency, the residual is evaluated after every nSweeps
33     smoothing iterations.
35 SourceFiles
36     smoothSolver.C
38 \*---------------------------------------------------------------------------*/
40 #ifndef smoothSolver_H
41 #define smoothSolver_H
43 #include "lduMatrix.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 /*---------------------------------------------------------------------------*\
51                            Class smoothSolver Declaration
52 \*---------------------------------------------------------------------------*/
54 class smoothSolver
56     public lduMatrix::solver
58 protected:
60     // Protected data
62         //- Number of sweeps before the evaluation of residual
63         label nSweeps_;
65         //- Read the control parameters from the controlDict_
66         virtual void readControls();
68 public:
70     //- Runtime type information
71     TypeName("smoothSolver");
74     // Constructors
76         //- Construct from matrix components and solver controls
77         smoothSolver
78         (
79             const word& fieldName,
80             const lduMatrix& matrix,
81             const FieldField<Field, scalar>& interfaceBouCoeffs,
82             const FieldField<Field, scalar>& interfaceIntCoeffs,
83             const lduInterfaceFieldPtrsList& interfaces,
84             const dictionary& solverControls
85         );
88     //- Destructor
89     virtual ~smoothSolver()
90     {}
92     // Member Functions
94         //- Solve the matrix with this solver
95         virtual lduMatrix::solverPerformance solve
96         (
97             scalarField& psi,
98             const scalarField& source,
99             const direction cmpt=0
100         ) const;
104 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
106 } // End namespace Foam
108 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
110 #endif
112 // ************************************************************************* //