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 | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2011 OpenFOAM Foundation
9  Copyright (C) 2019 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::FDICPreconditioner
29 
30 Group
31  grpLduMatrixPreconditioners
32 
33 Description
34  Faster version of the DICPreconditioner diagonal-based incomplete
35  Cholesky preconditioner for symmetric matrices
36  (symmetric equivalent of DILU) in which the reciprocal of the
37  preconditioned diagonal and the upper coefficients divided by the diagonal
38  are calculated and stored.
39 
40 SourceFiles
41  FDICPreconditioner.C
42 
43 \*---------------------------------------------------------------------------*/
44 
45 #ifndef FDICPreconditioner_H
46 #define FDICPreconditioner_H
47 
48 #include "lduMatrix.H"
49 
50 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
51 
52 namespace Foam
53 {
54 
55 /*---------------------------------------------------------------------------*\
56  Class FDICPreconditioner Declaration
57 \*---------------------------------------------------------------------------*/
58 
60 :
62 {
63  // Private data
64 
65  //- The reciprocal preconditioned diagonal
66  solveScalarField rD_;
67  solveScalarField rDuUpper_;
68  solveScalarField rDlUpper_;
69 
70 
71  // Private Member Functions
72 
73  //- No copy construct
74  FDICPreconditioner(const FDICPreconditioner&) = delete;
75 
76  //- No copy assignment
77  void operator=(const FDICPreconditioner&) = delete;
78 
79 
80 public:
81 
82  //- Runtime type information
83  TypeName("FDIC");
84 
85 
86  // Constructors
87 
88  //- Construct from matrix components and preconditioner solver controls
90  (
91  const lduMatrix::solver&,
92  const dictionary& solverControlsUnused
93  );
94 
95 
96  //- Destructor
97  virtual ~FDICPreconditioner() = default;
98 
99 
100  // Member Functions
101 
102  //- Return wA the preconditioned form of residual rA
103  virtual void precondition
104  (
105  solveScalarField& wA,
106  const solveScalarField& rA,
107  const direction cmpt=0
108  ) const;
109 };
110 
111 
112 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
113 
114 } // End namespace Foam
115 
116 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
117 
118 #endif
119 
120 // ************************************************************************* //
Foam::FDICPreconditioner::TypeName
TypeName("FDIC")
Runtime type information.
Foam::lduMatrix::solver
Abstract base-class for lduMatrix solvers.
Definition: lduMatrix.H:98
lduMatrix.H
Foam::FDICPreconditioner::~FDICPreconditioner
virtual ~FDICPreconditioner()=default
Destructor.
Foam::Field< solveScalar >
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::direction
uint8_t direction
Definition: direction.H:52
Foam::FDICPreconditioner::precondition
virtual void precondition(solveScalarField &wA, const solveScalarField &rA, const direction cmpt=0) const
Return wA the preconditioned form of residual rA.
Definition: FDICPreconditioner.C:96
Foam::lduMatrix::preconditioner
Abstract base-class for lduMatrix preconditioners.
Definition: lduMatrix.H:433
Foam::FDICPreconditioner
Faster version of the DICPreconditioner diagonal-based incomplete Cholesky preconditioner for symmetr...
Definition: FDICPreconditioner.H:58