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