Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / coupledMatrix / coupledLduPrecon / diagonalPrecon / coupledDiagonalPrecon.H
blob2d5c64910b9aa2c5ef75323c3722726f63c8387c
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend 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 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     coupledDiagonalPrecon
27 Description
28     Diagonal preconditioning
30 Author
31     Hrvoje Jasak, Wikki Ltd.  All rights reserved.
33 SourceFiles
34     coupledDiagonalPrecon.C
36 \*---------------------------------------------------------------------------*/
38 #ifndef coupledDiagonalPrecon_H
39 #define coupledDiagonalPrecon_H
41 #include "coupledLduPrecon.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 /*---------------------------------------------------------------------------*\
49                        Class coupledDiagonalPrecon Declaration
50 \*---------------------------------------------------------------------------*/
52 class coupledDiagonalPrecon
54     public coupledLduPrecon
56     // Private Member Functions
58         //- Disallow default bitwise copy construct
59         coupledDiagonalPrecon(const coupledDiagonalPrecon&);
61         //- Disallow default bitwise assignment
62         void operator=(const coupledDiagonalPrecon&);
65 public:
67     //- Runtime type information
68     TypeName("diagonal");
71     // Constructors
73         //- Construct from components
74         coupledDiagonalPrecon
75         (
76             const coupledLduMatrix& matrix,
77             const PtrList<FieldField<Field, scalar> >& bouCoeffs,
78             const PtrList<FieldField<Field, scalar> >& intCoeffs,
79             const lduInterfaceFieldPtrsListList& interfaces
80         )
81         :
82             coupledLduPrecon
83             (
84                 matrix,
85                 bouCoeffs,
86                 intCoeffs,
87                 interfaces
88             )
89         {}
91         //- Construct from dictionary
92         coupledDiagonalPrecon
93         (
94             const coupledLduMatrix& matrix,
95             const PtrList<FieldField<Field, scalar> >& bouCoeffs,
96             const PtrList<FieldField<Field, scalar> >& intCoeffs,
97             const lduInterfaceFieldPtrsListList& interfaces,
98             const dictionary& dict
99         )
100         :
101             coupledLduPrecon
102             (
103                 matrix,
104                 bouCoeffs,
105                 intCoeffs,
106                 interfaces
107             )
108         {}
111     // Destructor
113         virtual ~coupledDiagonalPrecon()
114         {}
117     // Member Functions
119         //- Execute preconditioning
120         virtual void precondition
121         (
122             FieldField<Field, scalar>& x,
123             const FieldField<Field, scalar>& b,
124             const direction cmpt = 0
125         ) const;
127         //- Execute preconditioning for the transpose matrix
128         virtual void preconditionT
129         (
130             FieldField<Field, scalar>& x,
131             const FieldField<Field, scalar>& b,
132             const direction cmpt = 0
133         ) const
134         {
135             precondition(x, b, cmpt);
136         }
140 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
142 } // End namespace Foam
144 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
146 #endif
148 // ************************************************************************* //