manualGAMGProcAgglomeration.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) 2013-2016 OpenFOAM Foundation
9  Copyright (C) 2023 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::manualGAMGProcAgglomeration
29 
30 Description
31  Manual processor agglomeration of GAMGAgglomerations.
32 
33  In the GAMG control dictionary:
34 
35  processorAgglomerator manual;
36  // List of level+procagglomeration where
37  // procagglomeration is a set of labelLists. Each labelList is
38  // a cluster of processor which gets combined onto the first element
39  // in the list.
40  processorAgglomeration
41  (
42  (
43  3 //at level 3
44  (
45  (0 1) //coarse 0 from 0,1 (and moved onto 0)
46  (3 2) //coarse 1 from 2,3 (and moved onto 3)
47  )
48  )
49  (
50  6 //at level6
51  (
52  (0 1) //coarse 0 from 0,1 (and moved onto 0)
53  )
54  )
55  );
56 
57 SourceFiles
58  manualGAMGProcAgglomeration.C
59 
60 \*---------------------------------------------------------------------------*/
61 
62 #ifndef Foam_manualGAMGProcAgglomeration_H
63 #define Foam_manualGAMGProcAgglomeration_H
64 
65 #include "GAMGProcAgglomeration.H"
66 #include "Tuple2.H"
67 
68 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
69 
70 namespace Foam
71 {
72 
73 /*---------------------------------------------------------------------------*\
74  Class manualGAMGProcAgglomeration Declaration
75 \*---------------------------------------------------------------------------*/
76 
78 :
80 {
81  // Private Data
82 
83  //- Per level the agglomeration map
84  const List<Tuple2<label, List<labelList>>> procAgglomMaps_;
85 
86 
87 public:
88 
89  //- Runtime type information
90  TypeName("manual");
91 
92 
93  //- No copy construct
95 
96  //- No copy assignment
97  void operator=(const manualGAMGProcAgglomeration&) = delete;
98 
99 
100  // Constructors
101 
102  //- Construct given agglomerator and controls
104  (
105  GAMGAgglomeration& agglom,
106  const dictionary& controlDict
107  );
108 
109 
110  //- Destructor
112 
113 
114  // Member Functions
115 
116  //- Modify agglomeration. Return true if modified
117  virtual bool agglomerate();
118 };
119 
120 
121 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
122 
123 } // End namespace Foam
124 
125 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
126 
127 #endif
128 
129 // ************************************************************************* //
Manual processor agglomeration of GAMGAgglomerations.
manualGAMGProcAgglomeration(const manualGAMGProcAgglomeration &)=delete
No copy construct.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
virtual bool agglomerate()
Modify agglomeration. Return true if modified.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: BitOps.H:56
void operator=(const manualGAMGProcAgglomeration &)=delete
No copy assignment.
runTime controlDict().readEntry("adjustTimeStep"
The central control dictionary, the contents of which are either taken directly from the FOAM_CONTROL...
Definition: debug.C:142
TypeName("manual")
Runtime type information.
Processor agglomeration of GAMGAgglomerations.
Geometric agglomerated algebraic multigrid agglomeration class.
Namespace for OpenFOAM.