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-------------------------------------------------------------------------------
11License
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
27Class
28 Foam::FDICPreconditioner
29
30Group
31 grpLduMatrixPreconditioners
32
33Description
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
40SourceFiles
41 FDICPreconditioner.C
42
43\*---------------------------------------------------------------------------*/
44
45#ifndef FDICPreconditioner_H
46#define FDICPreconditioner_H
47
48#include "lduMatrix.H"
49
50// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
51
52namespace Foam
53{
54
55/*---------------------------------------------------------------------------*\
56 Class FDICPreconditioner Declaration
57\*---------------------------------------------------------------------------*/
60:
62{
63 // Private data
64
65 //- The reciprocal preconditioned diagonal
67 solveScalarField rDuUpper_;
68 solveScalarField rDlUpper_;
69
70
71 // Private Member Functions
72
73 //- No copy construct
75
76 //- No copy assignment
77 void operator=(const FDICPreconditioner&) = delete;
78
79
80public:
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 (
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// ************************************************************************* //
Faster version of the DICPreconditioner diagonal-based incomplete Cholesky preconditioner for symmetr...
virtual ~FDICPreconditioner()=default
Destructor.
virtual void precondition(solveScalarField &wA, const solveScalarField &rA, const direction cmpt=0) const
Return wA the preconditioned form of residual rA.
TypeName("FDIC")
Runtime type information.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
Abstract base-class for lduMatrix preconditioners.
Definition: lduMatrix.H:434
Abstract base-class for lduMatrix solvers.
Definition: lduMatrix.H:99
Namespace for OpenFOAM.
uint8_t direction
Definition: direction.H:56
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition: typeInfo.H:73