PPCR.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) 2019-2020 Mattijs Janssens
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26Class
27 Foam::PPCR
28
29Description
30 Preconditioned pipelined conjugate residuals solver for symmetric
31 lduMatrices using a run-time selectable preconditioner.
32
33 Reference:
34 \verbatim
35 P. Ghysels, W. Vanroose.
36 "Hiding global synchronization latency in the
37 preconditioned Conjugate Gradient algorithm"
38 \endverbatim
39 and implementation details from
40 \verbatim
41 Paul Eller, William Gropp
42 "Scalable Non-blocking Preconditioned Conjugate Gradient Methods"
43 \endverbatim
44
45See also
46 PPCG
47
48SourceFiles
49 PPCR.C
50
51\*---------------------------------------------------------------------------*/
52
53#ifndef PPCR_H
54#define PPCR_H
55
56#include "PPCG.H"
57
58// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
59
60namespace Foam
61{
62
63/*---------------------------------------------------------------------------*\
64 Class PPCR Declaration
65\*---------------------------------------------------------------------------*/
67class PPCR
68:
69 public PPCG
70{
71 // Private Member Functions
72
73 //- No copy construct
74 PPCR(const PPCR&) = delete;
75
76 //- No copy assignment
77 void operator=(const PPCR&) = delete;
78
79
80public:
81
82 //- Runtime type information
83 TypeName("PPCR");
84
85
86 // Constructors
87
88 //- Construct from matrix components and solver controls
89 PPCR
90 (
91 const word& fieldName,
92 const lduMatrix& matrix,
96 const dictionary& solverControls
97 );
98
99
100 //- Destructor
101 virtual ~PPCR() = default;
102
103
104 // Member Functions
105
106 //- Solve the matrix with this solver
108 (
110 const scalarField& source,
111 const direction cmpt=0
112 ) const;
113};
114
115
116// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
117
118} // End namespace Foam
119
120// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
121
122#endif
123
124// ************************************************************************* //
A field of fields is a PtrList of fields with reference counting.
Definition: FieldField.H:80
Preconditioned pipelined conjugate gradient solver for symmetric lduMatrices using a run-time selecta...
Definition: PPCG.H:67
Preconditioned pipelined conjugate residuals solver for symmetric lduMatrices using a run-time select...
Definition: PPCR.H:69
virtual ~PPCR()=default
Destructor.
TypeName("PPCR")
Runtime type information.
SolverPerformance is the class returned by the LduMatrix solver containing performance statistics.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
const FieldField< Field, scalar > & interfaceIntCoeffs() const noexcept
Definition: lduMatrix.H:243
const lduInterfaceFieldPtrsList & interfaces() const noexcept
Definition: lduMatrix.H:248
const lduMatrix & matrix() const noexcept
Definition: lduMatrix.H:233
const FieldField< Field, scalar > & interfaceBouCoeffs() const noexcept
Definition: lduMatrix.H:238
const word & fieldName() const noexcept
Definition: lduMatrix.H:228
lduMatrix is a general matrix class in which the coefficients are stored as three arrays,...
Definition: lduMatrix.H:84
A class for handling words, derived from Foam::string.
Definition: word.H:68
const volScalarField & psi
Namespace for OpenFOAM.
uint8_t direction
Definition: direction.H:56
CEqn solve()
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition: typeInfo.H:73