fix consistancy of gradient on coupled patches
[OpenFOAM-1.6-ext.git] / src / coupledMatrix / coupledLduPrecon / diagonalPrecon / coupledDiagonalPrecon.H
blob82bed63b16ba70e0095a9336a9e46dee27bbcfb0
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright held by original author
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 the
13     Free Software Foundation; either version 2 of the License, or (at your
14     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, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     coupledDiagonalPrecon
28 Description
29     Diagonal preconditioning
31 Author
32     Hrvoje Jasak, Wikki Ltd.  All rights reserved.
34 SourceFiles
35     coupledDiagonalPrecon.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef coupledDiagonalPrecon_H
40 #define coupledDiagonalPrecon_H
42 #include "coupledLduPrecon.H"
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 namespace Foam
49 /*---------------------------------------------------------------------------*\
50                        Class coupledDiagonalPrecon Declaration
51 \*---------------------------------------------------------------------------*/
53 class coupledDiagonalPrecon
55     public coupledLduPrecon
57     // Private Member Functions
59         //- Disallow default bitwise copy construct
60         coupledDiagonalPrecon(const coupledDiagonalPrecon&);
62         //- Disallow default bitwise assignment
63         void operator=(const coupledDiagonalPrecon&);
66 public:
68     //- Runtime type information
69     TypeName("diagonal");
72     // Constructors
74         //- Construct from components
75         coupledDiagonalPrecon
76         (
77             const coupledLduMatrix& matrix,
78             const PtrList<FieldField<Field, scalar> >& bouCoeffs,
79             const PtrList<FieldField<Field, scalar> >& intCoeffs,
80             const lduInterfaceFieldPtrsListList& interfaces
81         )
82         :
83             coupledLduPrecon
84             (
85                 matrix,
86                 bouCoeffs,
87                 intCoeffs,
88                 interfaces
89             )
90         {}
92         //- Construct from dictionary
93         coupledDiagonalPrecon
94         (
95             const coupledLduMatrix& matrix,
96             const PtrList<FieldField<Field, scalar> >& bouCoeffs,
97             const PtrList<FieldField<Field, scalar> >& intCoeffs,
98             const lduInterfaceFieldPtrsListList& interfaces,
99             const dictionary& dict
100         )
101         :
102             coupledLduPrecon
103             (
104                 matrix,
105                 bouCoeffs,
106                 intCoeffs,
107                 interfaces
108             )
109         {}
112     // Destructor
114         virtual ~coupledDiagonalPrecon()
115         {}
118     // Member Functions
120         //- Execute preconditioning
121         virtual void precondition
122         (
123             FieldField<Field, scalar>& x,
124             const FieldField<Field, scalar>& b,
125             const direction cmpt = 0
126         ) const;
128         //- Execute preconditioning for the transpose matrix
129         virtual void preconditionT
130         (
131             FieldField<Field, scalar>& x,
132             const FieldField<Field, scalar>& b,
133             const direction cmpt = 0
134         ) const
135         {
136             precondition(x, b, cmpt);
137         }
141 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
143 } // End namespace Foam
145 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
147 #endif
149 // ************************************************************************* //