FreeFOAM The Cross-Platform CFD Toolkit
FDICPreconditioner.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::FDICPreconditioner
26 
27 Description
28  Faster version of the DICPreconditioner diagonal-based incomplete
29  Cholesky preconditioner for symmetric matrices
30  (symmetric equivalent of DILU) in which the the reciprocal of the
31  preconditioned diagonal and the upper coefficients divided by the diagonal
32  are calculated and stored.
33 
34 SourceFiles
35  FDICPreconditioner.C
36 
37 \*---------------------------------------------------------------------------*/
38 
39 #ifndef FDICPreconditioner_H
40 #define FDICPreconditioner_H
41 
42 #include <OpenFOAM/lduMatrix.H>
43 
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 
46 namespace Foam
47 {
48 
49 /*---------------------------------------------------------------------------*\
50  Class FDICPreconditioner Declaration
51 \*---------------------------------------------------------------------------*/
52 
54 :
56 {
57  // Private data
58 
59  //- The reciprocal preconditioned diagonal
60  scalarField rD_;
61  scalarField rDuUpper_;
62  scalarField rDlUpper_;
63 
64 
65  // Private Member Functions
66 
67  //- Disallow default bitwise copy construct
69 
70  //- Disallow default bitwise assignment
71  void operator=(const FDICPreconditioner&);
72 
73 
74 public:
75 
76  //- Runtime type information
77  TypeName("FDIC");
78 
79 
80  // Constructors
81 
82  //- Construct from matrix components and preconditioner solver controls
84  (
85  const lduMatrix::solver&,
86  const dictionary& solverControlsUnused
87  );
88 
89 
90  // Destructor
91 
93  {}
94 
95 
96  // Member Functions
97 
98  //- Return wA the preconditioned form of residual rA
99  virtual void precondition
100  (
101  scalarField& wA,
102  const scalarField& rA,
103  const direction cmpt=0
104  ) const;
105 };
106 
107 
108 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
109 
110 } // End namespace Foam
111 
112 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
113 
114 #endif
115 
116 // ************************ vim: set sw=4 sts=4 et: ************************ //