Loading...
Searching...
No Matches
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{
63/*---------------------------------------------------------------------------*\
64 Class PPCR Declaration
65\*---------------------------------------------------------------------------*/
66
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");
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:77
virtual ~PPCR()=default
Destructor.
TypeName("PPCR")
Runtime type information.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
const FieldField< Field, scalar > & interfaceIntCoeffs() const noexcept
Definition lduMatrix.H:338
const lduInterfaceFieldPtrsList & interfaces() const noexcept
Definition lduMatrix.H:343
const lduMatrix & matrix() const noexcept
Definition lduMatrix.H:328
const FieldField< Field, scalar > & interfaceBouCoeffs() const noexcept
Definition lduMatrix.H:333
const word & fieldName() const noexcept
Definition lduMatrix.H:323
lduMatrix is a general matrix class in which the coefficients are stored as three arrays,...
Definition lduMatrix.H:81
A class for handling words, derived from Foam::string.
Definition word.H:66
const volScalarField & psi
Namespace for OpenFOAM.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
uint8_t direction
Definition direction.H:49
UPtrList< const lduInterfaceField > lduInterfaceFieldPtrsList
List of coupled interface fields to be used in coupling.
SolverPerformance< scalar > solverPerformance
SolverPerformance instantiated for a scalar.
CEqn solve()
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68