diff --git a/_agglomerator_8h.html b/_agglomerator_8h.html index 5e533fe..47eeee2 100644 --- a/_agglomerator_8h.html +++ b/_agglomerator_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Agglomerator.h File Reference +CoMMA: include/CoMMA/Agglomerator.h File Reference @@ -92,7 +92,8 @@
-Classes
+Classes | +Namespaces
Agglomerator.h File Reference
@@ -107,29 +108,34 @@ #include <set>
#include <stdexcept>
#include <vector>
-#include "Coarse_Cell_Container.h"
-#include "Dual_Graph.h"
-#include "Neighbourhood.h"
-#include "Util.h"
+#include "CoMMA/Coarse_Cell_Container.h"
+#include "CoMMA/Dual_Graph.h"
+#include "CoMMA/Neighbourhood.h"
+#include "CoMMA/Util.h"

Go to the source code of this file.

- - + + - - + + - - + + - - + + - - + + + +

Classes

class  Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 A class responsible to do the interface between the different kinds of agglomerator. More...
class  comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 A class responsible to do the interface between the different kinds of agglomerator. More...
 
class  Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Anisotropic agglomeration. More...
class  comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Anisotropic agglomeration. More...
 
class  Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Isotropic agglomeration. More...
class  comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Isotropic agglomeration. More...
 
class  Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Child class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the agglomeration. We call it biconnected case, but it is the greedy algorithm in reality. More...
class  comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Child class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the agglomeration. We call it biconnected case, but it is the greedy algorithm in reality. More...
 
class  Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Child class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the search of fine cells. More...
class  comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Child class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the search of fine cells. More...
 
+ +

+Namespaces

namespace  comma
 
@@ -137,7 +143,7 @@ diff --git a/_agglomerator_8h.js b/_agglomerator_8h.js index 2da3e08..e87ba6a 100644 --- a/_agglomerator_8h.js +++ b/_agglomerator_8h.js @@ -1,8 +1,8 @@ var _agglomerator_8h = [ - [ "Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_agglomerator.html", "class_agglomerator" ], - [ "Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_agglomerator___anisotropic.html", "class_agglomerator___anisotropic" ], - [ "Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_agglomerator___isotropic.html", "class_agglomerator___isotropic" ], - [ "Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_agglomerator___biconnected.html", "class_agglomerator___biconnected" ], - [ "Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_agglomerator___iterative.html", "class_agglomerator___iterative" ] + [ "comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_agglomerator.html", "classcomma_1_1_agglomerator" ], + [ "comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_agglomerator___anisotropic.html", "classcomma_1_1_agglomerator___anisotropic" ], + [ "comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_agglomerator___isotropic.html", "classcomma_1_1_agglomerator___isotropic" ], + [ "comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_agglomerator___biconnected.html", "classcomma_1_1_agglomerator___biconnected" ], + [ "comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_agglomerator___iterative.html", "classcomma_1_1_agglomerator___iterative" ] ]; \ No newline at end of file diff --git a/_agglomerator_8h_source.html b/_agglomerator_8h_source.html index ffb35c0..d09e0ca 100644 --- a/_agglomerator_8h_source.html +++ b/_agglomerator_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Agglomerator.h Source File +CoMMA: include/CoMMA/Agglomerator.h Source File @@ -100,7 +100,7 @@
4/*
5 * CoMMA
6 *
-
7 * Copyright © 2023 ONERA
+
7 * Copyright © 2024 ONERA
8 *
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
10 * Contributors: Karim Anemiche
@@ -122,12 +122,12 @@
26#include <stdexcept>
27#include <vector>
28
-
29#include "Coarse_Cell_Container.h"
-
30#include "Dual_Graph.h"
-
31#include "Neighbourhood.h"
-
32#include "Util.h"
+
29#include "CoMMA/Coarse_Cell_Container.h"
+
30#include "CoMMA/Dual_Graph.h"
+
31#include "CoMMA/Neighbourhood.h"
+
32#include "CoMMA/Util.h"
33
-
34using namespace std;
+
34namespace comma {
35
36// How to pass parameters from base class
37// https://stackoverflow.com/questions/9692675/c-constructor-where-parameters-are-used-by-base-class-constructor
@@ -139,1240 +139,1255 @@
50 typename CoMMAIndexType,
51 typename CoMMAWeightType,
52 typename CoMMAIntType>
-
53class Agglomerator {
+
53class Agglomerator {
54public:
-
60 function<CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)>
-
61 _compute_AR;
+
60 std::function<CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)>
+
61 _compute_AR;
62
-
71 Agglomerator(
-
72 shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>> graph,
-
73 shared_ptr<
-
74 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
75 cc_graph,
-
76 shared_ptr<Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
77 seeds_pool,
-
78 CoMMAIntType dimension = 3) :
-
79 _dimension(dimension),
-
80 _fc_graph(graph),
-
81 _cc_graph(cc_graph),
-
82 _seeds_pool(seeds_pool) {
-
83 if ((_dimension != 2) && (_dimension != 3)) {
-
84 throw range_error("dimension can only be 2 or 3");
-
85 }
-
86 if (_dimension == 2) {
-
87 _min_neighbourhood = 2;
-
88 _compute_AR = [](const CoMMAWeightType diam, const CoMMAWeightType area)
-
89 -> CoMMAWeightType { return diam / sqrt(area); };
-
90 } else {
-
91 _min_neighbourhood = 3;
-
92 _compute_AR = [](const CoMMAWeightType diam, const CoMMAWeightType vol)
-
93 -> CoMMAWeightType { return diam / cbrt(vol); };
-
94 }
-
95 _l_nb_of_cells.push_back(graph->_number_of_cells);
-
96 }
-
97
-
99 virtual ~Agglomerator() = default;
-
100
-
104 inline vector<CoMMAIndexType> get_fc_2_cc() const {
-
105 return _cc_graph->_fc_2_cc;
-
106 }
-
107
-
119 virtual void agglomerate_one_level(
-
120 const CoMMAIntType goal_card,
-
121 const CoMMAIntType min_card,
-
122 const CoMMAIntType max_card,
-
123 const vector<CoMMAWeightType> &priority_weights,
-
124 bool correction_steps) = 0;
-
125
-
126protected:
-
129 CoMMAIntType _dimension;
-
132 CoMMAIntType _min_neighbourhood = 3;
-
135 CoMMAIntType _min_card = 0;
-
139 CoMMAIntType _max_card = 0;
-
143 CoMMAIntType _goal_card = 0;
-
147 CoMMAIntType _threshold_card = 0;
-
149 vector<CoMMAIndexType> _l_nb_of_cells;
-
153 shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
154 _fc_graph;
-
157 shared_ptr<
-
158 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
159 _cc_graph;
-
163 shared_ptr<Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
164 _seeds_pool;
-
165};
-
166
-
175template<
-
176 typename CoMMAIndexType,
-
177 typename CoMMAWeightType,
-
178 typename CoMMAIntType>
-
179class Agglomerator_Anisotropic :
-
180 public Agglomerator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
-
181public:
-
183 using AnisotropicLine = deque<CoMMAIndexType>;
-
184
-
186 using AnisotropicLinePtr = shared_ptr<AnisotropicLine>;
-
187
-
189 using CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>;
-
191 using CoMMASetOfPairType =
-
192 set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType>>;
-
193
-
215 Agglomerator_Anisotropic(
-
216 shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>> graph,
-
217 shared_ptr<
-
218 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
219 cc_graph,
-
220 shared_ptr<Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
221 seeds_pool,
-
222 const CoMMAWeightType threshold_anisotropy,
-
223 const vector<CoMMAIndexType> &agglomerationLines_Idx,
-
224 const vector<CoMMAIndexType> &agglomerationLines,
-
225 const vector<CoMMAWeightType> &priority_weights,
-
226 const bool build_lines,
-
227 const bool odd_line_length,
-
228 CoMMAIntType dimension = 3) :
-
229 Agglomerator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
-
230 graph, cc_graph, seeds_pool, dimension),
-
231 _aniso_neighbours(),
-
232 _odd_line_length(odd_line_length) {
-
233 // for every defined level (1 by default), contains the number of cells
-
234 // e.g. _l_nb_of_cells[0]= number of cells on finest level
-
235 // _l_nb_of_cells[1]= number of cells on the first coarse level
-
236 this->_l_nb_of_cells.push_back(graph->_number_of_cells);
-
237
-
238 this->_nb_lines = vector<CoMMAIndexType>(2);
-
239 this->_v_lines = vector<vector<AnisotropicLinePtr>>(2);
+
71 Agglomerator(
+
72 std::shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
73 graph,
+
74 std::shared_ptr<
+
75 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
76 cc_graph,
+
77 std::shared_ptr<Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
78 seeds_pool,
+
79 CoMMAIntType dimension = 3) :
+
80 _dimension(dimension),
+
81 _fc_graph(graph),
+
82 _cc_graph(cc_graph),
+
83 _seeds_pool(seeds_pool) {
+
84 if ((_dimension != 2) && (_dimension != 3)) {
+
85 throw std::range_error("dimension can only be 2 or 3");
+
86 }
+
87 if (_dimension == 2) {
+
88 _min_neighbourhood = 2;
+
89 _compute_AR = [](const CoMMAWeightType diam, const CoMMAWeightType area)
+
90 -> CoMMAWeightType { return diam / sqrt(area); };
+
91 } else {
+
92 _min_neighbourhood = 3;
+
93 _compute_AR = [](const CoMMAWeightType diam, const CoMMAWeightType vol)
+
94 -> CoMMAWeightType { return diam / cbrt(vol); };
+
95 }
+
96 _l_nb_of_cells.push_back(graph->_number_of_cells);
+
97 }
+
98
+
100 virtual ~Agglomerator() = default;
+
101
+
105 inline std::vector<CoMMAIndexType> get_fc_2_cc() const {
+
106 return _cc_graph->_fc_2_cc;
+
107 }
+
108
+
120 virtual void agglomerate_one_level(
+
121 const CoMMAIntType goal_card,
+
122 const CoMMAIntType min_card,
+
123 const CoMMAIntType max_card,
+
124 const std::vector<CoMMAWeightType> &priority_weights,
+
125 bool correction_steps) = 0;
+
126
+
127protected:
+
130 CoMMAIntType _dimension;
+
133 CoMMAIntType _min_neighbourhood = 3;
+
136 CoMMAIntType _min_card = 0;
+
140 CoMMAIntType _max_card = 0;
+
144 CoMMAIntType _goal_card = 0;
+
148 CoMMAIntType _threshold_card = 0;
+
150 std::vector<CoMMAIndexType> _l_nb_of_cells;
+
154 std::shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
155 _fc_graph;
+
158 std::shared_ptr<
+
159 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
160 _cc_graph;
+
164 std::shared_ptr<Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
165 _seeds_pool;
+
166};
+
167
+
176template<
+
177 typename CoMMAIndexType,
+
178 typename CoMMAWeightType,
+
179 typename CoMMAIntType>
+
180class Agglomerator_Anisotropic :
+
181 public Agglomerator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
182public:
+
184 using AnisotropicLine = std::deque<CoMMAIndexType>;
+
185
+
187 using AnisotropicLinePtr = std::shared_ptr<AnisotropicLine>;
+
188
+
190 using CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>;
+
192 using CoMMASetOfPairType =
+
193 std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType>>;
+
194
+
216 Agglomerator_Anisotropic(
+
217 std::shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
218 graph,
+
219 std::shared_ptr<
+
220 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
221 cc_graph,
+
222 std::shared_ptr<Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
223 seeds_pool,
+
224 const CoMMAWeightType threshold_anisotropy,
+
225 const std::vector<CoMMAIndexType> &agglomerationLines_Idx,
+
226 const std::vector<CoMMAIndexType> &agglomerationLines,
+
227 const std::vector<CoMMAWeightType> &priority_weights,
+
228 const bool build_lines,
+
229 const bool odd_line_length,
+
230 CoMMAIntType dimension = 3) :
+
231 Agglomerator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
+
232 graph, cc_graph, seeds_pool, dimension),
+
233 _should_agglomerate(true),
+
234 _aniso_neighbours(),
+
235 _odd_line_length(odd_line_length) {
+
236 // for every defined level (1 by default), contains the number of cells
+
237 // e.g. _l_nb_of_cells[0]= number of cells on finest level
+
238 // _l_nb_of_cells[1]= number of cells on the first coarse level
+
239 this->_l_nb_of_cells.push_back(graph->_number_of_cells);
240
-
241 this->_should_agglomerate = true;
-
242
-
243 if (build_lines) {
-
244 const CoMMAWeightType thr =
-
245 (threshold_anisotropy > 1 || threshold_anisotropy < 0)
-
246 ? threshold_anisotropy
-
247 : static_cast<CoMMAWeightType>(1. / threshold_anisotropy);
-
248 // if the finest agglomeration line is not computed, hence compute it
-
249 // (REMEMBER! We compute the agglomeration lines only on the (original)
-
250 // finest level
-
251 this->_should_agglomerate =
-
252 this->build_anisotropic_lines(priority_weights, thr);
-
253 } else {
-
254 // case in which we have already agglomerated one level and hence we have
-
255 // already agglomeration lines available; no need to recreate them.
-
256 this->_nb_lines[0] = 0;
-
257 for (auto idx_ptr = agglomerationLines_Idx.cbegin() + 1;
-
258 idx_ptr != agglomerationLines_Idx.cend(); ++idx_ptr) {
-
259 const auto ln_sz = *idx_ptr - (*(idx_ptr - 1));
-
260 if (ln_sz > 1) {
-
261 this->_v_lines[0].push_back(make_shared<AnisotropicLine>(
-
262 agglomerationLines.cbegin() + (*(idx_ptr - 1)),
-
263 agglomerationLines.cbegin() + (*idx_ptr)));
-
264 this->_nb_lines[0]++;
-
265 }
-
266 }
-
267 this->_should_agglomerate = this->_nb_lines[0] > 0;
-
268 if (!this->_should_agglomerate)
-
269 cout << "CoMMA - No anisotropic line was built (e.g., only one-cell "
-
270 "lines). Skipping anisotropic agglomeration"
-
271 << endl;
-
272 }
-
273 }
-
274
-
276 virtual ~Agglomerator_Anisotropic() = default;
-
277
-
294 void agglomerate_one_level(
-
295 const CoMMAIntType goal_card,
-
296 const CoMMAIntType min_card,
-
297 const CoMMAIntType max_card,
-
298 const vector<CoMMAWeightType> &priority_weights,
-
299 bool correction_steps) override {
-
300 // Unused parameters
-
301 CoMMAUnused(goal_card);
-
302 CoMMAUnused(min_card);
-
303 CoMMAUnused(max_card);
-
304 CoMMAUnused(correction_steps);
-
305
-
306 if (this->_should_agglomerate) {
-
307 // Necessary for the create_cc but maybe we need in
-
308 // some way to change that.
-
309 constexpr bool is_anisotropic = true;
-
310 constexpr CoMMAIntType compactness = 1;
-
311
-
312 // Setting up lambda function that will perform the loop. This is needed
-
313 // since we want to loop forwards or backwards according to some runtime
-
314 // value See, e.g., https://stackoverflow.com/a/56133699/12152457
-
315 auto loop_line = [&](auto begin, auto end) {
-
316 AnisotropicLinePtr line_lvl_p_one = make_shared<AnisotropicLine>();
-
317 for (auto line_it = begin; line_it != end; line_it += 2) {
-
318 // we agglomerate cells along the agglomeration line, hence we have to
-
319 // go through the faces and agglomerate two faces together
-
320 // Here we have to consider a special case when we have an odd number
-
321 // of cells: THIS IS FUNDAMENTAL FOR THE CONVERGENCE OF THE MULTIGRID
-
322 // ALGORITHM
-
323 unordered_set<CoMMAIndexType> s_fc = {*line_it, *(line_it + 1)};
-
324 // We update the neighbours. At this stage, we do not check if it is
-
325 // or will be agglomerated since there will be a cleaning step after
-
326 // the anisotropic agglomeration
-
327 this->_aniso_neighbours.insert(
-
328 this->_aniso_neighbours.end(),
-
329 this->_fc_graph->neighbours_cbegin(*line_it),
-
330 this->_fc_graph->neighbours_cend(*line_it));
-
331 this->_aniso_neighbours.insert(
-
332 this->_aniso_neighbours.end(),
-
333 this->_fc_graph->neighbours_cbegin(*(line_it + 1)),
-
334 this->_fc_graph->neighbours_cend(*(line_it + 1)));
-
335 if (distance(line_it, end) == 3) {
-
336 if (this->_odd_line_length) {
-
337 // If only three cells left, agglomerate them
-
338 s_fc.insert(*(line_it + 2));
-
339 this->_aniso_neighbours.insert(
-
340 this->_aniso_neighbours.end(),
-
341 this->_fc_graph->neighbours_cbegin(*(line_it + 2)),
-
342 this->_fc_graph->neighbours_cend(*(line_it + 2)));
-
343 }
-
344 line_it++; // Ensure to break the loop after current iteration
-
345 }
-
346 // We create the coarse cell
-
347 const CoMMAIndexType i_cc =
-
348 this->_cc_graph->create_cc(s_fc, compactness, is_anisotropic);
-
349 line_lvl_p_one->push_back(i_cc);
-
350 }
-
351
-
352 this->_v_lines[1].push_back(line_lvl_p_one);
-
353 }; // End lambda def
-
354
-
355 // Process of every agglomeration lines:
-
356 for (auto line_ptr = this->_v_lines[0].begin();
-
357 line_ptr != this->_v_lines[0].end(); line_ptr++) {
-
358 // We iterate on the anisotropic lines of a particular level (the level
-
359 // 1, where they were copied from level 0). We create a pointer to an
-
360 // empty deque for the line + 1, and hence for the next level of
-
361 // agglomeration
-
362 auto line = **line_ptr;
-
363 if (line.size() <= 1) {
-
364 // the agglomeration_line is empty and hence the iterator points again
-
365 // to the empty deque, updating what is pointed by it and hence
-
366 // __v_lines[1] (each time we iterate on the line, a new deque
-
367 // line_lvl_p_one is defined)
-
368 continue;
-
369 }
-
370 // We start agglomerating from the head or the tail of the line
-
371 // according to which of the two has more boundary faces, or priority or
-
372 // ID
-
373 const auto l_fr = line.front(), l_bk = line.back();
-
374 const auto bnd_fr = this->_fc_graph->get_n_boundary_faces(l_fr),
-
375 bnd_bk = this->_fc_graph->get_n_boundary_faces(l_bk);
-
376 const auto w_fr = priority_weights[l_fr], w_bk = priority_weights[l_bk];
-
377 const bool forward_line =
-
378 bnd_fr > bnd_bk // Greater boundaries...
-
379 || (bnd_fr == bnd_bk &&
-
380 (w_fr > w_bk // ...or greater priority...
-
381 || (w_fr == w_bk && l_fr < l_bk) // ..or smaller index
-
382 ));
-
383
-
384 if (forward_line)
-
385 loop_line(line.cbegin(), line.cend());
-
386 else
-
387 loop_line(line.crbegin(), line.crend());
-
388
-
389 } // End loop on lines
+
241 this->_nb_lines = std::vector<CoMMAIndexType>(2);
+
242 this->_v_lines = std::vector<std::vector<AnisotropicLinePtr>>(2);
+
243
+
244 if (build_lines) {
+
245 const CoMMAWeightType thr =
+
246 (threshold_anisotropy > 1 || threshold_anisotropy < 0)
+
247 ? threshold_anisotropy
+
248 : static_cast<CoMMAWeightType>(1. / threshold_anisotropy);
+
249 // if the finest agglomeration line is not computed, hence compute it
+
250 // (REMEMBER! We compute the agglomeration lines only on the (original)
+
251 // finest level
+
252 this->_should_agglomerate =
+
253 this->build_anisotropic_lines(priority_weights, thr);
+
254 } else {
+
255 // case in which we have already agglomerated one level and hence we have
+
256 // already agglomeration lines available; no need to recreate them.
+
257 this->_nb_lines[0] = 0;
+
258 for (auto idx_ptr = agglomerationLines_Idx.cbegin() + 1;
+
259 idx_ptr != agglomerationLines_Idx.cend(); ++idx_ptr) {
+
260 const auto ln_sz = *idx_ptr - (*(idx_ptr - 1));
+
261 if (ln_sz > 1) {
+
262 this->_v_lines[0].push_back(std::make_shared<AnisotropicLine>(
+
263 agglomerationLines.cbegin() + (*(idx_ptr - 1)),
+
264 agglomerationLines.cbegin() + (*idx_ptr)));
+
265 this->_nb_lines[0]++;
+
266 }
+
267 }
+
268 this->_should_agglomerate = this->_nb_lines[0] > 0;
+
269 if (!this->_should_agglomerate)
+
270 std::cout
+
271 << "CoMMA - No anisotropic line was built (e.g., only one-cell "
+
272 "lines). Skipping anisotropic agglomeration"
+
273 << std::endl;
+
274 }
+
275 }
+
276
+
278 ~Agglomerator_Anisotropic() override = default;
+
279
+
296 void agglomerate_one_level(
+
297 const CoMMAIntType goal_card,
+
298 const CoMMAIntType min_card,
+
299 const CoMMAIntType max_card,
+
300 const std::vector<CoMMAWeightType> &priority_weights,
+
301 bool correction_steps) override {
+
302 // Unused parameters
+
303 CoMMAUnused(goal_card);
+
304 CoMMAUnused(min_card);
+
305 CoMMAUnused(max_card);
+
306 CoMMAUnused(correction_steps);
+
307
+
308 if (this->_should_agglomerate) {
+
309 // Necessary for the create_cc but maybe we need in
+
310 // some way to change that.
+
311 constexpr bool is_anisotropic = true;
+
312 constexpr CoMMAIntType compactness = 1;
+
313
+
314 // Setting up lambda function that will perform the loop. This is needed
+
315 // since we want to loop forwards or backwards according to some runtime
+
316 // value See, e.g., https://stackoverflow.com/a/56133699/12152457
+
317 auto loop_line = [&](auto begin, auto end) {
+
318 AnisotropicLinePtr line_lvl_p_one = std::make_shared<AnisotropicLine>();
+
319 for (auto line_it = begin; line_it != end; line_it += 2) {
+
320 // we agglomerate cells along the agglomeration line, hence we have to
+
321 // go through the faces and agglomerate two faces together
+
322 // Here we have to consider a special case when we have an odd number
+
323 // of cells: THIS IS FUNDAMENTAL FOR THE CONVERGENCE OF THE MULTIGRID
+
324 // ALGORITHM
+
325 std::unordered_set<CoMMAIndexType> s_fc = {*line_it, *(line_it + 1)};
+
326 // We update the neighbours. At this stage, we do not check if it is
+
327 // or will be agglomerated since there will be a cleaning step after
+
328 // the anisotropic agglomeration
+
329 this->_aniso_neighbours.insert(
+
330 this->_aniso_neighbours.end(),
+
331 this->_fc_graph->neighbours_cbegin(*line_it),
+
332 this->_fc_graph->neighbours_cend(*line_it));
+
333 this->_aniso_neighbours.insert(
+
334 this->_aniso_neighbours.end(),
+
335 this->_fc_graph->neighbours_cbegin(*(line_it + 1)),
+
336 this->_fc_graph->neighbours_cend(*(line_it + 1)));
+
337 if (distance(line_it, end) == 3) {
+
338 if (this->_odd_line_length) {
+
339 // If only three cells left, agglomerate them
+
340 s_fc.insert(*(line_it + 2));
+
341 this->_aniso_neighbours.insert(
+
342 this->_aniso_neighbours.end(),
+
343 this->_fc_graph->neighbours_cbegin(*(line_it + 2)),
+
344 this->_fc_graph->neighbours_cend(*(line_it + 2)));
+
345 }
+
346 line_it++; // Ensure to break the loop after current iteration
+
347 }
+
348 // We create the coarse cell
+
349 const CoMMAIndexType i_cc =
+
350 this->_cc_graph->create_cc(s_fc, compactness, is_anisotropic);
+
351 line_lvl_p_one->push_back(i_cc);
+
352 }
+
353
+
354 this->_v_lines[1].push_back(line_lvl_p_one);
+
355 }; // End lambda def
+
356
+
357 // Process of every agglomeration lines:
+
358 for (auto line_ptr = this->_v_lines[0].begin();
+
359 line_ptr != this->_v_lines[0].end(); line_ptr++) {
+
360 // We iterate on the anisotropic lines of a particular level (the level
+
361 // 1, where they were copied from level 0). We create a pointer to an
+
362 // empty deque for the line + 1, and hence for the next level of
+
363 // agglomeration
+
364 auto line = **line_ptr;
+
365 if (line.size() <= 1) {
+
366 // the agglomeration_line is empty and hence the iterator points again
+
367 // to the empty deque, updating what is pointed by it and hence
+
368 // __v_lines[1] (each time we iterate on the line, a new deque
+
369 // line_lvl_p_one is defined)
+
370 continue;
+
371 }
+
372 // We start agglomerating from the head or the tail of the line
+
373 // according to which of the two has more boundary faces, or priority or
+
374 // ID
+
375 const auto l_fr = line.front(), l_bk = line.back();
+
376 const auto bnd_fr = this->_fc_graph->get_n_boundary_faces(l_fr),
+
377 bnd_bk = this->_fc_graph->get_n_boundary_faces(l_bk);
+
378 const auto w_fr = priority_weights[l_fr], w_bk = priority_weights[l_bk];
+
379 const bool forward_line =
+
380 bnd_fr > bnd_bk // Greater boundaries...
+
381 || (bnd_fr == bnd_bk &&
+
382 (w_fr > w_bk // ...or greater priority...
+
383 || (w_fr == w_bk && l_fr < l_bk) // ..or smaller index
+
384 ));
+
385
+
386 if (forward_line)
+
387 loop_line(line.cbegin(), line.cend());
+
388 else
+
389 loop_line(line.crbegin(), line.crend());
390
-
391 this->update_seeds_pool();
+
391 } // End loop on lines
392
-
393 } // End if should agglomerate
-
394 else
-
395 // If it didn't agglomerate, initialize for sure
-
396 this->_seeds_pool->initialize();
-
397 }
-
398
-
402 void update_seeds_pool() {
-
403 if (!this->_aniso_neighbours.empty()) {
-
404 // Example of erase taken from
-
405 // https://en.cppreference.com/w/cpp/container/deque/erase
-
406 for (auto it = this->_aniso_neighbours.begin();
-
407 it != this->_aniso_neighbours.end();) {
-
408 if (this->_cc_graph->_is_fc_agglomerated[*it])
-
409 it = this->_aniso_neighbours.erase(it);
-
410 else
-
411 ++it;
-
412 }
-
413 if (!this->_aniso_neighbours.empty()) {
-
414 // The master queue is the one of the first agglomerated cell:
-
415 // It is important to set it in the case the user asked for
-
416 // neighbourhood priority
-
417 this->_seeds_pool->set_top_queue(this->_fc_graph->get_n_boundary_faces(
-
418 this->_aniso_neighbours.front()));
-
419 this->_seeds_pool->update(this->_aniso_neighbours);
-
420 }
-
421 }
-
422 // Even if we have updated it, the seeds pool might need initialization, for
-
423 // instance, if it was set up with boundary priority
-
424 if (this->_seeds_pool->need_initialization(
-
425 this->_cc_graph->_is_fc_agglomerated))
-
426 this->_seeds_pool->initialize();
-
427 }
-
428
-
436 void export_anisotropic_lines(
-
437 CoMMAIntType level,
-
438 vector<CoMMAIndexType> &aniso_lines_idx,
-
439 vector<CoMMAIndexType> &aniso_lines) const {
-
440 // Reset lines
-
441 aniso_lines_idx.clear();
-
442 aniso_lines.clear();
-
443 if (this->_should_agglomerate && this->_v_lines[level].size() > 0) {
-
444 // If at the level of agglomeration "level" the vector containing the
-
445 // number of lines is empty, hence it means no line has been found at the
-
446 // current level. variable cumulating the number of fine cells in the
-
447 // agglomeration lines of the current level
-
448 CoMMAIndexType number_of_fc_in_agglomeration_lines = 0;
-
449 aniso_lines_idx.push_back(0);
-
450 // We cycle over the line (in _v_lines)
-
451 for (const auto &line_ptr : this->_v_lines[level]) {
-
452 const auto line = *line_ptr; // Convenience
-
453 const CoMMAIndexType size_of_line = line.size();
-
454 // This vector store the end of a line and the start of a new
-
455 // anisotropic line WARNING! We are storing the anisotropic lines in a
-
456 // vector so we need a way to point to the end of a line and the
-
457 // starting of a new one.
-
458 aniso_lines_idx.push_back(
-
459 size_of_line + number_of_fc_in_agglomeration_lines);
-
460 // Here we store the index of the cell.
-
461 for (const auto cell : line) {
-
462 aniso_lines.push_back(cell);
-
463 }
-
464 number_of_fc_in_agglomeration_lines += size_of_line;
-
465 }
-
466 }
-
467 }
-
468
-
470 vector<CoMMAIndexType> _nb_lines;
-
471
-
478 vector<vector<AnisotropicLinePtr>> _v_lines;
-
479
-
483 bool _should_agglomerate;
-
484
-
485protected:
-
497 bool build_anisotropic_lines(
-
498 const vector<CoMMAWeightType> &priority_weights,
-
499 const CoMMAWeightType threshold_anisotropy) {
-
500 deque<CoMMAIndexType> aniso_seeds_pool;
-
501 // It is the max_weight, hence the maximum area among the faces composing
-
502 // the cell. Used to recognized the face
-
503 vector<CoMMAWeightType> max_weights(this->_fc_graph->_number_of_cells, 0.0);
-
504 vector<bool> to_treat(this->_fc_graph->_number_of_cells, false);
-
505 // Computation of the anisotropic cell, alias of the cells for which the
-
506 // ratio between the face with maximum area and the face with minimum area
-
507 // is more than a given threshold.
-
508 this->_fc_graph->tag_anisotropic_cells(
-
509 max_weights, to_treat, aniso_seeds_pool, threshold_anisotropy,
-
510 priority_weights, 0);
-
511 if (aniso_seeds_pool.empty()) {
-
512 cout << "CoMMA - No anisotropic cell found. Skipping anisotropic "
-
513 "agglomeration"
-
514 << endl;
-
515 return false;
-
516 }
-
517 // Size might not be the dimension
-
518 const auto pts_dim = this->_fc_graph->_centers[0].size();
-
519 // size of the line
-
520 this->_nb_lines[0] = 0;
-
521 // we cycle on all the anisotropic cells identified before
-
522 for (auto &i_fc : aniso_seeds_pool) {
-
523 // seed from where we start building the line
-
524 if (!to_treat[i_fc]) {
-
525 // If the cell has been already treated, continue to the next
-
526 // anisotropic cell
-
527 continue;
-
528 }
-
529 // we save the primal seed for the opposite direction check that will
-
530 // happen later
-
531 const auto primal_seed = i_fc;
-
532 optional<vector<CoMMAWeightType>> primal_dir = nullopt;
-
533 // seed to be considered to add or not a new cell to the line
-
534 CoMMAIndexType seed = primal_seed;
-
535 // Create the new line
-
536 AnisotropicLinePtr cur_line = make_shared<AnisotropicLine>();
-
537 // we add the first seed
-
538 cur_line->push_back(seed);
-
539 to_treat[seed] = false;
-
540 // Flag to determine end of line
-
541 bool end = false;
-
542 // Flag to determine if we arrived at the end of an extreme of a line
-
543 bool opposite_direction_check = false;
-
544 // Info about growth direction
-
545 vector<CoMMAWeightType> prev_cen =
-
546 this->_fc_graph->_centers[seed]; // OK copy
-
547 vector<CoMMAWeightType> prev_dir(pts_dim);
-
548 bool empty_line = true;
-
549 // Start the check from the seed
-
550 // while the line is not ended
-
551 while (!end) {
-
552 // for the seed (that is updated each time end!= true) we fill the
-
553 // neighbours and the weights
-
554 const vector<CoMMAIndexType> v_neighbours =
-
555 this->_fc_graph->get_neighbours(seed);
-
556 const vector<CoMMAWeightType> v_w_neighbours =
-
557 this->_fc_graph->get_weights(seed);
-
558 auto n_it = this->_fc_graph->neighbours_cbegin(seed);
-
559 auto w_it = this->_fc_graph->weights_cbegin(seed);
-
560 // vector of the candidates to continue the line
-
561 CoMMASetOfPairType candidates;
-
562 // If the line is long enough, we use the direction. Otherwise, we use
-
563 // the weight. Putting a high-level if to reduce the branching inside
-
564 // the loop over the neighbours.
-
565 if (empty_line) {
-
566 for (; n_it != this->_fc_graph->neighbours_cend(seed);
-
567 ++n_it, ++w_it) {
-
568 if (to_treat[*n_it] && *w_it > 0.90 * max_weights[seed]) {
-
569 candidates.emplace(*w_it, *n_it);
-
570 }
-
571 } // end for loop
-
572 } else {
-
573 // If not an empty line, we check the direction, see
-
574 // !dot_deviate below
-
575 for (; n_it != this->_fc_graph->neighbours_cend(seed);
-
576 ++n_it, ++w_it) {
-
577 if (to_treat[*n_it] && *w_it > 0.90 * max_weights[seed]) {
-
578 vector<CoMMAWeightType> cur_dir(pts_dim);
-
579 get_direction<CoMMAWeightType>(
-
580 prev_cen, this->_fc_graph->_centers[*n_it], cur_dir);
-
581 const CoMMAWeightType dot =
-
582 dot_product<CoMMAWeightType>(prev_dir, cur_dir);
-
583 if (!dot_deviate<CoMMAWeightType>(dot))
-
584 candidates.emplace(fabs(dot), *n_it);
-
585 }
-
586 } // end for loop
-
587 }
-
588 if (!candidates.empty()) {
-
589 // Even if we have more than one candidate, we choose just one
-
590 // otherwise we risk to add 2 (problematic with primal seed)
-
591 // It is what is done in Mavriplis
-
592 // https://scicomp.stackexchange.com/questions/41830/anisotropic-lines-identification-algorithm
-
596 // update the seed to the actual candidate
-
597 seed = candidates.begin()->second;
-
598 if (!opposite_direction_check) {
-
599 cur_line->push_back(seed);
-
600 } else {
-
601 cur_line->push_front(seed);
-
602 }
-
603 to_treat[seed] = false;
-
604 empty_line = false;
-
605 const auto &cur_cen = this->_fc_graph->_centers[seed];
-
606 get_direction<CoMMAWeightType>(prev_cen, cur_cen, prev_dir);
-
607 prev_cen = cur_cen; // this->_fc_graph->_centers[seed];
-
608 if (!primal_dir.has_value()) primal_dir = prev_dir;
-
609 }
-
610 // 0 candidate, we are at the end of the line or at the end of one
-
611 // direction
-
612 else /*if (candidates.size() == 0)*/ {
-
613 // Before giving up, let's try another thing: Doing the same things as
-
614 // above with the only difference that we allow to move through any
-
615 // faces and not only the maximum one but still checking for direction
-
616 if (!empty_line) {
-
617 // If not an empty line, we check the direction, see is_parallel
-
618 // below
-
619 for (auto it = this->_fc_graph->neighbours_cbegin(seed);
-
620 it != this->_fc_graph->neighbours_cend(seed); ++it) {
-
621 if (to_treat[*it]) {
-
622 vector<CoMMAWeightType> cur_dir(pts_dim);
-
623 get_direction<CoMMAWeightType>(
-
624 prev_cen, this->_fc_graph->_centers[*it], cur_dir);
-
625 const CoMMAWeightType dot =
-
626 dot_product<CoMMAWeightType>(prev_dir, cur_dir);
-
627 if (!dot_deviate<CoMMAWeightType>(dot))
-
628 candidates.emplace(fabs(dot), *it);
-
629 }
-
630 } // end for loop
-
631 if (!candidates.empty()) {
-
632 // We found one! Keep going!
-
633 seed = candidates.begin()->second;
-
634 if (!opposite_direction_check) {
-
635 cur_line->push_back(seed);
-
636 } else {
-
637 cur_line->push_front(seed);
-
638 }
-
639 to_treat[seed] = false;
-
640 empty_line = false;
-
641 const auto &cur_cen = this->_fc_graph->_centers[seed];
-
642 get_direction<CoMMAWeightType>(prev_cen, cur_cen, prev_dir);
-
643 prev_cen = cur_cen; // this->_fc_graph->_centers[seed];
-
644 if (!primal_dir.has_value()) primal_dir = prev_dir;
-
645 } else {
-
646 if (opposite_direction_check) {
-
647 end = true;
-
648 } else {
-
649 seed = primal_seed;
-
650 prev_dir = primal_dir.value();
-
651 prev_cen = this->_fc_graph->_centers[seed];
-
652 opposite_direction_check = true;
-
653 }
-
654 }
-
655 } // End last step check on neighbours
-
656 else {
-
657 end = true;
-
658 }
-
659 } // End of no candidates case
-
660 } // End of a line
-
661 // we push the deque to the list if are bigger than 1
-
662 if (cur_line->size() > 1) {
-
663 this->_v_lines[0].push_back(cur_line);
-
664 this->_nb_lines[0] += 1;
-
665 }
-
666 } // End of loop over anisotropic cells
-
667
-
668 if (this->_nb_lines[0] == 0) {
-
669 cout << "CoMMA - No anisotropic line was built (e.g., only isolated "
-
670 "anisotropic cells). Skipping anisotropic agglomeration"
-
671 << endl;
-
672 return false;
-
673 }
-
674 return true;
-
675 }
-
676
-
680 deque<CoMMAIndexType> _aniso_neighbours;
-
681
-
683 bool _odd_line_length;
-
684};
-
685
-
694template<
-
695 typename CoMMAIndexType,
-
696 typename CoMMAWeightType,
-
697 typename CoMMAIntType>
-
698class Agglomerator_Isotropic :
-
699 public Agglomerator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
-
700public:
-
702 using NeighbourhoodCreatorBaseType =
-
703 NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
705 using NeighbourhoodCreatorExtType =
-
706 NeighbourhoodExtendedCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
708 using NeighbourhoodCreatorPFType = NeighbourhoodPureFrontCreator<
-
709 CoMMAIndexType,
-
710 CoMMAWeightType,
-
711 CoMMAIntType>;
-
715 CoMMAIntType _fc_iter;
-
716
-
718 shared_ptr<NeighbourhoodCreatorBaseType> _neigh_crtor;
-
719
-
735 Agglomerator_Isotropic(
-
736 shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>> graph,
-
737 shared_ptr<
-
738 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
739 cc_graph,
-
740 shared_ptr<Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
741 seeds_pool,
-
742 CoMMAIntType neighbourhood_type,
-
743 CoMMAIntType fc_iter,
-
744 CoMMAIntType dimension = 3) :
-
745 Agglomerator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
-
746 graph, cc_graph, seeds_pool, dimension),
-
747 _fc_iter(fc_iter) {
-
748 if (neighbourhood_type == CoMMANeighbourhoodT::EXTENDED)
-
749 _neigh_crtor = make_shared<NeighbourhoodCreatorExtType>();
-
750 else
-
751 _neigh_crtor = make_shared<NeighbourhoodCreatorPFType>();
-
752 }
-
753
-
755 virtual ~Agglomerator_Isotropic() = default;
+
393 this->update_seeds_pool();
+
394
+
395 } // End if should agglomerate
+
396 else
+
397 // If it didn't agglomerate, initialize for sure
+
398 this->_seeds_pool->initialize();
+
399 }
+
400
+
404 void update_seeds_pool() {
+
405 if (!this->_aniso_neighbours.empty()) {
+
406 // Example of erase taken from
+
407 // https://en.cppreference.com/w/cpp/container/deque/erase
+
408 for (auto it = this->_aniso_neighbours.begin();
+
409 it != this->_aniso_neighbours.end();) {
+
410 if (this->_cc_graph->_is_fc_agglomerated[*it])
+
411 it = this->_aniso_neighbours.erase(it);
+
412 else
+
413 ++it;
+
414 }
+
415 if (!this->_aniso_neighbours.empty()) {
+
416 // The master queue is the one of the first agglomerated cell:
+
417 // It is important to set it in the case the user asked for
+
418 // neighbourhood priority
+
419 this->_seeds_pool->set_top_queue(this->_fc_graph->get_n_boundary_faces(
+
420 this->_aniso_neighbours.front()));
+
421 this->_seeds_pool->update(this->_aniso_neighbours);
+
422 }
+
423 }
+
424 // Even if we have updated it, the seeds pool might need initialization, for
+
425 // instance, if it was set up with boundary priority
+
426 if (this->_seeds_pool->need_initialization(
+
427 this->_cc_graph->_is_fc_agglomerated))
+
428 this->_seeds_pool->initialize();
+
429 }
+
430
+
438 void export_anisotropic_lines(
+
439 CoMMAIntType level,
+
440 std::vector<CoMMAIndexType> &aniso_lines_idx,
+
441 std::vector<CoMMAIndexType> &aniso_lines) const {
+
442 // Reset lines
+
443 aniso_lines_idx.clear();
+
444 aniso_lines.clear();
+
445 if (this->_should_agglomerate && !this->_v_lines[level].empty()) {
+
446 // If at the level of agglomeration "level" the vector containing the
+
447 // number of lines is empty, hence it means no line has been found at the
+
448 // current level. variable cumulating the number of fine cells in the
+
449 // agglomeration lines of the current level
+
450 CoMMAIndexType number_of_fc_in_agglomeration_lines = 0;
+
451 aniso_lines_idx.push_back(0);
+
452 // We cycle over the line (in _v_lines)
+
453 for (const auto &line_ptr : this->_v_lines[level]) {
+
454 const auto line = *line_ptr; // Convenience
+
455 const CoMMAIndexType size_of_line = line.size();
+
456 // This vector store the end of a line and the start of a new
+
457 // anisotropic line WARNING! We are storing the anisotropic lines in a
+
458 // vector so we need a way to point to the end of a line and the
+
459 // starting of a new one.
+
460 aniso_lines_idx.push_back(
+
461 size_of_line + number_of_fc_in_agglomeration_lines);
+
462 // Here we store the index of the cell.
+
463 for (const auto cell : line) {
+
464 aniso_lines.push_back(cell);
+
465 }
+
466 number_of_fc_in_agglomeration_lines += size_of_line;
+
467 }
+
468 }
+
469 }
+
470
+
472 std::vector<CoMMAIndexType> _nb_lines;
+
473
+
480 std::vector<std::vector<AnisotropicLinePtr>> _v_lines;
+
481
+
485 bool _should_agglomerate;
+
486
+
487protected:
+
499 bool build_anisotropic_lines(
+
500 const std::vector<CoMMAWeightType> &priority_weights,
+
501 const CoMMAWeightType threshold_anisotropy) {
+
502 std::deque<CoMMAIndexType> aniso_seeds_pool;
+
503 // It is the max_weight, hence the maximum area among the faces composing
+
504 // the cell. Used to recognized the face
+
505 std::vector<CoMMAWeightType> max_weights(
+
506 this->_fc_graph->_number_of_cells, 0.0);
+
507 std::vector<bool> to_treat(this->_fc_graph->_number_of_cells, false);
+
508 // Computation of the anisotropic cell, alias of the cells for which the
+
509 // ratio between the face with maximum area and the face with minimum area
+
510 // is more than a given threshold.
+
511 this->_fc_graph->tag_anisotropic_cells(
+
512 max_weights, to_treat, aniso_seeds_pool, threshold_anisotropy,
+
513 priority_weights, 0);
+
514 if (aniso_seeds_pool.empty()) {
+
515 std::cout << "CoMMA - No anisotropic cell found. Skipping anisotropic "
+
516 "agglomeration"
+
517 << std::endl;
+
518 return false;
+
519 }
+
520 // Size might not be the dimension
+
521 const auto pts_dim = this->_fc_graph->_centers[0].size();
+
522 // size of the line
+
523 this->_nb_lines[0] = 0;
+
524 // we cycle on all the anisotropic cells identified before
+
525 for (auto &i_fc : aniso_seeds_pool) {
+
526 // seed from where we start building the line
+
527 if (!to_treat[i_fc]) {
+
528 // If the cell has been already treated, continue to the next
+
529 // anisotropic cell
+
530 continue;
+
531 }
+
532 // we save the primal seed for the opposite direction check that will
+
533 // happen later
+
534 const auto primal_seed = i_fc;
+
535 std::optional<std::vector<CoMMAWeightType>> primal_dir = std::nullopt;
+
536 // seed to be considered to add or not a new cell to the line
+
537 CoMMAIndexType seed = primal_seed;
+
538 // Create the new line
+
539 AnisotropicLinePtr cur_line = std::make_shared<AnisotropicLine>();
+
540 // we add the first seed
+
541 cur_line->push_back(seed);
+
542 to_treat[seed] = false;
+
543 // Flag to determine end of line
+
544 bool end = false;
+
545 // Flag to determine if we arrived at the end of an extreme of a line
+
546 bool opposite_direction_check = false;
+
547 // Info about growth direction
+
548 std::vector<CoMMAWeightType> prev_cen =
+
549 this->_fc_graph->_centers[seed]; // OK copy
+
550 std::vector<CoMMAWeightType> prev_dir(pts_dim);
+
551 bool empty_line = true;
+
552 // Start the check from the seed
+
553 // while the line is not ended
+
554 while (!end) {
+
555 // for the seed (that is updated each time end!= true) we fill the
+
556 // neighbours and the weights
+
557 const std::vector<CoMMAIndexType> v_neighbours =
+
558 this->_fc_graph->get_neighbours(seed);
+
559 const std::vector<CoMMAWeightType> v_w_neighbours =
+
560 this->_fc_graph->get_weights(seed);
+
561 auto n_it = this->_fc_graph->neighbours_cbegin(seed);
+
562 auto w_it = this->_fc_graph->weights_cbegin(seed);
+
563 // std::vector of the candidates to continue the line
+
564 CoMMASetOfPairType candidates;
+
565 // If the line is long enough, we use the direction. Otherwise, we use
+
566 // the weight. Putting a high-level if to reduce the branching inside
+
567 // the loop over the neighbours.
+
568 if (empty_line) {
+
569 for (; n_it != this->_fc_graph->neighbours_cend(seed);
+
570 ++n_it, ++w_it) {
+
571 if (to_treat[*n_it] && *w_it > 0.90 * max_weights[seed]) {
+
572 candidates.emplace(*w_it, *n_it);
+
573 }
+
574 } // end for loop
+
575 } else {
+
576 // If not an empty line, we check the direction, see
+
577 // !dot_deviate below
+
578 for (; n_it != this->_fc_graph->neighbours_cend(seed);
+
579 ++n_it, ++w_it) {
+
580 if (to_treat[*n_it] && *w_it > 0.90 * max_weights[seed]) {
+
581 std::vector<CoMMAWeightType> cur_dir(pts_dim);
+
582 get_direction<CoMMAWeightType>(
+
583 prev_cen, this->_fc_graph->_centers[*n_it], cur_dir);
+
584 const auto dot = dot_product<CoMMAWeightType>(prev_dir, cur_dir);
+
585 if (!dot_deviate<CoMMAWeightType>(dot))
+
586 candidates.emplace(fabs(dot), *n_it);
+
587 }
+
588 } // end for loop
+
589 }
+
590 if (!candidates.empty()) {
+
591 // Even if we have more than one candidate, we choose just one
+
592 // otherwise we risk to add 2 (problematic with primal seed)
+
593 // It is what is done in Mavriplis
+
594 // https://scicomp.stackexchange.com/questions/41830/anisotropic-lines-identification-algorithm
+
598 // update the seed to the actual candidate
+
599 seed = candidates.begin()->second;
+
600 if (!opposite_direction_check) {
+
601 cur_line->push_back(seed);
+
602 } else {
+
603 cur_line->push_front(seed);
+
604 }
+
605 to_treat[seed] = false;
+
606 empty_line = false;
+
607 const auto &cur_cen = this->_fc_graph->_centers[seed];
+
608 get_direction<CoMMAWeightType>(prev_cen, cur_cen, prev_dir);
+
609 prev_cen = cur_cen; // this->_fc_graph->_centers[seed];
+
610 if (!primal_dir.has_value()) primal_dir = prev_dir;
+
611 }
+
612 // 0 candidate, we are at the end of the line or at the end of one
+
613 // direction
+
614 else /*if (candidates.size() == 0)*/ {
+
615 // Before giving up, let's try another thing: Doing the same things as
+
616 // above with the only difference that we allow to move through any
+
617 // faces and not only the maximum one but still checking for direction
+
618 if (!empty_line) {
+
619 // If not an empty line, we check the direction, see is_parallel
+
620 // below
+
621 for (auto it = this->_fc_graph->neighbours_cbegin(seed);
+
622 it != this->_fc_graph->neighbours_cend(seed); ++it) {
+
623 if (to_treat[*it]) {
+
624 std::vector<CoMMAWeightType> cur_dir(pts_dim);
+
625 get_direction<CoMMAWeightType>(
+
626 prev_cen, this->_fc_graph->_centers[*it], cur_dir);
+
627 const auto dot =
+
628 dot_product<CoMMAWeightType>(prev_dir, cur_dir);
+
629 if (!dot_deviate<CoMMAWeightType>(dot))
+
630 candidates.emplace(fabs(dot), *it);
+
631 }
+
632 } // end for loop
+
633 if (!candidates.empty()) {
+
634 // We found one! Keep going!
+
635 seed = candidates.begin()->second;
+
636 if (!opposite_direction_check) {
+
637 cur_line->push_back(seed);
+
638 } else {
+
639 cur_line->push_front(seed);
+
640 }
+
641 to_treat[seed] = false;
+
642 empty_line = false;
+
643 const auto &cur_cen = this->_fc_graph->_centers[seed];
+
644 get_direction<CoMMAWeightType>(prev_cen, cur_cen, prev_dir);
+
645 prev_cen = cur_cen; // this->_fc_graph->_centers[seed];
+
646 if (!primal_dir.has_value()) primal_dir = prev_dir;
+
647 } else {
+
648 if (opposite_direction_check) {
+
649 end = true;
+
650 } else {
+
651 seed = primal_seed;
+
652 prev_dir = primal_dir.value();
+
653 prev_cen = this->_fc_graph->_centers[seed];
+
654 opposite_direction_check = true;
+
655 }
+
656 }
+
657 } // End last step check on neighbours
+
658 else {
+
659 end = true;
+
660 }
+
661 } // End of no candidates case
+
662 } // End of a line
+
663 // we push the deque to the list if are bigger than 1
+
664 if (cur_line->size() > 1) {
+
665 this->_v_lines[0].push_back(cur_line);
+
666 this->_nb_lines[0] += 1;
+
667 }
+
668 } // End of loop over anisotropic cells
+
669
+
670 if (this->_nb_lines[0] == 0) {
+
671 std::cout << "CoMMA - No anisotropic line was built (e.g., only isolated "
+
672 "anisotropic cells). Skipping anisotropic agglomeration"
+
673 << std::endl;
+
674 return false;
+
675 }
+
676 return true;
+
677 }
+
678
+
682 std::deque<CoMMAIndexType> _aniso_neighbours;
+
683
+
685 bool _odd_line_length;
+
686};
+
687
+
696template<
+
697 typename CoMMAIndexType,
+
698 typename CoMMAWeightType,
+
699 typename CoMMAIntType>
+
700class Agglomerator_Isotropic :
+
701 public Agglomerator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
702public:
+
704 using NeighbourhoodCreatorBaseType =
+
705 NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
707 using NeighbourhoodCreatorExtType =
+
708 NeighbourhoodExtendedCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
710 using NeighbourhoodCreatorPFType = NeighbourhoodPureFrontCreator<
+
711 CoMMAIndexType,
+
712 CoMMAWeightType,
+
713 CoMMAIntType>;
+
717 CoMMAIntType _fc_iter;
+
718
+
720 std::shared_ptr<NeighbourhoodCreatorBaseType> _neigh_crtor;
+
721
+
737 Agglomerator_Isotropic(
+
738 std::shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
739 graph,
+
740 std::shared_ptr<
+
741 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
742 cc_graph,
+
743 std::shared_ptr<Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
744 seeds_pool,
+
745 CoMMAIntType neighbourhood_type,
+
746 CoMMAIntType fc_iter,
+
747 CoMMAIntType dimension = 3) :
+
748 Agglomerator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
+
749 graph, cc_graph, seeds_pool, dimension),
+
750 _fc_iter(fc_iter) {
+
751 if (neighbourhood_type == CoMMANeighbourhoodT::EXTENDED)
+
752 _neigh_crtor = std::make_shared<NeighbourhoodCreatorExtType>();
+
753 else
+
754 _neigh_crtor = std::make_shared<NeighbourhoodCreatorPFType>();
+
755 }
756
-
766 void set_agglomeration_parameter(
-
767 CoMMAIntType goal_card = 0,
-
768 CoMMAIntType min_card = 0,
-
769 CoMMAIntType max_card = 0) {
-
770 // Note[RM]: I tried make the following const static but ended up
-
771 // with some SEGFAULT with Intel possibly linked to the following
-
772 // https://stackoverflow.com/a/36406774
-
773 unordered_map<CoMMAIntType, CoMMAIntType> d_default_min_card = {
-
774 {2, 3}, {3, 6}};
-
775 unordered_map<CoMMAIntType, CoMMAIntType> d_default_max_card = {
-
776 {2, 5}, {3, 10}};
-
777 unordered_map<CoMMAIntType, CoMMAIntType> d_default_goal_card = {
-
778 {2, 4}, {3, 8}};
-
779 unordered_map<CoMMAIntType, CoMMAIntType> d_default_threshold_card = {
-
780 {2, 2}, {3, 3}};
-
781 // Definition of _min_card
-
782 if (min_card == 0) {
-
783 this->_min_card = d_default_min_card.at(this->_dimension);
-
784 } else {
-
785 this->_min_card = min_card;
-
786 }
-
787
-
788 // Definition of _max_card
-
789 if (max_card == 0) {
-
790 this->_max_card = d_default_max_card.at(this->_dimension);
-
791 } else {
-
792 this->_max_card = max_card;
-
793 }
-
794 // Definition of _goal_card
-
795 if (goal_card == 0) {
-
796 this->_goal_card = d_default_goal_card.at(this->_dimension);
-
797 } else {
-
798 this->_goal_card = goal_card;
-
799 }
-
800
-
801 // Definition of _threshold_card
-
802 this->_threshold_card = d_default_threshold_card.at(this->_dimension);
-
803 }
-
804
-
828 void agglomerate_one_level(
-
829 const CoMMAIntType goal_card,
-
830 const CoMMAIntType min_card,
-
831 const CoMMAIntType max_card,
-
832 const vector<CoMMAWeightType> &priority_weights,
-
833 bool correction_steps) override {
-
834 set_agglomeration_parameter(goal_card, min_card, max_card);
-
835 constexpr bool is_anistropic = false;
-
836 // We define a while for which we control the number of agglomerated cells
-
837 const CoMMAIndexType nb_of_fc = this->_l_nb_of_cells[0];
-
838 while (this->_cc_graph->get_number_of_fc_agglomerated() < nb_of_fc) {
-
839 // 1) Choose a new seed
-
840 const auto seed = this->_seeds_pool->choose_new_seed(
-
841 this->_cc_graph->_is_fc_agglomerated);
-
842 assert(seed.has_value());
-
843 // 2) Choose the set of Coarse Cells with the specification of the
-
844 // algorithm in the children class
-
845 CoMMAIntType compactness = 0;
-
846 const unordered_set<CoMMAIndexType> set_current_cc =
-
847 choose_optimal_cc_and_update_seeds_pool(
-
848 seed.value(), priority_weights, compactness);
-
849 // 3) Creation of cc
-
850 // We check that threshold cardinality is reached
-
851 // const bool creation_delayed =
-
852 // (static_cast<CoMMAIntType>(s_current_cc.size()) <=
-
853 // this->_threshold_card);
-
854 // @TODO: We prefer to have coarse cells created right now, it might be
-
855 // interesting to explore if delaying was allowed
-
856 constexpr bool is_creation_delayed = false;
-
857 this->_cc_graph->create_cc(
-
858 set_current_cc, compactness, is_anistropic, is_creation_delayed);
-
859 }
-
860 // When we exit from this process all the cells are agglomerated, apart the
-
861 // delayed ones
-
862 // We proceed in creating the delayed ones
-
863 this->_cc_graph->cc_create_all_delayed_cc();
-
864 // Correct if necessary
-
865 if (correction_steps) { this->_cc_graph->correct(this->_max_card); }
-
866 this->_l_nb_of_cells.push_back(this->_cc_graph->_cc_counter);
-
867 }
-
868
-
875 inline CoMMAWeightType estimate_boundary_face(
-
876 const vector<CoMMAWeightType> &int_faces) const {
-
877 // Approximate with an average of the internal faces
-
878 // We could choose many kinds of average, e.g. arithmetic or geometric, I
-
879 // honestly don't know if one is better then the other...
-
880 // Here, we use the geometric one, which should be less sensitive to
-
881 // outliers
-
882 return pow(
-
883 accumulate(
-
884 int_faces.begin(), int_faces.end(), CoMMAWeightType{1.},
-
885 multiplies<>()),
-
886 CoMMAWeightType{1.} / int_faces.size());
-
887 }
-
888
-
905 inline void compute_next_cc_features(
-
906 const CoMMAIndexType i_fc,
-
907 const CoMMAWeightType cc_diam,
-
908 const CoMMAWeightType cc_vol,
-
909 const unordered_set<CoMMAIndexType> &fc_of_cc,
-
910 // out
-
911 CoMMAIntType &shared_faces,
-
912 CoMMAWeightType &aspect_ratio,
-
913 CoMMAWeightType &new_diam,
-
914 CoMMAWeightType &new_vol) const {
-
915 // Compute shared faces
-
916 shared_faces = 0;
-
917 for (auto it = this->_fc_graph->neighbours_cbegin(i_fc);
-
918 it != this->_fc_graph->neighbours_cend(i_fc); ++it) {
-
919 if (*it != i_fc && (fc_of_cc.count(*it) != 0)) shared_faces++;
-
920 }
-
921
-
922 // Compute new diameter
-
923 const vector<CoMMAWeightType> &cen_fc = this->_fc_graph->_centers[i_fc];
-
924 CoMMAWeightType max_diam = cc_diam * cc_diam;
-
925 for (const auto i_fc_cc : fc_of_cc) {
-
926 const CoMMAWeightType d = squared_euclidean_distance<CoMMAWeightType>(
-
927 cen_fc, this->_fc_graph->_centers[i_fc_cc]);
-
928 if (d > max_diam) max_diam = d;
-
929 } // for i_fc_cc
-
930 new_diam = sqrt(max_diam);
-
931
-
932 new_vol = cc_vol + this->_fc_graph->_volumes[i_fc];
-
933
-
934 aspect_ratio = this->_compute_AR(new_diam, new_vol);
-
935 }
-
936
-
946 virtual unordered_set<CoMMAIndexType> choose_optimal_cc_and_update_seeds_pool(
-
947 const CoMMAIndexType seed,
-
948 const vector<CoMMAWeightType> &priority_weights,
-
949 CoMMAIntType &compactness) = 0;
-
950};
-
951
-
960template<
-
961 typename CoMMAIndexType,
-
962 typename CoMMAWeightType,
-
963 typename CoMMAIntType>
-
964class Agglomerator_Biconnected :
-
965 public Agglomerator_Isotropic<
-
966 CoMMAIndexType,
-
967 CoMMAWeightType,
-
968 CoMMAIntType> {
-
969public:
-
984 Agglomerator_Biconnected(
-
985 shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>> graph,
-
986 shared_ptr<
-
987 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
988 cc_graph,
-
989 shared_ptr<Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
990 seeds_pool,
-
991 CoMMAIntType neighbourhood_type,
-
992 CoMMAIntType fc_iter,
-
993 CoMMAIntType dimension = 3) :
-
994 Agglomerator_Isotropic<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
-
995 graph, cc_graph, seeds_pool, neighbourhood_type, fc_iter, dimension) {
-
996 // no particular constructor
-
997 }
-
998
-
1000 virtual ~Agglomerator_Biconnected() = default;
-
1001
-
1012 unordered_set<CoMMAIndexType> choose_optimal_cc_and_update_seeds_pool(
-
1013 const CoMMAIndexType seed,
-
1014 const vector<CoMMAWeightType> &priority_weights,
-
1015 CoMMAIntType &compactness) override {
-
1016 bool is_order_primary = false;
-
1017 // The goal of this function is to choose from a pool of neighbour the
-
1018 // better one to build a compact coarse cell
-
1019 assert(this->_goal_card > 1); // _goal_card has been initialized
-
1020 // OUTPUT: Definition of the current cc, IT WILL BE GIVEN AS AN OUTPUT
-
1021 unordered_set<CoMMAIndexType> s_current_cc = {seed};
-
1022 // Dictionary of the neighbourhood of the seed, the key is the global index
-
1023 // of the cell and the value the order of distance from the seed (1 order
-
1024 // direct neighbourhood, 2 order etc.)
-
1025 unordered_map<CoMMAIndexType, CoMMAIntType> d_n_of_seed;
-
1026 // Number of fine cells constituting the current coarse cell in
-
1027 // construction.
-
1028 CoMMAIntType size_current_cc = 1; // CC contains only one cell: the seed
-
1029 // set to 3 as default we set to this value the maximum order to which we
-
1030 // search to compose the coarse cell
-
1031 CoMMAIntType max_order_of_neighbourhood =
-
1032 max(this->_min_neighbourhood, this->_max_card / this->_dimension);
-
1033
-
1034 // We fill the d_n_of_seeds considering the initial seed passed
-
1035 this->_fc_graph->compute_neighbourhood_of_cc(
-
1036 s_current_cc,
-
1037 max_order_of_neighbourhood, // in and out
-
1038 d_n_of_seed, // output, the function fills the dictionary
-
1039 this->_max_card,
-
1040 // anisotropic cells agglomerated (not to take into account in the
-
1041 // process)
-
1042 this->_cc_graph->_is_fc_agglomerated);
-
1043
-
1044 // If no neighbour is found for seed: this case happened only when isotropic
-
1045 // cell is surrounded by anisotropic cells.
-
1046 if (d_n_of_seed.empty()) {
-
1047 // d_n_of_seed is empty, i.e: the cc is not complete and no neighbour are
-
1048 // available!
-
1049 compactness = 0;
-
1050 } else if (
-
1051 static_cast<CoMMAIntType>(d_n_of_seed.size() + s_current_cc.size())
-
1052 < this->_goal_card) {
-
1053 // Not enough available neighbour, the dictionary of the available cells
-
1054 // size summed with the current cell size is not enough to reach the goal
-
1055 // cardinality: creation of a (too small) coarse cell.
-
1056 // We add ALL the cells of the dictionary to the set of current coarse
-
1057 // cell.
-
1058 for (auto &i_k_v : d_n_of_seed) {
-
1059 s_current_cc.insert(i_k_v.first);
-
1060 }
-
1061 compactness =
-
1062 this->_fc_graph->compute_min_fc_compactness_inside_a_cc(s_current_cc);
-
1063 } else {
-
1064 // If we passed the two previous checks, the minimum size is the goal
-
1065 // cardinality required
-
1066 // TODO: CHECK THAT, if the goal is 2, the minimum size would be 3?
-
1067 // ARGUABLE! Let's think to 3
-
1068 // Computation of the initial aspect ratio
-
1069 CoMMAWeightType diam_cc{-1.};
-
1070 // CC in construction
-
1071 decltype(s_current_cc) tmp_cc = {seed};
-
1072 // volume of cc is at first the volume of the seed.
-
1073 CoMMAWeightType vol_cc = this->_fc_graph->_volumes[seed];
-
1074 // This dictionary is used to store the eligible cc: i.e. its size is
-
1075 // inside the permitted range. This is useful to track back our step if
-
1076 // needed. [size of the current, [cell set, d_n_of seed]]
-
1077 unordered_map<
-
1078 CoMMAIntType, pair<
-
1079 unordered_set<CoMMAIndexType>,
-
1080 unordered_map<CoMMAIndexType, CoMMAIntType>>>
-
1081 dict_cc_in_creation;
-
1082 CoMMAIntType min_external_faces = numeric_limits<CoMMAIntType>::max();
-
1083 CoMMAIntType max_compact = 0;
-
1084 CoMMAIntType arg_min_card = this->_min_card;
-
1085 // Here we define the exact dimension of the coarse cell as the min
-
1086 // between the max cardinality given as an input (remember the constructor
-
1087 // choice in case of -1) and the dictionary of the boundary cells, it
-
1088 // means the total number of neighbourhood cells until the order we have
-
1089 // given (as default 3, so until the third order)
-
1090 const CoMMAIntType max_ind =
-
1091 min(this->_max_card, static_cast<CoMMAIntType>(d_n_of_seed.size() + 1));
-
1092 // This formula does not work
-
1093 CoMMAIntType number_of_external_faces_current_cc =
-
1094 this->_fc_graph->get_nb_of_neighbours(seed)
-
1095 + this->_fc_graph->get_n_boundary_faces(seed) - 1;
-
1096 // d_keys_to_set from Util.h, it takes the keys of the unordered map and
-
1097 // create an unordered set. The unordered set is representing hence all
-
1098 // the neighbours of seed until a given order.
-
1099 const unordered_set<CoMMAIndexType> s_neighbours_of_seed =
-
1100 d_keys_to_set<CoMMAIndexType, CoMMAIntType>(d_n_of_seed);
-
1101 // Build the class neighbourhood
-
1102 auto neighbourhood = this->_neigh_crtor->create(
-
1103 s_neighbours_of_seed, priority_weights, this->_dimension);
-
1104 // Compactness is used when choosing the best cell. We compute it
-
1105 // iteratively as the agglomeration advances.
-
1106 unordered_map<CoMMAIndexType, CoMMAIntType> cur_compact_by_fc{};
-
1107 cur_compact_by_fc.reserve(max_ind);
-
1108 cur_compact_by_fc[seed] = 0;
-
1109 constexpr auto second_less = [](const auto &p, const auto &q) {
-
1110 return p.second < q.second;
-
1111 };
-
1112 CoMMAIndexType next_cell = seed; // Dummy initialization
-
1113 // Choice of the fine cells to agglomerate we enter in a while, we store
-
1114 // anyways all the possible coarse cells (not only the max dimension one)
-
1115 while (size_current_cc < max_ind) {
-
1116 // Update the neighbourhood and generate the candidates
-
1117 neighbourhood->update(
-
1118 next_cell, this->_fc_graph->get_neighbours(next_cell));
-
1119 next_cell = 0; // Dummy initialization
-
1120 CoMMAWeightType min_ar_diam = numeric_limits<CoMMAWeightType>::max();
-
1121 CoMMAWeightType min_ar_vol = numeric_limits<CoMMAWeightType>::max();
-
1122 CoMMAIntType max_faces_in_common = 0;
-
1123 // We compute the best fine cell to add, based on the aspect
-
1124 // ratio and is given back in next_cell. It takes account also
-
1125 // the fine cells that has been added until now.
-
1126 // min(max_ind - size_current_cc, this->_fc_iter)
-
1127 this->compute_best_fc_to_add(
-
1128 min(max_ind - size_current_cc, this->_fc_iter), neighbourhood,
-
1129 d_n_of_seed, is_order_primary, diam_cc, vol_cc, tmp_cc, next_cell,
-
1130 // output
-
1131 max_faces_in_common, min_ar_diam, min_ar_vol);
-
1132
-
1133 // This formula does not work
-
1134 number_of_external_faces_current_cc +=
-
1135 this->_fc_graph->get_nb_of_neighbours(next_cell)
-
1136 + this->_fc_graph->get_n_boundary_faces(next_cell) - 1
-
1137 - 2 * max_faces_in_common;
-
1138 // we increase the cc
-
1139 size_current_cc++;
-
1140 tmp_cc.insert(next_cell);
+
758 ~Agglomerator_Isotropic() override = default;
+
759
+
769 void set_agglomeration_parameter(
+
770 CoMMAIntType goal_card = 0,
+
771 CoMMAIntType min_card = 0,
+
772 CoMMAIntType max_card = 0) {
+
773 // Note[RM]: I tried make the following const static but ended up
+
774 // with some SEGFAULT with Intel possibly linked to the following
+
775 // https://stackoverflow.com/a/36406774
+
776 std::unordered_map<CoMMAIntType, CoMMAIntType> d_default_min_card = {
+
777 {2, 3}, {3, 6}};
+
778 std::unordered_map<CoMMAIntType, CoMMAIntType> d_default_max_card = {
+
779 {2, 5}, {3, 10}};
+
780 std::unordered_map<CoMMAIntType, CoMMAIntType> d_default_goal_card = {
+
781 {2, 4}, {3, 8}};
+
782 std::unordered_map<CoMMAIntType, CoMMAIntType> d_default_threshold_card = {
+
783 {2, 2}, {3, 3}};
+
784 // Definition of _min_card
+
785 if (min_card == 0) {
+
786 this->_min_card = d_default_min_card.at(this->_dimension);
+
787 } else {
+
788 this->_min_card = min_card;
+
789 }
+
790
+
791 // Definition of _max_card
+
792 if (max_card == 0) {
+
793 this->_max_card = d_default_max_card.at(this->_dimension);
+
794 } else {
+
795 this->_max_card = max_card;
+
796 }
+
797 // Definition of _goal_card
+
798 if (goal_card == 0) {
+
799 this->_goal_card = d_default_goal_card.at(this->_dimension);
+
800 } else {
+
801 this->_goal_card = goal_card;
+
802 }
+
803
+
804 // Definition of _threshold_card
+
805 this->_threshold_card = d_default_threshold_card.at(this->_dimension);
+
806 }
+
807
+
831 void agglomerate_one_level(
+
832 const CoMMAIntType goal_card,
+
833 const CoMMAIntType min_card,
+
834 const CoMMAIntType max_card,
+
835 const std::vector<CoMMAWeightType> &priority_weights,
+
836 bool correction_steps) override {
+
837 set_agglomeration_parameter(goal_card, min_card, max_card);
+
838 constexpr bool is_anistropic = false;
+
839 // We define a while for which we control the number of agglomerated cells
+
840 const CoMMAIndexType nb_of_fc = this->_l_nb_of_cells[0];
+
841 while (this->_cc_graph->get_number_of_fc_agglomerated() < nb_of_fc) {
+
842 // 1) Choose a new seed
+
843 const auto seed = this->_seeds_pool->choose_new_seed(
+
844 this->_cc_graph->_is_fc_agglomerated);
+
845 assert(seed.has_value());
+
846 // 2) Choose the set of Coarse Cells with the specification of the
+
847 // algorithm in the children class
+
848 CoMMAIntType compactness = 0;
+
849 const std::unordered_set<CoMMAIndexType> set_current_cc =
+
850 choose_optimal_cc_and_update_seeds_pool(
+
851 seed.value(), priority_weights, compactness);
+
852 // 3) Creation of cc
+
853 // We check that threshold cardinality is reached
+
854 // const bool creation_delayed =
+
855 // (static_cast<CoMMAIntType>(s_current_cc.size()) <=
+
856 // this->_threshold_card);
+
857 // @TODO: We prefer to have coarse cells created right now, it might be
+
858 // interesting to explore if delaying was allowed
+
859 constexpr bool is_creation_delayed = false;
+
860 this->_cc_graph->create_cc(
+
861 set_current_cc, compactness, is_anistropic, is_creation_delayed);
+
862 }
+
863 // When we exit from this process all the cells are agglomerated, apart the
+
864 // delayed ones
+
865 // We proceed in creating the delayed ones
+
866 this->_cc_graph->cc_create_all_delayed_cc();
+
867 // Correct if necessary
+
868 if (correction_steps) { this->_cc_graph->correct(this->_max_card); }
+
869 this->_l_nb_of_cells.push_back(this->_cc_graph->_cc_counter);
+
870 }
+
871
+
878 inline CoMMAWeightType estimate_boundary_face(
+
879 const std::vector<CoMMAWeightType> &int_faces) const {
+
880 // Approximate with an average of the internal faces
+
881 // We could choose many kinds of average, e.g. arithmetic or geometric, I
+
882 // honestly don't know if one is better then the other...
+
883 // Here, we use the geometric one, which should be less sensitive to
+
884 // outliers
+
885 return pow(
+
886 accumulate(
+
887 int_faces.begin(), int_faces.end(), CoMMAWeightType{1.},
+
888 std::multiplies<>()),
+
889 CoMMAWeightType{1.} / int_faces.size());
+
890 }
+
891
+
908 inline void compute_next_cc_features(
+
909 const CoMMAIndexType i_fc,
+
910 const CoMMAWeightType cc_diam,
+
911 const CoMMAWeightType cc_vol,
+
912 const std::unordered_set<CoMMAIndexType> &fc_of_cc,
+
913 // out
+
914 CoMMAIntType &shared_faces,
+
915 CoMMAWeightType &aspect_ratio,
+
916 CoMMAWeightType &new_diam,
+
917 CoMMAWeightType &new_vol) const {
+
918 // Compute shared faces
+
919 shared_faces = 0;
+
920 for (auto it = this->_fc_graph->neighbours_cbegin(i_fc);
+
921 it != this->_fc_graph->neighbours_cend(i_fc); ++it) {
+
922 if (*it != i_fc && (fc_of_cc.count(*it) != 0)) shared_faces++;
+
923 }
+
924
+
925 // Compute new diameter
+
926 const std::vector<CoMMAWeightType> &cen_fc =
+
927 this->_fc_graph->_centers[i_fc];
+
928 CoMMAWeightType max_diam = cc_diam * cc_diam;
+
929 for (const auto i_fc_cc : fc_of_cc) {
+
930 const auto dist = squared_euclidean_distance<CoMMAWeightType>(
+
931 cen_fc, this->_fc_graph->_centers[i_fc_cc]);
+
932 if (dist > max_diam) max_diam = dist;
+
933 } // for i_fc_cc
+
934 new_diam = sqrt(max_diam);
+
935
+
936 new_vol = cc_vol + this->_fc_graph->_volumes[i_fc];
+
937
+
938 aspect_ratio = this->_compute_AR(new_diam, new_vol);
+
939 }
+
940
+
950 virtual std::unordered_set<CoMMAIndexType>
+
951 choose_optimal_cc_and_update_seeds_pool(
+
952 const CoMMAIndexType seed,
+
953 const std::vector<CoMMAWeightType> &priority_weights,
+
954 CoMMAIntType &compactness) = 0;
+
955};
+
956
+
965template<
+
966 typename CoMMAIndexType,
+
967 typename CoMMAWeightType,
+
968 typename CoMMAIntType>
+
969class Agglomerator_Biconnected :
+
970 public Agglomerator_Isotropic<
+
971 CoMMAIndexType,
+
972 CoMMAWeightType,
+
973 CoMMAIntType> {
+
974public:
+
989 Agglomerator_Biconnected(
+
990 std::shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
991 graph,
+
992 std::shared_ptr<
+
993 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
994 cc_graph,
+
995 std::shared_ptr<Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
996 seeds_pool,
+
997 CoMMAIntType neighbourhood_type,
+
998 CoMMAIntType fc_iter,
+
999 CoMMAIntType dimension = 3) :
+
1000 Agglomerator_Isotropic<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
+
1001 graph, cc_graph, seeds_pool, neighbourhood_type, fc_iter, dimension) {
+
1002 // no particular constructor
+
1003 }
+
1004
+
1006 ~Agglomerator_Biconnected() override = default;
+
1007
+
1018 std::unordered_set<CoMMAIndexType> choose_optimal_cc_and_update_seeds_pool(
+
1019 const CoMMAIndexType seed,
+
1020 const std::vector<CoMMAWeightType> &priority_weights,
+
1021 CoMMAIntType &compactness) override {
+
1022 bool is_order_primary = false;
+
1023 // The goal of this function is to choose from a pool of neighbour the
+
1024 // better one to build a compact coarse cell
+
1025 assert(this->_goal_card > 1); // _goal_card has been initialized
+
1026 // OUTPUT: Definition of the current cc, IT WILL BE GIVEN AS AN OUTPUT
+
1027 std::unordered_set<CoMMAIndexType> s_current_cc = {seed};
+
1028 // Dictionary of the neighbourhood of the seed, the key is the global index
+
1029 // of the cell and the value the order of distance from the seed (1 order
+
1030 // direct neighbourhood, 2 order etc.)
+
1031 std::unordered_map<CoMMAIndexType, CoMMAIntType> d_n_of_seed;
+
1032 // Number of fine cells constituting the current coarse cell in
+
1033 // construction.
+
1034 CoMMAIntType size_current_cc = 1; // CC contains only one cell: the seed
+
1035 // set to 3 as default we set to this value the maximum order to which we
+
1036 // search to compose the coarse cell
+
1037 CoMMAIntType max_order_of_neighbourhood =
+
1038 std::max(this->_min_neighbourhood, this->_max_card / this->_dimension);
+
1039
+
1040 // We fill the d_n_of_seeds considering the initial seed passed
+
1041 this->_fc_graph->compute_neighbourhood_of_cc(
+
1042 s_current_cc,
+
1043 max_order_of_neighbourhood, // in and out
+
1044 d_n_of_seed, // output, the function fills the dictionary
+
1045 this->_max_card,
+
1046 // anisotropic cells agglomerated (not to take into account in the
+
1047 // process)
+
1048 this->_cc_graph->_is_fc_agglomerated);
+
1049
+
1050 // If no neighbour is found for seed: this case happened only when isotropic
+
1051 // cell is surrounded by anisotropic cells.
+
1052 if (d_n_of_seed.empty()) {
+
1053 // d_n_of_seed is empty, i.e: the cc is not complete and no neighbour are
+
1054 // available!
+
1055 compactness = 0;
+
1056 } else if (
+
1057 static_cast<CoMMAIntType>(d_n_of_seed.size() + s_current_cc.size())
+
1058 < this->_goal_card) {
+
1059 // Not enough available neighbour, the dictionary of the available cells
+
1060 // size summed with the current cell size is not enough to reach the goal
+
1061 // cardinality: creation of a (too small) coarse cell.
+
1062 // We add ALL the cells of the dictionary to the set of current coarse
+
1063 // cell.
+
1064 for (auto &i_k_v : d_n_of_seed) {
+
1065 s_current_cc.insert(i_k_v.first);
+
1066 }
+
1067 compactness =
+
1068 this->_fc_graph->compute_min_fc_compactness_inside_a_cc(s_current_cc);
+
1069 } else {
+
1070 // If we passed the two previous checks, the minimum size is the goal
+
1071 // cardinality required
+
1072 // TODO: CHECK THAT, if the goal is 2, the minimum size would be 3?
+
1073 // ARGUABLE! Let's think to 3
+
1074 // Computation of the initial aspect ratio
+
1075 CoMMAWeightType diam_cc{-1.};
+
1076 // CC in construction
+
1077 decltype(s_current_cc) tmp_cc = {seed};
+
1078 // volume of cc is at first the volume of the seed.
+
1079 CoMMAWeightType vol_cc = this->_fc_graph->_volumes[seed];
+
1080 // This dictionary is used to store the eligible cc: i.e. its size is
+
1081 // inside the permitted range. This is useful to track back our step if
+
1082 // needed. [size of the current, [cell set, d_n_of seed]]
+
1083 std::unordered_map<
+
1084 CoMMAIntType, std::pair<
+
1085 std::unordered_set<CoMMAIndexType>,
+
1086 std::unordered_map<CoMMAIndexType, CoMMAIntType>>>
+
1087 dict_cc_in_creation;
+
1088 CoMMAIntType min_external_faces =
+
1089 std::numeric_limits<CoMMAIntType>::max();
+
1090 CoMMAIntType max_compact = 0;
+
1091 CoMMAIntType arg_min_card = this->_min_card;
+
1092 // Here we define the exact dimension of the coarse cell as the min
+
1093 // between the max cardinality given as an input (remember the constructor
+
1094 // choice in case of -1) and the dictionary of the boundary cells, it
+
1095 // means the total number of neighbourhood cells until the order we have
+
1096 // given (as default 3, so until the third order)
+
1097 const CoMMAIntType max_ind = std::min(
+
1098 this->_max_card, static_cast<CoMMAIntType>(d_n_of_seed.size() + 1));
+
1099 // This formula does not work
+
1100 CoMMAIntType number_of_external_faces_current_cc =
+
1101 this->_fc_graph->get_nb_of_neighbours(seed)
+
1102 + this->_fc_graph->get_n_boundary_faces(seed) - 1;
+
1103 // d_keys_to_set from Util.h, it takes the keys of the unordered map and
+
1104 // create an unordered set. The unordered set is representing hence all
+
1105 // the neighbours of seed until a given order.
+
1106 const std::unordered_set<CoMMAIndexType> s_neighbours_of_seed =
+
1107 d_keys_to_set<CoMMAIndexType, CoMMAIntType>(d_n_of_seed);
+
1108 // Build the class neighbourhood
+
1109 auto neighbourhood = this->_neigh_crtor->create(
+
1110 s_neighbours_of_seed, priority_weights, this->_dimension);
+
1111 // Compactness is used when choosing the best cell. We compute it
+
1112 // iteratively as the agglomeration advances.
+
1113 std::unordered_map<CoMMAIndexType, CoMMAIntType> cur_compact_by_fc{};
+
1114 cur_compact_by_fc.reserve(max_ind);
+
1115 cur_compact_by_fc[seed] = 0;
+
1116 constexpr auto second_less = [](const auto &left, const auto &right) {
+
1117 return left.second < right.second;
+
1118 };
+
1119 CoMMAIndexType next_cell = seed; // Dummy initialization
+
1120 // Choice of the fine cells to agglomerate we enter in a while, we store
+
1121 // anyways all the possible coarse cells (not only the max dimension one)
+
1122 while (size_current_cc < max_ind) {
+
1123 // Update the neighbourhood and generate the candidates
+
1124 neighbourhood->update(
+
1125 next_cell, this->_fc_graph->get_neighbours(next_cell));
+
1126 next_cell = 0; // Dummy initialization
+
1127 CoMMAWeightType min_ar_diam =
+
1128 std::numeric_limits<CoMMAWeightType>::max();
+
1129 CoMMAWeightType min_ar_vol =
+
1130 std::numeric_limits<CoMMAWeightType>::max();
+
1131 CoMMAIntType max_faces_in_common = 0;
+
1132 // We compute the best fine cell to add, based on the aspect
+
1133 // ratio and is given back in next_cell. It takes account also
+
1134 // the fine cells that has been added until now.
+
1135 // min(max_ind - size_current_cc, this->_fc_iter)
+
1136 this->compute_best_fc_to_add(
+
1137 std::min(max_ind - size_current_cc, this->_fc_iter), neighbourhood,
+
1138 d_n_of_seed, is_order_primary, diam_cc, vol_cc, tmp_cc, next_cell,
+
1139 // output
+
1140 max_faces_in_common, min_ar_diam, min_ar_vol);
1141
-
1142 // Update compactness
-
1143 CoMMAIntType argmin_compact{0};
-
1144 for (auto neigh = this->_fc_graph->neighbours_cbegin(next_cell);
-
1145 neigh != this->_fc_graph->neighbours_cend(next_cell); ++neigh) {
-
1146 if (tmp_cc.find(*neigh) != tmp_cc.end()) {
-
1147 ++argmin_compact;
-
1148 ++cur_compact_by_fc[*neigh];
-
1149 }
-
1150 }
-
1151 cur_compact_by_fc[next_cell] = argmin_compact;
-
1152 const CoMMAIntType cur_compact =
-
1153 min_element(
-
1154 cur_compact_by_fc.cbegin(), cur_compact_by_fc.cend(), second_less)
-
1155 ->second;
-
1156 // Equivalent to:
-
1157 // this->_fc_graph->compute_min_fc_compactness_inside_a_cc(tmp_cc);
-
1158
-
1159 // if the constructed cc is eligible, i.e. its size is inside the
-
1160 // permitted range we store it inside dict_cc_in_creation This choice is
-
1161 // based on the idea that the smallest cc (w.r.t. card) is may be not
-
1162 // the one that minimized the number of external faces. If this if is
-
1163 // satisfied it means we have an eligible cell
-
1164 if (
-
1165 (this->_min_card <= size_current_cc) || size_current_cc == max_ind) {
-
1166 if (cur_compact > max_compact) {
-
1167 max_compact = cur_compact;
-
1168 min_external_faces = number_of_external_faces_current_cc;
-
1169 arg_min_card = size_current_cc;
-
1170
-
1171 } else if (cur_compact == max_compact) {
-
1172 if (
-
1173 (number_of_external_faces_current_cc < min_external_faces) ||
-
1174 (number_of_external_faces_current_cc == min_external_faces &&
-
1175 arg_min_card != this->_goal_card)) {
-
1176 min_external_faces = number_of_external_faces_current_cc;
-
1177 arg_min_card = size_current_cc;
-
1178 }
-
1179 }
-
1180
-
1181 // We update the dictionary of eligible coarse cells
-
1182 unordered_map<CoMMAIndexType, CoMMAIntType> new_dict;
-
1183 new_dict[next_cell] = d_n_of_seed[next_cell];
-
1184 pair<
-
1185 unordered_set<CoMMAIndexType>,
-
1186 unordered_map<CoMMAIndexType, CoMMAIntType>>
-
1187 p = make_pair(tmp_cc, new_dict);
-
1188 dict_cc_in_creation[size_current_cc] = p;
-
1189 }
-
1190
-
1191 // Update of diam_cc and vol_cc with the new fc added
-
1192 diam_cc = min_ar_diam;
-
1193 vol_cc = min_ar_vol;
-
1194
-
1195 // Remove added fc from the available neighbours
-
1196 d_n_of_seed.erase(next_cell);
-
1197 }
-
1198
-
1199 // Selecting best CC to return
-
1200 s_current_cc = move(dict_cc_in_creation[arg_min_card].first);
-
1201
-
1202 // If we do not chose the biggest cc, we put the useless fc back to the
-
1203 // pool
-
1204 for (auto i_s = arg_min_card + 1; i_s < max_ind + 1; i_s++) {
-
1205 // for all size of Cell from arg_min_card+1 to min(max_card,
-
1206 // len(d_n_of_seed) + 1) + 1
-
1207 // d_n_of_seed.
-
1208 for (auto iKV : dict_cc_in_creation[i_s].second) {
-
1209 d_n_of_seed[iKV.first] = iKV.second;
-
1210 }
-
1211 }
-
1212
-
1213 // Updating Seeds Pool with the neighbours of the final CC. Strategy:
-
1214 // - Compute the direct neighbours of the CC (not yet agglomerated)
-
1215 // - Insert in the queue starting with those of lowest neighbourhood order
-
1216 // wrt
-
1217 // to the original seed
-
1218 // - If more than one cell with the same order, use priority weights
-
1219 const auto cc_neighs = this->_fc_graph->get_neighbourhood_of_cc(
-
1220 s_current_cc, this->_cc_graph->_is_fc_agglomerated);
-
1221 // Basically, like d_n_of_seed but with key and value swapped
-
1222 map<CoMMAIntType, unordered_set<CoMMAIndexType>> neighs_by_order{};
-
1223 // For those that were outside max neighbourhood order
-
1224 unordered_set<CoMMAIndexType> neighs_not_found{};
-
1225 for (const auto &s : cc_neighs) {
-
1226 if (d_n_of_seed.find(s) != d_n_of_seed.end())
-
1227 neighs_by_order[d_n_of_seed.at(s)].insert(s);
-
1228 else
-
1229 neighs_not_found.insert(s);
-
1230 }
-
1231 for (const auto &[o, neighs] : neighs_by_order)
-
1232 if (!neighs.empty())
-
1233 this->_seeds_pool->order_new_seeds_and_update(neighs);
-
1234 if (!neighs_not_found.empty())
-
1235 this->_seeds_pool->order_new_seeds_and_update(neighs_not_found);
-
1236
-
1237 assert(arg_min_card == static_cast<CoMMAIntType>(s_current_cc.size()));
-
1238
-
1239 compactness = max_compact;
-
1240 } // end else
-
1241 return s_current_cc;
-
1242 }
-
1243
-
1269 virtual void compute_best_fc_to_add(
-
1270 const CoMMAIntType fc_iter,
-
1271 const shared_ptr<
-
1272 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
1273 neighbourhood,
-
1274 const unordered_map<CoMMAIndexType, CoMMAIntType> &d_n_of_seed,
-
1275 const bool &is_order_primary,
-
1276 const CoMMAWeightType &diam_cc,
-
1277 const CoMMAWeightType &vol_cc,
-
1278 const unordered_set<CoMMAIndexType> &s_of_fc_for_current_cc,
-
1279 CoMMAIndexType &argmin_ar,
-
1280 CoMMAIntType &max_faces_in_common,
-
1281 CoMMAWeightType &min_ar_diam,
-
1282 CoMMAWeightType &min_ar_vol) const {
-
1283 CoMMAUnused(fc_iter);
-
1284 // this function defines the best fine cells to add to create the coarse
-
1285 // cell for the current coarse cell considered
-
1286 CoMMAWeightType min_ar = numeric_limits<CoMMAWeightType>::max();
-
1287 const auto neighbours = neighbourhood->get_candidates();
-
1288 CoMMAIndexType arg_max_faces_in_common = neighbours[0];
-
1289
-
1290 for (const auto &i_fc : neighbours) {
-
1291 // we test every possible new cell to chose the one that locally maximizes
-
1292 // the number of shared faces and/or minimizes the Aspect Ratio Compute
-
1293 // features of the CC obtained by adding i_fc
-
1294 CoMMAIntType number_faces_in_common = 0;
-
1295 CoMMAWeightType new_ar = numeric_limits<CoMMAWeightType>::min();
-
1296 CoMMAWeightType new_ar_diam = numeric_limits<CoMMAWeightType>::min();
-
1297 CoMMAWeightType new_ar_vol = numeric_limits<CoMMAWeightType>::min();
-
1298 this->compute_next_cc_features(
-
1299 i_fc, diam_cc, vol_cc, s_of_fc_for_current_cc,
-
1300 // out
-
1301 number_faces_in_common, new_ar, new_ar_diam, new_ar_vol);
-
1302
-
1303 // Neighbourhood order of i_fc wrt to original seed of CC
-
1304 // [i_fc] is not const the method at returns the reference to the value of
-
1305 // the key i_fc.
-
1306 const CoMMAIntType &order = d_n_of_seed.at(i_fc);
-
1307
-
1308 // TODO This version seems good but refactorisation to do: perhaps it is
-
1309 // not needed to update every new possible coarse cell aspect ratio?
-
1310 // TODO also need to remove the list of min_ar, argmin_ar, etc.
-
1311 if (
-
1312 number_faces_in_common >= max_faces_in_common
-
1313 or is_order_primary) { // if is_order_primary is True the order of
-
1314 // neighbourhood is primary
-
1315 if (number_faces_in_common == max_faces_in_common or is_order_primary) {
-
1316 // If the number of faces in common is the same, let's see whether
-
1317 // it's worth to update or not
-
1318
-
1319 if (order <= d_n_of_seed.at(arg_max_faces_in_common)) {
-
1320 // [arg_max_faces_in_common] is not const.
-
1321 if (order == d_n_of_seed.at(arg_max_faces_in_common)) {
-
1322 if (new_ar < min_ar and number_faces_in_common > 0) {
-
1323 // The second condition asserts the connectivity of the coarse
-
1324 // element.
-
1325 min_ar = new_ar;
-
1326 argmin_ar = i_fc;
-
1327 min_ar_diam = new_ar_diam;
-
1328 min_ar_vol = new_ar_vol;
-
1329
-
1330 arg_max_faces_in_common = i_fc;
-
1331 // The number of face in common is the same no need to touch it
-
1332 }
-
1333 } else {
-
1334 // Case :number_faces_in_common == max_faces_in_common and order <
-
1335 // dict_neighbours_of_seed[arg_max_faces_in_common]:
-
1336 arg_max_faces_in_common = i_fc;
-
1337 min_ar = new_ar;
-
1338 argmin_ar = i_fc;
-
1339 min_ar_diam = new_ar_diam;
-
1340 min_ar_vol = new_ar_vol;
-
1341 // The number of face in common is the same no need to touch it
-
1342 }
-
1343 }
-
1344 } else {
-
1345 // Case number_faces_in_common > max_faces_in_common:
-
1346 // -> Just update and see what comes next
-
1347 max_faces_in_common = number_faces_in_common;
-
1348 arg_max_faces_in_common = i_fc;
-
1349 min_ar = new_ar;
-
1350 argmin_ar = i_fc;
-
1351 min_ar_diam = new_ar_diam;
-
1352 min_ar_vol = new_ar_vol;
-
1353 }
-
1354 }
-
1355 }
-
1356 }
-
1357};
-
1358
-
1366template<
-
1367 typename CoMMAIndexType,
-
1368 typename CoMMAWeightType,
-
1369 typename CoMMAIntType>
-
1370class Agglomerator_Iterative :
-
1371 public Agglomerator_Biconnected<
-
1372 CoMMAIndexType,
-
1373 CoMMAWeightType,
-
1374 CoMMAIntType> {
-
1375public:
-
1390 Agglomerator_Iterative(
-
1391 shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>> graph,
-
1392 shared_ptr<
-
1393 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
1394 cc_graph,
-
1395 shared_ptr<Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
1396 seeds_pool,
-
1397 CoMMAIntType neighbourhood_type,
-
1398 CoMMAIntType fc_iter,
-
1399 CoMMAIntType dimension = 3) :
-
1400 Agglomerator_Biconnected<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
-
1401 graph, cc_graph, seeds_pool, neighbourhood_type, fc_iter, dimension) {
-
1402 // no particular constructor
-
1403 }
-
1404
-
1406 virtual ~Agglomerator_Iterative() = default;
-
1407
-
1434 void compute_best_fc_to_add(
-
1435 const CoMMAIntType fc_iter,
-
1436 const shared_ptr<
-
1437 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
1438 neighbourhood,
-
1439 const unordered_map<CoMMAIndexType, CoMMAIntType> &d_n_of_seed,
-
1440 const bool &is_order_primary,
-
1441 const CoMMAWeightType &diam_cc,
-
1442 const CoMMAWeightType &vol_cc,
-
1443 const unordered_set<CoMMAIndexType> &s_of_fc_for_current_cc,
-
1444 CoMMAIndexType &argmin_ar,
-
1445 CoMMAIntType &max_faces_in_common,
-
1446 CoMMAWeightType &min_ar_diam,
-
1447 CoMMAWeightType &min_ar_vol) const override {
-
1448 CoMMAIndexType outer_argmax_faces{0};
-
1449 CoMMAIntType ref_max_faces = max_faces_in_common;
-
1450 CoMMAWeightType outer_ar = numeric_limits<CoMMAWeightType>::max();
-
1451 for (const auto &i_fc : neighbourhood->get_candidates()) {
-
1452 auto cur_neighbourhood = this->_neigh_crtor->clone(neighbourhood);
-
1453 CoMMAWeightType inner_ar{-1.};
-
1454 CoMMAIntType inner_max_faces_in_common{0};
-
1455 CoMMAWeightType inner_min_ar_diam =
-
1456 numeric_limits<CoMMAWeightType>::max();
-
1457 CoMMAWeightType inner_min_ar_vol{0.};
-
1458 this->compute_next_cc_features(
-
1459 i_fc, diam_cc, vol_cc, s_of_fc_for_current_cc,
-
1460 inner_max_faces_in_common, inner_ar, inner_min_ar_diam,
-
1461 inner_min_ar_vol);
-
1462 cur_neighbourhood->update(i_fc, this->_fc_graph->get_neighbours(i_fc));
-
1463 unordered_set<CoMMAIndexType> cur_fc{
-
1464 s_of_fc_for_current_cc.begin(), s_of_fc_for_current_cc.end()};
-
1465 cur_fc.insert(i_fc);
-
1466 // Store value of mother cell
-
1467 const CoMMAIntType ref_inner_faces = inner_max_faces_in_common;
-
1468
-
1469 if (fc_iter > 1) {
-
1470 CoMMAIndexType cur_argmin{0};
-
1471 CoMMAIntType cur_max_faces_in_common{0};
-
1472 CoMMAWeightType cur_min_ar_diam =
-
1473 numeric_limits<CoMMAWeightType>::max();
-
1474 CoMMAWeightType cur_min_ar_vol{0.};
-
1475 CoMMAWeightType cur_min_ar{0.};
-
1476 this->compute_best_fc_to_add(
-
1477 fc_iter - 1, cur_neighbourhood, d_n_of_seed, is_order_primary,
-
1478 inner_min_ar_diam, inner_min_ar_vol, cur_fc,
-
1479 // output
-
1480 cur_argmin, cur_max_faces_in_common, cur_min_ar_diam, cur_min_ar_vol);
-
1481 // We just keep the min AR and the max faces in common
-
1482 if (cur_max_faces_in_common > inner_max_faces_in_common) {
-
1483 inner_max_faces_in_common = cur_max_faces_in_common;
-
1484 } else if (
-
1485 cur_max_faces_in_common == inner_max_faces_in_common
-
1486 && cur_min_ar < inner_ar) {
-
1487 inner_ar = cur_min_ar;
-
1488 }
-
1489 }
-
1490
-
1491 const CoMMAIntType &order = d_n_of_seed.at(i_fc);
-
1492
-
1493 // TODO This version seems good but refactorisation to do: perhaps it is
-
1494 // not needed to update every new possible coarse cell aspect ratio?
-
1495 // TODO also need to remove the list of min_ar, argmin_ar, etc.
-
1496 if (
-
1497 inner_max_faces_in_common >= ref_max_faces
-
1498 or is_order_primary) { // if is_order_primary is True the order of
-
1499 // neighbourhood is primary
-
1500 if (inner_max_faces_in_common == ref_max_faces or is_order_primary) {
-
1501 // If the number of faces in common is the same, let's see whether
-
1502 // it's worth to update or not
+
1142 // This formula does not work
+
1143 number_of_external_faces_current_cc +=
+
1144 this->_fc_graph->get_nb_of_neighbours(next_cell)
+
1145 + this->_fc_graph->get_n_boundary_faces(next_cell) - 1
+
1146 - 2 * max_faces_in_common;
+
1147 // we increase the cc
+
1148 size_current_cc++;
+
1149 tmp_cc.insert(next_cell);
+
1150
+
1151 // Update compactness
+
1152 CoMMAIntType argmin_compact{0};
+
1153 for (auto neigh = this->_fc_graph->neighbours_cbegin(next_cell);
+
1154 neigh != this->_fc_graph->neighbours_cend(next_cell); ++neigh) {
+
1155 if (tmp_cc.find(*neigh) != tmp_cc.end()) {
+
1156 ++argmin_compact;
+
1157 ++cur_compact_by_fc[*neigh];
+
1158 }
+
1159 }
+
1160 cur_compact_by_fc[next_cell] = argmin_compact;
+
1161 const CoMMAIntType cur_compact =
+
1162 min_element(
+
1163 cur_compact_by_fc.cbegin(), cur_compact_by_fc.cend(), second_less)
+
1164 ->second;
+
1165 // Equivalent to:
+
1166 // this->_fc_graph->compute_min_fc_compactness_inside_a_cc(tmp_cc);
+
1167
+
1168 // if the constructed cc is eligible, i.e. its size is inside the
+
1169 // permitted range we store it inside dict_cc_in_creation This choice is
+
1170 // based on the idea that the smallest cc (w.r.t. card) is may be not
+
1171 // the one that minimized the number of external faces. If this if is
+
1172 // satisfied it means we have an eligible cell
+
1173 if (
+
1174 (this->_min_card <= size_current_cc) || size_current_cc == max_ind) {
+
1175 if (cur_compact > max_compact) {
+
1176 max_compact = cur_compact;
+
1177 min_external_faces = number_of_external_faces_current_cc;
+
1178 arg_min_card = size_current_cc;
+
1179
+
1180 } else if (cur_compact == max_compact) {
+
1181 if (
+
1182 (number_of_external_faces_current_cc < min_external_faces) ||
+
1183 (number_of_external_faces_current_cc == min_external_faces &&
+
1184 arg_min_card != this->_goal_card)) {
+
1185 min_external_faces = number_of_external_faces_current_cc;
+
1186 arg_min_card = size_current_cc;
+
1187 }
+
1188 }
+
1189
+
1190 // We update the dictionary of eligible coarse cells
+
1191 std::unordered_map<CoMMAIndexType, CoMMAIntType> new_dict;
+
1192 new_dict[next_cell] = d_n_of_seed[next_cell];
+
1193 std::pair<
+
1194 std::unordered_set<CoMMAIndexType>,
+
1195 std::unordered_map<CoMMAIndexType, CoMMAIntType>>
+
1196 tmp_pair = std::make_pair(tmp_cc, new_dict);
+
1197 dict_cc_in_creation[size_current_cc] = tmp_pair;
+
1198 }
+
1199
+
1200 // Update of diam_cc and vol_cc with the new fc added
+
1201 diam_cc = min_ar_diam;
+
1202 vol_cc = min_ar_vol;
+
1203
+
1204 // Remove added fc from the available neighbours
+
1205 d_n_of_seed.erase(next_cell);
+
1206 }
+
1207
+
1208 // Selecting best CC to return
+
1209 s_current_cc = std::move(dict_cc_in_creation[arg_min_card].first);
+
1210
+
1211 // If we do not chose the biggest cc, we put the useless fc back to the
+
1212 // pool
+
1213 for (auto i_s = arg_min_card + 1; i_s < max_ind + 1; i_s++) {
+
1214 // for all size of Cell from arg_min_card+1 to min(max_card,
+
1215 // len(d_n_of_seed) + 1) + 1
+
1216 // d_n_of_seed.
+
1217 for (auto iKV : dict_cc_in_creation[i_s].second) {
+
1218 d_n_of_seed[iKV.first] = iKV.second;
+
1219 }
+
1220 }
+
1221
+
1222 // Updating Seeds Pool with the neighbours of the final CC. Strategy:
+
1223 // - Compute the direct neighbours of the CC (not yet agglomerated)
+
1224 // - Insert in the queue starting with those of lowest neighbourhood order
+
1225 // wrt
+
1226 // to the original seed
+
1227 // - If more than one cell with the same order, use priority weights
+
1228 const auto cc_neighs = this->_fc_graph->get_neighbourhood_of_cc(
+
1229 s_current_cc, this->_cc_graph->_is_fc_agglomerated);
+
1230 // Basically, like d_n_of_seed but with key and value swapped
+
1231 std::map<CoMMAIntType, std::unordered_set<CoMMAIndexType>>
+
1232 neighs_by_order{};
+
1233 // For those that were outside max neighbourhood order
+
1234 std::unordered_set<CoMMAIndexType> neighs_not_found{};
+
1235 for (const auto &neigh : cc_neighs) {
+
1236 if (d_n_of_seed.find(neigh) != d_n_of_seed.end())
+
1237 neighs_by_order[d_n_of_seed.at(neigh)].insert(neigh);
+
1238 else
+
1239 neighs_not_found.insert(neigh);
+
1240 }
+
1241 for (const auto &[o, neighs] : neighs_by_order)
+
1242 if (!neighs.empty())
+
1243 this->_seeds_pool->order_new_seeds_and_update(neighs);
+
1244 if (!neighs_not_found.empty())
+
1245 this->_seeds_pool->order_new_seeds_and_update(neighs_not_found);
+
1246
+
1247 assert(arg_min_card == static_cast<CoMMAIntType>(s_current_cc.size()));
+
1248
+
1249 compactness = max_compact;
+
1250 } // end else
+
1251 return s_current_cc;
+
1252 }
+
1253
+
1279 virtual void compute_best_fc_to_add(
+
1280 const CoMMAIntType fc_iter,
+
1281 const std::shared_ptr<
+
1282 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
1283 neighbourhood,
+
1284 const std::unordered_map<CoMMAIndexType, CoMMAIntType> &d_n_of_seed,
+
1285 const bool &is_order_primary,
+
1286 const CoMMAWeightType &diam_cc,
+
1287 const CoMMAWeightType &vol_cc,
+
1288 const std::unordered_set<CoMMAIndexType> &s_of_fc_for_current_cc,
+
1289 CoMMAIndexType &argmin_ar,
+
1290 CoMMAIntType &max_faces_in_common,
+
1291 CoMMAWeightType &min_ar_diam,
+
1292 CoMMAWeightType &min_ar_vol) const {
+
1293 CoMMAUnused(fc_iter);
+
1294 // this function defines the best fine cells to add to create the coarse
+
1295 // cell for the current coarse cell considered
+
1296 CoMMAWeightType min_ar = std::numeric_limits<CoMMAWeightType>::max();
+
1297 const auto neighbours = neighbourhood->get_candidates();
+
1298 CoMMAIndexType arg_max_faces_in_common = neighbours[0];
+
1299
+
1300 for (const auto &i_fc : neighbours) {
+
1301 // we test every possible new cell to chose the one that locally maximizes
+
1302 // the number of shared faces and/or minimizes the Aspect Ratio Compute
+
1303 // features of the CC obtained by adding i_fc
+
1304 CoMMAIntType number_faces_in_common = 0;
+
1305 CoMMAWeightType new_ar = std::numeric_limits<CoMMAWeightType>::min();
+
1306 CoMMAWeightType new_ar_diam = std::numeric_limits<CoMMAWeightType>::min();
+
1307 CoMMAWeightType new_ar_vol = std::numeric_limits<CoMMAWeightType>::min();
+
1308 this->compute_next_cc_features(
+
1309 i_fc, diam_cc, vol_cc, s_of_fc_for_current_cc,
+
1310 // out
+
1311 number_faces_in_common, new_ar, new_ar_diam, new_ar_vol);
+
1312
+
1313 // Neighbourhood order of i_fc wrt to original seed of CC
+
1314 // [i_fc] is not const the method at returns the reference to the value of
+
1315 // the key i_fc.
+
1316 const CoMMAIntType &order = d_n_of_seed.at(i_fc);
+
1317
+
1318 // TODO This version seems good but refactorisation to do: perhaps it is
+
1319 // not needed to update every new possible coarse cell aspect ratio?
+
1320 // TODO also need to remove the list of min_ar, argmin_ar, etc.
+
1321 if (
+
1322 number_faces_in_common >= max_faces_in_common
+
1323 or is_order_primary) { // if is_order_primary is True the order of
+
1324 // neighbourhood is primary
+
1325 if (number_faces_in_common == max_faces_in_common or is_order_primary) {
+
1326 // If the number of faces in common is the same, let's see whether
+
1327 // it's worth to update or not
+
1328
+
1329 if (order <= d_n_of_seed.at(arg_max_faces_in_common)) {
+
1330 // [arg_max_faces_in_common] is not const.
+
1331 if (order == d_n_of_seed.at(arg_max_faces_in_common)) {
+
1332 if (new_ar < min_ar and number_faces_in_common > 0) {
+
1333 // The second condition asserts the connectivity of the coarse
+
1334 // element.
+
1335 min_ar = new_ar;
+
1336 argmin_ar = i_fc;
+
1337 min_ar_diam = new_ar_diam;
+
1338 min_ar_vol = new_ar_vol;
+
1339
+
1340 arg_max_faces_in_common = i_fc;
+
1341 // The number of face in common is the same no need to touch it
+
1342 }
+
1343 } else {
+
1344 // Case :number_faces_in_common == max_faces_in_common and order <
+
1345 // dict_neighbours_of_seed[arg_max_faces_in_common]:
+
1346 arg_max_faces_in_common = i_fc;
+
1347 min_ar = new_ar;
+
1348 argmin_ar = i_fc;
+
1349 min_ar_diam = new_ar_diam;
+
1350 min_ar_vol = new_ar_vol;
+
1351 // The number of face in common is the same no need to touch it
+
1352 }
+
1353 }
+
1354 } else {
+
1355 // Case number_faces_in_common > max_faces_in_common:
+
1356 // -> Just update and see what comes next
+
1357 max_faces_in_common = number_faces_in_common;
+
1358 arg_max_faces_in_common = i_fc;
+
1359 min_ar = new_ar;
+
1360 argmin_ar = i_fc;
+
1361 min_ar_diam = new_ar_diam;
+
1362 min_ar_vol = new_ar_vol;
+
1363 }
+
1364 }
+
1365 }
+
1366 }
+
1367};
+
1368
+
1376template<
+
1377 typename CoMMAIndexType,
+
1378 typename CoMMAWeightType,
+
1379 typename CoMMAIntType>
+
1380class Agglomerator_Iterative :
+
1381 public Agglomerator_Biconnected<
+
1382 CoMMAIndexType,
+
1383 CoMMAWeightType,
+
1384 CoMMAIntType> {
+
1385public:
+
1400 Agglomerator_Iterative(
+
1401 std::shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
1402 graph,
+
1403 std::shared_ptr<
+
1404 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
1405 cc_graph,
+
1406 std::shared_ptr<Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
1407 seeds_pool,
+
1408 CoMMAIntType neighbourhood_type,
+
1409 CoMMAIntType fc_iter,
+
1410 CoMMAIntType dimension = 3) :
+
1411 Agglomerator_Biconnected<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
+
1412 graph, cc_graph, seeds_pool, neighbourhood_type, fc_iter, dimension) {
+
1413 // no particular constructor
+
1414 }
+
1415
+
1417 ~Agglomerator_Iterative() override = default;
+
1418
+
1445 void compute_best_fc_to_add(
+
1446 const CoMMAIntType fc_iter,
+
1447 const std::shared_ptr<
+
1448 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
1449 neighbourhood,
+
1450 const std::unordered_map<CoMMAIndexType, CoMMAIntType> &d_n_of_seed,
+
1451 const bool &is_order_primary,
+
1452 const CoMMAWeightType &diam_cc,
+
1453 const CoMMAWeightType &vol_cc,
+
1454 const std::unordered_set<CoMMAIndexType> &s_of_fc_for_current_cc,
+
1455 CoMMAIndexType &argmin_ar,
+
1456 CoMMAIntType &max_faces_in_common,
+
1457 CoMMAWeightType &min_ar_diam,
+
1458 CoMMAWeightType &min_ar_vol) const override {
+
1459 CoMMAIndexType outer_argmax_faces{0};
+
1460 CoMMAIntType ref_max_faces = max_faces_in_common;
+
1461 CoMMAWeightType outer_ar = std::numeric_limits<CoMMAWeightType>::max();
+
1462 for (const auto &i_fc : neighbourhood->get_candidates()) {
+
1463 auto cur_neighbourhood = this->_neigh_crtor->clone(neighbourhood);
+
1464 CoMMAWeightType inner_ar{-1.};
+
1465 CoMMAIntType inner_max_faces_in_common{0};
+
1466 CoMMAWeightType inner_min_ar_diam =
+
1467 std::numeric_limits<CoMMAWeightType>::max();
+
1468 CoMMAWeightType inner_min_ar_vol{0.};
+
1469 this->compute_next_cc_features(
+
1470 i_fc, diam_cc, vol_cc, s_of_fc_for_current_cc,
+
1471 inner_max_faces_in_common, inner_ar, inner_min_ar_diam,
+
1472 inner_min_ar_vol);
+
1473 cur_neighbourhood->update(i_fc, this->_fc_graph->get_neighbours(i_fc));
+
1474 std::unordered_set<CoMMAIndexType> cur_fc{
+
1475 s_of_fc_for_current_cc.begin(), s_of_fc_for_current_cc.end()};
+
1476 cur_fc.insert(i_fc);
+
1477 // Store value of mother cell
+
1478 const CoMMAIntType ref_inner_faces = inner_max_faces_in_common;
+
1479
+
1480 if (fc_iter > 1) {
+
1481 CoMMAIndexType cur_argmin{0};
+
1482 CoMMAIntType cur_max_faces_in_common{0};
+
1483 CoMMAWeightType cur_min_ar_diam =
+
1484 std::numeric_limits<CoMMAWeightType>::max();
+
1485 CoMMAWeightType cur_min_ar_vol{0.};
+
1486 CoMMAWeightType cur_min_ar{0.};
+
1487 this->compute_best_fc_to_add(
+
1488 fc_iter - 1, cur_neighbourhood, d_n_of_seed, is_order_primary,
+
1489 inner_min_ar_diam, inner_min_ar_vol, cur_fc,
+
1490 // output
+
1491 cur_argmin, cur_max_faces_in_common, cur_min_ar_diam, cur_min_ar_vol);
+
1492 // We just keep the min AR and the max faces in common
+
1493 if (cur_max_faces_in_common > inner_max_faces_in_common) {
+
1494 inner_max_faces_in_common = cur_max_faces_in_common;
+
1495 } else if (
+
1496 cur_max_faces_in_common == inner_max_faces_in_common
+
1497 && cur_min_ar < inner_ar) {
+
1498 inner_ar = cur_min_ar;
+
1499 }
+
1500 }
+
1501
+
1502 const CoMMAIntType &order = d_n_of_seed.at(i_fc);
1503
-
1504 if (order <= d_n_of_seed.at(outer_argmax_faces)) {
-
1505 // [outer_argmax_faces] is not const.
-
1506 if (order == d_n_of_seed.at(outer_argmax_faces)) {
-
1507 if (inner_ar < outer_ar and inner_max_faces_in_common > 0) {
-
1508 // The second condition asserts the connectivity of the coarse
-
1509 // element.
-
1510 argmin_ar = i_fc;
-
1511 // Outer AR is the min AR of the children, but since diameter
-
1512 // and volume are used in the next step, we keep those of the
-
1513 // mother cell...
-
1514 outer_ar = inner_ar;
-
1515 min_ar_diam = inner_min_ar_diam;
-
1516 min_ar_vol = inner_min_ar_vol;
-
1517 // ... same for faces in common
-
1518 max_faces_in_common = ref_inner_faces;
-
1519
-
1520 outer_argmax_faces = i_fc;
-
1521 }
-
1522 } else {
-
1523 // Case :inner_max_faces_in_common == ref_max_faces and order <
-
1524 // dict_neighbours_of_seed[outer_argmax_faces]:
-
1525 outer_argmax_faces = i_fc;
-
1526 argmin_ar = i_fc;
-
1527 // Outer AR is the min AR of the children, but since diameter and
-
1528 // volume are used in the next step, we keep those of the mother
-
1529 // cell...
-
1530 outer_ar = inner_ar;
-
1531 min_ar_diam = inner_min_ar_diam;
-
1532 min_ar_vol = inner_min_ar_vol;
-
1533 // ... same for faces in common
-
1534 max_faces_in_common = ref_inner_faces;
-
1535 }
-
1536 }
-
1537 } else {
-
1538 // Case inner_max_faces_in_common > ref_max_faces:
-
1539 // -> Just update and see what comes next
-
1540 ref_max_faces = inner_max_faces_in_common;
-
1541 outer_argmax_faces = i_fc;
-
1542 argmin_ar = i_fc;
-
1543 // Outer AR is the min AR of the children, but since diameter and
-
1544 // volume are used in the next step, we keep those of the mother
-
1545 // cell...
-
1546 outer_ar = inner_ar;
-
1547 min_ar_diam = inner_min_ar_diam;
-
1548 min_ar_vol = inner_min_ar_vol;
-
1549 // ... same for faces in common
-
1550 max_faces_in_common = ref_inner_faces;
-
1551 }
-
1552 }
-
1553 } // for i_fc
-
1554 }
-
1555};
-
1556
-
1557#endif // COMMA_PROJECT_AGGLOMERATOR_H
+
1504 // TODO This version seems good but refactorisation to do: perhaps it is
+
1505 // not needed to update every new possible coarse cell aspect ratio?
+
1506 // TODO also need to remove the list of min_ar, argmin_ar, etc.
+
1507 if (
+
1508 inner_max_faces_in_common >= ref_max_faces
+
1509 or is_order_primary) { // if is_order_primary is True the order of
+
1510 // neighbourhood is primary
+
1511 if (inner_max_faces_in_common == ref_max_faces or is_order_primary) {
+
1512 // If the number of faces in common is the same, let's see whether
+
1513 // it's worth to update or not
+
1514
+
1515 if (order <= d_n_of_seed.at(outer_argmax_faces)) {
+
1516 // [outer_argmax_faces] is not const.
+
1517 if (order == d_n_of_seed.at(outer_argmax_faces)) {
+
1518 if (inner_ar < outer_ar and inner_max_faces_in_common > 0) {
+
1519 // The second condition asserts the connectivity of the coarse
+
1520 // element.
+
1521 argmin_ar = i_fc;
+
1522 // Outer AR is the min AR of the children, but since diameter
+
1523 // and volume are used in the next step, we keep those of the
+
1524 // mother cell...
+
1525 outer_ar = inner_ar;
+
1526 min_ar_diam = inner_min_ar_diam;
+
1527 min_ar_vol = inner_min_ar_vol;
+
1528 // ... same for faces in common
+
1529 max_faces_in_common = ref_inner_faces;
+
1530
+
1531 outer_argmax_faces = i_fc;
+
1532 }
+
1533 } else {
+
1534 // Case :inner_max_faces_in_common == ref_max_faces and order <
+
1535 // dict_neighbours_of_seed[outer_argmax_faces]:
+
1536 outer_argmax_faces = i_fc;
+
1537 argmin_ar = i_fc;
+
1538 // Outer AR is the min AR of the children, but since diameter and
+
1539 // volume are used in the next step, we keep those of the mother
+
1540 // cell...
+
1541 outer_ar = inner_ar;
+
1542 min_ar_diam = inner_min_ar_diam;
+
1543 min_ar_vol = inner_min_ar_vol;
+
1544 // ... same for faces in common
+
1545 max_faces_in_common = ref_inner_faces;
+
1546 }
+
1547 }
+
1548 } else {
+
1549 // Case inner_max_faces_in_common > ref_max_faces:
+
1550 // -> Just update and see what comes next
+
1551 ref_max_faces = inner_max_faces_in_common;
+
1552 outer_argmax_faces = i_fc;
+
1553 argmin_ar = i_fc;
+
1554 // Outer AR is the min AR of the children, but since diameter and
+
1555 // volume are used in the next step, we keep those of the mother
+
1556 // cell...
+
1557 outer_ar = inner_ar;
+
1558 min_ar_diam = inner_min_ar_diam;
+
1559 min_ar_vol = inner_min_ar_vol;
+
1560 // ... same for faces in common
+
1561 max_faces_in_common = ref_inner_faces;
+
1562 }
+
1563 }
+
1564 } // for i_fc
+
1565 }
+
1566};
+
1567
+
1568} // end namespace comma
+
1569
+
1570#endif // COMMA_PROJECT_AGGLOMERATOR_H
Coarse_Cell_Container.h
Dual_Graph.h
Neighbourhood.h
Util.h
CoMMAUnused
#define CoMMAUnused(var)
Convenient function to avoid unused warnings.
Definition: Util.h:34
-
Agglomerator_Anisotropic
Agglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implem...
Definition: Agglomerator.h:180
-
Agglomerator_Anisotropic::CoMMAPairType
pair< CoMMAIndexType, CoMMAWeightType > CoMMAPairType
Type of pair.
Definition: Agglomerator.h:189
-
Agglomerator_Anisotropic::build_anisotropic_lines
bool build_anisotropic_lines(const vector< CoMMAWeightType > &priority_weights, const CoMMAWeightType threshold_anisotropy)
Build the anisotropic lines at the first level (only called at the first level of agglomeration)....
Definition: Agglomerator.h:497
-
Agglomerator_Anisotropic::AnisotropicLine
deque< CoMMAIndexType > AnisotropicLine
Container for an anisotropic line.
Definition: Agglomerator.h:183
-
Agglomerator_Anisotropic::update_seeds_pool
void update_seeds_pool()
Update the seeds pool with the neighbours of the anisotropic cells agglomerated so far.
Definition: Agglomerator.h:402
-
Agglomerator_Anisotropic::_odd_line_length
bool _odd_line_length
Whether anisotropic lines with odd length are allowed.
Definition: Agglomerator.h:683
-
Agglomerator_Anisotropic::_v_lines
vector< vector< AnisotropicLinePtr > > _v_lines
_v_lines : Agglomeration lines structure:
Definition: Agglomerator.h:478
-
Agglomerator_Anisotropic::_nb_lines
vector< CoMMAIndexType > _nb_lines
Vector of number of Anisotropic agglomeration lines per level.
Definition: Agglomerator.h:470
-
Agglomerator_Anisotropic::_should_agglomerate
bool _should_agglomerate
Whether agglomeration is possible: for instance, if anisotropy requested but no anisotropic cells fou...
Definition: Agglomerator.h:483
-
Agglomerator_Anisotropic::_aniso_neighbours
deque< CoMMAIndexType > _aniso_neighbours
Neighbours of the anisotropic cells agglomerated. They are used to update the seeds pool.
Definition: Agglomerator.h:680
-
Agglomerator_Anisotropic::~Agglomerator_Anisotropic
virtual ~Agglomerator_Anisotropic()=default
Destructor.
-
Agglomerator_Anisotropic::Agglomerator_Anisotropic
Agglomerator_Anisotropic(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, const CoMMAWeightType threshold_anisotropy, const vector< CoMMAIndexType > &agglomerationLines_Idx, const vector< CoMMAIndexType > &agglomerationLines, const vector< CoMMAWeightType > &priority_weights, const bool build_lines, const bool odd_line_length, CoMMAIntType dimension=3)
Constructor.
Definition: Agglomerator.h:215
-
Agglomerator_Anisotropic::agglomerate_one_level
void agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
Specialization of the pure virtual function to the class Agglomerator_Anisotropic....
Definition: Agglomerator.h:294
-
Agglomerator_Anisotropic::export_anisotropic_lines
void export_anisotropic_lines(CoMMAIntType level, vector< CoMMAIndexType > &aniso_lines_idx, vector< CoMMAIndexType > &aniso_lines) const
Function that prepares the anisotropic lines for output.
Definition: Agglomerator.h:436
-
Agglomerator_Anisotropic::CoMMASetOfPairType
set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Agglomerator.h:192
-
Agglomerator_Anisotropic::AnisotropicLinePtr
shared_ptr< AnisotropicLine > AnisotropicLinePtr
(Shared) Pointer to an anisotropic line
Definition: Agglomerator.h:186
-
Agglomerator_Biconnected
Child class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the a...
Definition: Agglomerator.h:968
-
Agglomerator_Biconnected::choose_optimal_cc_and_update_seeds_pool
unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool(const CoMMAIndexType seed, const vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness) override
Specialization of the pure virtual function in the parent class, to be used in couple with the agglom...
Definition: Agglomerator.h:1012
-
Agglomerator_Biconnected::Agglomerator_Biconnected
Agglomerator_Biconnected(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Iso...
Definition: Agglomerator.h:984
-
Agglomerator_Biconnected::compute_best_fc_to_add
virtual void compute_best_fc_to_add(const CoMMAIntType fc_iter, const shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) const
Computes the best fine cell to add to the coarse cell. The choice depends on: the number of shared fa...
Definition: Agglomerator.h:1269
-
Agglomerator_Biconnected::~Agglomerator_Biconnected
virtual ~Agglomerator_Biconnected()=default
Destructor.
-
Agglomerator_Isotropic
Agglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implemen...
Definition: Agglomerator.h:699
-
Agglomerator_Isotropic::choose_optimal_cc_and_update_seeds_pool
virtual unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool(const CoMMAIndexType seed, const vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness)=0
Pure virtual function that must be implemented in child classes to define the optimal coarse cell.
-
Agglomerator_Isotropic::estimate_boundary_face
CoMMAWeightType estimate_boundary_face(const vector< CoMMAWeightType > &int_faces) const
Approximate the value of a boundary face using the known internal faces. It uses a (geometric) averag...
Definition: Agglomerator.h:875
-
Agglomerator_Isotropic::Agglomerator_Isotropic
Agglomerator_Isotropic(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
Constructor. The constructor takes as arguments the same arguments of the father and in this way acti...
Definition: Agglomerator.h:735
-
Agglomerator_Isotropic::agglomerate_one_level
void agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
Specialization of the pure virtual function to the class Agglomerator_Isotropic. We add the override ...
Definition: Agglomerator.h:828
-
Agglomerator_Isotropic::set_agglomeration_parameter
void set_agglomeration_parameter(CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)
The task of the function is to set the parameters of determine the cardinality limits with respect to...
Definition: Agglomerator.h:766
-
Agglomerator_Isotropic::~Agglomerator_Isotropic
virtual ~Agglomerator_Isotropic()=default
Destructor.
-
Agglomerator_Isotropic::_neigh_crtor
shared_ptr< NeighbourhoodCreatorBaseType > _neigh_crtor
Creator responsible for neighborhood objects.
Definition: Agglomerator.h:718
-
Agglomerator_Isotropic::compute_next_cc_features
void compute_next_cc_features(const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) const
Computes features of the CC obtained by adding a given fine cell. The features are Aspect-Ratio and n...
Definition: Agglomerator.h:905
-
Agglomerator_Isotropic::_fc_iter
CoMMAIntType _fc_iter
Number of iterations allowed for the algorithm choosing which fine cell to add next.
Definition: Agglomerator.h:715
-
Agglomerator_Iterative
Child class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the sear...
Definition: Agglomerator.h:1374
-
Agglomerator_Iterative::~Agglomerator_Iterative
virtual ~Agglomerator_Iterative()=default
Destructor.
-
Agglomerator_Iterative::Agglomerator_Iterative
Agglomerator_Iterative(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Bic...
Definition: Agglomerator.h:1390
-
Agglomerator_Iterative::compute_best_fc_to_add
void compute_best_fc_to_add(const CoMMAIntType fc_iter, const shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) const override
Specialization of the parent function. This is an iterative version. Computes the best fine cell to a...
Definition: Agglomerator.h:1434
-
Agglomerator
A class responsible to do the interface between the different kinds of agglomerator.
Definition: Agglomerator.h:53
-
Agglomerator::_min_card
CoMMAIntType _min_card
Minimum cardinality (default = 0, meaning, equal to the dimension)
Definition: Agglomerator.h:135
-
Agglomerator::_min_neighbourhood
CoMMAIntType _min_neighbourhood
Minimum number of neighbourhood we extend to search the neighbourhood in the greedy algorithm....
Definition: Agglomerator.h:132
-
Agglomerator::_fc_graph
shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _fc_graph
Dual_Graph object determining Fine cells graph and hence the connectivity.
Definition: Agglomerator.h:154
-
Agglomerator::_max_card
CoMMAIntType _max_card
Maximum cardinality (default = 0, meaning, 5 or 10 for, resp., 2- and 3D.
Definition: Agglomerator.h:139
-
Agglomerator::_threshold_card
CoMMAIntType _threshold_card
Threshold cardinality (default = 0, meaning, equal to the dimension)
Definition: Agglomerator.h:147
-
Agglomerator::get_fc_2_cc
vector< CoMMAIndexType > get_fc_2_cc() const
Accessor to retrieve the fine cells to coarse cells from the coarse cell graphs class.
Definition: Agglomerator.h:104
-
Agglomerator::_cc_graph
shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _cc_graph
pointer to Coarse_Cell_Container element
Definition: Agglomerator.h:159
-
Agglomerator::~Agglomerator
virtual ~Agglomerator()=default
The destructor of the class.
-
Agglomerator::Agglomerator
Agglomerator(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)
The constructor of the interface.
Definition: Agglomerator.h:71
-
Agglomerator::_dimension
CoMMAIntType _dimension
Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D)
Definition: Agglomerator.h:129
-
Agglomerator::agglomerate_one_level
virtual void agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0
Pure virtual function which implementation is specified in the related child classes and that defines...
-
Agglomerator::_l_nb_of_cells
vector< CoMMAIndexType > _l_nb_of_cells
List of number of cells per coarse cell created.
Definition: Agglomerator.h:149
-
Agglomerator::_seeds_pool
shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _seeds_pool
Seeds_Pool object giving the order in which the fine cells should be considered when agglomerating.
Definition: Agglomerator.h:164
-
Agglomerator::_compute_AR
function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
Function which computes the aspect-ratio from a diameter and a volume In 3D: In 2D: (Recall th...
Definition: Agglomerator.h:61
-
Agglomerator::_goal_card
CoMMAIntType _goal_card
Goal cardinality (default = 0, meaning, 4 or 8 for, resp., 2- and 3D.
Definition: Agglomerator.h:143
-
Coarse_Cell_Container
Class implementing a custom container where the coarse cells are stored.
Definition: Coarse_Cell_Container.h:41
-
Dual_Graph
A class implementing the CRS global graph representation of the global mesh.
Definition: Dual_Graph.h:514
-
NeighbourhoodCreator
Pure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy.
Definition: Neighbourhood.h:372
-
NeighbourhoodExtendedCreator
Creator of Neighbourhood_Extended objects. It can create from scratch or by copy.
Definition: Neighbourhood.h:412
-
Neighbourhood
Class representing the neighbourhood of a given cell in the graph. Mind that no information about the...
Definition: Neighbourhood.h:42
-
NeighbourhoodPureFrontCreator
Creator of Neighbourhood_Extended objects. It can create from scratch or by copy.
Definition: Neighbourhood.h:469
-
Seeds_Pool
Class representing the pool of all the seeds for creating a coarse cell.
Definition: Seeds_Pool.h:172
+
comma::Agglomerator_Anisotropic
Agglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implem...
Definition: Agglomerator.h:181
+
comma::Agglomerator_Anisotropic::build_anisotropic_lines
bool build_anisotropic_lines(const std::vector< CoMMAWeightType > &priority_weights, const CoMMAWeightType threshold_anisotropy)
Build the anisotropic lines at the first level (only called at the first level of agglomeration)....
Definition: Agglomerator.h:499
+
comma::Agglomerator_Anisotropic::export_anisotropic_lines
void export_anisotropic_lines(CoMMAIntType level, std::vector< CoMMAIndexType > &aniso_lines_idx, std::vector< CoMMAIndexType > &aniso_lines) const
Function that prepares the anisotropic lines for output.
Definition: Agglomerator.h:438
+
comma::Agglomerator_Anisotropic::CoMMAPairType
std::pair< CoMMAIndexType, CoMMAWeightType > CoMMAPairType
Type of pair.
Definition: Agglomerator.h:190
+
comma::Agglomerator_Anisotropic::_odd_line_length
bool _odd_line_length
Whether anisotropic lines with odd length are allowed.
Definition: Agglomerator.h:685
+
comma::Agglomerator_Anisotropic::update_seeds_pool
void update_seeds_pool()
Update the seeds pool with the neighbours of the anisotropic cells agglomerated so far.
Definition: Agglomerator.h:404
+
comma::Agglomerator_Anisotropic::Agglomerator_Anisotropic
Agglomerator_Anisotropic(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, const CoMMAWeightType threshold_anisotropy, const std::vector< CoMMAIndexType > &agglomerationLines_Idx, const std::vector< CoMMAIndexType > &agglomerationLines, const std::vector< CoMMAWeightType > &priority_weights, const bool build_lines, const bool odd_line_length, CoMMAIntType dimension=3)
Constructor.
Definition: Agglomerator.h:216
+
comma::Agglomerator_Anisotropic::agglomerate_one_level
void agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
Specialization of the pure virtual function to the class Agglomerator_Anisotropic....
Definition: Agglomerator.h:296
+
comma::Agglomerator_Anisotropic::_should_agglomerate
bool _should_agglomerate
Whether agglomeration is possible: for instance, if anisotropy requested but no anisotropic cells fou...
Definition: Agglomerator.h:485
+
comma::Agglomerator_Anisotropic::AnisotropicLine
std::deque< CoMMAIndexType > AnisotropicLine
Container for an anisotropic line.
Definition: Agglomerator.h:184
+
comma::Agglomerator_Anisotropic::AnisotropicLinePtr
std::shared_ptr< AnisotropicLine > AnisotropicLinePtr
(Shared) Pointer to an anisotropic line
Definition: Agglomerator.h:187
+
comma::Agglomerator_Anisotropic::CoMMASetOfPairType
std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Agglomerator.h:193
+
comma::Agglomerator_Anisotropic::~Agglomerator_Anisotropic
~Agglomerator_Anisotropic() override=default
Destructor.
+
comma::Agglomerator_Anisotropic::_v_lines
std::vector< std::vector< AnisotropicLinePtr > > _v_lines
_v_lines : Agglomeration lines structure:
Definition: Agglomerator.h:480
+
comma::Agglomerator_Anisotropic::_aniso_neighbours
std::deque< CoMMAIndexType > _aniso_neighbours
Neighbours of the anisotropic cells agglomerated. They are used to update the seeds pool.
Definition: Agglomerator.h:682
+
comma::Agglomerator_Anisotropic::_nb_lines
std::vector< CoMMAIndexType > _nb_lines
Vector of number of Anisotropic agglomeration lines per level.
Definition: Agglomerator.h:472
+
comma::Agglomerator_Biconnected
Child class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the a...
Definition: Agglomerator.h:973
+
comma::Agglomerator_Biconnected::~Agglomerator_Biconnected
~Agglomerator_Biconnected() override=default
Destructor.
+
comma::Agglomerator_Biconnected::choose_optimal_cc_and_update_seeds_pool
std::unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool(const CoMMAIndexType seed, const std::vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness) override
Specialization of the pure virtual function in the parent class, to be used in couple with the agglom...
Definition: Agglomerator.h:1018
+
comma::Agglomerator_Biconnected::Agglomerator_Biconnected
Agglomerator_Biconnected(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Iso...
Definition: Agglomerator.h:989
+
comma::Agglomerator_Biconnected::compute_best_fc_to_add
virtual void compute_best_fc_to_add(const CoMMAIntType fc_iter, const std::shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const std::unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const std::unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) const
Computes the best fine cell to add to the coarse cell. The choice depends on: the number of shared fa...
Definition: Agglomerator.h:1279
+
comma::Agglomerator_Isotropic
Agglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implemen...
Definition: Agglomerator.h:701
+
comma::Agglomerator_Isotropic::choose_optimal_cc_and_update_seeds_pool
virtual std::unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool(const CoMMAIndexType seed, const std::vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness)=0
Pure virtual function that must be implemented in child classes to define the optimal coarse cell.
+
comma::Agglomerator_Isotropic::estimate_boundary_face
CoMMAWeightType estimate_boundary_face(const std::vector< CoMMAWeightType > &int_faces) const
Approximate the value of a boundary face using the known internal faces. It uses a (geometric) averag...
Definition: Agglomerator.h:878
+
comma::Agglomerator_Isotropic::_neigh_crtor
std::shared_ptr< NeighbourhoodCreatorBaseType > _neigh_crtor
Creator responsible for neighborhood objects.
Definition: Agglomerator.h:720
+
comma::Agglomerator_Isotropic::_fc_iter
CoMMAIntType _fc_iter
Number of iterations allowed for the algorithm choosing which fine cell to add next.
Definition: Agglomerator.h:717
+
comma::Agglomerator_Isotropic::set_agglomeration_parameter
void set_agglomeration_parameter(CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)
The task of the function is to set the parameters of determine the cardinality limits with respect to...
Definition: Agglomerator.h:769
+
comma::Agglomerator_Isotropic::agglomerate_one_level
void agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
Specialization of the pure virtual function to the class Agglomerator_Isotropic. We add the override ...
Definition: Agglomerator.h:831
+
comma::Agglomerator_Isotropic::Agglomerator_Isotropic
Agglomerator_Isotropic(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
Constructor. The constructor takes as arguments the same arguments of the father and in this way acti...
Definition: Agglomerator.h:737
+
comma::Agglomerator_Isotropic::compute_next_cc_features
void compute_next_cc_features(const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const std::unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) const
Computes features of the CC obtained by adding a given fine cell. The features are Aspect-Ratio and n...
Definition: Agglomerator.h:908
+
comma::Agglomerator_Isotropic::~Agglomerator_Isotropic
~Agglomerator_Isotropic() override=default
Destructor.
+
comma::Agglomerator_Iterative
Child class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the sear...
Definition: Agglomerator.h:1384
+
comma::Agglomerator_Iterative::~Agglomerator_Iterative
~Agglomerator_Iterative() override=default
Destructor.
+
comma::Agglomerator_Iterative::Agglomerator_Iterative
Agglomerator_Iterative(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Bic...
Definition: Agglomerator.h:1400
+
comma::Agglomerator_Iterative::compute_best_fc_to_add
void compute_best_fc_to_add(const CoMMAIntType fc_iter, const std::shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const std::unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const std::unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) const override
Specialization of the parent function. This is an iterative version. Computes the best fine cell to a...
Definition: Agglomerator.h:1445
+
comma::Agglomerator
A class responsible to do the interface between the different kinds of agglomerator.
Definition: Agglomerator.h:53
+
comma::Agglomerator::_l_nb_of_cells
std::vector< CoMMAIndexType > _l_nb_of_cells
List of number of cells per coarse cell created.
Definition: Agglomerator.h:150
+
comma::Agglomerator::~Agglomerator
virtual ~Agglomerator()=default
The destructor of the class.
+
comma::Agglomerator::Agglomerator
Agglomerator(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)
The constructor of the interface.
Definition: Agglomerator.h:71
+
comma::Agglomerator::_min_card
CoMMAIntType _min_card
Minimum cardinality (default = 0, meaning, equal to the dimension)
Definition: Agglomerator.h:136
+
comma::Agglomerator::_cc_graph
std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _cc_graph
pointer to Coarse_Cell_Container element
Definition: Agglomerator.h:160
+
comma::Agglomerator::_fc_graph
std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _fc_graph
Dual_Graph object determining Fine cells graph and hence the connectivity.
Definition: Agglomerator.h:155
+
comma::Agglomerator::_threshold_card
CoMMAIntType _threshold_card
Threshold cardinality (default = 0, meaning, equal to the dimension)
Definition: Agglomerator.h:148
+
comma::Agglomerator::_min_neighbourhood
CoMMAIntType _min_neighbourhood
Minimum number of neighbourhood we extend to search the neighbourhood in the greedy algorithm....
Definition: Agglomerator.h:133
+
comma::Agglomerator::_dimension
CoMMAIntType _dimension
Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D)
Definition: Agglomerator.h:130
+
comma::Agglomerator::_compute_AR
std::function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
Function which computes the aspect-ratio from a diameter and a volume In 3D: In 2D: (Recall th...
Definition: Agglomerator.h:61
+
comma::Agglomerator::_max_card
CoMMAIntType _max_card
Maximum cardinality (default = 0, meaning, 5 or 10 for, resp., 2- and 3D.
Definition: Agglomerator.h:140
+
comma::Agglomerator::_seeds_pool
std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _seeds_pool
Seeds_Pool object giving the order in which the fine cells should be considered when agglomerating.
Definition: Agglomerator.h:165
+
comma::Agglomerator::_goal_card
CoMMAIntType _goal_card
Goal cardinality (default = 0, meaning, 4 or 8 for, resp., 2- and 3D.
Definition: Agglomerator.h:144
+
comma::Agglomerator::get_fc_2_cc
std::vector< CoMMAIndexType > get_fc_2_cc() const
Accessor to retrieve the fine cells to coarse cells from the coarse cell graphs class.
Definition: Agglomerator.h:105
+
comma::Agglomerator::agglomerate_one_level
virtual void agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0
Pure virtual function which implementation is specified in the related child classes and that defines...
+
comma::Coarse_Cell_Container
Class implementing a custom container where the coarse cells are stored.
Definition: Coarse_Cell_Container.h:41
+
comma::Dual_Graph
A class implementing the CRS global graph representation of the global mesh.
Definition: Dual_Graph.h:517
+
comma::NeighbourhoodCreator
Pure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy.
Definition: Neighbourhood.h:381
+
comma::NeighbourhoodExtendedCreator
Creator of Neighbourhood_Extended objects. It can create from scratch or by copy.
Definition: Neighbourhood.h:427
+
comma::Neighbourhood
Class representing the neighbourhood of a given cell in the graph. Mind that no information about the...
Definition: Neighbourhood.h:42
+
comma::NeighbourhoodPureFrontCreator
Creator of Neighbourhood_Extended objects. It can create from scratch or by copy.
Definition: Neighbourhood.h:490
+
comma::Seeds_Pool
Class representing the pool of all the seeds for creating a coarse cell.
Definition: Seeds_Pool.h:194
+
comma
Definition: Agglomerator.h:34
+
comma::EXTENDED
@ EXTENDED
Extended, all neighbours of the coarse cell.
Definition: CoMMADefs.h:38
diff --git a/_bimap_8h.html b/_bimap_8h.html index 72962ae..fef91b2 100644 --- a/_bimap_8h.html +++ b/_bimap_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/deprecated/Bimap.h File Reference +CoMMA: include/CoMMA/deprecated/Bimap.h File Reference @@ -92,7 +92,8 @@
-Classes
+Classes | +Namespaces
Bimap.h File Reference
@@ -105,8 +106,13 @@ - - + + + +

Classes

class  Bimap< A, B >
 An easy and straight forward implementation of a Bimap. More...
class  comma::Bimap< A, B >
 An easy and straight forward implementation of a Bimap. More...
 
+ +

+Namespaces

namespace  comma
 
@@ -114,7 +120,7 @@ diff --git a/_bimap_8h.js b/_bimap_8h.js index fc9426b..057fe77 100644 --- a/_bimap_8h.js +++ b/_bimap_8h.js @@ -1,4 +1,4 @@ var _bimap_8h = [ - [ "Bimap< A, B >", "class_bimap.html", "class_bimap" ] + [ "comma::Bimap< A, B >", "classcomma_1_1_bimap.html", "classcomma_1_1_bimap" ] ]; \ No newline at end of file diff --git a/_bimap_8h_source.html b/_bimap_8h_source.html index 2c50a41..f21ba64 100644 --- a/_bimap_8h_source.html +++ b/_bimap_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/deprecated/Bimap.h Source File +CoMMA: include/CoMMA/deprecated/Bimap.h Source File @@ -100,7 +100,7 @@
4/*
5 * CoMMA
6 *
-
7 * Copyright © 2023 ONERA
+
7 * Copyright © 2024 ONERA
8 *
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
10 * Contributors: Karim Anemiche
@@ -115,98 +115,103 @@
19#include <map>
20#include <type_traits>
21
-
22using namespace std;
-
26template<typename A, typename B>
-
27class Bimap {
-
28public:
-
30 Bimap(){};
-
32 ~Bimap(){};
-
33
-
34 // using container= map<A, const B*>;
-
35 // using iterator=typename container::iterator;
-
36 // inline iterator begin() noexcept { return _mapB.begin(); }
-
37 // inline iterator end() noexcept { return _mapB.end(); }
-
38
-
43 void insert(const A &a, const B &b) {
-
44 auto aitr = _mapA.insert({b, nullptr}).first; // creates first pair
-
45 const B *bp = &(aitr->first); // get pointer of our stored copy of b
-
46 auto bitr =
-
47 _mapB.insert({a, bp}).first; // insert second pair {a, pointer_to_b}
-
48 const A *ap = &(bitr->first); // update pointer in _mapA to point to a
-
49 _mapA.insert_or_assign(b, ap);
-
50 }
-
51
-
53 void print() {
-
54 for (const auto &[key, value] : _mapB) {
-
55 cout << '[' << key << "] = " << *value << "; ";
-
56 }
-
57 }
-
58
-
64 void update_nodeB(const A &a_old, const A &a_new) {
-
65 auto node = _mapB.extract(a_old);
-
66 if (!node.empty()) {
-
67 node.key() = a_new;
-
68 _mapB.insert(move(node));
-
69 }
-
70 }
-
76 void update_nodeA(const B &b_old, const B &b_new) {
-
77 auto node = _mapA.extract(b_old);
-
78 if (!node.empty()) {
-
79 node.key() = b_new;
-
80 _mapA.insert(move(node));
-
81 }
-
82 }
-
87 B get_B(const A &a) {
-
88 // We pass the associated value we want to search to the member
-
89 // variable
-
90 auto it = _mapB.find(a);
-
91 return (*(it->second));
-
92 }
-
93
-
98 A get_A(const B &b) {
-
99 // We pass the associated value we want to search to the member
-
100 // variable
-
101 auto it = _mapA.find(b);
-
102 return (*(it->second));
-
103 }
-
104
-
109 void erase_B(const A &a) {
-
110 // We pass the associated value we want to search to the member
-
111 // variable
-
112 auto itB = _mapB.find(a);
-
113 auto b = *(itB->second);
-
114 auto itA = _mapA.find(b);
-
115 _mapB.erase(itB);
-
116 _mapA.erase(itA);
-
117 }
-
121 inline bool empty() { return (_mapA.empty()); }
-
125 inline size_t lung() { return (_mapB.size()); }
-
126
-
127protected:
-
129 map<B, const A *> _mapA;
-
131 map<A, const B *> _mapB;
-
132};
-
133#endif
-
Bimap
An easy and straight forward implementation of a Bimap.
Definition: Bimap.h:27
-
Bimap::_mapB
map< A, const B * > _mapB
Right map.
Definition: Bimap.h:131
-
Bimap::lung
size_t lung()
Returns the size of the container.
Definition: Bimap.h:125
-
Bimap::_mapA
map< B, const A * > _mapA
Left map
Definition: Bimap.h:129
-
Bimap::update_nodeA
void update_nodeA(const B &b_old, const B &b_new)
Update of the key of the map A and hence the value of the node B.
Definition: Bimap.h:76
-
Bimap::print
void print()
Function to print the map.
Definition: Bimap.h:53
-
Bimap::~Bimap
~Bimap()
Destructor.
Definition: Bimap.h:32
-
Bimap::get_B
B get_B(const A &a)
Getter of the B value starting from a A value.
Definition: Bimap.h:87
-
Bimap::insert
void insert(const A &a, const B &b)
Insertion function in the Bimap.
Definition: Bimap.h:43
-
Bimap::Bimap
Bimap()
Constructor.
Definition: Bimap.h:30
-
Bimap::update_nodeB
void update_nodeB(const A &a_old, const A &a_new)
Update of the key of the map B and hence the value of the node A.
Definition: Bimap.h:64
-
Bimap::empty
bool empty()
Check if the Bimap is empty.
Definition: Bimap.h:121
-
Bimap::get_A
A get_A(const B &b)
Getter of the A value starting from a B value.
Definition: Bimap.h:98
-
Bimap::erase_B
void erase_B(const A &a)
Eraser of the value starting from a A value.
Definition: Bimap.h:109
+
22namespace comma {
+
23
+
27template<typename A, typename B>
+
28class Bimap {
+
29public:
+
31 Bimap() = default;
+
33 ~Bimap() = default;
+
34
+
35 // using container= std::map<A, const B*>;
+
36 // using iterator=typename container::iterator;
+
37 // inline iterator begin() noexcept { return _mapB.begin(); }
+
38 // inline iterator end() noexcept { return _mapB.end(); }
+
39
+
44 void insert(const A &a, const B &b) {
+
45 auto aitr = _mapA.insert({b, nullptr}).first; // creates first pair
+
46 const B *bp = &(aitr->first); // get pointer of our stored copy of b
+
47 auto bitr =
+
48 _mapB.insert({a, bp}).first; // insert second pair {a, pointer_to_b}
+
49 const A *ap = &(bitr->first); // update pointer in _mapA to point to a
+
50 _mapA.insert_or_assign(b, ap);
+
51 }
+
52
+
54 void print() {
+
55 for (const auto &[key, value] : _mapB) {
+
56 std::cout << '[' << key << "] = " << *value << "; ";
+
57 }
+
58 }
+
59
+
65 void update_nodeB(const A &a_old, const A &a_new) {
+
66 auto node = _mapB.extract(a_old);
+
67 if (!node.empty()) {
+
68 node.key() = a_new;
+
69 _mapB.insert(std::move(node));
+
70 }
+
71 }
+
77 void update_nodeA(const B &b_old, const B &b_new) {
+
78 auto node = _mapA.extract(b_old);
+
79 if (!node.empty()) {
+
80 node.key() = b_new;
+
81 _mapA.insert(std::move(node));
+
82 }
+
83 }
+
88 B get_B(const A &a) {
+
89 // We pass the associated value we want to search to the member
+
90 // variable
+
91 auto it = _mapB.find(a);
+
92 return (*(it->second));
+
93 }
+
94
+
99 A get_A(const B &b) {
+
100 // We pass the associated value we want to search to the member
+
101 // variable
+
102 auto it = _mapA.find(b);
+
103 return (*(it->second));
+
104 }
+
105
+
110 void erase_B(const A &a) {
+
111 // We pass the associated value we want to search to the member
+
112 // variable
+
113 auto itB = _mapB.find(a);
+
114 auto be = *(itB->second);
+
115 auto itA = _mapA.find(be);
+
116 _mapB.erase(itB);
+
117 _mapA.erase(itA);
+
118 }
+
122 inline bool empty() { return (_mapA.empty()); }
+
126 inline size_t lung() { return (_mapB.size()); }
+
127
+
128protected:
+
130 std::map<B, const A *> _mapA;
+
132 std::map<A, const B *> _mapB;
+
133};
+
134
+
135} // end namespace comma
+
136
+
137#endif
+
comma::Bimap
An easy and straight forward implementation of a Bimap.
Definition: Bimap.h:28
+
comma::Bimap::update_nodeA
void update_nodeA(const B &b_old, const B &b_new)
Update of the key of the map A and hence the value of the node B.
Definition: Bimap.h:77
+
comma::Bimap::get_B
B get_B(const A &a)
Getter of the B value starting from a A value.
Definition: Bimap.h:88
+
comma::Bimap::~Bimap
~Bimap()=default
Destructor.
+
comma::Bimap::Bimap
Bimap()=default
Constructor.
+
comma::Bimap::insert
void insert(const A &a, const B &b)
Insertion function in the Bimap.
Definition: Bimap.h:44
+
comma::Bimap::empty
bool empty()
Check if the Bimap is empty.
Definition: Bimap.h:122
+
comma::Bimap::erase_B
void erase_B(const A &a)
Eraser of the value starting from a A value.
Definition: Bimap.h:110
+
comma::Bimap::_mapB
std::map< A, const B * > _mapB
Right map.
Definition: Bimap.h:132
+
comma::Bimap::get_A
A get_A(const B &b)
Getter of the A value starting from a B value.
Definition: Bimap.h:99
+
comma::Bimap::update_nodeB
void update_nodeB(const A &a_old, const A &a_new)
Update of the key of the map B and hence the value of the node A.
Definition: Bimap.h:65
+
comma::Bimap::_mapA
std::map< B, const A * > _mapA
Left map
Definition: Bimap.h:130
+
comma::Bimap::print
void print()
Function to print the map.
Definition: Bimap.h:54
+
comma::Bimap::lung
size_t lung()
Returns the size of the container.
Definition: Bimap.h:126
+
comma
Definition: Agglomerator.h:34
diff --git a/_co_m_m_a_8cpp.html b/_co_m_m_a_8cpp.html deleted file mode 100644 index adfe1b1..0000000 --- a/_co_m_m_a_8cpp.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - -CoMMA: CoMMA_lib/CoMMA.cpp File Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
CoMMA.cpp File Reference
-
-
-
#include "CoMMA.h"
-#include <pybind11/numpy.h>
-#include <pybind11/pybind11.h>
-#include <pybind11/stl.h>
-#include <type_traits>
-#include "CoMMATypes.h"
-
- - - -

-Typedefs

using CoMMASignedIndexT = make_signed< CoMMAIndexT >::type
 
- - - -

-Functions

 PYBIND11_MODULE (CoMMA, module_handle)
 
-

Typedef Documentation

- -

◆ CoMMASignedIndexT

- -
-
- - - - -
using CoMMASignedIndexT = make_signed<CoMMAIndexT>::type
-
- -
-
-

Function Documentation

- -

◆ PYBIND11_MODULE()

- -
-
- - - - - - - - - - - - - - - - - - -
PYBIND11_MODULE (CoMMA ,
module_handle  
)
-
- -
-
-
-
- - - - diff --git a/_co_m_m_a_8cpp.js b/_co_m_m_a_8cpp.js deleted file mode 100644 index f140c2c..0000000 --- a/_co_m_m_a_8cpp.js +++ /dev/null @@ -1,5 +0,0 @@ -var _co_m_m_a_8cpp = -[ - [ "CoMMASignedIndexT", "_co_m_m_a_8cpp.html#a9fa394743ff7c80b26b62c15be20b7aa", null ], - [ "PYBIND11_MODULE", "_co_m_m_a_8cpp.html#a5cbd374c282b9c6431c52d2eae621735", null ] -]; \ No newline at end of file diff --git a/_co_m_m_a_8h.html b/_co_m_m_a_8h.html index 356780b..6b98781 100644 --- a/_co_m_m_a_8h.html +++ b/_co_m_m_a_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/CoMMA.h File Reference +CoMMA: include/CoMMA/CoMMA.h File Reference @@ -92,6 +92,7 @@
+Namespaces | Functions | Variables
CoMMA.h File Reference
@@ -105,280 +106,38 @@ #include <string>
#include <unordered_set>
#include <vector>
-#include "Agglomerator.h"
-#include "CoMMATypes.h"
-#include "Coarse_Cell_Container.h"
-#include "Dual_Graph.h"
-#include "Seeds_Pool.h"
+#include "CoMMA/Agglomerator.h"
+#include "CoMMA/CoMMADefs.h"
+#include "CoMMA/Coarse_Cell_Container.h"
+#include "CoMMA/Dual_Graph.h"
+#include "CoMMA/Seeds_Pool.h"

Go to the source code of this file.

+ + + +

+Namespaces

namespace  comma
 
- - - - + + + +

Functions

template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
void agglomerate_one_level (const vector< CoMMAIndexType > &adjMatrix_row_ptr, const vector< CoMMAIndexType > &adjMatrix_col_ind, const vector< CoMMAWeightType > &adjMatrix_areaValues, const vector< CoMMAWeightType > &volumes, const vector< vector< CoMMAWeightType > > &centers, const vector< CoMMAWeightType > &priority_weights, const vector< CoMMAIndexType > &anisotropicCompliantCells, const vector< CoMMAIntType > &n_bnd_faces, bool build_anisotropic_lines, bool is_anisotropic, bool odd_line_length, CoMMAWeightType threshold_anisotropy, const CoMMAIntType seed_ordering_type, vector< CoMMAIndexType > &fc_to_cc, vector< CoMMAIndexType > &agglomerationLines_Idx, vector< CoMMAIndexType > &agglomerationLines, bool correction, CoMMAIntType dimension, CoMMAIntType goal_card, CoMMAIntType min_card, CoMMAIntType max_card, CoMMAIntType singular_card_thresh=1, CoMMAIntType fc_choice_iter=1, const CoMMAIntType neighbourhood_type=CoMMANeighbourhoodT::EXTENDED)
 Main function of the agglomerator, it is used as an interface to build up all the agglomeration process. The result will be the definition of the agglomerated cells fc_to_cc. More...
 
template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
void comma::agglomerate_one_level (const std::vector< CoMMAIndexType > &adjMatrix_row_ptr, const std::vector< CoMMAIndexType > &adjMatrix_col_ind, const std::vector< CoMMAWeightType > &adjMatrix_areaValues, const std::vector< CoMMAWeightType > &volumes, const std::vector< std::vector< CoMMAWeightType > > &centers, const std::vector< CoMMAWeightType > &priority_weights, const std::vector< CoMMAIndexType > &anisotropicCompliantCells, const std::vector< CoMMAIntType > &n_bnd_faces, bool build_anisotropic_lines, bool is_anisotropic, bool odd_line_length, CoMMAWeightType threshold_anisotropy, const CoMMAIntType seed_ordering_type, std::vector< CoMMAIndexType > &fc_to_cc, std::vector< CoMMAIndexType > &agglomerationLines_Idx, std::vector< CoMMAIndexType > &agglomerationLines, bool correction, CoMMAIntType dimension, CoMMAIntType goal_card, CoMMAIntType min_card, CoMMAIntType max_card, CoMMAIntType singular_card_thresh=1, CoMMAIntType fc_choice_iter=1, const CoMMAIntType neighbourhood_type=CoMMANeighbourhoodT::EXTENDED)
 Main function of the agglomerator, it is used as an interface to build up all the agglomeration process. The result will be the definition of the agglomerated cells fc_to_cc. More...
 
- - - + + +

Variables

constexpr unsigned short max_iter = 4
 Maximum allowed iterations for the iterative algorithm, see Agglomerator_Iterative. More...
 
constexpr CoMMAIntT comma::iter_agglo_max_iter = 4
 Maximum allowed iterations for the iterative algorithm, see Agglomerator_Iterative. More...
 
-

Function Documentation

- -

◆ agglomerate_one_level()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void agglomerate_one_level (const vector< CoMMAIndexType > & adjMatrix_row_ptr,
const vector< CoMMAIndexType > & adjMatrix_col_ind,
const vector< CoMMAWeightType > & adjMatrix_areaValues,
const vector< CoMMAWeightType > & volumes,
const vector< vector< CoMMAWeightType > > & centers,
const vector< CoMMAWeightType > & priority_weights,
const vector< CoMMAIndexType > & anisotropicCompliantCells,
const vector< CoMMAIntType > & n_bnd_faces,
bool build_anisotropic_lines,
bool is_anisotropic,
bool odd_line_length,
CoMMAWeightType threshold_anisotropy,
const CoMMAIntType seed_ordering_type,
vector< CoMMAIndexType > & fc_to_cc,
vector< CoMMAIndexType > & agglomerationLines_Idx,
vector< CoMMAIndexType > & agglomerationLines,
bool correction,
CoMMAIntType dimension,
CoMMAIntType goal_card,
CoMMAIntType min_card,
CoMMAIntType max_card,
CoMMAIntType singular_card_thresh = 1,
CoMMAIntType fc_choice_iter = 1,
const CoMMAIntType neighbourhood_type = CoMMANeighbourhoodT::EXTENDED 
)
-
- -

Main function of the agglomerator, it is used as an interface to build up all the agglomeration process. The result will be the definition of the agglomerated cells fc_to_cc.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-
Parameters
- - - - - - - - - - - - - - - - - - - - - - - - - -
[in]adjMatrix_row_ptrthe row pointer of the CRS representation
[in]adjMatrix_col_indthe column index of the CRS representation
[in]adjMatrix_areaValuesthe weight of the CRS representation (in CoMMA case will be the area of the faces that in the graph representation are the edges between two nodes represented by the cell centers.
[in]volumesThe volumes of the cells
[in]centersCell centers
[in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
[in]anisotropicCompliantCellsList of cells which have to be looked for anisotropy
[in]n_bnd_facesVector telling how many boundary faces each cell has
[in]build_anisotropic_linesWhether lines joining the anisotropic cells should be built, otherwise, if the anisotropic agglomeration is activated, the lines should be provided, see agglomerationLines_Idx and agglomerationLines
[in]is_anisotropicWhether to consider an anisotropic agglomeration
[in]odd_line_lengthWhether anisotropic lines with odd length are allowed
[in]threshold_anisotropyValue of the aspect-ratio above which a cell is considered as anisotropic. If negative, all compliant cells are considered as anisotropic
[in]seed_ordering_typeType of ordering for the seeds of the coarse cells. Possible values (see CoMMASeedsPoolT):
    -
  • 0: The number of boundary faces has highest priority
  • -
  • 1: The neighbourhood has highest priority (neighbours of coarse cells have priority)
  • -
  • 10: The number of boundary faces has highest priority, and initialize with one point only then let evolve
  • -
  • 11: The neighbourhood has highest priority, and initialize with one point only then let evolve
  • -
-
[out]fc_to_ccVector telling the ID of the coarse cell to which a fine cell belongs after agglomeration
[in,out]agglomerationLines_IdxConnectivity for the agglomeration lines: each element points to a particular element in the vector agglomerationLines
[in,out]agglomerationLinesVector storing all the elements of the anisotropic lines
[in]correctionWhether to apply correction step (avoid isolated cells) after agglomeration
[in]dimensionDimensionality of the problem, 2- or 3D
[in]goal_cardExpected cardinality of the coarse cells (might not be ensured)
[in]min_cardMinimum cardinality accepted for the coarse cells
[in]max_cardMaximum cardinality accepted for the coarse cells
[in]singular_card_thresh(optional, default=1) Cardinality below which a coarse is considered as singular, hence, compliant for correction
[in]fc_choice_iter(optional, default=1) Number of iterations allowed for the algorithm choosing which fine cell to add next. The cost grows exponentially, hence use small values.
[in]neighbourhood_type(optional, default=Extended) Type of neighbourhood to use when growing a coarse cell. See CoMMANeighbourhoodT for more details. Two alternatives:
    -
  • Extended: requested with 0, standard algorithm where we consider every neighbour of the coarse cell as candidate.
  • -
  • Pure Front Advancing: requested with 1, only direct neighbours of the last added cell are candidates.
  • -
-
-
-
-
Exceptions
- - -
invalid_argumentwhenever dimension is not 2 nor 3, cardinalities are smaller than 1 or not in order, line building is disabled but lines are not provided, or number of iterations is negative or greater than max_iter.
-
-
- -
Author
Nicolas Lantos, Alberto Remigi, and Riccardo Milani
-
Contributor
Karim Anemiche
-
License
This project is released under the Mozilla Public License 2.0, see https://mozilla.org/MPL/2.0/
- -
-
-

Variable Documentation

- -

◆ max_iter

- -
-
- - - - - -
- - - - -
constexpr unsigned short max_iter = 4
-
-constexpr
-
- -

Maximum allowed iterations for the iterative algorithm, see Agglomerator_Iterative.

- -
-
diff --git a/_co_m_m_a_8h.js b/_co_m_m_a_8h.js index 513c30f..03d6111 100644 --- a/_co_m_m_a_8h.js +++ b/_co_m_m_a_8h.js @@ -1,5 +1,5 @@ var _co_m_m_a_8h = [ - [ "agglomerate_one_level", "_co_m_m_a_8h.html#a906c231be20a1f53a240618bae81d95f", null ], - [ "max_iter", "_co_m_m_a_8h.html#a06c8f4babe70bb7080dba80cf0473b21", null ] + [ "agglomerate_one_level", "_co_m_m_a_8h.html#aa6987db36673ecd638a9b08dfaac18b1", null ], + [ "iter_agglo_max_iter", "_co_m_m_a_8h.html#ae843c64bc9e371bd460fe8d040c80e2b", null ] ]; \ No newline at end of file diff --git a/_co_m_m_a_8h_source.html b/_co_m_m_a_8h_source.html index 59e519f..1bb74d0 100644 --- a/_co_m_m_a_8h_source.html +++ b/_co_m_m_a_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/CoMMA.h Source File +CoMMA: include/CoMMA/CoMMA.h Source File @@ -100,7 +100,7 @@
4/*
5 * CoMMA
6 *
-
7 * Copyright © 2023 ONERA
+
7 * Copyright © 2024 ONERA
8 *
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
10 * Contributors: Karim Anemiche
@@ -119,291 +119,299 @@
23#include <unordered_set>
24#include <vector>
25
-
26#include "Agglomerator.h"
-
27#include "CoMMATypes.h"
-
28#include "Coarse_Cell_Container.h"
-
29#include "Dual_Graph.h"
-
30#include "Seeds_Pool.h"
+
26#include "CoMMA/Agglomerator.h"
+
27#include "CoMMA/CoMMADefs.h"
+
28#include "CoMMA/Coarse_Cell_Container.h"
+
29#include "CoMMA/Dual_Graph.h"
+
30#include "CoMMA/Seeds_Pool.h"
31
-
33#define check_int_type(intT, label) \
-
34 static_assert( \
-
35 numeric_limits<intT>::is_integer, \
-
36 "CoMMA works with integer types, but " #intT " (" label ") is not")
-
38
-
42constexpr unsigned short max_iter = 4;
-
43
-
44using namespace std;
+
32namespace comma {
+
33
+
35#define CHECK_INT_TYPE(intT, label) \
+
36 static_assert( \
+
37 std::numeric_limits<intT>::is_integer, \
+
38 "CoMMA works with integer types, but " #intT " (" label ") is not")
+
40
+
44constexpr CoMMAIntT iter_agglo_max_iter = 4;
45
-
120template<
-
121 typename CoMMAIndexType,
-
122 typename CoMMAWeightType,
-
123 typename CoMMAIntType>
-
124void agglomerate_one_level(
-
125 // Dual graph:
-
126 const vector<CoMMAIndexType> &adjMatrix_row_ptr,
-
127 const vector<CoMMAIndexType> &adjMatrix_col_ind,
-
128 const vector<CoMMAWeightType> &adjMatrix_areaValues,
-
129 const vector<CoMMAWeightType> &volumes,
-
130
-
131 // Additional info about the mesh
-
132 const vector<vector<CoMMAWeightType>> &centers,
-
133 const vector<CoMMAWeightType> &priority_weights,
-
134 const vector<CoMMAIndexType> &anisotropicCompliantCells,
-
135 const vector<CoMMAIntType> &n_bnd_faces,
-
136
-
137 // Anisotropy related info
-
138 bool build_anisotropic_lines,
-
139 bool is_anisotropic,
-
140 bool odd_line_length,
-
141 CoMMAWeightType threshold_anisotropy,
-
142
-
143 // Seed ordering
-
144 const CoMMAIntType seed_ordering_type,
-
145
-
146 // Outputs
-
147 vector<CoMMAIndexType> &fc_to_cc, // Out
-
148 vector<CoMMAIndexType> &agglomerationLines_Idx, // In & out
-
149 vector<CoMMAIndexType> &agglomerationLines, // In & out
-
150
-
151 // Tuning of the algorithms
-
152 bool correction,
-
153 CoMMAIntType dimension,
-
154 CoMMAIntType goal_card,
-
155 CoMMAIntType min_card,
-
156 CoMMAIntType max_card,
-
157 CoMMAIntType singular_card_thresh = 1,
-
158 CoMMAIntType fc_choice_iter = 1,
-
159 const CoMMAIntType neighbourhood_type = CoMMANeighbourhoodT::EXTENDED) {
-
160 // NOTATION
-
161 //======================================
-
162 // fc = Fine Cell
-
163 // cc = Coarse Cell
-
164
-
165 // USEFUL SHORTCUTS
-
166 //======================================
-
167 using SeedsPoolType =
-
168 Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
169 using DualGraphType =
-
170 Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
171 using CCContainerType =
-
172 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
173 using IsotropicPtr = std::unique_ptr<
-
174 Agglomerator_Isotropic<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>;
-
175
-
176 // SANITY CHECKS
-
177 //======================================
-
178 check_int_type(CoMMAIndexType, "first template argument");
-
179 check_int_type(CoMMAIntType, "third template argument");
-
180 if (!(dimension == 2 || dimension == 3))
-
181 throw invalid_argument("CoMMA - Error: dimension must be 2 or 3");
-
182 if (min_card <= 1 || goal_card <= 1 || max_card <= 1)
-
183 throw invalid_argument(
-
184 "CoMMA - Error: Cardinalities must be greater than 1");
-
185 if (!(min_card <= goal_card && goal_card <= max_card))
-
186 throw invalid_argument(
-
187 "CoMMA - Error: Cardinalities must be in order (min <= goal <= max)");
-
188 if (fc_choice_iter < 1)
-
189 throw invalid_argument(
-
190 "CoMMA - Error: the number of iteration for the choice of the fine "
-
191 "cells must be at least 1");
-
192 else if (fc_choice_iter > static_cast<CoMMAIntType>(max_iter))
-
193 throw invalid_argument(
-
194 "CoMMA - Error: the number of iteration for the choice of the fine "
-
195 "cells must be at most "
-
196 + to_string(max_iter));
-
197 if (
-
198 adjMatrix_row_ptr.empty()
-
199 || adjMatrix_row_ptr.back()
-
200 != static_cast<CoMMAIndexType>(adjMatrix_col_ind.size())
-
201 || adjMatrix_row_ptr.back()
-
202 != static_cast<CoMMAIndexType>(adjMatrix_areaValues.size()))
-
203 throw invalid_argument("CoMMA - Error: bad CRS graph (sizes do not match)");
-
204 if (is_anisotropic) {
-
205 if (build_anisotropic_lines) {
-
206 if (anisotropicCompliantCells.empty()) {
-
207 cout << "CoMMA - Warning: building anisotropic line requested, no "
-
208 "compliant cells provided. Switching off anisotropy."
-
209 << endl;
-
210 }
-
211 } else {
-
212 // Anisotropic lines are provided
-
213 if (agglomerationLines_Idx.size() < 2 || agglomerationLines.empty()) {
-
214 cout << "CoMMA - Warning: usage of input anisotropic line requested, "
-
215 "but arguments are not enough / invalid to define them. "
-
216 "Switching off anisotropy."
-
217 << endl;
-
218 is_anisotropic = false;
-
219 } else if (
-
220 agglomerationLines_Idx.back()
-
221 != static_cast<CoMMAIndexType>(agglomerationLines.size())) {
-
222 throw invalid_argument(
-
223 "CoMMA - Error: bad anisotropic lines definition (sizes do not "
-
224 "match)");
-
225 }
-
226 }
-
227 }
-
228 auto sing_thresh = singular_card_thresh;
-
229 if (singular_card_thresh <= 0) {
-
230 throw invalid_argument(
-
231 "CoMMA - Error: Threshold cardinality for singular cells should be "
-
232 "greater than zero");
-
233 } else if (singular_card_thresh >= min_card) {
-
234 cout << "CoMMA - Warning: Threshold cardinality is equal or larger than "
-
235 "minimum cardinality. Changing it to this latter value."
-
236 << endl;
-
237 sing_thresh = min_card - 1;
-
238 }
-
239
-
240 // SIZES CAST
-
241 //======================================
-
242 const CoMMAIndexType nb_fc =
-
243 static_cast<CoMMAIndexType>(adjMatrix_row_ptr.size() - 1);
+
121template<
+
122 typename CoMMAIndexType,
+
123 typename CoMMAWeightType,
+
124 typename CoMMAIntType>
+
125void agglomerate_one_level(
+
126 // Dual graph:
+
127 const std::vector<CoMMAIndexType> &adjMatrix_row_ptr,
+
128 const std::vector<CoMMAIndexType> &adjMatrix_col_ind,
+
129 const std::vector<CoMMAWeightType> &adjMatrix_areaValues,
+
130 const std::vector<CoMMAWeightType> &volumes,
+
131
+
132 // Additional info about the mesh
+
133 const std::vector<std::vector<CoMMAWeightType>> &centers,
+
134 const std::vector<CoMMAWeightType> &priority_weights,
+
135 const std::vector<CoMMAIndexType> &anisotropicCompliantCells,
+
136 const std::vector<CoMMAIntType> &n_bnd_faces,
+
137
+
138 // Anisotropy related info
+
139 bool build_anisotropic_lines,
+
140 bool is_anisotropic,
+
141 bool odd_line_length,
+
142 CoMMAWeightType threshold_anisotropy,
+
143
+
144 // Seed ordering
+
145 const CoMMAIntType seed_ordering_type,
+
146
+
147 // Outputs
+
148 std::vector<CoMMAIndexType> &fc_to_cc, // Out
+
149 std::vector<CoMMAIndexType> &agglomerationLines_Idx, // In & out
+
150 std::vector<CoMMAIndexType> &agglomerationLines, // In & out
+
151
+
152 // Tuning of the algorithms
+
153 bool correction,
+
154 CoMMAIntType dimension,
+
155 CoMMAIntType goal_card,
+
156 CoMMAIntType min_card,
+
157 CoMMAIntType max_card,
+
158 CoMMAIntType singular_card_thresh = 1,
+
159 CoMMAIntType fc_choice_iter = 1,
+
160 const CoMMAIntType neighbourhood_type = CoMMANeighbourhoodT::EXTENDED) {
+
161 // NOTATION
+
162 //======================================
+
163 // fc = Fine Cell
+
164 // cc = Coarse Cell
+
165
+
166 // USEFUL SHORTCUTS
+
167 //======================================
+
168 using SeedsPoolType =
+
169 Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
170 using DualGraphType =
+
171 Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
172 using CCContainerType =
+
173 Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
174 using IsotropicPtr = std::unique_ptr<
+
175 Agglomerator_Isotropic<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>;
+
176
+
177 // SANITY CHECKS
+
178 //======================================
+
179 CHECK_INT_TYPE(CoMMAIndexType, "first template argument");
+
180 CHECK_INT_TYPE(CoMMAIntType, "third template argument");
+
181 if (!(dimension == 2 || dimension == 3))
+
182 throw std::invalid_argument("CoMMA - Error: dimension must be 2 or 3");
+
183 if (min_card <= 1 || goal_card <= 1 || max_card <= 1)
+
184 throw std::invalid_argument(
+
185 "CoMMA - Error: Cardinalities must be greater than 1");
+
186 if (!(min_card <= goal_card && goal_card <= max_card))
+
187 throw std::invalid_argument(
+
188 "CoMMA - Error: Cardinalities must be in order (min <= goal <= max)");
+
189 if (fc_choice_iter < 1)
+
190 throw std::invalid_argument(
+
191 "CoMMA - Error: the number of iteration for the choice of the fine "
+
192 "cells must be at least 1");
+
193 if (fc_choice_iter > iter_agglo_max_iter)
+
194 throw std::invalid_argument(
+
195 "CoMMA - Error: the number of iteration for the choice of the fine "
+
196 "cells must be at most "
+
197 + std::to_string(iter_agglo_max_iter));
+
198 if (
+
199 adjMatrix_row_ptr.empty()
+
200 || adjMatrix_row_ptr.back()
+
201 != static_cast<CoMMAIndexType>(adjMatrix_col_ind.size())
+
202 || adjMatrix_row_ptr.back()
+
203 != static_cast<CoMMAIndexType>(adjMatrix_areaValues.size()))
+
204 throw std::invalid_argument(
+
205 "CoMMA - Error: bad CRS graph (sizes do not match)");
+
206 if (is_anisotropic) {
+
207 if (build_anisotropic_lines) {
+
208 if (anisotropicCompliantCells.empty()) {
+
209 std::cout << "CoMMA - Warning: building anisotropic line requested, no "
+
210 "compliant cells provided. Switching off anisotropy."
+
211 << std::endl;
+
212 }
+
213 } else {
+
214 // Anisotropic lines are provided
+
215 if (agglomerationLines_Idx.size() < 2 || agglomerationLines.empty()) {
+
216 std::cout
+
217 << "CoMMA - Warning: usage of input anisotropic line requested, "
+
218 "but arguments are not enough / invalid to define them. "
+
219 "Switching off anisotropy."
+
220 << std::endl;
+
221 is_anisotropic = false;
+
222 } else if (
+
223 agglomerationLines_Idx.back()
+
224 != static_cast<CoMMAIndexType>(agglomerationLines.size())) {
+
225 throw std::invalid_argument(
+
226 "CoMMA - Error: bad anisotropic lines definition (sizes do not "
+
227 "match)");
+
228 }
+
229 }
+
230 }
+
231 auto sing_thresh = singular_card_thresh;
+
232 if (singular_card_thresh <= 0) {
+
233 throw std::invalid_argument(
+
234 "CoMMA - Error: Threshold cardinality for singular cells should be "
+
235 "greater than zero");
+
236 }
+
237 if (singular_card_thresh >= min_card) {
+
238 std::cout
+
239 << "CoMMA - Warning: Threshold cardinality is equal or larger than "
+
240 "minimum cardinality. Changing it to this latter value."
+
241 << std::endl;
+
242 sing_thresh = min_card - 1;
+
243 }
244
-
245 // BOUNDARY FACES
+
245 // SIZES CAST
246 //======================================
-
247 // Sometimes partitioners give a number of boundary faces higher than the
-
248 // physical one. We fix this
-
249 const CoMMAIntType expected_max_n_bnd = dimension;
-
250 vector<CoMMAIntType> fixed_n_bnd_faces(n_bnd_faces.size());
-
251 replace_copy_if(
-
252 n_bnd_faces.begin(), n_bnd_faces.end(), fixed_n_bnd_faces.begin(),
-
253 [expected_max_n_bnd](auto n) { return n > expected_max_n_bnd; },
-
254 expected_max_n_bnd);
-
255
-
256 // SEED POOL
-
257 //======================================
-
258 // Object providing the order of agglomeration
-
259 shared_ptr<SeedsPoolType> seeds_pool = nullptr;
-
260 switch (seed_ordering_type) {
-
261 case CoMMASeedsPoolT::BOUNDARY_PRIORITY:
-
262 seeds_pool = make_shared<Seeds_Pool_Boundary_Priority<
-
263 CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>(
-
264 fixed_n_bnd_faces, priority_weights, false);
-
265 break;
-
266 case CoMMASeedsPoolT::NEIGHBOURHOOD_PRIORITY:
-
267 seeds_pool = make_shared<Seeds_Pool_Neighbourhood_Priority<
-
268 CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>(
-
269 fixed_n_bnd_faces, priority_weights, false);
-
270 break;
-
271 case CoMMASeedsPoolT::BOUNDARY_PRIORITY_ONE_POINT_INIT:
-
272 seeds_pool = make_shared<Seeds_Pool_Boundary_Priority<
-
273 CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>(
-
274 fixed_n_bnd_faces, priority_weights, true);
-
275 break;
-
276 case CoMMASeedsPoolT::NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT:
-
277 seeds_pool = make_shared<Seeds_Pool_Neighbourhood_Priority<
-
278 CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>(
-
279 fixed_n_bnd_faces, priority_weights, true);
-
280 break;
-
281 default:
-
282 throw invalid_argument("CoMMA - Error: Seeds pool type unsupported");
-
283 }
-
284
-
285 // DUAL GRAPH
-
286 //======================================
-
287 // Object containing the graph representation and related info in a convenient
-
288 // structure
-
289 shared_ptr<DualGraphType> fc_graph = make_shared<DualGraphType>(
-
290 nb_fc, adjMatrix_row_ptr, adjMatrix_col_ind, adjMatrix_areaValues, volumes,
-
291 centers, fixed_n_bnd_faces, dimension, anisotropicCompliantCells);
-
292
-
293 // COARSE CELL CONTAINER
-
294 //======================================
-
295 // Preparing the object that will contain all the coarse cells
-
296 shared_ptr<CCContainerType> cc_graph =
-
297 make_shared<CCContainerType>(fc_graph, sing_thresh);
-
298
-
299 // AGGLOMERATION OF ANISOTROPIC CELLS
-
300 //======================================
-
301 // @todo maybe re-refactor the class agglomerator to allow the implicit upcast
-
302 // like the biconnected case
-
303 // The agglomerator anisotropic is not called with the implicit upcasting
-
304 // pointing because of the initialization of
-
305 // the anisotropic lines.
-
306 // for more information look at:
-
307 // https://stackoverflow.com/questions/19682402/initialize-child-object-on-a-pointer-to-parent
-
308 // About constructors when upcasting:
-
309 // https://www.reddit.com/r/learnprogramming/comments/1wopf6/java_which_constructor_is_called_when_upcasting/
-
310 if (is_anisotropic) {
-
311 // Build anisotropic agglomerator
-
312 Agglomerator_Anisotropic<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
313 aniso_agg(
-
314 fc_graph, cc_graph, seeds_pool, threshold_anisotropy,
-
315 agglomerationLines_Idx, agglomerationLines, priority_weights,
-
316 build_anisotropic_lines, odd_line_length, dimension);
-
317
-
318 // Agglomerate anisotropic cells only
-
319 aniso_agg.agglomerate_one_level(
-
320 goal_card, min_card, max_card, priority_weights, false);
+
247 const auto nb_fc = static_cast<CoMMAIndexType>(adjMatrix_row_ptr.size() - 1);
+
248
+
249 // BOUNDARY FACES
+
250 //======================================
+
251 // Sometimes partitioners give a number of boundary faces higher than the
+
252 // physical one. We fix this
+
253 const CoMMAIntType expected_max_n_bnd = dimension;
+
254 std::vector<CoMMAIntType> fixed_n_bnd_faces(n_bnd_faces.size());
+
255 std::replace_copy_if(
+
256 n_bnd_faces.begin(), n_bnd_faces.end(), fixed_n_bnd_faces.begin(),
+
257 [expected_max_n_bnd](auto n) { return n > expected_max_n_bnd; },
+
258 expected_max_n_bnd);
+
259
+
260 // SEED POOL
+
261 //======================================
+
262 // Object providing the order of agglomeration
+
263 std::shared_ptr<SeedsPoolType> seeds_pool = nullptr;
+
264 switch (seed_ordering_type) {
+
265 case CoMMASeedsPoolT::BOUNDARY_PRIORITY:
+
266 seeds_pool = std::make_shared<Seeds_Pool_Boundary_Priority<
+
267 CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>(
+
268 fixed_n_bnd_faces, priority_weights, false);
+
269 break;
+
270 case CoMMASeedsPoolT::NEIGHBOURHOOD_PRIORITY:
+
271 seeds_pool = std::make_shared<Seeds_Pool_Neighbourhood_Priority<
+
272 CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>(
+
273 fixed_n_bnd_faces, priority_weights, false);
+
274 break;
+
275 case CoMMASeedsPoolT::BOUNDARY_PRIORITY_ONE_POINT_INIT:
+
276 seeds_pool = std::make_shared<Seeds_Pool_Boundary_Priority<
+
277 CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>(
+
278 fixed_n_bnd_faces, priority_weights, true);
+
279 break;
+
280 case CoMMASeedsPoolT::NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT:
+
281 seeds_pool = std::make_shared<Seeds_Pool_Neighbourhood_Priority<
+
282 CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>(
+
283 fixed_n_bnd_faces, priority_weights, true);
+
284 break;
+
285 default:
+
286 throw std::invalid_argument("CoMMA - Error: Seeds pool type unsupported");
+
287 }
+
288
+
289 // DUAL GRAPH
+
290 //======================================
+
291 // Object containing the graph representation and related info in a convenient
+
292 // structure
+
293 std::shared_ptr<DualGraphType> fc_graph = std::make_shared<DualGraphType>(
+
294 nb_fc, adjMatrix_row_ptr, adjMatrix_col_ind, adjMatrix_areaValues, volumes,
+
295 centers, fixed_n_bnd_faces, dimension, anisotropicCompliantCells);
+
296
+
297 // COARSE CELL CONTAINER
+
298 //======================================
+
299 // Preparing the object that will contain all the coarse cells
+
300 std::shared_ptr<CCContainerType> cc_graph =
+
301 std::make_shared<CCContainerType>(fc_graph, sing_thresh);
+
302
+
303 // AGGLOMERATION OF ANISOTROPIC CELLS
+
304 //======================================
+
305 // @todo maybe re-refactor the class agglomerator to allow the implicit upcast
+
306 // like the biconnected case
+
307 // The agglomerator anisotropic is not called with the implicit upcasting
+
308 // pointing because of the initialization of
+
309 // the anisotropic lines.
+
310 // for more information look at:
+
311 // https://stackoverflow.com/questions/19682402/initialize-child-object-on-a-pointer-to-parent
+
312 // About constructors when upcasting:
+
313 // https://www.reddit.com/r/learnprogramming/comments/1wopf6/java_which_constructor_is_called_when_upcasting/
+
314 if (is_anisotropic) {
+
315 // Build anisotropic agglomerator
+
316 Agglomerator_Anisotropic<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
+
317 aniso_agg(
+
318 fc_graph, cc_graph, seeds_pool, threshold_anisotropy,
+
319 agglomerationLines_Idx, agglomerationLines, priority_weights,
+
320 build_anisotropic_lines, odd_line_length, dimension);
321
-
322 // Put anisotropic lines into the output parameters
-
323 // (Info about level of the line: WARNING! here 1 it means that we give it
-
324 // back lines in the new global index, 0 the old)
-
325 const CoMMAIntType i_level{1};
-
326 aniso_agg.export_anisotropic_lines(
-
327 i_level, agglomerationLines_Idx, agglomerationLines);
-
328 } else {
-
329 seeds_pool->initialize();
-
330 }
-
331
-
332 // AGGLOMERATION OF ISOTROPIC CELLS
-
333 //======================================
-
334 // We define here the type of Agglomerator
-
335 IsotropicPtr agg = nullptr;
-
336 // TODO: maybe pass to a switch when another agglomerator will be implemented
-
337 if (fc_choice_iter > 1) {
-
338 agg = make_unique<
-
339 Agglomerator_Iterative<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>(
-
340 fc_graph, cc_graph, seeds_pool, neighbourhood_type, fc_choice_iter,
-
341 dimension);
-
342 } else {
-
343 agg = make_unique<
-
344 Agglomerator_Biconnected<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>(
-
345 fc_graph, cc_graph, seeds_pool, neighbourhood_type, fc_choice_iter,
-
346 dimension);
-
347 }
-
348 // Agglomerate
-
349 agg->agglomerate_one_level(
-
350 goal_card, min_card, max_card, priority_weights, correction);
-
351 // FILLING FC TO CC (it is a property of the cc_graph but retrieved through an
-
352 // helper of the agglomerator)
-
353 const auto &fccc = cc_graph->_fc_2_cc;
-
354 for (auto i_fc = decltype(nb_fc){0}; i_fc < nb_fc; i_fc++) {
-
355 fc_to_cc[i_fc] = fccc[i_fc].value();
-
356 }
-
357}
-
358#undef check_int_type
-
359#endif
+
322 // Agglomerate anisotropic cells only
+
323 aniso_agg.agglomerate_one_level(
+
324 goal_card, min_card, max_card, priority_weights, false);
+
325
+
326 // Put anisotropic lines into the output parameters
+
327 // (Info about level of the line: WARNING! here 1 it means that we give it
+
328 // back lines in the new global index, 0 the old)
+
329 const CoMMAIntType i_level{1};
+
330 aniso_agg.export_anisotropic_lines(
+
331 i_level, agglomerationLines_Idx, agglomerationLines);
+
332 } else {
+
333 seeds_pool->initialize();
+
334 }
+
335
+
336 // AGGLOMERATION OF ISOTROPIC CELLS
+
337 //======================================
+
338 // We define here the type of Agglomerator
+
339 IsotropicPtr agg = nullptr;
+
340 // TODO: maybe pass to a switch when another agglomerator will be implemented
+
341 if (fc_choice_iter > 1) {
+
342 agg = std::make_unique<
+
343 Agglomerator_Iterative<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>(
+
344 fc_graph, cc_graph, seeds_pool, neighbourhood_type, fc_choice_iter,
+
345 dimension);
+
346 } else {
+
347 agg = std::make_unique<
+
348 Agglomerator_Biconnected<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>(
+
349 fc_graph, cc_graph, seeds_pool, neighbourhood_type, fc_choice_iter,
+
350 dimension);
+
351 }
+
352 // Agglomerate
+
353 agg->agglomerate_one_level(
+
354 goal_card, min_card, max_card, priority_weights, correction);
+
355 // FILLING FC TO CC (it is a property of the cc_graph but retrieved through an
+
356 // helper of the agglomerator)
+
357 const auto &fccc = cc_graph->_fc_2_cc;
+
358 for (auto i_fc = decltype(nb_fc){0}; i_fc < nb_fc; i_fc++) {
+
359 fc_to_cc[i_fc] = fccc[i_fc].value();
+
360 }
+
361}
+
362
+
363#undef CHECK_INT_TYPE
+
364
+
365} // end namespace comma
+
366
+
367#endif
Agglomerator.h
-
max_iter
constexpr unsigned short max_iter
Maximum allowed iterations for the iterative algorithm, see Agglomerator_Iterative.
Definition: CoMMA.h:42
-
agglomerate_one_level
void agglomerate_one_level(const vector< CoMMAIndexType > &adjMatrix_row_ptr, const vector< CoMMAIndexType > &adjMatrix_col_ind, const vector< CoMMAWeightType > &adjMatrix_areaValues, const vector< CoMMAWeightType > &volumes, const vector< vector< CoMMAWeightType > > &centers, const vector< CoMMAWeightType > &priority_weights, const vector< CoMMAIndexType > &anisotropicCompliantCells, const vector< CoMMAIntType > &n_bnd_faces, bool build_anisotropic_lines, bool is_anisotropic, bool odd_line_length, CoMMAWeightType threshold_anisotropy, const CoMMAIntType seed_ordering_type, vector< CoMMAIndexType > &fc_to_cc, vector< CoMMAIndexType > &agglomerationLines_Idx, vector< CoMMAIndexType > &agglomerationLines, bool correction, CoMMAIntType dimension, CoMMAIntType goal_card, CoMMAIntType min_card, CoMMAIntType max_card, CoMMAIntType singular_card_thresh=1, CoMMAIntType fc_choice_iter=1, const CoMMAIntType neighbourhood_type=CoMMANeighbourhoodT::EXTENDED)
Main function of the agglomerator, it is used as an interface to build up all the agglomeration proce...
Definition: CoMMA.h:124
-
CoMMATypes.h
-
NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT
@ NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT
Definition: CoMMATypes.h:64
-
NEIGHBOURHOOD_PRIORITY
@ NEIGHBOURHOOD_PRIORITY
Definition: CoMMATypes.h:56
-
BOUNDARY_PRIORITY
@ BOUNDARY_PRIORITY
Definition: CoMMATypes.h:52
-
BOUNDARY_PRIORITY_ONE_POINT_INIT
@ BOUNDARY_PRIORITY_ONE_POINT_INIT
Definition: CoMMATypes.h:60
-
EXTENDED
@ EXTENDED
Extended, all neighbours of the coarse cell.
Definition: CoMMATypes.h:45
+
CoMMADefs.h
Coarse_Cell_Container.h
Dual_Graph.h
Seeds_Pool.h
-
Agglomerator_Anisotropic
Agglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implem...
Definition: Agglomerator.h:180
-
Agglomerator_Anisotropic::agglomerate_one_level
void agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
Specialization of the pure virtual function to the class Agglomerator_Anisotropic....
Definition: Agglomerator.h:294
-
Agglomerator_Anisotropic::export_anisotropic_lines
void export_anisotropic_lines(CoMMAIntType level, vector< CoMMAIndexType > &aniso_lines_idx, vector< CoMMAIndexType > &aniso_lines) const
Function that prepares the anisotropic lines for output.
Definition: Agglomerator.h:436
-
Agglomerator_Biconnected
Child class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the a...
Definition: Agglomerator.h:968
-
Agglomerator_Isotropic
Agglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implemen...
Definition: Agglomerator.h:699
-
Agglomerator_Isotropic::agglomerate_one_level
void agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
Specialization of the pure virtual function to the class Agglomerator_Isotropic. We add the override ...
Definition: Agglomerator.h:828
-
Agglomerator_Iterative
Child class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the sear...
Definition: Agglomerator.h:1374
-
Coarse_Cell_Container
Class implementing a custom container where the coarse cells are stored.
Definition: Coarse_Cell_Container.h:41
-
Dual_Graph
A class implementing the CRS global graph representation of the global mesh.
Definition: Dual_Graph.h:514
-
Seeds_Pool_Boundary_Priority
Class representing the pool of all the seeds for creating a coarse cell. This derived class gives hig...
Definition: Seeds_Pool.h:409
-
Seeds_Pool_Neighbourhood_Priority
Class representing the pool of all the seeds for creating a coarse cell. This derived class gives hig...
Definition: Seeds_Pool.h:558
-
Seeds_Pool
Class representing the pool of all the seeds for creating a coarse cell.
Definition: Seeds_Pool.h:172
+
comma::Agglomerator_Anisotropic
Agglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implem...
Definition: Agglomerator.h:181
+
comma::Agglomerator_Anisotropic::export_anisotropic_lines
void export_anisotropic_lines(CoMMAIntType level, std::vector< CoMMAIndexType > &aniso_lines_idx, std::vector< CoMMAIndexType > &aniso_lines) const
Function that prepares the anisotropic lines for output.
Definition: Agglomerator.h:438
+
comma::Agglomerator_Anisotropic::agglomerate_one_level
void agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
Specialization of the pure virtual function to the class Agglomerator_Anisotropic....
Definition: Agglomerator.h:296
+
comma::Agglomerator_Biconnected
Child class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the a...
Definition: Agglomerator.h:973
+
comma::Agglomerator_Isotropic
Agglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implemen...
Definition: Agglomerator.h:701
+
comma::Agglomerator_Isotropic::agglomerate_one_level
void agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
Specialization of the pure virtual function to the class Agglomerator_Isotropic. We add the override ...
Definition: Agglomerator.h:831
+
comma::Agglomerator_Iterative
Child class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the sear...
Definition: Agglomerator.h:1384
+
comma::Coarse_Cell_Container
Class implementing a custom container where the coarse cells are stored.
Definition: Coarse_Cell_Container.h:41
+
comma::Dual_Graph
A class implementing the CRS global graph representation of the global mesh.
Definition: Dual_Graph.h:517
+
comma::Seeds_Pool_Boundary_Priority
Class representing the pool of all the seeds for creating a coarse cell. This derived class gives hig...
Definition: Seeds_Pool.h:430
+
comma::Seeds_Pool_Neighbourhood_Priority
Class representing the pool of all the seeds for creating a coarse cell. This derived class gives hig...
Definition: Seeds_Pool.h:583
+
comma::Seeds_Pool
Class representing the pool of all the seeds for creating a coarse cell.
Definition: Seeds_Pool.h:194
+
comma
Definition: Agglomerator.h:34
+
comma::EXTENDED
@ EXTENDED
Extended, all neighbours of the coarse cell.
Definition: CoMMADefs.h:38
+
comma::BOUNDARY_PRIORITY_ONE_POINT_INIT
@ BOUNDARY_PRIORITY_ONE_POINT_INIT
Definition: CoMMADefs.h:53
+
comma::BOUNDARY_PRIORITY
@ BOUNDARY_PRIORITY
Definition: CoMMADefs.h:45
+
comma::NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT
@ NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT
Definition: CoMMADefs.h:57
+
comma::NEIGHBOURHOOD_PRIORITY
@ NEIGHBOURHOOD_PRIORITY
Definition: CoMMADefs.h:49
+
comma::agglomerate_one_level
void agglomerate_one_level(const std::vector< CoMMAIndexType > &adjMatrix_row_ptr, const std::vector< CoMMAIndexType > &adjMatrix_col_ind, const std::vector< CoMMAWeightType > &adjMatrix_areaValues, const std::vector< CoMMAWeightType > &volumes, const std::vector< std::vector< CoMMAWeightType > > &centers, const std::vector< CoMMAWeightType > &priority_weights, const std::vector< CoMMAIndexType > &anisotropicCompliantCells, const std::vector< CoMMAIntType > &n_bnd_faces, bool build_anisotropic_lines, bool is_anisotropic, bool odd_line_length, CoMMAWeightType threshold_anisotropy, const CoMMAIntType seed_ordering_type, std::vector< CoMMAIndexType > &fc_to_cc, std::vector< CoMMAIndexType > &agglomerationLines_Idx, std::vector< CoMMAIndexType > &agglomerationLines, bool correction, CoMMAIntType dimension, CoMMAIntType goal_card, CoMMAIntType min_card, CoMMAIntType max_card, CoMMAIntType singular_card_thresh=1, CoMMAIntType fc_choice_iter=1, const CoMMAIntType neighbourhood_type=CoMMANeighbourhoodT::EXTENDED)
Main function of the agglomerator, it is used as an interface to build up all the agglomeration proce...
Definition: CoMMA.h:125
+
comma::iter_agglo_max_iter
constexpr CoMMAIntT iter_agglo_max_iter
Maximum allowed iterations for the iterative algorithm, see Agglomerator_Iterative.
Definition: CoMMA.h:44
diff --git a/_co_m_m_a_defs_8h.html b/_co_m_m_a_defs_8h.html new file mode 100644 index 0000000..bba6a36 --- /dev/null +++ b/_co_m_m_a_defs_8h.html @@ -0,0 +1,146 @@ + + + + + + + +CoMMA: include/CoMMA/CoMMADefs.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CoMMADefs.h File Reference
+
+
+
#include "CoMMA/CoMMAConfig.h"
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  comma
 
+ + + + + + + + + + +

+Enumerations

enum  comma::CoMMACellT : CoMMAIntT {
+  comma::INTERIOR = 0 +, comma::VALLEY = 1 +, comma::RIDGE = 2 +, comma::CORNER = 3 +,
+  comma::EXTREME = 4 +, comma::N_CELL_TYPES = 4 +
+ }
 Type of an element according to its boundary faces / edges The terms come from the NIA paper: Nishikawa, Diskin, Thomas... More...
 
enum  comma::CoMMANeighbourhoodT : CoMMAIntT { comma::EXTENDED = 0 +, comma::PURE_FRONT = 1 + }
 Type of neighbourhood (of a coarse cell) considered when agglomerating. More...
 
enum  comma::CoMMASeedsPoolT : CoMMAIntT { comma::BOUNDARY_PRIORITY = 0 +, comma::NEIGHBOURHOOD_PRIORITY = 1 +, comma::BOUNDARY_PRIORITY_ONE_POINT_INIT = 10 +, comma::NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT = 11 + }
 Type of seeds pool ordering. More...
 
+
+
+ + + + diff --git a/_co_m_m_a_defs_8h.js b/_co_m_m_a_defs_8h.js new file mode 100644 index 0000000..8f3771f --- /dev/null +++ b/_co_m_m_a_defs_8h.js @@ -0,0 +1,21 @@ +var _co_m_m_a_defs_8h = +[ + [ "CoMMACellT", "_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8", [ + [ "INTERIOR", "_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8ada6f7a085b1f7f2125ce30f5e02db53c", null ], + [ "VALLEY", "_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8a4f18a70072d52370244908b93cf13e85", null ], + [ "RIDGE", "_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8aaa4cdfbb2d1efc15da1728bbc125e9f1", null ], + [ "CORNER", "_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8a39ad49623cc576b66fc391bd2bc1c7cf", null ], + [ "EXTREME", "_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8ac5e925f6e54a010df01d51f9b4e6f981", null ], + [ "N_CELL_TYPES", "_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8a0309283de9cefb87968e32825c3418ec", null ] + ] ], + [ "CoMMANeighbourhoodT", "_co_m_m_a_defs_8h.html#a705b45ec112a3ac1bf59f760f0f4d022", [ + [ "EXTENDED", "_co_m_m_a_defs_8h.html#a705b45ec112a3ac1bf59f760f0f4d022a5b91bee96d92adb448b6529d2ea8289d", null ], + [ "PURE_FRONT", "_co_m_m_a_defs_8h.html#a705b45ec112a3ac1bf59f760f0f4d022a681aa75b2dff7410008df1396b15fe35", null ] + ] ], + [ "CoMMASeedsPoolT", "_co_m_m_a_defs_8h.html#a8c8213401033616d834d48d77bf359a4", [ + [ "BOUNDARY_PRIORITY", "_co_m_m_a_defs_8h.html#a8c8213401033616d834d48d77bf359a4a7340b7195c9071cd34c7d9a633a3d857", null ], + [ "NEIGHBOURHOOD_PRIORITY", "_co_m_m_a_defs_8h.html#a8c8213401033616d834d48d77bf359a4ae3fbc583bddef8540a06125ed1e7dc79", null ], + [ "BOUNDARY_PRIORITY_ONE_POINT_INIT", "_co_m_m_a_defs_8h.html#a8c8213401033616d834d48d77bf359a4a29ddaed9cc8cda952d02296b79010787", null ], + [ "NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT", "_co_m_m_a_defs_8h.html#a8c8213401033616d834d48d77bf359a4a8c23e18158e720cbd348f98e50376a5d", null ] + ] ] +]; \ No newline at end of file diff --git a/_co_m_m_a_defs_8h_source.html b/_co_m_m_a_defs_8h_source.html new file mode 100644 index 0000000..148a8e5 --- /dev/null +++ b/_co_m_m_a_defs_8h_source.html @@ -0,0 +1,168 @@ + + + + + + + +CoMMA: include/CoMMA/CoMMADefs.h Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CoMMADefs.h
+
+
+Go to the documentation of this file.
1#ifndef COMMA_PROJECT_COMMA_TYPES_H
+
2#define COMMA_PROJECT_COMMA_TYPES_H
+
3
+
4/*
+
5 * CoMMA
+
6 *
+
7 * Copyright © 2024 ONERA
+
8 *
+
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
+
10 * Contributors: Karim Anemiche
+
11 *
+
12 * This Source Code Form is subject to the terms of the Mozilla Public
+
13 * License, v. 2.0. If a copy of the MPL was not distributed with this
+
14 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+
15 */
+
16
+
17#include "CoMMA/CoMMAConfig.h"
+
18
+
19namespace comma {
+
20
+
24enum CoMMACellT : CoMMAIntT {
+ +
26 VALLEY = 1,
+
27 RIDGE = 2,
+
28 CORNER = 3,
+
29 EXTREME = 4,
+
30
+
31 N_CELL_TYPES = 4
+
32};
+
33
+
37enum CoMMANeighbourhoodT : CoMMAIntT {
+ +
39 PURE_FRONT = 1
+
40};
+
41
+
43enum CoMMASeedsPoolT : CoMMAIntT {
+ + + + +
58};
+
59
+
60} // end namespace comma
+
61
+
62#endif
+
Definition: Agglomerator.h:34
+
CoMMACellT
Type of an element according to its boundary faces / edges The terms come from the NIA paper: Nishika...
Definition: CoMMADefs.h:24
+
@ N_CELL_TYPES
Total number of values.
Definition: CoMMADefs.h:31
+
@ CORNER
Corners, three boundary faces.
Definition: CoMMADefs.h:28
+
@ VALLEY
Valley, one boundary face.
Definition: CoMMADefs.h:26
+
@ RIDGE
Ridge, two boundary faces.
Definition: CoMMADefs.h:27
+
@ EXTREME
Extreme value, should not be used.
Definition: CoMMADefs.h:29
+
@ INTERIOR
Interior cell, no boundary faces.
Definition: CoMMADefs.h:25
+
CoMMANeighbourhoodT
Type of neighbourhood (of a coarse cell) considered when agglomerating.
Definition: CoMMADefs.h:37
+
@ EXTENDED
Extended, all neighbours of the coarse cell.
Definition: CoMMADefs.h:38
+
@ PURE_FRONT
Pure front, only neighbours of the last added fine cell.
Definition: CoMMADefs.h:39
+
CoMMASeedsPoolT
Type of seeds pool ordering.
Definition: CoMMADefs.h:43
+
@ BOUNDARY_PRIORITY_ONE_POINT_INIT
Definition: CoMMADefs.h:53
+
@ BOUNDARY_PRIORITY
Definition: CoMMADefs.h:45
+
@ NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT
Definition: CoMMADefs.h:57
+
@ NEIGHBOURHOOD_PRIORITY
Definition: CoMMADefs.h:49
+
+
+ + + + diff --git a/_co_m_m_a_types_8h.html b/_co_m_m_a_types_8h.html deleted file mode 100644 index 190b6ec..0000000 --- a/_co_m_m_a_types_8h.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - -CoMMA: CoMMA_lib/CoMMATypes.h File Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
CoMMATypes.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - - - - - -

-Typedefs

using CoMMAIndexT = unsigned long
 Type of an index (used by agglomerator CoMMA for edges and nodes). More...
 
using CoMMAWeightT = double
 
using CoMMAIntT = int
 
- - - - - - - - - - -

-Enumerations

enum  CoMMACellT : CoMMAIntT {
-  INTERIOR = 0 -, VALLEY = 1 -, RIDGE = 2 -, CORNER = 3 -,
-  EXTREME = 4 -, N_CELL_TYPES = 4 -
- }
 Type of an element according to its boundary faces / edges The terms come from the NIA paper: Nishikawa, Diskin, Thomas... More...
 
enum  CoMMANeighbourhoodT : CoMMAIntT { EXTENDED = 0 -, PURE_FRONT = 1 - }
 Type of neighbourhood (of a coarse cell) considered when agglomerating. More...
 
enum  CoMMASeedsPoolT : CoMMAIntT { BOUNDARY_PRIORITY = 0 -, NEIGHBOURHOOD_PRIORITY = 1 -, BOUNDARY_PRIORITY_ONE_POINT_INIT = 10 -, NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT = 11 - }
 Type of seeds pool ordering. More...
 
-

Typedef Documentation

- -

◆ CoMMAIndexT

- -
-
- - - - -
using CoMMAIndexT = unsigned long
-
- -

Type of an index (used by agglomerator CoMMA for edges and nodes).

- -
-
- -

◆ CoMMAIntT

- -
-
- - - - -
using CoMMAIntT = int
-
-

Type of integer for cardinality of coarse cells, dimension, distances, orders...

- -
-
- -

◆ CoMMAWeightT

- -
-
- - - - -
using CoMMAWeightT = double
-
-

Type of floating-point values (used by agglomerator CoMMA for this edge weights).

- -
-
-

Enumeration Type Documentation

- -

◆ CoMMACellT

- -
-
- - - - -
enum CoMMACellT : CoMMAIntT
-
- -

Type of an element according to its boundary faces / edges The terms come from the NIA paper: Nishikawa, Diskin, Thomas...

- - - - - - - -
Enumerator
INTERIOR 

Interior cell, no boundary faces.

-
VALLEY 

Valley, one boundary face.

-
RIDGE 

Ridge, two boundary faces.

-
CORNER 

Corners, three boundary faces.

-
EXTREME 

Extreme value, should not be used.

-
N_CELL_TYPES 

Total number of values.

-
- -
-
- -

◆ CoMMANeighbourhoodT

- -
-
- - - - -
enum CoMMANeighbourhoodT : CoMMAIntT
-
- -

Type of neighbourhood (of a coarse cell) considered when agglomerating.

- - - -
Enumerator
EXTENDED 

Extended, all neighbours of the coarse cell.

-
PURE_FRONT 

Pure front, only neighbours of the last added fine cell.

-
- -
-
- -

◆ CoMMASeedsPoolT

- -
-
- - - - -
enum CoMMASeedsPoolT : CoMMAIntT
-
- -

Type of seeds pool ordering.

- - - - - -
Enumerator
BOUNDARY_PRIORITY 

The number of boundary faces has highest priority

-
NEIGHBOURHOOD_PRIORITY 

The neighbourhood has highest priority (neighbours of coarse cells have priority)

-
BOUNDARY_PRIORITY_ONE_POINT_INIT 

The number of boundary faces has highest priority, and initialize with one point only then let evolve

-
NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT 

The neighbourhood has highest priority, and initialize with one point only then let evolve

-
- -
-
-
-
- - - - diff --git a/_co_m_m_a_types_8h.js b/_co_m_m_a_types_8h.js deleted file mode 100644 index 4e17ee7..0000000 --- a/_co_m_m_a_types_8h.js +++ /dev/null @@ -1,24 +0,0 @@ -var _co_m_m_a_types_8h = -[ - [ "CoMMAIndexT", "_co_m_m_a_types_8h.html#a4e6760b3d864fac2baff57fd3e865326", null ], - [ "CoMMAIntT", "_co_m_m_a_types_8h.html#a2bdf0415b5394aa0a042816dcc3eb0b7", null ], - [ "CoMMAWeightT", "_co_m_m_a_types_8h.html#a7d17e2ec30fc9b0796135ca2bfced205", null ], - [ "CoMMACellT", "_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9", [ - [ "INTERIOR", "_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9aa5fec78385643202af1d49268705b4c2", null ], - [ "VALLEY", "_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9a427eb63b284bf229741f0a93da2222e7", null ], - [ "RIDGE", "_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9a44d0e0475ad371f8556a44361e179516", null ], - [ "CORNER", "_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9a91c566614c1c87c437ab3d686408e9ea", null ], - [ "EXTREME", "_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9ae98b90fef66d60ced715daeeed560730", null ], - [ "N_CELL_TYPES", "_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9ab2eff5e2e952ed10adb515644a05c3c4", null ] - ] ], - [ "CoMMANeighbourhoodT", "_co_m_m_a_types_8h.html#a317369a7239fe01b94e2a7450c448531", [ - [ "EXTENDED", "_co_m_m_a_types_8h.html#a317369a7239fe01b94e2a7450c448531a6bc295e29b5149df1ca1d0bc868d3735", null ], - [ "PURE_FRONT", "_co_m_m_a_types_8h.html#a317369a7239fe01b94e2a7450c448531a721785b33572067589eda175b3b2c525", null ] - ] ], - [ "CoMMASeedsPoolT", "_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4", [ - [ "BOUNDARY_PRIORITY", "_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4ad5458f42463e6dbf4422680ac6c473ec", null ], - [ "NEIGHBOURHOOD_PRIORITY", "_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4a2bee0e8eaf4cde9b0c1703eea16f1096", null ], - [ "BOUNDARY_PRIORITY_ONE_POINT_INIT", "_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4aedb5dcddd0aa551778485e2bfd5ac87f", null ], - [ "NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT", "_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4a22d6940628c398311941290879caa0dc", null ] - ] ] -]; \ No newline at end of file diff --git a/_co_m_m_a_types_8h_source.html b/_co_m_m_a_types_8h_source.html deleted file mode 100644 index 9243120..0000000 --- a/_co_m_m_a_types_8h_source.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - -CoMMA: CoMMA_lib/CoMMATypes.h Source File - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
CoMMATypes.h
-
-
-Go to the documentation of this file.
1#ifndef COMMA_PROJECT_COMMA_TYPES_H
-
2#define COMMA_PROJECT_COMMA_TYPES_H
-
3
-
4/*
-
5 * CoMMA
-
6 *
-
7 * Copyright © 2023 ONERA
-
8 *
-
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
-
10 * Contributors: Karim Anemiche
-
11 *
-
12 * This Source Code Form is subject to the terms of the Mozilla Public
-
13 * License, v. 2.0. If a copy of the MPL was not distributed with this
-
14 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
-
15 */
-
16
-
18using CoMMAIndexT = unsigned long;
-
19
-
22using CoMMAWeightT = double;
-
23
-
26using CoMMAIntT = int;
-
27
- - -
33 VALLEY = 1,
-
34 RIDGE = 2,
-
35 CORNER = 3,
-
36 EXTREME = 4,
-
37
-
38 N_CELL_TYPES = 4
-
39};
-
40
- - -
46 PURE_FRONT = 1
-
47};
-
48
- - - - - -
65};
-
66
-
67#endif
-
CoMMASeedsPoolT
Type of seeds pool ordering.
Definition: CoMMATypes.h:50
-
@ NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT
Definition: CoMMATypes.h:64
-
@ NEIGHBOURHOOD_PRIORITY
Definition: CoMMATypes.h:56
-
@ BOUNDARY_PRIORITY
Definition: CoMMATypes.h:52
-
@ BOUNDARY_PRIORITY_ONE_POINT_INIT
Definition: CoMMATypes.h:60
-
int CoMMAIntT
Definition: CoMMATypes.h:26
-
CoMMANeighbourhoodT
Type of neighbourhood (of a coarse cell) considered when agglomerating.
Definition: CoMMATypes.h:44
-
@ EXTENDED
Extended, all neighbours of the coarse cell.
Definition: CoMMATypes.h:45
-
@ PURE_FRONT
Pure front, only neighbours of the last added fine cell.
Definition: CoMMATypes.h:46
-
unsigned long CoMMAIndexT
Type of an index (used by agglomerator CoMMA for edges and nodes).
Definition: CoMMATypes.h:18
-
double CoMMAWeightT
Definition: CoMMATypes.h:22
-
CoMMACellT
Type of an element according to its boundary faces / edges The terms come from the NIA paper: Nishika...
Definition: CoMMATypes.h:31
-
@ VALLEY
Valley, one boundary face.
Definition: CoMMATypes.h:33
-
@ RIDGE
Ridge, two boundary faces.
Definition: CoMMATypes.h:34
-
@ CORNER
Corners, three boundary faces.
Definition: CoMMATypes.h:35
-
@ INTERIOR
Interior cell, no boundary faces.
Definition: CoMMATypes.h:32
-
@ N_CELL_TYPES
Total number of values.
Definition: CoMMATypes.h:38
-
@ EXTREME
Extreme value, should not be used.
Definition: CoMMATypes.h:36
-
-
- - - - diff --git a/_coarse___cell_8h.html b/_coarse___cell_8h.html index 015dc88..1e812d6 100644 --- a/_coarse___cell_8h.html +++ b/_coarse___cell_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Coarse_Cell.h File Reference +CoMMA: include/CoMMA/Coarse_Cell.h File Reference @@ -92,7 +92,8 @@
-Classes
+Classes | +Namespaces
Coarse_Cell.h File Reference
@@ -101,17 +102,22 @@ #include <unordered_set>
#include <utility>
#include <vector>
-#include "Dual_Graph.h"
+#include "CoMMA/Dual_Graph.h"

Go to the source code of this file.

- - + + - - + + + +

Classes

class  Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class describing a coarse cell. More...
class  comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class describing a coarse cell. More...
 
class  Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class describing a coarse cell with a full description, that is, it also holds a subgraph describing how the fine cells are connected inside the coarse one. More...
class  comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class describing a coarse cell with a full description, that is, it also holds a subgraph describing how the fine cells are connected inside the coarse one. More...
 
+ +

+Namespaces

namespace  comma
 
@@ -119,7 +125,7 @@ diff --git a/_coarse___cell_8h.js b/_coarse___cell_8h.js index 39f465a..620f5ee 100644 --- a/_coarse___cell_8h.js +++ b/_coarse___cell_8h.js @@ -1,5 +1,5 @@ var _coarse___cell_8h = [ - [ "Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_coarse___cell.html", "class_coarse___cell" ], - [ "Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_coarse___cell___subgraph.html", "class_coarse___cell___subgraph" ] + [ "comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_coarse___cell.html", "classcomma_1_1_coarse___cell" ], + [ "comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_coarse___cell___subgraph.html", "classcomma_1_1_coarse___cell___subgraph" ] ]; \ No newline at end of file diff --git a/_coarse___cell_8h_source.html b/_coarse___cell_8h_source.html index 4b4a326..0424b2d 100644 --- a/_coarse___cell_8h_source.html +++ b/_coarse___cell_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Coarse_Cell.h Source File +CoMMA: include/CoMMA/Coarse_Cell.h Source File @@ -100,7 +100,7 @@
4/*
5 * CoMMA
6 *
-
7 * Copyright © 2023 ONERA
+
7 * Copyright © 2024 ONERA
8 *
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
10 * Contributors: Karim Anemiche
@@ -116,66 +116,66 @@
20#include <utility>
21#include <vector>
22
-
23#include "Dual_Graph.h"
+
23#include "CoMMA/Dual_Graph.h"
24
-
25using namespace std;
+
25namespace comma {
26
33template<
34 typename CoMMAIndexType,
35 typename CoMMAWeightType,
36 typename CoMMAIntType>
-
37class Coarse_Cell {
+
37class Coarse_Cell {
38public:
-
40 using DualGraphPtr =
-
41 shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>;
+
40 using DualGraphPtr =
+
41 std::shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>;
42
-
53 Coarse_Cell(
-
54 DualGraphPtr fc_graph,
+
53 Coarse_Cell(
+
54 DualGraphPtr fc_graph,
55 CoMMAIndexType i_cc,
-
56 const unordered_set<CoMMAIndexType> &s_fc,
+
56 const std::unordered_set<CoMMAIndexType> &s_fc,
57 CoMMAIntType compactness,
58 bool is_isotropic = true) :
-
59 _idx(i_cc),
-
60 _fc_graph(fc_graph),
-
61 _compactness(compactness),
-
62 _cardinality(static_cast<CoMMAIntType>(s_fc.size())),
-
63 _is_isotropic(is_isotropic),
-
64 _s_fc(s_fc) {}
+
59 _idx(i_cc),
+
60 _fc_graph(fc_graph),
+
61 _compactness(compactness),
+
62 _cardinality(static_cast<CoMMAIntType>(s_fc.size())),
+
63 _is_isotropic(is_isotropic),
+
64 _s_fc(s_fc) {}
65
-
67 virtual ~Coarse_Cell() = default;
+
67 virtual ~Coarse_Cell() = default;
68
-
71 CoMMAIndexType _idx;
+
71 CoMMAIndexType _idx;
72
-
74 DualGraphPtr _fc_graph;
+
74 DualGraphPtr _fc_graph;
75
-
77 CoMMAIntType _compactness;
+
77 CoMMAIntType _compactness;
78
-
80 CoMMAIntType _cardinality;
+
80 CoMMAIntType _cardinality;
81
-
83 bool _is_isotropic;
+
83 bool _is_isotropic;
84
-
86 unordered_set<CoMMAIndexType> _s_fc;
+
86 std::unordered_set<CoMMAIndexType> _s_fc;
87
-
93 inline bool is_connected() { return _compactness > 0; }
+
93 inline bool is_connected() { return _compactness > 0; }
94
-
100 virtual void insert_cell(
+
100 virtual void insert_cell(
101 const CoMMAIndexType i_fc,
-
102 const optional<CoMMAIntType> new_compactness = nullopt) {
-
103 _s_fc.insert(i_fc);
-
104 ++_cardinality;
-
105 _compactness = new_compactness.has_value()
+
102 const std::optional<CoMMAIntType> new_compactness) {
+
103 _s_fc.insert(i_fc);
+
104 ++_cardinality;
+
105 _compactness = new_compactness.has_value()
106 ? new_compactness.value()
-
107 : _fc_graph->compute_min_fc_compactness_inside_a_cc(_s_fc);
+
107 : _fc_graph->compute_min_fc_compactness_inside_a_cc(_s_fc);
108 }
109
-
115 virtual void insert_cells(
-
116 const unordered_set<CoMMAIndexType> &fcs,
-
117 const optional<CoMMAIntType> new_compactness = nullopt) {
-
118 _s_fc.insert(fcs.begin(), fcs.end());
-
119 _cardinality += fcs.size();
-
120 _compactness = new_compactness.has_value()
+
115 virtual void insert_cells(
+
116 const std::unordered_set<CoMMAIndexType> &fcs,
+
117 const std::optional<CoMMAIntType> new_compactness) {
+
118 _s_fc.insert(fcs.begin(), fcs.end());
+
119 _cardinality += fcs.size();
+
120 _compactness = new_compactness.has_value()
121 ? new_compactness.value()
-
122 : _fc_graph->compute_min_fc_compactness_inside_a_cc(_s_fc);
+
122 : _fc_graph->compute_min_fc_compactness_inside_a_cc(_s_fc);
123 }
124};
125
@@ -183,142 +183,146 @@
135 typename CoMMAIndexType,
136 typename CoMMAWeightType,
137 typename CoMMAIntType>
-
138class Coarse_Cell_Subgraph :
-
139 Coarse_Cell<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
138class Coarse_Cell_Subgraph :
+
139 Coarse_Cell<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
140public:
-
142 using BaseClass = Coarse_Cell<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
142 using BaseClass = Coarse_Cell<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
143
-
145 using typename BaseClass::DualGraphPtr;
+
145 using typename BaseClass::DualGraphPtr;
146
-
148 using SubGraphType = Subgraph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
148 using SubGraphType = Subgraph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
149
-
151 using SubGraphPtr = shared_ptr<SubGraphType>;
+
151 using SubGraphPtr = std::shared_ptr<SubGraphType>;
152
-
163 Coarse_Cell_Subgraph(
-
164 DualGraphPtr fc_graph,
+
163 Coarse_Cell_Subgraph(
+
164 DualGraphPtr fc_graph,
165 CoMMAIndexType i_cc,
-
166 const unordered_set<CoMMAIndexType> &s_fc,
+
166 const std::unordered_set<CoMMAIndexType> &s_fc,
167 CoMMAIntType compactness,
168 bool is_isotropic = true) :
-
169 BaseClass(fc_graph, i_cc, s_fc, compactness, is_isotropic),
-
170 _is_connected(compactness > 0),
-
171 _is_connectivity_up_to_date(true) {
+
169 BaseClass(fc_graph, i_cc, s_fc, compactness, is_isotropic),
+
170 _is_connected(compactness > 0),
+
171 _is_connectivity_up_to_date(true) {
172 // initialization vectors
173 CoMMAIndexType position = 0;
-
174 vector<CoMMAWeightType> volumes;
-
175 vector<CoMMAWeightType> CSR_vals{};
-
176 vector<CoMMAIndexType> CSR_row = {0};
-
177 vector<CoMMAIndexType> CSR_col{};
-
178 vector<CoMMAIndexType> col_ind{};
-
179 vector<CoMMAIndexType> mapping{};
-
180 for (const CoMMAIndexType &i_fc : this->_s_fc) {
+
174 std::vector<CoMMAWeightType> volumes;
+
175 std::vector<CoMMAWeightType> CSR_vals{};
+
176 std::vector<CoMMAIndexType> CSR_row = {0};
+
177 std::vector<CoMMAIndexType> CSR_col{};
+
178 std::vector<CoMMAIndexType> col_ind{};
+
179 std::vector<CoMMAIndexType> mapping{};
+
180 for (const CoMMAIndexType &i_fc : this->_s_fc) {
181 // we add to the mapping the i_fc
182 mapping.push_back(i_fc);
183 // get neighbours and the weights associated
-
184 const vector<CoMMAIndexType> neigh =
-
185 this->_fc_graph->get_neighbours(i_fc);
-
186 const vector<CoMMAWeightType> area = this->_fc_graph->get_weights(i_fc);
-
187 for (auto it = neigh.begin(); it != neigh.end(); ++it) {
-
188 if (
-
189 find(this->_s_fc.begin(), this->_s_fc.end(), *it)
-
190 != this->_s_fc.end()) {
-
191 ++position;
-
192 col_ind.push_back(*it);
-
193 CSR_vals.push_back(area[it - neigh.begin()]);
-
194 }
-
195 }
-
196 CSR_row.push_back(position);
-
197 volumes.push_back(this->_fc_graph->_volumes[i_fc]);
-
198 }
-
199
-
200 // Map in the local subgraph
-
201 for (auto it = col_ind.begin(); it != col_ind.end(); ++it) {
-
202 auto indx = find(mapping.begin(), mapping.end(), *it);
-
203 CSR_col.push_back(indx - mapping.begin());
-
204 }
-
205
-
206 _cc_graph = make_shared<SubGraphType>(
-
207 s_fc.size(), CSR_row, CSR_col, CSR_vals, volumes, mapping, is_isotropic);
-
208 }
-
209
-
215 void insert_cell(
-
216 const CoMMAIndexType i_fc,
-
217 const optional<CoMMAIntType> new_compactness = nullopt) override {
-
218 // As base class...
-
219 this->_s_fc.insert(i_fc);
-
220 ++this->_cardinality;
-
221 this->_compactness =
-
222 new_compactness.has_value()
-
223 ? new_compactness.value()
-
224 : this->_fc_graph->compute_min_fc_compactness_inside_a_cc(this->_s_fc);
-
225 // ...but now add to the subgraph
-
226 _cc_graph->insert_node(
-
227 this->_fc_graph->get_neighbours(i_fc), i_fc,
-
228 this->_fc_graph->_volumes[i_fc], this->_fc_graph->get_weights(i_fc));
-
229 }
-
230
-
236 void insert_cells(
-
237 const unordered_set<CoMMAIndexType> &fcs,
-
238 const optional<CoMMAIntType> new_compactness = nullopt) override {
-
239 // As base class...
-
240 this->_s_fc.insert(fcs.begin(), fcs.end());
-
241 this->_cardinality += fcs.size();
-
242 this->_compactness =
-
243 new_compactness.has_value()
-
244 ? new_compactness.value()
-
245 : this->_fc_graph->compute_min_fc_compactness_inside_a_cc(this->_s_fc);
-
246 // ...but now add to the subgraph
-
247 for (const auto &i_fc : fcs) {
-
248 _cc_graph->insert_node(
-
249 this->_fc_graph->get_neighbours(i_fc), i_fc,
-
250 this->_fc_graph->_volumes[i_fc], this->_fc_graph->get_weights(i_fc));
-
251 }
-
252 }
-
253
-
255 inline void update_connectivity() {
-
256 _is_connected = _cc_graph->check_connectivity();
-
257 _is_connectivity_up_to_date = true;
-
258 }
-
259
-
261 SubGraphPtr _cc_graph;
-
262
-
264 bool _is_connected;
-
265
-
267 bool _is_connectivity_up_to_date;
-
268};
-
269
-
270#endif // COMMA_PROJECT_COARSE_CELL_H
+
184 const std::vector<CoMMAIndexType> neigh =
+
185 this->_fc_graph->get_neighbours(i_fc);
+
186 const std::vector<CoMMAWeightType> area =
+
187 this->_fc_graph->get_weights(i_fc);
+
188 for (auto it = neigh.begin(); it != neigh.end(); ++it) {
+
189 if (
+
190 std::find(this->_s_fc.begin(), this->_s_fc.end(), *it)
+
191 != this->_s_fc.end()) {
+
192 ++position;
+
193 col_ind.push_back(*it);
+
194 CSR_vals.push_back(area[it - neigh.begin()]);
+
195 }
+
196 }
+
197 CSR_row.push_back(position);
+
198 volumes.push_back(this->_fc_graph->_volumes[i_fc]);
+
199 }
+
200
+
201 // Map in the local subgraph
+
202 for (auto it = col_ind.begin(); it != col_ind.end(); ++it) {
+
203 auto indx = std::find(mapping.begin(), mapping.end(), *it);
+
204 CSR_col.push_back(indx - mapping.begin());
+
205 }
+
206
+
207 _cc_graph = std::make_shared<SubGraphType>(
+
208 s_fc.size(), CSR_row, CSR_col, CSR_vals, volumes, mapping, is_isotropic);
+
209 }
+
210
+
216 void insert_cell(
+
217 const CoMMAIndexType i_fc,
+
218 const std::optional<CoMMAIntType> new_compactness) override {
+
219 // As base class...
+
220 this->_s_fc.insert(i_fc);
+
221 ++this->_cardinality;
+
222 this->_compactness =
+
223 new_compactness.has_value()
+
224 ? new_compactness.value()
+
225 : this->_fc_graph->compute_min_fc_compactness_inside_a_cc(this->_s_fc);
+
226 // ...but now add to the subgraph
+
227 _cc_graph->insert_node(
+
228 this->_fc_graph->get_neighbours(i_fc), i_fc,
+
229 this->_fc_graph->_volumes[i_fc], this->_fc_graph->get_weights(i_fc));
+
230 }
+
231
+
237 void insert_cells(
+
238 const std::unordered_set<CoMMAIndexType> &fcs,
+
239 const std::optional<CoMMAIntType> new_compactness) override {
+
240 // As base class...
+
241 this->_s_fc.insert(fcs.begin(), fcs.end());
+
242 this->_cardinality += fcs.size();
+
243 this->_compactness =
+
244 new_compactness.has_value()
+
245 ? new_compactness.value()
+
246 : this->_fc_graph->compute_min_fc_compactness_inside_a_cc(this->_s_fc);
+
247 // ...but now add to the subgraph
+
248 for (const auto &i_fc : fcs) {
+
249 _cc_graph->insert_node(
+
250 this->_fc_graph->get_neighbours(i_fc), i_fc,
+
251 this->_fc_graph->_volumes[i_fc], this->_fc_graph->get_weights(i_fc));
+
252 }
+
253 }
+
254
+
256 inline void update_connectivity() {
+
257 _is_connected = _cc_graph->check_connectivity();
+
258 _is_connectivity_up_to_date = true;
+
259 }
+
260
+
262 SubGraphPtr _cc_graph;
+
263
+
265 bool _is_connected;
+
266
+
268 bool _is_connectivity_up_to_date;
+
269};
+
270
+
271} // end namespace comma
+
272
+
273#endif // COMMA_PROJECT_COARSE_CELL_H
Dual_Graph.h
-
Coarse_Cell_Subgraph
Class describing a coarse cell with a full description, that is, it also holds a subgraph describing ...
Definition: Coarse_Cell.h:139
-
Coarse_Cell_Subgraph::_cc_graph
SubGraphPtr _cc_graph
Shared pointer of the subgraph structure (CSR representation)
Definition: Coarse_Cell.h:261
-
Coarse_Cell_Subgraph::update_connectivity
void update_connectivity()
Analyse subgraph and update the connectivity.
Definition: Coarse_Cell.h:255
-
Coarse_Cell_Subgraph::Coarse_Cell_Subgraph
Coarse_Cell_Subgraph(DualGraphPtr fc_graph, CoMMAIndexType i_cc, const unordered_set< CoMMAIndexType > &s_fc, CoMMAIntType compactness, bool is_isotropic=true)
Constructor of the class.
Definition: Coarse_Cell.h:163
-
Coarse_Cell_Subgraph::_is_connected
bool _is_connected
Whether the cell connected.
Definition: Coarse_Cell.h:264
-
Coarse_Cell_Subgraph::DualGraphPtr
shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > DualGraphPtr
Type for a shared pointer to a Dual_Graph object.
Definition: Coarse_Cell.h:41
-
Coarse_Cell_Subgraph::SubGraphPtr
shared_ptr< SubGraphType > SubGraphPtr
Type for a shared pointer to a Subgraph object.
Definition: Coarse_Cell.h:151
-
Coarse_Cell_Subgraph::insert_cell
void insert_cell(const CoMMAIndexType i_fc, const optional< CoMMAIntType > new_compactness=nullopt) override
Insert a FC in the CC (and update sub-graph if necessary)
Definition: Coarse_Cell.h:215
-
Coarse_Cell_Subgraph::insert_cells
void insert_cells(const unordered_set< CoMMAIndexType > &fcs, const optional< CoMMAIntType > new_compactness=nullopt) override
Insert several FC in the CC (and update sub-graph if necessary)
Definition: Coarse_Cell.h:236
-
Coarse_Cell_Subgraph::_is_connectivity_up_to_date
bool _is_connectivity_up_to_date
Whether the connectivity has been checked.
Definition: Coarse_Cell.h:267
-
Coarse_Cell
Class describing a coarse cell.
Definition: Coarse_Cell.h:37
-
Coarse_Cell::_compactness
CoMMAIntType _compactness
Compactness degree of the CC.
Definition: Coarse_Cell.h:77
-
Coarse_Cell::_is_isotropic
bool _is_isotropic
Whether the cell isotropic or anisotropic.
Definition: Coarse_Cell.h:83
-
Coarse_Cell::_cardinality
CoMMAIntType _cardinality
Number of FC in the CC.
Definition: Coarse_Cell.h:80
-
Coarse_Cell::Coarse_Cell
Coarse_Cell(DualGraphPtr fc_graph, CoMMAIndexType i_cc, const unordered_set< CoMMAIndexType > &s_fc, CoMMAIntType compactness, bool is_isotropic=true)
Constructor of the class.
Definition: Coarse_Cell.h:53
-
Coarse_Cell::insert_cell
virtual void insert_cell(const CoMMAIndexType i_fc, const optional< CoMMAIntType > new_compactness=nullopt)
Insert a FC in the CC (and update sub-graph if necessary)
Definition: Coarse_Cell.h:100
-
Coarse_Cell::DualGraphPtr
shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > DualGraphPtr
Type for a shared pointer to a Dual_Graph object.
Definition: Coarse_Cell.h:41
-
Coarse_Cell::_s_fc
unordered_set< CoMMAIndexType > _s_fc
Set of fine cells composing the Coarse cell.
Definition: Coarse_Cell.h:86
-
Coarse_Cell::is_connected
bool is_connected()
Method that return a boolean determining if the coarse cell is defined by a connected sub-graph or no...
Definition: Coarse_Cell.h:93
-
Coarse_Cell::_fc_graph
DualGraphPtr _fc_graph
The global dual graph.
Definition: Coarse_Cell.h:74
-
Coarse_Cell::insert_cells
virtual void insert_cells(const unordered_set< CoMMAIndexType > &fcs, const optional< CoMMAIntType > new_compactness=nullopt)
Insert several FC in the CC (and update sub-graph if necessary)
Definition: Coarse_Cell.h:115
-
Coarse_Cell::_idx
CoMMAIndexType _idx
Index of the coarse cell (It seems to be unused, but useful to have)
Definition: Coarse_Cell.h:71
-
Coarse_Cell::~Coarse_Cell
virtual ~Coarse_Cell()=default
Destructor of the class.
-
Subgraph
A class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the im...
Definition: Dual_Graph.h:300
+
comma::Coarse_Cell_Subgraph
Class describing a coarse cell with a full description, that is, it also holds a subgraph describing ...
Definition: Coarse_Cell.h:139
+
comma::Coarse_Cell_Subgraph::_cc_graph
SubGraphPtr _cc_graph
Shared pointer of the subgraph structure (CSR representation)
Definition: Coarse_Cell.h:262
+
comma::Coarse_Cell_Subgraph::insert_cell
void insert_cell(const CoMMAIndexType i_fc, const std::optional< CoMMAIntType > new_compactness) override
Insert a FC in the CC (and update sub-graph if necessary)
Definition: Coarse_Cell.h:216
+
comma::Coarse_Cell_Subgraph::update_connectivity
void update_connectivity()
Analyse subgraph and update the connectivity.
Definition: Coarse_Cell.h:256
+
comma::Coarse_Cell_Subgraph::DualGraphPtr
std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > DualGraphPtr
Type for a shared pointer to a Dual_Graph object.
Definition: Coarse_Cell.h:41
+
comma::Coarse_Cell_Subgraph::_is_connectivity_up_to_date
bool _is_connectivity_up_to_date
Whether the connectivity has been checked.
Definition: Coarse_Cell.h:268
+
comma::Coarse_Cell_Subgraph::insert_cells
void insert_cells(const std::unordered_set< CoMMAIndexType > &fcs, const std::optional< CoMMAIntType > new_compactness) override
Insert several FC in the CC (and update sub-graph if necessary)
Definition: Coarse_Cell.h:237
+
comma::Coarse_Cell_Subgraph::_is_connected
bool _is_connected
Whether the cell connected.
Definition: Coarse_Cell.h:265
+
comma::Coarse_Cell_Subgraph::SubGraphPtr
std::shared_ptr< SubGraphType > SubGraphPtr
Type for a shared pointer to a Subgraph object.
Definition: Coarse_Cell.h:151
+
comma::Coarse_Cell_Subgraph::Coarse_Cell_Subgraph
Coarse_Cell_Subgraph(DualGraphPtr fc_graph, CoMMAIndexType i_cc, const std::unordered_set< CoMMAIndexType > &s_fc, CoMMAIntType compactness, bool is_isotropic=true)
Constructor of the class.
Definition: Coarse_Cell.h:163
+
comma::Coarse_Cell
Class describing a coarse cell.
Definition: Coarse_Cell.h:37
+
comma::Coarse_Cell::_idx
CoMMAIndexType _idx
Index of the coarse cell (It seems to be unused, but useful to have)
Definition: Coarse_Cell.h:71
+
comma::Coarse_Cell::_cardinality
CoMMAIntType _cardinality
Number of FC in the CC.
Definition: Coarse_Cell.h:80
+
comma::Coarse_Cell::DualGraphPtr
std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > DualGraphPtr
Type for a shared pointer to a Dual_Graph object.
Definition: Coarse_Cell.h:41
+
comma::Coarse_Cell::_is_isotropic
bool _is_isotropic
Whether the cell isotropic or anisotropic.
Definition: Coarse_Cell.h:83
+
comma::Coarse_Cell::Coarse_Cell
Coarse_Cell(DualGraphPtr fc_graph, CoMMAIndexType i_cc, const std::unordered_set< CoMMAIndexType > &s_fc, CoMMAIntType compactness, bool is_isotropic=true)
Constructor of the class.
Definition: Coarse_Cell.h:53
+
comma::Coarse_Cell::insert_cell
virtual void insert_cell(const CoMMAIndexType i_fc, const std::optional< CoMMAIntType > new_compactness)
Insert a FC in the CC (and update sub-graph if necessary)
Definition: Coarse_Cell.h:100
+
comma::Coarse_Cell::_s_fc
std::unordered_set< CoMMAIndexType > _s_fc
Set of fine cells composing the Coarse cell.
Definition: Coarse_Cell.h:86
+
comma::Coarse_Cell::_fc_graph
DualGraphPtr _fc_graph
The global dual graph.
Definition: Coarse_Cell.h:74
+
comma::Coarse_Cell::_compactness
CoMMAIntType _compactness
Compactness degree of the CC.
Definition: Coarse_Cell.h:77
+
comma::Coarse_Cell::is_connected
bool is_connected()
Method that return a boolean determining if the coarse cell is defined by a connected sub-graph or no...
Definition: Coarse_Cell.h:93
+
comma::Coarse_Cell::~Coarse_Cell
virtual ~Coarse_Cell()=default
Destructor of the class.
+
comma::Coarse_Cell::insert_cells
virtual void insert_cells(const std::unordered_set< CoMMAIndexType > &fcs, const std::optional< CoMMAIntType > new_compactness)
Insert several FC in the CC (and update sub-graph if necessary)
Definition: Coarse_Cell.h:115
+
comma::Subgraph
A class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the im...
Definition: Dual_Graph.h:302
+
comma
Definition: Agglomerator.h:34
diff --git a/_coarse___cell___container_8h.html b/_coarse___cell___container_8h.html index f1ccee4..cc4d57f 100644 --- a/_coarse___cell___container_8h.html +++ b/_coarse___cell___container_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Coarse_Cell_Container.h File Reference +CoMMA: include/CoMMA/Coarse_Cell_Container.h File Reference @@ -92,7 +92,8 @@
-Classes
+Classes | +Namespaces
Coarse_Cell_Container.h File Reference
@@ -103,15 +104,20 @@ #include <memory>
#include <optional>
#include <vector>
-#include "Coarse_Cell.h"
-#include "Dual_Graph.h"
+#include "CoMMA/Coarse_Cell.h"
+#include "CoMMA/Dual_Graph.h"

Go to the source code of this file.

- - + + + +

Classes

class  Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class implementing a custom container where the coarse cells are stored. More...
class  comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class implementing a custom container where the coarse cells are stored. More...
 
+ +

+Namespaces

namespace  comma
 
@@ -119,7 +125,7 @@ diff --git a/_coarse___cell___container_8h.js b/_coarse___cell___container_8h.js index a42b93e..2368b7a 100644 --- a/_coarse___cell___container_8h.js +++ b/_coarse___cell___container_8h.js @@ -1,4 +1,4 @@ var _coarse___cell___container_8h = [ - [ "Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_coarse___cell___container.html", "class_coarse___cell___container" ] + [ "comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_coarse___cell___container.html", "classcomma_1_1_coarse___cell___container" ] ]; \ No newline at end of file diff --git a/_coarse___cell___container_8h_source.html b/_coarse___cell___container_8h_source.html index 4cf741a..3f4e7be 100644 --- a/_coarse___cell___container_8h_source.html +++ b/_coarse___cell___container_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Coarse_Cell_Container.h Source File +CoMMA: include/CoMMA/Coarse_Cell_Container.h Source File @@ -100,7 +100,7 @@
4/*
5 * CoMMA
6 *
-
7 * Copyright © 2023 ONERA
+
7 * Copyright © 2024 ONERA
8 *
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
10 * Contributors: Karim Anemiche
@@ -118,62 +118,62 @@
22#include <optional>
23#include <vector>
24
-
25#include "Coarse_Cell.h"
-
26#include "Dual_Graph.h"
+
25#include "CoMMA/Coarse_Cell.h"
+
26#include "CoMMA/Dual_Graph.h"
27
-
28using namespace std;
+
28namespace comma {
29
37template<
38 typename CoMMAIndexType,
39 typename CoMMAWeightType,
40 typename CoMMAIntType>
-
41class Coarse_Cell_Container {
+
41class Coarse_Cell_Container {
42public:
-
44 using CoarseCellType =
-
45 Coarse_Cell<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
44 using CoarseCellType =
+
45 Coarse_Cell<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
46
-
48 using CoarseCellPtr = shared_ptr<CoarseCellType>;
+
48 using CoarseCellPtr = std::shared_ptr<CoarseCellType>;
49
-
51 using DualGraphPtr = typename CoarseCellType::DualGraphPtr;
+
51 using DualGraphPtr = typename CoarseCellType::DualGraphPtr;
52
-
59 Coarse_Cell_Container(
-
60 DualGraphPtr &fc_graph, const CoMMAIntType singular_card_thresh) :
-
61 _ccs(),
-
62 _fc_graph(fc_graph),
-
63 _cc_counter(0),
-
64 _fc_2_cc(fc_graph->_number_of_cells, nullopt),
-
65 _is_fc_agglomerated(fc_graph->_number_of_cells, false),
-
66 _sing_card_thresh(singular_card_thresh),
-
67 _nb_of_agglomerated_fc(0),
-
68 _delayed_cc(),
-
69 _singular_cc() {}
+
59 Coarse_Cell_Container(
+
60 DualGraphPtr &fc_graph, const CoMMAIntType singular_card_thresh) :
+
61 _ccs(),
+
62 _fc_graph(fc_graph),
+
63 _cc_counter(0),
+
64 _fc_2_cc(fc_graph->_number_of_cells, std::nullopt),
+
65 _is_fc_agglomerated(fc_graph->_number_of_cells, false),
+
66 _sing_card_thresh(singular_card_thresh),
+
67 _nb_of_agglomerated_fc(0),
+
68 _delayed_cc(),
+
69 _singular_cc() {}
70
-
72 ~Coarse_Cell_Container() = default;
+
72 ~Coarse_Cell_Container() = default;
73
-
75 map<CoMMAIndexType, CoarseCellPtr> _ccs;
+
75 std::map<CoMMAIndexType, CoarseCellPtr> _ccs;
76
-
78 DualGraphPtr _fc_graph;
+
78 DualGraphPtr _fc_graph;
79
-
81 CoMMAIndexType _cc_counter;
+
81 CoMMAIndexType _cc_counter;
82
-
85 vector<optional<CoMMAIndexType>> _fc_2_cc;
+
85 std::vector<std::optional<CoMMAIndexType>> _fc_2_cc;
86
-
89 vector<bool> _is_fc_agglomerated;
+
89 std::vector<bool> _is_fc_agglomerated;
90
-
92 CoMMAIntType _sing_card_thresh;
+
92 CoMMAIntType _sing_card_thresh;
93
-
98 inline CoMMAIndexType get_number_of_fc_agglomerated() const {
-
99 return (_nb_of_agglomerated_fc);
+
98 inline CoMMAIndexType get_number_of_fc_agglomerated() const {
+
99 return (_nb_of_agglomerated_fc);
100 }
101
-
105 inline CoMMAIndexType get_nb_of_cc() const { return _cc_counter; }
+
105 inline CoMMAIndexType get_nb_of_cc() const { return _cc_counter; }
106
-
115 inline set<CoMMAIndexType> get_neighs_cc(
+
115 inline std::set<CoMMAIndexType> get_neighs_cc(
116 const CoMMAIndexType &i_fc, const CoMMAIndexType &i_cc) const {
-
117 set<CoMMAIndexType> result;
-
118 for (auto elem = _fc_graph->neighbours_cbegin(i_fc);
-
119 elem != _fc_graph->neighbours_cend(i_fc); ++elem) {
-
120 const auto cc = _fc_2_cc[*elem].value();
+
117 std::set<CoMMAIndexType> result;
+
118 for (auto elem = _fc_graph->neighbours_cbegin(i_fc);
+
119 elem != _fc_graph->neighbours_cend(i_fc); ++elem) {
+
120 const auto cc = _fc_2_cc[*elem].value();
121 if (cc != i_cc) result.insert(cc);
122 }
123 return result;
@@ -182,20 +182,20 @@
126#if 0
127Not used anymore but we leave it for example purposes
128
-
130 using CustomMapItT = typename map<CoMMAIndexType, SubGraphPtr>::iterator;
+
130 using CustomMapItT = typename std::map<CoMMAIndexType, SubGraphPtr>::iterator;
135 CustomMapItT remove_cc(CustomMapItT elim) {
136 // we delete the element and we obtained the pointer to the next element in
137 // memory
-
138 CustomMapItT it = _ccs.erase(elim);
+
138 CustomMapItT it = _ccs.erase(elim);
139 // update value of the other nodes
-
140 for (auto i = it; i != _ccs.end(); i++) {
+
140 for (auto i = it; i != _ccs.end(); i++) {
141 for (auto const &i_fc : i->second->_mapping_l_to_g) {
-
142 _fc_2_cc[i_fc] = (i->first) - 1;
+
142 _fc_2_cc[i_fc] = (i->first) - 1;
143 }
-
144 auto node = _ccs.extract(i);
+
144 auto node = _ccs.extract(i);
145 if (!node.empty()) {
146 node.key() = (i->first) - 1;
-
147 _ccs.insert(move(node));
+
147 _ccs.insert(std::move(node));
148 }
149 }
150 // return pointer to the next element
@@ -203,385 +203,392 @@
152 }
153#endif
154
-
161 void correct(const CoMMAIntType max_card) {
+
161 void correct(const CoMMAIntType max_card) {
162 // We use it to understand if we have succeeded in the correction
-
163 set<typename decltype(_singular_cc)::value_type> removed_cc{};
-
164 for (const auto &old_cc : _singular_cc) {
+
163 std::set<typename decltype(_singular_cc)::value_type> removed_cc{};
+
164 for (const auto &old_cc : _singular_cc) {
165 // It might happen that we agglomerate to a singular cell so that the new
166 // cell was singular when it was created but it is not any more
-
167 auto &cur_cc = _ccs.at(old_cc);
-
168 if (cur_cc->_cardinality <= _sing_card_thresh) {
+
167 auto &cur_cc = _ccs.at(old_cc);
+
168 if (cur_cc->_cardinality <= _sing_card_thresh) {
169 const auto &fcs = cur_cc->_s_fc;
170 bool should_remove = false;
-
171 unordered_map<CoMMAIndexType, set<CoMMAIndexType>> neighs_by_fc{};
-
172 neighs_by_fc.reserve(cur_cc->_cardinality);
-
173 for (const auto &i_fc : fcs) {
-
174 neighs_by_fc.emplace(i_fc, get_neighs_cc(i_fc, old_cc));
-
175 }
-
176 if (cur_cc->_cardinality > 1) {
-
177 // First try: agglomerate the whole coarse cell to another one
-
178 set<CoMMAIndexType> glob_neighs = {};
-
179 for (const auto &[i_fc, neighs] : neighs_by_fc) {
-
180 glob_neighs.insert(neighs.begin(), neighs.end());
-
181 }
-
182 if (!glob_neighs.empty()) {
-
183 optional<CoMMAIntType> new_compactness = nullopt;
-
184 const auto new_cc = select_best_cc_to_agglomerate_whole(
-
185 fcs, glob_neighs, max_card, new_compactness);
-
186 if (new_cc.has_value()) {
-
187 // first we assign to the fc_2_cc the new cc (later it will be
-
188 // renumbered considering the deleted cc)
-
189 for (const auto &i_fc : fcs) {
-
190 _fc_2_cc[i_fc] = new_cc.value();
-
191 }
-
192 _ccs[new_cc.value()]->insert_cells(fcs, new_compactness);
-
193 should_remove = true;
-
194 }
-
195 }
-
196 }
-
197 if (!should_remove) {
-
198 // If here, we could not agglomerate the whole cell, hence we look
-
199 // fine cell by fine cell
-
200 for (const auto &[i_fc, neighs] : neighs_by_fc) {
-
201 if (!neighs.empty()) {
-
202 optional<CoMMAIntType> new_compactness = nullopt;
-
203 const auto new_cc = select_best_cc_to_agglomerate(
-
204 i_fc, neighs, max_card, new_compactness);
-
205 if (new_cc.has_value()) {
-
206 _fc_2_cc[i_fc] = new_cc.value();
-
207 _ccs[new_cc.value()]->insert_cell(i_fc, new_compactness);
-
208 should_remove = true;
-
209 }
-
210 }
-
211 // If the cell has no neighbour (this could happen when the
-
212 // partitioning does not give a connected partition), unfortunately,
-
213 // there is nothing that we can do. We just skip it
-
214 }
-
215 }
-
216
-
217 if (should_remove) {
-
218 _ccs.erase(old_cc);
-
219 removed_cc.emplace(old_cc);
-
220 }
-
221 } // End if still singular
-
222 } // End loop over singular cells
-
223
-
224 // Now update the ID if necessary
-
225 if (!removed_cc.empty()) {
-
226 auto new_ID = *(removed_cc.begin());
-
227 // Starting from the CC just after the first removed singular cell, update
-
228 // all cells. Looking for new_ID-1 than doing ++ avoid case of consecutive
-
229 // singular cells. If the first removed cell was cell 0, then start from
-
230 // the beginning
-
231 auto it_cc = _ccs.begin();
-
232 if (new_ID > 0) {
-
233 it_cc = _ccs.find(new_ID - 1);
-
234 ++it_cc;
-
235 }
-
236 for (; it_cc != _ccs.end(); ++it_cc, ++new_ID) {
-
237 // Update fine cells
-
238 for (auto const &i_fc : it_cc->second->_s_fc) {
-
239 _fc_2_cc[i_fc] = new_ID;
-
240 }
-
241 // Update coarse cell ID
-
242 auto node = _ccs.extract(it_cc);
-
243 if (!node.empty()) {
-
244 node.key() = new_ID;
-
245 _ccs.insert(move(node));
-
246 }
-
247 }
-
248 }
-
249 }
-
250
-
265 optional<CoMMAIndexType> select_best_cc_to_agglomerate_whole(
-
266 const unordered_set<CoMMAIndexType> &fcs,
-
267 const set<CoMMAIndexType> &neighs,
-
268 const CoMMAIntType max_card,
-
269 optional<CoMMAIntType> &new_compactness) const {
-
270 CoMMAUnused(max_card);
-
271 unordered_map<CoMMAIndexType, CoMMAIntType> card{};
-
272 unordered_map<CoMMAIndexType, CoMMAIntType> compact{};
-
273 const auto n_neighs = neighs.size();
-
274 card.reserve(n_neighs);
-
275 // Since in the end we sort, wouldn't it be better to just use set instead
-
276 // of deque?
-
277 deque<CoMMAIndexType> argtrue_compact{};
-
278 // Loop on neighbours to compute their features
-
279 for (const auto &cc_idx : neighs) {
-
280 const auto n_cc = _ccs.at(cc_idx);
-
281 if (n_cc->_is_isotropic) {
-
282 if (true /* n_cc->_cardinality < max_card */) {
-
283 // On second thought, let us consider also cells with max cardinality
-
284 // since the number of faces could be important to ensure compactness
-
285 // of the coarse cell
-
286 card[cc_idx] = n_cc->_cardinality;
-
287 // Analysing compactness
-
288 auto tmp_cc = n_cc->_s_fc; // OK copy
-
289 tmp_cc.insert(fcs.begin(), fcs.end());
-
290 const auto new_cpt =
-
291 _fc_graph->compute_min_fc_compactness_inside_a_cc(tmp_cc);
-
292 compact[cc_idx] = new_cpt;
-
293 if (new_cpt > n_cc->_compactness) {
-
294 argtrue_compact.push_back(cc_idx);
-
295 }
-
296 } // End compactness and cardinality
-
297 } // End if isotropic
-
298 }
-
299 if (!argtrue_compact.empty()) {
-
300 // Sort so that, in the end, if nothing worked, we rely on ID numbering
-
301 sort(argtrue_compact.begin(), argtrue_compact.end());
-
302 CoMMAIndexType ret_cc{argtrue_compact[0]};
-
303 CoMMAIntType cur_min{card[ret_cc]};
-
304 // If more than one, maximize shared faces and/or minimize cardinality
-
305 for (const auto &idx : argtrue_compact) {
-
306 const auto cur_card = card[idx];
-
307 if (cur_card < cur_min) {
-
308 cur_min = cur_card;
-
309 ret_cc = idx;
-
310 }
-
311 }
-
312 new_compactness = compact.at(ret_cc);
-
313 return ret_cc;
-
314 }
-
315 return nullopt;
-
316 }
-
317
-
331 optional<CoMMAIndexType> select_best_cc_to_agglomerate(
-
332 const CoMMAIndexType fc,
-
333 const set<CoMMAIndexType> &neighs,
-
334 const CoMMAIntType max_card,
-
335 optional<CoMMAIntType> &new_compactness) const {
-
336 CoMMAUnused(max_card);
-
337 unordered_map<CoMMAIndexType, CoMMAIntType> card{};
-
338 unordered_map<CoMMAIndexType, CoMMAIntType> shared_faces{};
-
339 unordered_map<CoMMAIndexType, CoMMAIntType> compact{};
-
340 const auto n_neighs = neighs.size();
-
341 card.reserve(n_neighs);
-
342 shared_faces.reserve(n_neighs);
-
343 CoMMAIntType min_card = numeric_limits<CoMMAIntType>::max();
-
344 CoMMAIntType max_shared_f{0};
-
345 // Since in the end we sort, wouldn't it be better to just use set instead
-
346 // of deque?
-
347 deque<CoMMAIndexType> argmin_card{};
-
348 deque<CoMMAIndexType> argmax_shared_f{};
-
349 deque<CoMMAIndexType> argtrue_compact{};
-
350 deque<CoMMAIndexType> iso_neighs{};
-
351 // Loop on neighbours to compute their features
-
352 for (const auto &cc_idx : neighs) {
-
353 const auto n_cc = _ccs.at(cc_idx);
-
354 if (n_cc->_is_isotropic) {
-
355 iso_neighs.push_back(cc_idx);
-
356 if (true /* n_cc->_cardinality < max_card */) {
-
357 // On second thought, let us consider also cells with max cardinality
-
358 // since the number of faces could be important to ensure compactness
-
359 // of the coarse cell
-
360 const auto cur_card = n_cc->_cardinality;
-
361 card[cc_idx] = cur_card;
-
362 if (cur_card < min_card) {
-
363 min_card = cur_card;
-
364 argmin_card.clear();
-
365 argmin_card.push_back(cc_idx);
-
366 } else if (cur_card == min_card) {
-
367 argmin_card.push_back(cc_idx);
-
368 }
-
369 // @TODO: merge computation of shared faces and compactness?
-
370 const auto cur_sf = get_shared_faces(fc, n_cc);
-
371 shared_faces[cc_idx] = cur_sf;
-
372 if (cur_sf > max_shared_f) {
-
373 max_shared_f = cur_sf;
-
374 argmax_shared_f.clear();
-
375 argmax_shared_f.push_back(cc_idx);
-
376 } else if (cur_sf == max_shared_f) {
-
377 argmax_shared_f.push_back(cc_idx);
-
378 }
-
379 // Analysing compactness
-
380 auto tmp_cc = n_cc->_s_fc; // OK copy
-
381 tmp_cc.insert(fc);
-
382 const auto new_cpt =
-
383 _fc_graph->compute_min_fc_compactness_inside_a_cc(tmp_cc);
-
384 compact[cc_idx] = new_cpt;
-
385 if (new_cpt > n_cc->_compactness) {
-
386 argtrue_compact.push_back(cc_idx);
-
387 }
-
388 } // End compactness and cardinality
-
389 } // End if isotropic
-
390 }
-
391 // Now, it's time to choose the best neighbours. Priority is given to those
-
392 // which: 1 - Increase the degree of compactness
-
393 if (!argtrue_compact.empty()) {
-
394 // Sort so that, in the end, if nothing worked, we rely on ID numbering
-
395 sort(argtrue_compact.begin(), argtrue_compact.end());
-
396 CoMMAIndexType ret_cc{argtrue_compact[0]};
-
397 CoMMAIntType cur_max{shared_faces[ret_cc]};
-
398 // If more than one, maximize shared faces and/or minimize cardinality
-
399 for (const auto &idx : argtrue_compact) {
-
400 const auto cur_shf = shared_faces[idx];
-
401 if (cur_shf > cur_max) {
-
402 cur_max = cur_shf;
-
403 ret_cc = idx;
-
404 } else if (cur_shf == cur_max && card[idx] < card[ret_cc]) {
-
405 ret_cc = idx;
-
406 }
-
407 }
-
408 new_compactness = compact.at(ret_cc);
-
409 return ret_cc;
-
410 }
-
411 // 2 - Maximize the number of shared faces
-
412 if (!argmax_shared_f.empty()) {
-
413 // Sort so that, in the end, if nothing worked, we rely on ID numbering
-
414 sort(argmax_shared_f.begin(), argmax_shared_f.end());
-
415 CoMMAIndexType ret_cc{argmax_shared_f[0]};
-
416 CoMMAIntType cur_min{card[ret_cc]};
-
417 // ..but let's see if among all the cells there is one with smaller
-
418 // cardinality
-
419 for (const auto &idx : argmax_shared_f) {
-
420 if (card[idx] < cur_min) {
-
421 ret_cc = idx;
-
422 cur_min = card[ret_cc];
-
423 }
-
424 }
-
425 new_compactness = compact.at(ret_cc);
-
426 return ret_cc;
-
427 }
-
428 // 3 - Minimize the cardinality
-
429 if (!argmin_card.empty()) {
-
430 // We should never need to come here...
-
431 // @TODO: I'm not sure what I could consider here to decide which cell to
-
432 // return. The aspect-ratio maybe? In the mean time, I return the one with
-
433 // the lowest ID
-
434 const auto ret_cc =
-
435 *(min_element(argmin_card.begin(), argmin_card.end()));
-
436 new_compactness = compact.at(ret_cc);
-
437 return ret_cc;
-
438 }
-
439 // If everything failed, look through the neighbours
-
440 if (!iso_neighs.empty()) return iso_neighs[0];
-
441 // otherwise, there is nothing we can do
-
442 return nullopt;
-
443 }
-
444
-
451 inline CoMMAIntType get_shared_faces(
-
452 const CoMMAIndexType fc, const CoarseCellPtr cc) const {
-
453 CoMMAIntType shared_faces{0};
-
454 for (const auto &i_fc : cc->_s_fc) {
-
455 shared_faces += count(
-
456 _fc_graph->neighbours_cbegin(i_fc), _fc_graph->neighbours_cend(i_fc),
-
457 fc);
-
458 }
-
459 return shared_faces;
-
460 }
-
461
-
472 CoMMAIndexType create_cc(
-
473 const unordered_set<CoMMAIndexType> &s_fc,
-
474 const CoMMAIntType compactness,
-
475 bool is_anisotropic = false,
-
476 bool is_creation_delayed = false) {
-
477 // Create a course cell from the fine cells and update the fc_2_cc tree.
-
478 assert((!is_anisotropic) || (!is_creation_delayed));
-
479 for (const auto &i_fc : s_fc) {
-
480 assert(!_fc_2_cc[i_fc].has_value());
-
481 if (!_is_fc_agglomerated[i_fc]) {
-
482 // Rq: initialise to False pour chaque niveau dans agglomerate(...)
-
483 _is_fc_agglomerated[i_fc] = true;
-
484 _nb_of_agglomerated_fc++;
-
485 }
-
486 }
-
487 // Anisotropic case
-
488 bool is_mutable = true;
-
489 if (is_anisotropic) {
-
490 // we collect the various cc, where the index in the vector is the i_cc
-
491 _ccs[_cc_counter] = make_shared<CoarseCellType>(
-
492 _fc_graph, _cc_counter, s_fc, compactness, !is_anisotropic);
-
493 is_mutable = false;
-
494 }
-
495 if (!is_creation_delayed) {
-
496 // We create the cc right now.
-
497 // Everything is updated:
-
498 if (is_mutable) {
-
499 // the cell can be modified afterwards and is thus defined in dict_cc
-
500 // and dict_card_cc, dict_compactness_2_cc, dict_cc_to_compactness
-
501 // Update of dict_cc:
-
502 //==================
-
503 // we collect the various cc, where the index in the vector is the i_cc
-
504 _ccs[_cc_counter] = make_shared<CoarseCellType>(
-
505 _fc_graph, _cc_counter, s_fc, compactness);
-
506 if (
-
507 !is_anisotropic
-
508 && static_cast<decltype(_sing_card_thresh)>(s_fc.size())
-
509 <= _sing_card_thresh)
-
510 _singular_cc.emplace_back(_cc_counter);
-
511 }
-
512 // Update of _associatedCoarseCellNumber the output of the current
-
513 // function agglomerate _fc_2_cc is filled with _cc_counter
-
514 for (const auto &i_fc : s_fc) {
-
515 // Only if not isCreationDelayed:
-
516 assert(!_fc_2_cc[i_fc].has_value());
-
517 _fc_2_cc[i_fc] = _cc_counter;
-
518 }
-
519 // Update of the number of CC
-
520 //####################################
-
521 _cc_counter++; // Only if not isCreationDelayed
-
522 } else {
-
523 // We do not create the coarse cell yet.
-
524 // As this coarse cell will be soon deleted, we want its coarse index to
-
525 // be the greater possible.
-
526 // Only isFineCellAgglomerated_tmp, number_of_fine_agglomerated_cells_tmp
-
527 // and dict_DistributionOfCardinalOfCoarseElements are modified!
-
528 _delayed_cc.emplace_back(s_fc, compactness);
-
529 }
-
530 return (_cc_counter - 1);
-
531 }
-
532
-
536 inline void cc_create_all_delayed_cc() {
-
537 for (const auto &[s_fc, cpt] : _delayed_cc) {
-
538 create_cc(s_fc, cpt);
-
539 }
-
540 _delayed_cc.clear();
-
541 }
-
542
-
543protected:
-
545 CoMMAIndexType _nb_of_agglomerated_fc = 0;
-
546
-
551 vector<pair<unordered_set<CoMMAIndexType>, CoMMAIntType>> _delayed_cc;
-
552
-
555 deque<CoMMAIndexType> _singular_cc;
-
556};
-
557
-
558#endif // COMMA_PROJECT_COARSE_CELL_GRAPH_H
+
171 std::unordered_map<CoMMAIndexType, std::set<CoMMAIndexType>>
+
172 neighs_by_fc{};
+
173 neighs_by_fc.reserve(cur_cc->_cardinality);
+
174 for (const auto &i_fc : fcs) {
+
175 neighs_by_fc.emplace(i_fc, get_neighs_cc(i_fc, old_cc));
+
176 }
+
177 if (cur_cc->_cardinality > 1) {
+
178 // First try: agglomerate the whole coarse cell to another one
+
179 std::set<CoMMAIndexType> glob_neighs = {};
+
180 for (const auto &[i_fc, neighs] : neighs_by_fc) {
+
181 glob_neighs.insert(neighs.begin(), neighs.end());
+
182 }
+
183 if (!glob_neighs.empty()) {
+
184 std::optional<CoMMAIntType> new_compactness = std::nullopt;
+
185 const auto new_cc = select_best_cc_to_agglomerate_whole(
+
186 fcs, glob_neighs, max_card, new_compactness);
+
187 if (new_cc.has_value()) {
+
188 // first we assign to the fc_2_cc the new cc (later it will be
+
189 // renumbered considering the deleted cc)
+
190 for (const auto &i_fc : fcs) {
+
191 _fc_2_cc[i_fc] = new_cc.value();
+
192 }
+
193 _ccs[new_cc.value()]->insert_cells(fcs, new_compactness);
+
194 should_remove = true;
+
195 }
+
196 }
+
197 }
+
198 if (!should_remove) {
+
199 // If here, we could not agglomerate the whole cell, hence we look
+
200 // fine cell by fine cell
+
201 for (const auto &[i_fc, neighs] : neighs_by_fc) {
+
202 if (!neighs.empty()) {
+
203 std::optional<CoMMAIntType> new_compactness = std::nullopt;
+
204 const auto new_cc = select_best_cc_to_agglomerate(
+
205 i_fc, neighs, max_card, new_compactness);
+
206 if (new_cc.has_value()) {
+
207 _fc_2_cc[i_fc] = new_cc.value();
+
208 _ccs[new_cc.value()]->insert_cell(i_fc, new_compactness);
+
209 should_remove = true;
+
210 }
+
211 }
+
212 // If the cell has no neighbour (this could happen when the
+
213 // partitioning does not give a connected partition), unfortunately,
+
214 // there is nothing that we can do. We just skip it
+
215 }
+
216 }
+
217
+
218 if (should_remove) {
+
219 _ccs.erase(old_cc);
+
220 removed_cc.emplace(old_cc);
+
221 }
+
222 } // End if still singular
+
223 } // End loop over singular cells
+
224
+
225 // Now update the ID if necessary
+
226 if (!removed_cc.empty()) {
+
227 auto new_ID = *(removed_cc.begin());
+
228 // Starting from the CC just after the first removed singular cell, update
+
229 // all cells. Looking for new_ID-1 than doing ++ avoid case of consecutive
+
230 // singular cells. If the first removed cell was cell 0, then start from
+
231 // the beginning
+
232 auto it_cc = _ccs.begin();
+
233 if (new_ID > 0) {
+
234 it_cc = _ccs.find(new_ID - 1);
+
235 ++it_cc;
+
236 }
+
237 for (; it_cc != _ccs.end(); ++it_cc, ++new_ID) {
+
238 // Update fine cells
+
239 for (auto const &i_fc : it_cc->second->_s_fc) {
+
240 _fc_2_cc[i_fc] = new_ID;
+
241 }
+
242 // Update coarse cell ID
+
243 auto node = _ccs.extract(it_cc);
+
244 if (!node.empty()) {
+
245 node.key() = new_ID;
+
246 _ccs.insert(std::move(node));
+
247 }
+
248 }
+
249 }
+
250 }
+
251
+
266 std::optional<CoMMAIndexType> select_best_cc_to_agglomerate_whole(
+
267 const std::unordered_set<CoMMAIndexType> &fcs,
+
268 const std::set<CoMMAIndexType> &neighs,
+
269 const CoMMAIntType max_card,
+
270 std::optional<CoMMAIntType> &new_compactness) const {
+
271 CoMMAUnused(max_card);
+
272 std::unordered_map<CoMMAIndexType, CoMMAIntType> card{};
+
273 std::unordered_map<CoMMAIndexType, CoMMAIntType> compact{};
+
274 const auto n_neighs = neighs.size();
+
275 card.reserve(n_neighs);
+
276 // Since in the end we sort, wouldn't it be better to just use set instead
+
277 // of deque?
+
278 std::deque<CoMMAIndexType> argtrue_compact{};
+
279 // Loop on neighbours to compute their features
+
280 for (const auto &cc_idx : neighs) {
+
281 const auto n_cc = _ccs.at(cc_idx);
+
282 if (n_cc->_is_isotropic) {
+
283 // NOLINTNEXTLINE(readability-simplify-boolean-expr)
+
284 if (true /* n_cc->_cardinality < max_card */) {
+
285 // On second thought, let us consider also cells with max cardinality
+
286 // since the number of faces could be important to ensure compactness
+
287 // of the coarse cell
+
288 card[cc_idx] = n_cc->_cardinality;
+
289 // Analysing compactness
+
290 auto tmp_cc = n_cc->_s_fc; // OK copy
+
291 tmp_cc.insert(fcs.begin(), fcs.end());
+
292 const auto new_cpt =
+
293 _fc_graph->compute_min_fc_compactness_inside_a_cc(tmp_cc);
+
294 compact[cc_idx] = new_cpt;
+
295 if (new_cpt > n_cc->_compactness) {
+
296 argtrue_compact.push_back(cc_idx);
+
297 }
+
298 } // End compactness and cardinality
+
299 } // End if isotropic
+
300 }
+
301 if (!argtrue_compact.empty()) {
+
302 // Sort so that, in the end, if nothing worked, we rely on ID numbering
+
303 sort(argtrue_compact.begin(), argtrue_compact.end());
+
304 CoMMAIndexType ret_cc{argtrue_compact[0]};
+
305 CoMMAIntType cur_min{card[ret_cc]};
+
306 // If more than one, maximize shared faces and/or minimize cardinality
+
307 for (const auto &idx : argtrue_compact) {
+
308 const auto cur_card = card[idx];
+
309 if (cur_card < cur_min) {
+
310 cur_min = cur_card;
+
311 ret_cc = idx;
+
312 }
+
313 }
+
314 new_compactness = compact.at(ret_cc);
+
315 return ret_cc;
+
316 }
+
317 return std::nullopt;
+
318 }
+
319
+
333 std::optional<CoMMAIndexType> select_best_cc_to_agglomerate(
+
334 const CoMMAIndexType fc,
+
335 const std::set<CoMMAIndexType> &neighs,
+
336 const CoMMAIntType max_card,
+
337 std::optional<CoMMAIntType> &new_compactness) const {
+
338 CoMMAUnused(max_card);
+
339 std::unordered_map<CoMMAIndexType, CoMMAIntType> card{};
+
340 std::unordered_map<CoMMAIndexType, CoMMAIntType> shared_faces{};
+
341 std::unordered_map<CoMMAIndexType, CoMMAIntType> compact{};
+
342 const auto n_neighs = neighs.size();
+
343 card.reserve(n_neighs);
+
344 shared_faces.reserve(n_neighs);
+
345 CoMMAIntType min_card = std::numeric_limits<CoMMAIntType>::max();
+
346 CoMMAIntType max_shared_f{0};
+
347 // Since in the end we sort, wouldn't it be better to just use set instead
+
348 // of deque?
+
349 std::deque<CoMMAIndexType> argmin_card{};
+
350 std::deque<CoMMAIndexType> argmax_shared_f{};
+
351 std::deque<CoMMAIndexType> argtrue_compact{};
+
352 std::deque<CoMMAIndexType> iso_neighs{};
+
353 // Loop on neighbours to compute their features
+
354 for (const auto &cc_idx : neighs) {
+
355 const auto n_cc = _ccs.at(cc_idx);
+
356 if (n_cc->_is_isotropic) {
+
357 iso_neighs.push_back(cc_idx);
+
358 // NOLINTNEXTLINE(readability-simplify-boolean-expr)
+
359 if (true /* n_cc->_cardinality < max_card */) {
+
360 // On second thought, let us consider also cells with max cardinality
+
361 // since the number of faces could be important to ensure compactness
+
362 // of the coarse cell
+
363 const auto cur_card = n_cc->_cardinality;
+
364 card[cc_idx] = cur_card;
+
365 if (cur_card < min_card) {
+
366 min_card = cur_card;
+
367 argmin_card.clear();
+
368 argmin_card.push_back(cc_idx);
+
369 } else if (cur_card == min_card) {
+
370 argmin_card.push_back(cc_idx);
+
371 }
+
372 // @TODO: merge computation of shared faces and compactness?
+
373 const auto cur_sf = get_shared_faces(fc, n_cc);
+
374 shared_faces[cc_idx] = cur_sf;
+
375 if (cur_sf > max_shared_f) {
+
376 max_shared_f = cur_sf;
+
377 argmax_shared_f.clear();
+
378 argmax_shared_f.push_back(cc_idx);
+
379 } else if (cur_sf == max_shared_f) {
+
380 argmax_shared_f.push_back(cc_idx);
+
381 }
+
382 // Analysing compactness
+
383 auto tmp_cc = n_cc->_s_fc; // OK copy
+
384 tmp_cc.insert(fc);
+
385 const auto new_cpt =
+
386 _fc_graph->compute_min_fc_compactness_inside_a_cc(tmp_cc);
+
387 compact[cc_idx] = new_cpt;
+
388 if (new_cpt > n_cc->_compactness) {
+
389 argtrue_compact.push_back(cc_idx);
+
390 }
+
391 } // End compactness and cardinality
+
392 } // End if isotropic
+
393 }
+
394 // Now, it's time to choose the best neighbours. Priority is given to those
+
395 // which: 1 - Increase the degree of compactness
+
396 if (!argtrue_compact.empty()) {
+
397 // Sort so that, in the end, if nothing worked, we rely on ID numbering
+
398 sort(argtrue_compact.begin(), argtrue_compact.end());
+
399 CoMMAIndexType ret_cc{argtrue_compact[0]};
+
400 CoMMAIntType cur_max{shared_faces[ret_cc]};
+
401 // If more than one, maximize shared faces and/or minimize cardinality
+
402 for (const auto &idx : argtrue_compact) {
+
403 const auto cur_shf = shared_faces[idx];
+
404 if (cur_shf > cur_max) {
+
405 cur_max = cur_shf;
+
406 ret_cc = idx;
+
407 } else if (cur_shf == cur_max && card[idx] < card[ret_cc]) {
+
408 ret_cc = idx;
+
409 }
+
410 }
+
411 new_compactness = compact.at(ret_cc);
+
412 return ret_cc;
+
413 }
+
414 // 2 - Maximize the number of shared faces
+
415 if (!argmax_shared_f.empty()) {
+
416 // Sort so that, in the end, if nothing worked, we rely on ID numbering
+
417 sort(argmax_shared_f.begin(), argmax_shared_f.end());
+
418 CoMMAIndexType ret_cc{argmax_shared_f[0]};
+
419 CoMMAIntType cur_min{card[ret_cc]};
+
420 // ..but let's see if among all the cells there is one with smaller
+
421 // cardinality
+
422 for (const auto &idx : argmax_shared_f) {
+
423 if (card[idx] < cur_min) {
+
424 ret_cc = idx;
+
425 cur_min = card[ret_cc];
+
426 }
+
427 }
+
428 new_compactness = compact.at(ret_cc);
+
429 return ret_cc;
+
430 }
+
431 // 3 - Minimize the cardinality
+
432 if (!argmin_card.empty()) {
+
433 // We should never need to come here...
+
434 // @TODO: I'm not sure what I could consider here to decide which cell to
+
435 // return. The aspect-ratio maybe? In the mean time, I return the one with
+
436 // the lowest ID
+
437 const auto ret_cc =
+
438 *(min_element(argmin_card.begin(), argmin_card.end()));
+
439 new_compactness = compact.at(ret_cc);
+
440 return ret_cc;
+
441 }
+
442 // If everything failed, look through the neighbours
+
443 if (!iso_neighs.empty()) return iso_neighs[0];
+
444 // otherwise, there is nothing we can do
+
445 return std::nullopt;
+
446 }
+
447
+
454 inline CoMMAIntType get_shared_faces(
+
455 const CoMMAIndexType fc, const CoarseCellPtr cc) const {
+
456 CoMMAIntType shared_faces{0};
+
457 for (const auto &i_fc : cc->_s_fc) {
+
458 shared_faces += count(
+
459 _fc_graph->neighbours_cbegin(i_fc), _fc_graph->neighbours_cend(i_fc),
+
460 fc);
+
461 }
+
462 return shared_faces;
+
463 }
+
464
+
475 CoMMAIndexType create_cc(
+
476 const std::unordered_set<CoMMAIndexType> &s_fc,
+
477 const CoMMAIntType compactness,
+
478 bool is_anisotropic = false,
+
479 bool is_creation_delayed = false) {
+
480 // Create a course cell from the fine cells and update the fc_2_cc tree.
+
481 assert((!is_anisotropic) || (!is_creation_delayed));
+
482 for (const auto &i_fc : s_fc) {
+
483 assert(!_fc_2_cc[i_fc].has_value());
+
484 if (!_is_fc_agglomerated[i_fc]) {
+
485 // Rq: initialise to False pour chaque niveau dans agglomerate(...)
+
486 _is_fc_agglomerated[i_fc] = true;
+
487 _nb_of_agglomerated_fc++;
+
488 }
+
489 }
+
490 // Anisotropic case
+
491 bool is_mutable = true;
+
492 if (is_anisotropic) {
+
493 // we collect the various cc, where the index in the vector is the i_cc
+
494 _ccs[_cc_counter] = std::make_shared<CoarseCellType>(
+
495 _fc_graph, _cc_counter, s_fc, compactness, !is_anisotropic);
+
496 is_mutable = false;
+
497 }
+
498 if (!is_creation_delayed) {
+
499 // We create the cc right now.
+
500 // Everything is updated:
+
501 if (is_mutable) {
+
502 // the cell can be modified afterwards and is thus defined in dict_cc
+
503 // and dict_card_cc, dict_compactness_2_cc, dict_cc_to_compactness
+
504 // Update of dict_cc:
+
505 //==================
+
506 // we collect the various cc, where the index in the vector is the i_cc
+
507 _ccs[_cc_counter] = std::make_shared<CoarseCellType>(
+
508 _fc_graph, _cc_counter, s_fc, compactness);
+
509 if (
+
510 !is_anisotropic
+
511 && static_cast<decltype(_sing_card_thresh)>(s_fc.size())
+
512 <= _sing_card_thresh)
+
513 _singular_cc.emplace_back(_cc_counter);
+
514 }
+
515 // Update of _associatedCoarseCellNumber the output of the current
+
516 // function agglomerate _fc_2_cc is filled with _cc_counter
+
517 for (const auto &i_fc : s_fc) {
+
518 // Only if not isCreationDelayed:
+
519 assert(!_fc_2_cc[i_fc].has_value());
+
520 _fc_2_cc[i_fc] = _cc_counter;
+
521 }
+
522 // Update of the number of CC
+
523 //####################################
+
524 _cc_counter++; // Only if not isCreationDelayed
+
525 } else {
+
526 // We do not create the coarse cell yet.
+
527 // As this coarse cell will be soon deleted, we want its coarse index to
+
528 // be the greater possible.
+
529 // Only isFineCellAgglomerated_tmp, number_of_fine_agglomerated_cells_tmp
+
530 // and dict_DistributionOfCardinalOfCoarseElements are modified!
+
531 _delayed_cc.emplace_back(s_fc, compactness);
+
532 }
+
533 return (_cc_counter - 1);
+
534 }
+
535
+
539 inline void cc_create_all_delayed_cc() {
+
540 for (const auto &[s_fc, cpt] : _delayed_cc) {
+
541 create_cc(s_fc, cpt);
+
542 }
+
543 _delayed_cc.clear();
+
544 }
+
545
+
546protected:
+
548 CoMMAIndexType _nb_of_agglomerated_fc = 0;
+
549
+
554 std::vector<std::pair<std::unordered_set<CoMMAIndexType>, CoMMAIntType>>
+
555 _delayed_cc;
+
556
+
559 std::deque<CoMMAIndexType> _singular_cc;
+
560};
+
561
+
562} // end namespace comma
+
563
+
564#endif // COMMA_PROJECT_COARSE_CELL_GRAPH_H
Coarse_Cell.h
Dual_Graph.h
CoMMAUnused
#define CoMMAUnused(var)
Convenient function to avoid unused warnings.
Definition: Util.h:34
-
Coarse_Cell_Container
Class implementing a custom container where the coarse cells are stored.
Definition: Coarse_Cell_Container.h:41
-
Coarse_Cell_Container::cc_create_all_delayed_cc
void cc_create_all_delayed_cc()
Creates all the delayed coarse cell. It works only when the delayed cell flag is activated in the agg...
Definition: Coarse_Cell_Container.h:536
-
Coarse_Cell_Container::get_number_of_fc_agglomerated
CoMMAIndexType get_number_of_fc_agglomerated() const
Helper to get the member variable that defines the number of agglomerated fine cells.
Definition: Coarse_Cell_Container.h:98
-
Coarse_Cell_Container::get_shared_faces
CoMMAIntType get_shared_faces(const CoMMAIndexType fc, const CoarseCellPtr cc) const
Compute the number of faces shared between a fine cell and a coarse one.
Definition: Coarse_Cell_Container.h:451
-
Coarse_Cell_Container::get_neighs_cc
set< CoMMAIndexType > get_neighs_cc(const CoMMAIndexType &i_fc, const CoMMAIndexType &i_cc) const
Retrieve the indexes of the neighbouring coarse cells to a given fine cell in a coarse cell (excludin...
Definition: Coarse_Cell_Container.h:115
-
Coarse_Cell_Container::CoarseCellPtr
shared_ptr< CoarseCellType > CoarseCellPtr
Type for a shared pointer to a Dual_Graph object.
Definition: Coarse_Cell_Container.h:48
-
Coarse_Cell_Container::_sing_card_thresh
CoMMAIntType _sing_card_thresh
Minimum cardinality for receiver CC when correcting.
Definition: Coarse_Cell_Container.h:92
-
Coarse_Cell_Container::select_best_cc_to_agglomerate_whole
optional< CoMMAIndexType > select_best_cc_to_agglomerate_whole(const unordered_set< CoMMAIndexType > &fcs, const set< CoMMAIndexType > &neighs, const CoMMAIntType max_card, optional< CoMMAIntType > &new_compactness) const
Choose among the neighbouring coarse cells, the one to which a singular coarse cell should be assigne...
Definition: Coarse_Cell_Container.h:265
-
Coarse_Cell_Container::_fc_2_cc
vector< optional< CoMMAIndexType > > _fc_2_cc
Output vector identifying to which coarse cell the fine cell belongs.
Definition: Coarse_Cell_Container.h:85
-
Coarse_Cell_Container::Coarse_Cell_Container
Coarse_Cell_Container(DualGraphPtr &fc_graph, const CoMMAIntType singular_card_thresh)
Create a Coarse_Cell_Container.
Definition: Coarse_Cell_Container.h:59
-
Coarse_Cell_Container::_is_fc_agglomerated
vector< bool > _is_fc_agglomerated
Vector of boolean telling whether a fine cell has been agglomerated.
Definition: Coarse_Cell_Container.h:89
-
Coarse_Cell_Container::create_cc
CoMMAIndexType create_cc(const unordered_set< CoMMAIndexType > &s_fc, const CoMMAIntType compactness, bool is_anisotropic=false, bool is_creation_delayed=false)
It creates a coarse cell based on the set of fine cells given as input.
Definition: Coarse_Cell_Container.h:472
-
Coarse_Cell_Container::get_nb_of_cc
CoMMAIndexType get_nb_of_cc() const
Helper to get the number of coarse cells.
Definition: Coarse_Cell_Container.h:105
-
Coarse_Cell_Container::_fc_graph
DualGraphPtr _fc_graph
Dual graph representation.
Definition: Coarse_Cell_Container.h:78
-
Coarse_Cell_Container::_delayed_cc
vector< pair< unordered_set< CoMMAIndexType >, CoMMAIntType > > _delayed_cc
Vector of the set of fine cells composing the too small coarse cells that will be built at the end of...
Definition: Coarse_Cell_Container.h:551
-
Coarse_Cell_Container::_cc_counter
CoMMAIndexType _cc_counter
Number of coarse cells.
Definition: Coarse_Cell_Container.h:81
-
Coarse_Cell_Container::select_best_cc_to_agglomerate
optional< CoMMAIndexType > select_best_cc_to_agglomerate(const CoMMAIndexType fc, const set< CoMMAIndexType > &neighs, const CoMMAIntType max_card, optional< CoMMAIntType > &new_compactness) const
Choose among the neighbouring coarse cells, the one to which a fine cell should be assigned to....
Definition: Coarse_Cell_Container.h:331
-
Coarse_Cell_Container::~Coarse_Cell_Container
~Coarse_Cell_Container()=default
Destructor.
-
Coarse_Cell_Container::_ccs
map< CoMMAIndexType, CoarseCellPtr > _ccs
Map containing the CC and their ID.
Definition: Coarse_Cell_Container.h:75
-
Coarse_Cell_Container::_nb_of_agglomerated_fc
CoMMAIndexType _nb_of_agglomerated_fc
Number of agglomerated fine cells.
Definition: Coarse_Cell_Container.h:545
-
Coarse_Cell_Container::correct
void correct(const CoMMAIntType max_card)
Implementation of the correction. In this version it implements the correction of singular cells (if ...
Definition: Coarse_Cell_Container.h:161
-
Coarse_Cell_Container::DualGraphPtr
typename CoarseCellType::DualGraphPtr DualGraphPtr
Type for a shared pointer to a Dual_Graph object.
Definition: Coarse_Cell_Container.h:51
-
Coarse_Cell_Container::_singular_cc
deque< CoMMAIndexType > _singular_cc
Set of singular coarse cells, that is, composed of only one fine cell.
Definition: Coarse_Cell_Container.h:555
-
Coarse_Cell
Class describing a coarse cell.
Definition: Coarse_Cell.h:37
-
Coarse_Cell::DualGraphPtr
shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > DualGraphPtr
Type for a shared pointer to a Dual_Graph object.
Definition: Coarse_Cell.h:41
+
comma::Coarse_Cell_Container
Class implementing a custom container where the coarse cells are stored.
Definition: Coarse_Cell_Container.h:41
+
comma::Coarse_Cell_Container::_ccs
std::map< CoMMAIndexType, CoarseCellPtr > _ccs
Map containing the CC and their ID.
Definition: Coarse_Cell_Container.h:75
+
comma::Coarse_Cell_Container::select_best_cc_to_agglomerate_whole
std::optional< CoMMAIndexType > select_best_cc_to_agglomerate_whole(const std::unordered_set< CoMMAIndexType > &fcs, const std::set< CoMMAIndexType > &neighs, const CoMMAIntType max_card, std::optional< CoMMAIntType > &new_compactness) const
Choose among the neighbouring coarse cells, the one to which a singular coarse cell should be assigne...
Definition: Coarse_Cell_Container.h:266
+
comma::Coarse_Cell_Container::_singular_cc
std::deque< CoMMAIndexType > _singular_cc
Set of singular coarse cells, that is, composed of only one fine cell.
Definition: Coarse_Cell_Container.h:559
+
comma::Coarse_Cell_Container::_nb_of_agglomerated_fc
CoMMAIndexType _nb_of_agglomerated_fc
Number of agglomerated fine cells.
Definition: Coarse_Cell_Container.h:548
+
comma::Coarse_Cell_Container::_sing_card_thresh
CoMMAIntType _sing_card_thresh
Minimum cardinality for receiver CC when correcting.
Definition: Coarse_Cell_Container.h:92
+
comma::Coarse_Cell_Container::_delayed_cc
std::vector< std::pair< std::unordered_set< CoMMAIndexType >, CoMMAIntType > > _delayed_cc
Vector of the set of fine cells composing the too small coarse cells that will be built at the end of...
Definition: Coarse_Cell_Container.h:555
+
comma::Coarse_Cell_Container::_fc_2_cc
std::vector< std::optional< CoMMAIndexType > > _fc_2_cc
Output vector identifying to which coarse cell the fine cell belongs.
Definition: Coarse_Cell_Container.h:85
+
comma::Coarse_Cell_Container::CoarseCellPtr
std::shared_ptr< CoarseCellType > CoarseCellPtr
Type for a shared pointer to a Dual_Graph object.
Definition: Coarse_Cell_Container.h:48
+
comma::Coarse_Cell_Container::DualGraphPtr
typename CoarseCellType::DualGraphPtr DualGraphPtr
Type for a shared pointer to a Dual_Graph object.
Definition: Coarse_Cell_Container.h:51
+
comma::Coarse_Cell_Container::_cc_counter
CoMMAIndexType _cc_counter
Number of coarse cells.
Definition: Coarse_Cell_Container.h:81
+
comma::Coarse_Cell_Container::select_best_cc_to_agglomerate
std::optional< CoMMAIndexType > select_best_cc_to_agglomerate(const CoMMAIndexType fc, const std::set< CoMMAIndexType > &neighs, const CoMMAIntType max_card, std::optional< CoMMAIntType > &new_compactness) const
Choose among the neighbouring coarse cells, the one to which a fine cell should be assigned to....
Definition: Coarse_Cell_Container.h:333
+
comma::Coarse_Cell_Container::create_cc
CoMMAIndexType create_cc(const std::unordered_set< CoMMAIndexType > &s_fc, const CoMMAIntType compactness, bool is_anisotropic=false, bool is_creation_delayed=false)
It creates a coarse cell based on the set of fine cells given as input.
Definition: Coarse_Cell_Container.h:475
+
comma::Coarse_Cell_Container::get_number_of_fc_agglomerated
CoMMAIndexType get_number_of_fc_agglomerated() const
Helper to get the member variable that defines the number of agglomerated fine cells.
Definition: Coarse_Cell_Container.h:98
+
comma::Coarse_Cell_Container::_is_fc_agglomerated
std::vector< bool > _is_fc_agglomerated
Vector of boolean telling whether a fine cell has been agglomerated.
Definition: Coarse_Cell_Container.h:89
+
comma::Coarse_Cell_Container::get_nb_of_cc
CoMMAIndexType get_nb_of_cc() const
Helper to get the number of coarse cells.
Definition: Coarse_Cell_Container.h:105
+
comma::Coarse_Cell_Container::_fc_graph
DualGraphPtr _fc_graph
Dual graph representation.
Definition: Coarse_Cell_Container.h:78
+
comma::Coarse_Cell_Container::get_shared_faces
CoMMAIntType get_shared_faces(const CoMMAIndexType fc, const CoarseCellPtr cc) const
Compute the number of faces shared between a fine cell and a coarse one.
Definition: Coarse_Cell_Container.h:454
+
comma::Coarse_Cell_Container::~Coarse_Cell_Container
~Coarse_Cell_Container()=default
Destructor.
+
comma::Coarse_Cell_Container::Coarse_Cell_Container
Coarse_Cell_Container(DualGraphPtr &fc_graph, const CoMMAIntType singular_card_thresh)
Create a Coarse_Cell_Container.
Definition: Coarse_Cell_Container.h:59
+
comma::Coarse_Cell_Container::get_neighs_cc
std::set< CoMMAIndexType > get_neighs_cc(const CoMMAIndexType &i_fc, const CoMMAIndexType &i_cc) const
Retrieve the indexes of the neighbouring coarse cells to a given fine cell in a coarse cell (excludin...
Definition: Coarse_Cell_Container.h:115
+
comma::Coarse_Cell_Container::correct
void correct(const CoMMAIntType max_card)
Implementation of the correction. In this version it implements the correction of singular cells (if ...
Definition: Coarse_Cell_Container.h:161
+
comma::Coarse_Cell_Container::cc_create_all_delayed_cc
void cc_create_all_delayed_cc()
Creates all the delayed coarse cell. It works only when the delayed cell flag is activated in the agg...
Definition: Coarse_Cell_Container.h:539
+
comma::Coarse_Cell
Class describing a coarse cell.
Definition: Coarse_Cell.h:37
+
comma::Coarse_Cell::DualGraphPtr
std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > DualGraphPtr
Type for a shared pointer to a Dual_Graph object.
Definition: Coarse_Cell.h:41
+
comma
Definition: Agglomerator.h:34
diff --git a/_dual___graph_8h.html b/_dual___graph_8h.html index 569f7e6..02c6871 100644 --- a/_dual___graph_8h.html +++ b/_dual___graph_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Dual_Graph.h File Reference +CoMMA: include/CoMMA/Dual_Graph.h File Reference @@ -92,7 +92,8 @@
-Classes
+Classes | +Namespaces
Dual_Graph.h File Reference
@@ -106,20 +107,25 @@ #include <unordered_map>
#include <unordered_set>
#include <vector>
-#include "Seeds_Pool.h"
+#include "CoMMA/Seeds_Pool.h"

Go to the source code of this file.

- - + + - - + + - - + + + +

Classes

class  Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 An interface class responsible of storing the cell centered dual graph and of acting on it (it is an interface for the global Dual_Graph and the Subgraph) More...
class  comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 An interface class responsible of storing the cell centered dual graph and of acting on it (it is an interface for the global Dual_Graph and the Subgraph) More...
 
class  Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 A class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the implementation of the CSR representation of the coarse cells. More...
class  comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 A class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the implementation of the CSR representation of the coarse cells. More...
 
class  Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 A class implementing the CRS global graph representation of the global mesh. More...
class  comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 A class implementing the CRS global graph representation of the global mesh. More...
 
+ +

+Namespaces

namespace  comma
 
@@ -127,7 +133,7 @@ diff --git a/_dual___graph_8h.js b/_dual___graph_8h.js index d13ec8d..15a0289 100644 --- a/_dual___graph_8h.js +++ b/_dual___graph_8h.js @@ -1,6 +1,6 @@ var _dual___graph_8h = [ - [ "Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_graph.html", "class_graph" ], - [ "Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_subgraph.html", "class_subgraph" ], - [ "Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_dual___graph.html", "class_dual___graph" ] + [ "comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_graph.html", "classcomma_1_1_graph" ], + [ "comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_subgraph.html", "classcomma_1_1_subgraph" ], + [ "comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_dual___graph.html", "classcomma_1_1_dual___graph" ] ]; \ No newline at end of file diff --git a/_dual___graph_8h_source.html b/_dual___graph_8h_source.html index 69bbc93..ab720ab 100644 --- a/_dual___graph_8h_source.html +++ b/_dual___graph_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Dual_Graph.h Source File +CoMMA: include/CoMMA/Dual_Graph.h Source File @@ -100,7 +100,7 @@
4/*
5 * CoMMA
6 *
-
7 * Copyright © 2023 ONERA
+
7 * Copyright © 2024 ONERA
8 *
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
10 * Contributors: Karim Anemiche
@@ -121,651 +121,656 @@
25#include <unordered_set>
26#include <vector>
27
-
28#include "Seeds_Pool.h"
+
28#include "CoMMA/Seeds_Pool.h"
29
-
30using namespace std;
+
30namespace comma {
31
40template<
41 typename CoMMAIndexType,
42 typename CoMMAWeightType,
43 typename CoMMAIntType>
-
44class Graph {
+
44class Graph {
45public:
-
47 using ContainerIndexType = vector<CoMMAIndexType>;
-
49 using ContainerWeightType = vector<CoMMAWeightType>;
-
51 using ContainerIndexConstIt = typename ContainerIndexType::const_iterator;
-
53 using ContainerWeightConstIt = typename ContainerWeightType::const_iterator;
+
47 using ContainerIndexType = std::vector<CoMMAIndexType>;
+
49 using ContainerWeightType = std::vector<CoMMAWeightType>;
+
51 using ContainerIndexConstIt = typename ContainerIndexType::const_iterator;
+
53 using ContainerWeightConstIt = typename ContainerWeightType::const_iterator;
54
-
64 Graph(
+
64 Graph(
65 const CoMMAIndexType &nb_c,
-
66 const ContainerIndexType &m_crs_row_ptr,
-
67 const ContainerIndexType &m_crs_col_ind,
-
68 const ContainerWeightType &m_crs_values,
-
69 const ContainerWeightType &volumes) :
-
70 _number_of_cells(nb_c),
-
71 _m_CRS_Row_Ptr(m_crs_row_ptr),
-
72 _m_CRS_Col_Ind(m_crs_col_ind),
-
73 _m_CRS_Values(m_crs_values),
-
74 _volumes(volumes) {
-
75 _visited.resize(_number_of_cells);
-
76 fill(_visited.begin(), _visited.end(), false);
+
66 const ContainerIndexType &m_crs_row_ptr,
+
67 const ContainerIndexType &m_crs_col_ind,
+
68 const ContainerWeightType &m_crs_values,
+
69 const ContainerWeightType &volumes) :
+
70 _number_of_cells(nb_c),
+
71 _m_CRS_Row_Ptr(m_crs_row_ptr),
+
72 _m_CRS_Col_Ind(m_crs_col_ind),
+
73 _m_CRS_Values(m_crs_values),
+
74 _volumes(volumes) {
+
75 _visited.resize(_number_of_cells);
+
76 fill(_visited.begin(), _visited.end(), false);
77 }
78
-
80 virtual ~Graph() = default;
+
80 virtual ~Graph() = default;
81
-
84 CoMMAIndexType _number_of_cells;
+
84 CoMMAIndexType _number_of_cells;
85
-
87 vector<bool> _visited;
+
87 std::vector<bool> _visited;
88
-
90 ContainerIndexType _m_CRS_Row_Ptr;
+
90 ContainerIndexType _m_CRS_Row_Ptr;
91
-
93 ContainerIndexType _m_CRS_Col_Ind;
+
93 ContainerIndexType _m_CRS_Col_Ind;
94
-
96 ContainerWeightType _m_CRS_Values;
+
96 ContainerWeightType _m_CRS_Values;
97
-
99 ContainerWeightType _volumes;
+
99 ContainerWeightType _volumes;
100
-
104 void DFS(const CoMMAIndexType &i_fc) {
-
105 _visited[i_fc] = true;
-
106 for (auto it = neighbours_cbegin(i_fc); it != neighbours_cend(i_fc); ++it) {
-
107 if (!_visited[*it]) { DFS(*it); }
+
104 void DFS(const CoMMAIndexType &i_fc) {
+
105 _visited[i_fc] = true;
+
106 for (auto it = neighbours_cbegin(i_fc); it != neighbours_cend(i_fc); ++it) {
+
107 if (!_visited[*it]) { DFS(*it); }
108 }
109 }
110
-
114 void BFS(const CoMMAIndexType &root) {
-
115 deque<CoMMAIndexType> coda;
-
116 ContainerIndexType path;
+
114 void BFS(const CoMMAIndexType &root) {
+
115 std::deque<CoMMAIndexType> coda;
+
116 ContainerIndexType path;
117 coda.push_back(root);
-
118 vector<bool> visited(_number_of_cells, false);
+
118 std::vector<bool> visited(_number_of_cells, false);
119 visited[root] = true;
-
120 vector<optional<CoMMAIndexType>> prev(_number_of_cells, nullopt);
-
121 while (!coda.empty()) {
-
122 CoMMAIndexType node = coda.front();
-
123 coda.pop_front();
-
124 for (auto it = neighbours_cbegin(node); it != neighbours_cend(node);
-
125 ++it) {
-
126 if (!visited[*it]) {
-
127 coda.push_pack(*it);
-
128 visited[*it] = true;
-
129 prev[it] = node;
-
130 }
-
131 }
-
132 }
-
133 // to print the inverse path
-
134 CoMMAIndexType retro = prev[_number_of_cells - 1];
-
135 while (retro.has_value()) {
-
136 path.push_back(retro);
-
137 retro = prev[retro];
-
138 }
-
139 reverse(path.begin(), path.end());
-
140 // for (CoMMAIntType i = 0; i < _number_of_cells; i++) {
-
141 // cout<<"BFS"<<path[i]<<endl;
-
142 // }
-
143 }
-
144
-
149 inline CoMMAIntType get_nb_of_neighbours(CoMMAIndexType i_c) const {
-
150 // Return the number of neighbours of the ith cell
-
151 return _m_CRS_Row_Ptr[i_c + 1] - _m_CRS_Row_Ptr[i_c];
-
152 }
-
153
-
159 ContainerIndexType get_neighbours(const CoMMAIndexType &i_c) const {
-
160 // given the index of a cell return the neighbourhoods of this cell
-
161 CoMMAIndexType ind = _m_CRS_Row_Ptr[i_c];
-
162 CoMMAIndexType ind_p_one = _m_CRS_Row_Ptr[i_c + 1];
-
163 // insert the values of the CRS_value from begin+ind (pointed to the face)
-
164 // till the next pointed one, so related to all the connected areas (and
-
165 // hence to the faces)
-
166 ContainerIndexType result(
-
167 _m_CRS_Col_Ind.begin() + ind, _m_CRS_Col_Ind.begin() + ind_p_one);
-
168 return result;
-
169 }
-
170
-
175 inline ContainerIndexConstIt neighbours_cbegin(
-
176 const CoMMAIndexType &i_c) const {
-
177 return _m_CRS_Col_Ind.cbegin() + _m_CRS_Row_Ptr[i_c];
-
178 }
-
179
-
185 inline ContainerIndexConstIt neighbours_cend(
-
186 const CoMMAIndexType &i_c) const {
-
187 return _m_CRS_Col_Ind.cbegin() + _m_CRS_Row_Ptr[i_c + 1];
-
188 }
-
189
-
196 inline ContainerWeightType get_weights(const CoMMAIndexType &i_c) const {
-
197 // Given the index of a cell, return the value of the faces connected
-
198 CoMMAIndexType ind = _m_CRS_Row_Ptr[i_c];
-
199 CoMMAIndexType ind_p_one = _m_CRS_Row_Ptr[i_c + 1];
-
200 // insert the values of the CRS_value from begin+ind (pointed to the face)
-
201 // till the next pointed one, so related to all the connected areas (and
-
202 // hence to the faces)
-
203 ContainerWeightType result(
-
204 _m_CRS_Values.begin() + ind, _m_CRS_Values.begin() + ind_p_one);
-
205 return result;
-
206 }
-
207
-
212 inline ContainerWeightConstIt weights_cbegin(
-
213 const CoMMAIndexType &i_c) const {
-
214 return _m_CRS_Values.cbegin() + _m_CRS_Row_Ptr[i_c];
-
215 }
-
216
-
222 inline ContainerWeightConstIt weights_cend(const CoMMAIndexType &i_c) const {
-
223 return _m_CRS_Values.cbegin() + _m_CRS_Row_Ptr[i_c + 1];
-
224 }
-
225
-
229 bool check_connectivity() {
-
230 for (auto i = decltype(_number_of_cells){0}; i < _number_of_cells; ++i) {
-
231 _visited.push_back(false);
-
232 }
-
233 if (_number_of_cells == 1) { return (true); }
-
234 DFS(_m_CRS_Col_Ind[0]);
-
235 for (auto i = decltype(_number_of_cells){0}; i < _number_of_cells; ++i) {
-
236 if (_visited[i] == false) { return (false); }
-
237 }
-
238 return (true);
-
239 }
-
240
-
245 CoMMAIntType compute_min_fc_compactness_inside_a_cc(
-
246 const unordered_set<CoMMAIndexType> &s_fc) const {
-
247 // Compute Compactness of a cc
-
248 // Be careful: connectivity is assumed
-
249 if (s_fc.size() > 1) {
-
250 unordered_map<CoMMAIndexType, CoMMAIntType> dict_fc_compactness =
-
251 compute_fc_compactness_inside_a_cc(s_fc);
-
252 if (dict_fc_compactness.empty()) { return 0; }
-
253 return min_element(
-
254 dict_fc_compactness.begin(), dict_fc_compactness.end(),
-
255 [](const auto &p, const auto &q) { return p.second < q.second; })
-
256 ->second;
-
257 } else {
-
258 return 0;
-
259 }
-
260 }
-
261
-
268 unordered_map<CoMMAIndexType, CoMMAIntType>
-
269 compute_fc_compactness_inside_a_cc(
-
270 const unordered_set<CoMMAIndexType> &s_fc) const {
-
271 unordered_map<CoMMAIndexType, CoMMAIntType> dict_fc_compactness;
-
272 if (!s_fc.empty()) {
-
273 if (s_fc.size() == 1) {
-
274 dict_fc_compactness[*s_fc.begin()] = 0;
-
275 } else {
-
276 for (const CoMMAIndexType &i_fc : s_fc) {
-
277 dict_fc_compactness[i_fc] = count_if(
-
278 this->_m_CRS_Col_Ind.cbegin() + this->_m_CRS_Row_Ptr[i_fc],
-
279 this->_m_CRS_Col_Ind.cbegin() + this->_m_CRS_Row_Ptr[i_fc + 1],
-
280 [&](const auto &neigh) { return s_fc.count(neigh) > 0; });
-
281 }
-
282 }
-
283 }
-
284 return dict_fc_compactness;
-
285 }
-
286};
-
287
-
296template<
-
297 typename CoMMAIndexType,
-
298 typename CoMMAWeightType,
-
299 typename CoMMAIntType>
-
300class Subgraph : public Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
-
301public:
-
303 using BaseClass = Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
305 using typename BaseClass::ContainerIndexType;
-
307 using typename BaseClass::ContainerWeightType;
-
321 Subgraph(
-
322 const CoMMAIndexType &nb_c,
-
323 const ContainerIndexType &m_crs_row_ptr,
-
324 const ContainerIndexType &m_crs_col_ind,
-
325 const ContainerWeightType &m_crs_values,
-
326 const ContainerWeightType &volumes,
-
327 const ContainerIndexType &mapping_l_to_g,
-
328 const bool &is_isotropic) :
-
329 Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
-
330 nb_c, m_crs_row_ptr, m_crs_col_ind, m_crs_values, volumes),
-
331 _is_isotropic(is_isotropic),
-
332 _cardinality(static_cast<CoMMAIntType>(nb_c)),
-
333 _mapping_l_to_g(mapping_l_to_g) {
-
334 // Compactness computation
-
335 _compactness = static_cast<CoMMAIntType>(nb_c);
-
336 for (auto c = decltype(nb_c){0}; c < nb_c; ++c) {
-
337 const CoMMAIntType n_neighs =
-
338 static_cast<CoMMAIntType>(m_crs_row_ptr[c + 1] - m_crs_row_ptr[c]);
-
339 if (n_neighs < _compactness) { _compactness = n_neighs; }
-
340 }
-
341 }
-
342
-
344 virtual ~Subgraph() = default;
-
345
-
347 bool _is_isotropic;
-
348
-
352 CoMMAIntType _cardinality;
-
353
-
357 CoMMAIntType _compactness;
-
358
-
363 ContainerIndexType _mapping_l_to_g;
-
364
-
373 void insert_node(
-
374 const ContainerIndexType &v_neigh,
-
375 const CoMMAIndexType &i_fc,
-
376 const CoMMAWeightType &volume,
-
377 const ContainerWeightType &weight) {
-
378 // Use the mapping
-
379 // local vector of neighbourhood
-
380 ContainerIndexType v_l_neigh{};
-
381 // @todo this solution clearly help in the connection of the subnode BUT can
-
382 // bring to instability and errors.
-
383 for (const auto &elem : v_neigh) {
-
384 const auto low1 =
-
385 find(_mapping_l_to_g.begin(), _mapping_l_to_g.end(), elem);
-
386 if (low1 != _mapping_l_to_g.end()) {
-
387 v_l_neigh.push_back(low1 - _mapping_l_to_g.begin());
-
388 }
-
389 }
-
390 // variable to add weight for each face
-
391 CoMMAIntType iter_weight = 0;
-
392 CoMMAIndexType local_index = this->_m_CRS_Row_Ptr.size() - 1;
-
393 // initialization pointers for insertion, pointing to the first element of
-
394 // each
-
395 auto row_end = this->_m_CRS_Row_Ptr.end() - 1;
-
396
-
397 // cycle on the set of neighbours
-
398 for (const auto &elem : v_l_neigh) {
-
399 // insert the node and the weight (we have an iterator for this and
-
400 // remember that at edge is associated one weight) look at here
-
401 // https://stackoverflow.com/questions/71299247/inserting-an-element-in-given-positions-more-than-one-of-a-vector/71299304#71299304
-
402 // to understand why we re-initialize.
-
403 this->_m_CRS_Col_Ind.insert(
-
404 this->_m_CRS_Col_Ind.begin() + this->_m_CRS_Row_Ptr[elem], local_index);
-
405 this->_m_CRS_Values.insert(
-
406 this->_m_CRS_Values.begin() + this->_m_CRS_Row_Ptr[elem],
-
407 weight[iter_weight]);
-
408 // We modify the row pointer as far it is related with what we have done
-
409 // before
-
410 for (auto it = this->_m_CRS_Row_Ptr.begin() + elem;
-
411 it != this->_m_CRS_Row_Ptr.end(); ++it) {
-
412 ++(*it);
-
413 }
-
414 // we do the same.
-
415 this->_m_CRS_Col_Ind.insert(this->_m_CRS_Col_Ind.end(), elem);
-
416 this->_m_CRS_Values.insert(
-
417 this->_m_CRS_Values.end(), weight[iter_weight]);
-
418 // We increment the weight flag iterator
-
419 ++iter_weight;
-
420 }
-
421 this->_m_CRS_Row_Ptr.push_back(*row_end + v_neigh.size());
-
422 this->_volumes.push_back(volume);
-
423 _mapping_l_to_g.push_back(i_fc);
-
424 }
-
425
-
430 void remove_node(const CoMMAIndexType &elemento) {
-
431 // Pass to the local
-
432 auto low = find(_mapping_l_to_g.begin(), _mapping_l_to_g.end(), elemento);
-
433 const CoMMAIndexType i_fc = low - _mapping_l_to_g.begin();
-
434 // Getting neighbours, store them before erasing
-
435 ContainerIndexType v_neigh = this->get_neighbours(i_fc);
-
436
-
437 // weight iterator for erasing in the weight vector
-
438 auto pos_col = this->_m_CRS_Col_Ind.begin();
-
439 auto pos_Values = this->_m_CRS_Values.begin();
-
440 for (const auto &elem : v_neigh) {
-
441 CoMMAIndexType ind = this->_m_CRS_Row_Ptr[elem];
-
442 CoMMAIndexType ind_p_one = this->_m_CRS_Row_Ptr[elem + 1];
-
443 // Constant to keep track and erase the weight
-
444 for (auto it = pos_col + ind; it != pos_col + ind_p_one; ++it) {
-
445 if (*it == i_fc) {
-
446 this->_m_CRS_Col_Ind.erase(it);
-
447 // define the exact position of the element for the processing of the
-
448 // weight later.
-
449 this->_m_CRS_Values.erase(pos_Values + (it - pos_col));
-
450 // for each found i decrease the successive of 1 for the offset
-
451 for (auto it_bis = this->_m_CRS_Row_Ptr.begin() + elem + 1;
-
452 it_bis != this->_m_CRS_Row_Ptr.end(); ++it_bis) {
-
453 *it_bis = *it_bis - 1;
-
454 }
-
455 }
-
456 }
-
457 }
-
458 // reduce the row ptr value of the deleted value
-
459 // do the same with i_fc
-
460 CoMMAIndexType ind = this->_m_CRS_Row_Ptr[i_fc];
-
461 CoMMAIndexType ind_p_one = this->_m_CRS_Row_Ptr[i_fc + 1];
-
462 for (auto it = pos_col + ind; it != pos_col + ind_p_one; ++it) {
-
463 this->_m_CRS_Col_Ind.erase(it);
-
464 // define the exact position of the element for the processing of the
-
465 // weight later.
-
466 this->_m_CRS_Values.erase(pos_Values + (it - pos_col));
-
467 // for each found i decrease the successive of 1 for the offset
-
468 for (auto it_bis = this->_m_CRS_Row_Ptr.begin() + i_fc + 1;
-
469 it_bis != this->_m_CRS_Row_Ptr.end(); ++it_bis) {
-
470 *it_bis = *it_bis - 1;
-
471 }
-
472 }
-
473 // Get rid of the col element
-
474 auto Col_pointer = this->_m_CRS_Row_Ptr.begin() + i_fc;
-
475 // Modify the mapping
-
476 auto mapping_pointer = _mapping_l_to_g.begin() + i_fc;
-
477 auto volumes_pointer = this->_volumes.begin() + i_fc;
-
478 this->_volumes.erase(volumes_pointer);
-
479 this->_m_CRS_Row_Ptr.erase(Col_pointer);
-
480 _mapping_l_to_g.erase(mapping_pointer);
-
481 // now we do not have nomore our node, but we must create a mapping between
-
482 // the before and now, and translate it in the col_ind and update the
-
483 // mapping with the global graph mapping for the renumbering of the nodes
-
484 vector<optional<CoMMAIndexType>> internal_mapping;
-
485 internal_mapping.reserve(this->_m_CRS_Row_Ptr.size() + 1);
-
486 CoMMAIndexType indice = 0;
-
487 for (auto ix = decltype(this->_m_CRS_Row_Ptr.size()){0};
-
488 ix < this->_m_CRS_Row_Ptr.size() + 1; ++ix) {
-
489 if (static_cast<decltype(i_fc)>(ix) != i_fc) {
-
490 internal_mapping.push_back(indice);
-
491 indice++;
-
492 } else {
-
493 internal_mapping.push_back(nullopt);
-
494 }
-
495 }
-
496 for (auto &actual : this->_m_CRS_Col_Ind) {
-
497 assert(internal_mapping[actual].has_value());
-
498 actual = internal_mapping[actual].value();
-
499 }
-
500 }
-
501};
-
502
-
510template<
-
511 typename CoMMAIndexType,
-
512 typename CoMMAWeightType,
-
513 typename CoMMAIntType>
-
514class Dual_Graph : public Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
-
515public:
-
517 using BaseClass = Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
519 using typename BaseClass::ContainerIndexType;
-
521 using typename BaseClass::ContainerWeightType;
-
523 using CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>;
-
525 using CoMMASetOfPairType =
-
526 set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType>>;
-
527
-
543 Dual_Graph(
-
544 const CoMMAIndexType &nb_c,
-
545 const ContainerIndexType &m_crs_row_ptr,
-
546 const ContainerIndexType &m_crs_col_ind,
-
547 const ContainerWeightType &m_crs_values,
-
548 const ContainerWeightType &volumes,
-
549 const vector<vector<CoMMAWeightType>> &centers,
-
550 const vector<CoMMAIntType> &n_bnd_faces,
-
551 const CoMMAIntType dimension,
-
552 const ContainerIndexType &anisotropic_compliant_fc) :
-
553 Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
-
554 nb_c, m_crs_row_ptr, m_crs_col_ind, m_crs_values, volumes),
-
555 _n_bnd_faces(n_bnd_faces),
-
556 _s_anisotropic_compliant_cells(
-
557 anisotropic_compliant_fc.begin(), anisotropic_compliant_fc.end()),
-
558 _centers(centers) {
-
559 // Function to compute the aspect-ratio
-
560 _compute_AR = dimension == 2
-
561 ? [](const CoMMAWeightType min_s, const CoMMAWeightType max_s)
-
562 -> CoMMAWeightType { return max_s / min_s; }
-
563 : [](const CoMMAWeightType min_s, const CoMMAWeightType max_s)
-
564 -> CoMMAWeightType { return sqrt(max_s / min_s); };
-
565 }
-
566
-
568 virtual ~Dual_Graph() = default;
+
120 std::vector<std::optional<CoMMAIndexType>> prev(
+
121 _number_of_cells, std::nullopt);
+
122 while (!coda.empty()) {
+
123 CoMMAIndexType node = coda.front();
+
124 coda.pop_front();
+
125 for (auto it = neighbours_cbegin(node); it != neighbours_cend(node);
+
126 ++it) {
+
127 if (!visited[*it]) {
+
128 coda.push_pack(*it);
+
129 visited[*it] = true;
+
130 prev[it] = node;
+
131 }
+
132 }
+
133 }
+
134 // to print the inverse path
+
135 CoMMAIndexType retro = prev[_number_of_cells - 1];
+
136 while (retro.has_value()) {
+
137 path.push_back(retro);
+
138 retro = prev[retro];
+
139 }
+
140 reverse(path.begin(), path.end());
+
141 // for (CoMMAIntType i = 0; i < _number_of_cells; i++) {
+
142 // std::cout<<"BFS"<<path[i]<<std::endl;
+
143 // }
+
144 }
+
145
+
150 inline CoMMAIntType get_nb_of_neighbours(CoMMAIndexType i_c) const {
+
151 // Return the number of neighbours of the ith cell
+
152 return _m_CRS_Row_Ptr[i_c + 1] - _m_CRS_Row_Ptr[i_c];
+
153 }
+
154
+
160 ContainerIndexType get_neighbours(const CoMMAIndexType &i_c) const {
+
161 // given the index of a cell return the neighbourhoods of this cell
+
162 CoMMAIndexType ind = _m_CRS_Row_Ptr[i_c];
+
163 CoMMAIndexType ind_p_one = _m_CRS_Row_Ptr[i_c + 1];
+
164 // insert the values of the CRS_value from begin+ind (pointed to the face)
+
165 // till the next pointed one, so related to all the connected areas (and
+
166 // hence to the faces)
+
167 ContainerIndexType result(
+
168 _m_CRS_Col_Ind.begin() + ind, _m_CRS_Col_Ind.begin() + ind_p_one);
+
169 return result;
+
170 }
+
171
+
176 inline ContainerIndexConstIt neighbours_cbegin(
+
177 const CoMMAIndexType &i_c) const {
+
178 return _m_CRS_Col_Ind.cbegin() + _m_CRS_Row_Ptr[i_c];
+
179 }
+
180
+
186 inline ContainerIndexConstIt neighbours_cend(
+
187 const CoMMAIndexType &i_c) const {
+
188 return _m_CRS_Col_Ind.cbegin() + _m_CRS_Row_Ptr[i_c + 1];
+
189 }
+
190
+
197 inline ContainerWeightType get_weights(const CoMMAIndexType &i_c) const {
+
198 // Given the index of a cell, return the value of the faces connected
+
199 CoMMAIndexType ind = _m_CRS_Row_Ptr[i_c];
+
200 CoMMAIndexType ind_p_one = _m_CRS_Row_Ptr[i_c + 1];
+
201 // insert the values of the CRS_value from begin+ind (pointed to the face)
+
202 // till the next pointed one, so related to all the connected areas (and
+
203 // hence to the faces)
+
204 ContainerWeightType result(
+
205 _m_CRS_Values.begin() + ind, _m_CRS_Values.begin() + ind_p_one);
+
206 return result;
+
207 }
+
208
+
213 inline ContainerWeightConstIt weights_cbegin(
+
214 const CoMMAIndexType &i_c) const {
+
215 return _m_CRS_Values.cbegin() + _m_CRS_Row_Ptr[i_c];
+
216 }
+
217
+
223 inline ContainerWeightConstIt weights_cend(const CoMMAIndexType &i_c) const {
+
224 return _m_CRS_Values.cbegin() + _m_CRS_Row_Ptr[i_c + 1];
+
225 }
+
226
+
230 bool check_connectivity() {
+
231 for (auto i = decltype(_number_of_cells){0}; i < _number_of_cells; ++i) {
+
232 _visited.push_back(false);
+
233 }
+
234 if (_number_of_cells == 1) { return (true); }
+
235 DFS(_m_CRS_Col_Ind[0]);
+
236 for (auto i = decltype(_number_of_cells){0}; i < _number_of_cells; ++i) {
+
237 if (!_visited[i]) { return (false); }
+
238 }
+
239 return (true);
+
240 }
+
241
+
246 CoMMAIntType compute_min_fc_compactness_inside_a_cc(
+
247 const std::unordered_set<CoMMAIndexType> &s_fc) const {
+
248 // Compute Compactness of a cc
+
249 // Be careful: connectivity is assumed
+
250 if (s_fc.size() > 1) {
+
251 std::unordered_map<CoMMAIndexType, CoMMAIntType> dict_fc_compactness =
+
252 compute_fc_compactness_inside_a_cc(s_fc);
+
253 if (dict_fc_compactness.empty()) { return 0; }
+
254 return min_element(
+
255 dict_fc_compactness.begin(), dict_fc_compactness.end(),
+
256 [](const auto &left, const auto &right) {
+
257 return left.second < right.second;
+
258 })
+
259 ->second;
+
260 }
+
261 return 0;
+
262 }
+
263
+
270 std::unordered_map<CoMMAIndexType, CoMMAIntType>
+
271 compute_fc_compactness_inside_a_cc(
+
272 const std::unordered_set<CoMMAIndexType> &s_fc) const {
+
273 std::unordered_map<CoMMAIndexType, CoMMAIntType> dict_fc_compactness;
+
274 if (!s_fc.empty()) {
+
275 if (s_fc.size() == 1) {
+
276 dict_fc_compactness[*s_fc.begin()] = 0;
+
277 } else {
+
278 for (const CoMMAIndexType &i_fc : s_fc) {
+
279 dict_fc_compactness[i_fc] = count_if(
+
280 this->_m_CRS_Col_Ind.cbegin() + this->_m_CRS_Row_Ptr[i_fc],
+
281 this->_m_CRS_Col_Ind.cbegin() + this->_m_CRS_Row_Ptr[i_fc + 1],
+
282 [&](const auto &neigh) { return s_fc.count(neigh) > 0; });
+
283 }
+
284 }
+
285 }
+
286 return dict_fc_compactness;
+
287 }
+
288};
+
289
+
298template<
+
299 typename CoMMAIndexType,
+
300 typename CoMMAWeightType,
+
301 typename CoMMAIntType>
+
302class Subgraph : public Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
303public:
+
305 using BaseClass = Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
307 using typename BaseClass::ContainerIndexType;
+
309 using typename BaseClass::ContainerWeightType;
+
323 Subgraph(
+
324 const CoMMAIndexType &nb_c,
+
325 const ContainerIndexType &m_crs_row_ptr,
+
326 const ContainerIndexType &m_crs_col_ind,
+
327 const ContainerWeightType &m_crs_values,
+
328 const ContainerWeightType &volumes,
+
329 const ContainerIndexType &mapping_l_to_g,
+
330 const bool &is_isotropic) :
+
331 Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
+
332 nb_c, m_crs_row_ptr, m_crs_col_ind, m_crs_values, volumes),
+
333 _is_isotropic(is_isotropic),
+
334 _cardinality(static_cast<CoMMAIntType>(nb_c)),
+
335 _mapping_l_to_g(mapping_l_to_g) {
+
336 // Compactness computation
+
337 _compactness = static_cast<CoMMAIntType>(nb_c);
+
338 for (auto c = decltype(nb_c){0}; c < nb_c; ++c) {
+
339 const auto n_neighs =
+
340 static_cast<CoMMAIntType>(m_crs_row_ptr[c + 1] - m_crs_row_ptr[c]);
+
341 if (n_neighs < _compactness) { _compactness = n_neighs; }
+
342 }
+
343 }
+
344
+
346 ~Subgraph() override = default;
+
347
+
349 bool _is_isotropic;
+
350
+
354 CoMMAIntType _cardinality;
+
355
+
359 CoMMAIntType _compactness;
+
360
+
365 ContainerIndexType _mapping_l_to_g;
+
366
+
375 void insert_node(
+
376 const ContainerIndexType &v_neigh,
+
377 const CoMMAIndexType &i_fc,
+
378 const CoMMAWeightType &volume,
+
379 const ContainerWeightType &weight) {
+
380 // Use the mapping
+
381 // local vector of neighbourhood
+
382 ContainerIndexType v_l_neigh{};
+
383 // @todo this solution clearly help in the connection of the subnode BUT can
+
384 // bring to instability and errors.
+
385 for (const auto &elem : v_neigh) {
+
386 const auto low1 =
+
387 std::find(_mapping_l_to_g.begin(), _mapping_l_to_g.end(), elem);
+
388 if (low1 != _mapping_l_to_g.end()) {
+
389 v_l_neigh.push_back(low1 - _mapping_l_to_g.begin());
+
390 }
+
391 }
+
392 // variable to add weight for each face
+
393 CoMMAIntType iter_weight = 0;
+
394 CoMMAIndexType local_index = this->_m_CRS_Row_Ptr.size() - 1;
+
395 // initialization pointers for insertion, pointing to the first element of
+
396 // each
+
397 auto row_end = this->_m_CRS_Row_Ptr.end() - 1;
+
398
+
399 // cycle on the set of neighbours
+
400 for (const auto &elem : v_l_neigh) {
+
401 // insert the node and the weight (we have an iterator for this and
+
402 // remember that at edge is associated one weight) look at here
+
403 // https://stackoverflow.com/questions/71299247/inserting-an-element-in-given-positions-more-than-one-of-a-vector/71299304#71299304
+
404 // to understand why we re-initialize.
+
405 this->_m_CRS_Col_Ind.insert(
+
406 this->_m_CRS_Col_Ind.begin() + this->_m_CRS_Row_Ptr[elem], local_index);
+
407 this->_m_CRS_Values.insert(
+
408 this->_m_CRS_Values.begin() + this->_m_CRS_Row_Ptr[elem],
+
409 weight[iter_weight]);
+
410 // We modify the row pointer as far it is related with what we have done
+
411 // before
+
412 for (auto it = this->_m_CRS_Row_Ptr.begin() + elem;
+
413 it != this->_m_CRS_Row_Ptr.end(); ++it) {
+
414 ++(*it);
+
415 }
+
416 // we do the same.
+
417 this->_m_CRS_Col_Ind.insert(this->_m_CRS_Col_Ind.end(), elem);
+
418 this->_m_CRS_Values.insert(
+
419 this->_m_CRS_Values.end(), weight[iter_weight]);
+
420 // We increment the weight flag iterator
+
421 ++iter_weight;
+
422 }
+
423 this->_m_CRS_Row_Ptr.push_back(*row_end + v_neigh.size());
+
424 this->_volumes.push_back(volume);
+
425 _mapping_l_to_g.push_back(i_fc);
+
426 }
+
427
+
432 void remove_node(const CoMMAIndexType &elemento) {
+
433 // Pass to the local
+
434 auto low =
+
435 std::find(_mapping_l_to_g.begin(), _mapping_l_to_g.end(), elemento);
+
436 const CoMMAIndexType i_fc = low - _mapping_l_to_g.begin();
+
437 // Getting neighbours, store them before erasing
+
438 ContainerIndexType v_neigh = this->get_neighbours(i_fc);
+
439
+
440 // weight iterator for erasing in the weight vector
+
441 auto pos_col = this->_m_CRS_Col_Ind.begin();
+
442 auto pos_Values = this->_m_CRS_Values.begin();
+
443 for (const auto &elem : v_neigh) {
+
444 CoMMAIndexType ind = this->_m_CRS_Row_Ptr[elem];
+
445 CoMMAIndexType ind_p_one = this->_m_CRS_Row_Ptr[elem + 1];
+
446 // Constant to keep track and erase the weight
+
447 for (auto it = pos_col + ind; it != pos_col + ind_p_one; ++it) {
+
448 if (*it == i_fc) {
+
449 this->_m_CRS_Col_Ind.erase(it);
+
450 // define the exact position of the element for the processing of the
+
451 // weight later.
+
452 this->_m_CRS_Values.erase(pos_Values + (it - pos_col));
+
453 // for each found i decrease the successive of 1 for the offset
+
454 for (auto it_bis = this->_m_CRS_Row_Ptr.begin() + elem + 1;
+
455 it_bis != this->_m_CRS_Row_Ptr.end(); ++it_bis) {
+
456 *it_bis = *it_bis - 1;
+
457 }
+
458 }
+
459 }
+
460 }
+
461 // reduce the row ptr value of the deleted value
+
462 // do the same with i_fc
+
463 CoMMAIndexType ind = this->_m_CRS_Row_Ptr[i_fc];
+
464 CoMMAIndexType ind_p_one = this->_m_CRS_Row_Ptr[i_fc + 1];
+
465 for (auto it = pos_col + ind; it != pos_col + ind_p_one; ++it) {
+
466 this->_m_CRS_Col_Ind.erase(it);
+
467 // define the exact position of the element for the processing of the
+
468 // weight later.
+
469 this->_m_CRS_Values.erase(pos_Values + (it - pos_col));
+
470 // for each found i decrease the successive of 1 for the offset
+
471 for (auto it_bis = this->_m_CRS_Row_Ptr.begin() + i_fc + 1;
+
472 it_bis != this->_m_CRS_Row_Ptr.end(); ++it_bis) {
+
473 *it_bis = *it_bis - 1;
+
474 }
+
475 }
+
476 // Get rid of the col element
+
477 auto Col_pointer = this->_m_CRS_Row_Ptr.begin() + i_fc;
+
478 // Modify the mapping
+
479 auto mapping_pointer = _mapping_l_to_g.begin() + i_fc;
+
480 auto volumes_pointer = this->_volumes.begin() + i_fc;
+
481 this->_volumes.erase(volumes_pointer);
+
482 this->_m_CRS_Row_Ptr.erase(Col_pointer);
+
483 _mapping_l_to_g.erase(mapping_pointer);
+
484 // now we do not have nomore our node, but we must create a mapping between
+
485 // the before and now, and translate it in the col_ind and update the
+
486 // mapping with the global graph mapping for the renumbering of the nodes
+
487 std::vector<std::optional<CoMMAIndexType>> internal_mapping;
+
488 internal_mapping.reserve(this->_m_CRS_Row_Ptr.size() + 1);
+
489 CoMMAIndexType indice = 0;
+
490 for (auto ix = decltype(this->_m_CRS_Row_Ptr.size()){0};
+
491 ix < this->_m_CRS_Row_Ptr.size() + 1; ++ix) {
+
492 if (static_cast<decltype(i_fc)>(ix) != i_fc) {
+
493 internal_mapping.push_back(indice);
+
494 indice++;
+
495 } else {
+
496 internal_mapping.push_back(std::nullopt);
+
497 }
+
498 }
+
499 for (auto &actual : this->_m_CRS_Col_Ind) {
+
500 assert(internal_mapping[actual].has_value());
+
501 actual = internal_mapping[actual].value();
+
502 }
+
503 }
+
504};
+
505
+
513template<
+
514 typename CoMMAIndexType,
+
515 typename CoMMAWeightType,
+
516 typename CoMMAIntType>
+
517class Dual_Graph : public Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
518public:
+
520 using BaseClass = Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
522 using typename BaseClass::ContainerIndexType;
+
524 using typename BaseClass::ContainerWeightType;
+
526 using CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>;
+
528 using CoMMASetOfPairType =
+
529 std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType>>;
+
530
+
546 Dual_Graph(
+
547 const CoMMAIndexType &nb_c,
+
548 const ContainerIndexType &m_crs_row_ptr,
+
549 const ContainerIndexType &m_crs_col_ind,
+
550 const ContainerWeightType &m_crs_values,
+
551 const ContainerWeightType &volumes,
+
552 const std::vector<std::vector<CoMMAWeightType>> &centers,
+
553 const std::vector<CoMMAIntType> &n_bnd_faces,
+
554 const CoMMAIntType dimension,
+
555 const ContainerIndexType &anisotropic_compliant_fc) :
+
556 Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
+
557 nb_c, m_crs_row_ptr, m_crs_col_ind, m_crs_values, volumes),
+
558 _n_bnd_faces(n_bnd_faces),
+
559 _s_anisotropic_compliant_cells(
+
560 anisotropic_compliant_fc.begin(), anisotropic_compliant_fc.end()),
+
561 _centers(centers) {
+
562 // Function to compute the aspect-ratio
+
563 _compute_AR = dimension == 2
+
564 ? [](const CoMMAWeightType min_s, const CoMMAWeightType max_s)
+
565 -> CoMMAWeightType { return max_s / min_s; }
+
566 : [](const CoMMAWeightType min_s, const CoMMAWeightType max_s)
+
567 -> CoMMAWeightType { return sqrt(max_s / min_s); };
+
568 }
569
-
571 const vector<CoMMAIntType> &_n_bnd_faces;
+
571 ~Dual_Graph() override = default;
572
-
578 const unordered_set<CoMMAIndexType> _s_anisotropic_compliant_cells;
-
579
-
581 const vector<vector<CoMMAWeightType>> &_centers;
+
574 const std::vector<CoMMAIntType> &_n_bnd_faces;
+
575
+
581 const std::unordered_set<CoMMAIndexType> _s_anisotropic_compliant_cells;
582
-
588 function<CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)>
-
589 _compute_AR;
-
590
-
595 inline CoMMAIntType get_n_boundary_faces(const CoMMAIndexType idx_c) const {
-
596 return _n_bnd_faces[idx_c];
-
597 }
-
602 inline bool is_on_boundary(const CoMMAIndexType idx_c) const {
-
603 return _n_bnd_faces[idx_c] > 0;
-
604 }
-
605
-
623 void tag_anisotropic_cells(
-
624 ContainerWeightType &max_weights,
-
625 vector<bool> &is_anisotropic,
-
626 deque<CoMMAIndexType> &aniso_seeds_pool,
-
627 const CoMMAWeightType threshold_anisotropy,
-
628 const ContainerWeightType &priority_weights,
-
629 const CoMMAIndexType preserving) {
-
630 CoMMASetOfPairType aniso_w_weights{};
-
631 if (threshold_anisotropy < 0) {
-
632 for (const CoMMAIndexType i_fc : _s_anisotropic_compliant_cells) {
-
633 aniso_w_weights.emplace(i_fc, priority_weights[i_fc]);
-
634 max_weights[i_fc] =
-
635 *(max_element(this->weights_cbegin(i_fc), this->weights_cend(i_fc)));
-
636 }
-
637 } else {
-
638 for (const CoMMAIndexType i_fc : _s_anisotropic_compliant_cells) {
-
639 CoMMAWeightType min_weight = numeric_limits<CoMMAWeightType>::max();
-
640 CoMMAWeightType max_weight = 0.0;
-
641
-
642 // computation of min_weight, max_weight for the current cell
-
643 // Process of every faces/Neighbours and compute for the current cell
-
644 // the neighbourhood and the area associated with the neighbourhood
-
645 // cells
-
646 const ContainerIndexType v_neighbours = this->get_neighbours(i_fc);
-
647 const ContainerWeightType v_weights = this->get_weights(i_fc);
-
648
-
649 assert(v_neighbours.size() == v_weights.size());
-
650 auto nb_neighbours = v_neighbours.size();
-
651
-
652 for (auto i_n = decltype(nb_neighbours){0}; i_n < nb_neighbours;
-
653 i_n++) {
-
654 // to avoid special case where the boundary value are stored
-
655 if (v_neighbours[i_n] != i_fc) {
-
656 const CoMMAWeightType i_w_fc_n = v_weights[i_n];
-
657 if (max_weight < i_w_fc_n) { max_weight = i_w_fc_n; }
-
658 if (min_weight > i_w_fc_n) { min_weight = i_w_fc_n; }
-
659 } else {
-
660 nb_neighbours--;
-
661 }
-
662 }
-
663
-
664 max_weights[i_fc] = max_weight;
-
665 // Compute the aspect-ratio and add cell to list if necessary
-
666 const auto ar = _compute_AR(min_weight, max_weight);
-
667 if (preserving == 0) {
-
668 // Anisotropy criteria for the line Admissibility
-
669 if (ar >= threshold_anisotropy) {
-
670 // If the ratio is more than the given threshold of the biggest with
-
671 // the smallest cell, add it
-
672 aniso_w_weights.emplace(i_fc, priority_weights[i_fc]);
-
673 }
-
674 } else if (preserving == 2) {
-
675 if (ar >= threshold_anisotropy) {
-
676 if (is_on_boundary(i_fc) > 0 && nb_neighbours == 3) {
-
677 aniso_w_weights.emplace(i_fc, priority_weights[i_fc]);
-
678 } else if (nb_neighbours == 4) {
-
679 aniso_w_weights.emplace(i_fc, priority_weights[i_fc]);
-
680 }
-
681 }
-
682 } else if (preserving == 3) {
-
683 if (ar >= threshold_anisotropy) {
-
684 if (is_on_boundary(i_fc) > 0 && nb_neighbours == 5) {
-
685 aniso_w_weights.emplace(i_fc, priority_weights[i_fc]);
-
686 } else if (nb_neighbours == 6) {
-
687 aniso_w_weights.emplace(i_fc, priority_weights[i_fc]);
-
688 }
-
689 }
-
690 }
-
691 } // End for compliant cells
-
692 } // End if threshold
-
693
-
694 // Build result
-
695 for (const auto &[i_fc, w] : aniso_w_weights) {
-
696 is_anisotropic[i_fc] = true;
-
697 aniso_seeds_pool.emplace_back(i_fc);
-
698 }
-
699 }
-
700
-
704 inline CoMMAIntType get_nb_cells() const { return this->_number_of_cells; }
-
705
-
714 inline unordered_set<CoMMAIndexType> get_neighbourhood_of_cc(
-
715 const unordered_set<CoMMAIndexType> &s_seeds,
-
716 const vector<bool> &is_fc_agglomerated_tmp) const {
-
717 unordered_set<CoMMAIndexType> cc_neighs{};
-
718 for (const auto fc : s_seeds)
-
719 for (auto n = this->neighbours_cbegin(fc); n != this->neighbours_cend(fc);
-
720 ++n)
-
721 if (!is_fc_agglomerated_tmp[*n] && s_seeds.find(*n) == s_seeds.end())
-
722 // If not agglomerated and not part of the coarse cell
-
723 cc_neighs.insert(*n);
-
724 return cc_neighs;
-
725 }
-
726
-
741 void compute_neighbourhood_of_cc(
-
742 const unordered_set<CoMMAIndexType> &s_seeds,
-
743 CoMMAIntType &nb_of_order_of_neighbourhood,
-
744 unordered_map<CoMMAIndexType, CoMMAIntType> &d_n_of_seed,
-
745 const CoMMAIntType max_card,
-
746 const vector<bool> &is_fc_agglomerated_tmp) const {
-
747 // Basic checks
-
748 assert(max_card > 1);
-
749 // dict of FC with the order of neighbouring from seed
-
750 unordered_map<CoMMAIndexType, CoMMAIntType> d_n_of_order_o_m_one;
-
751 // we initialize for seeds where order is 0
-
752 for (const CoMMAIndexType &i_fc : s_seeds) {
-
753 d_n_of_order_o_m_one[i_fc] = 0;
-
754 }
-
755
-
756 CoMMAIntType i_order = 1;
+
584 const std::vector<std::vector<CoMMAWeightType>> &_centers;
+
585
+
591 std::function<CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)>
+
592 _compute_AR;
+
593
+
598 inline CoMMAIntType get_n_boundary_faces(const CoMMAIndexType idx_c) const {
+
599 return _n_bnd_faces[idx_c];
+
600 }
+
605 inline bool is_on_boundary(const CoMMAIndexType idx_c) const {
+
606 return _n_bnd_faces[idx_c] > 0;
+
607 }
+
608
+
626 void tag_anisotropic_cells(
+
627 ContainerWeightType &max_weights,
+
628 std::vector<bool> &is_anisotropic,
+
629 std::deque<CoMMAIndexType> &aniso_seeds_pool,
+
630 const CoMMAWeightType threshold_anisotropy,
+
631 const ContainerWeightType &priority_weights,
+
632 const CoMMAIndexType preserving) {
+
633 CoMMASetOfPairType aniso_w_weights{};
+
634 if (threshold_anisotropy < 0) {
+
635 for (const CoMMAIndexType i_fc : _s_anisotropic_compliant_cells) {
+
636 aniso_w_weights.emplace(i_fc, priority_weights[i_fc]);
+
637 max_weights[i_fc] =
+
638 *(max_element(this->weights_cbegin(i_fc), this->weights_cend(i_fc)));
+
639 }
+
640 } else {
+
641 for (const CoMMAIndexType i_fc : _s_anisotropic_compliant_cells) {
+
642 CoMMAWeightType min_weight =
+
643 std::numeric_limits<CoMMAWeightType>::max();
+
644 CoMMAWeightType max_weight = 0.0;
+
645
+
646 // computation of min_weight, max_weight for the current cell
+
647 // Process of every faces/Neighbours and compute for the current cell
+
648 // the neighbourhood and the area associated with the neighbourhood
+
649 // cells
+
650 const ContainerIndexType v_neighbours = this->get_neighbours(i_fc);
+
651 const ContainerWeightType v_weights = this->get_weights(i_fc);
+
652
+
653 assert(v_neighbours.size() == v_weights.size());
+
654 auto nb_neighbours = v_neighbours.size();
+
655
+
656 for (auto i_n = decltype(nb_neighbours){0}; i_n < nb_neighbours;
+
657 i_n++) {
+
658 // to avoid special case where the boundary value are stored
+
659 if (v_neighbours[i_n] != i_fc) {
+
660 const CoMMAWeightType i_w_fc_n = v_weights[i_n];
+
661 if (max_weight < i_w_fc_n) { max_weight = i_w_fc_n; }
+
662 if (min_weight > i_w_fc_n) { min_weight = i_w_fc_n; }
+
663 } else {
+
664 nb_neighbours--;
+
665 }
+
666 }
+
667
+
668 max_weights[i_fc] = max_weight;
+
669 // Compute the aspect-ratio and add cell to list if necessary
+
670 const auto ar = _compute_AR(min_weight, max_weight);
+
671 // Anisotropy criteria for the line Admissibility
+
672 if (ar >= threshold_anisotropy) {
+
673 switch (preserving) {
+
674 case 2:
+
675 if (
+
676 (is_on_boundary(i_fc) > 0 && nb_neighbours == 3)
+
677 || nb_neighbours == 4)
+
678 aniso_w_weights.emplace(i_fc, priority_weights[i_fc]);
+
679 break;
+
680 case 3:
+
681 if (
+
682 (is_on_boundary(i_fc) > 0 && nb_neighbours == 5)
+
683 || nb_neighbours == 6)
+
684 aniso_w_weights.emplace(i_fc, priority_weights[i_fc]);
+
685 case 0:
+
686 default:
+
687 // If the ratio is more than the given threshold of the biggest
+
688 // with the smallest cell, add it
+
689 aniso_w_weights.emplace(i_fc, priority_weights[i_fc]);
+
690 break;
+
691 } // End switch
+
692 } // End if ar
+
693 } // End for compliant cells
+
694 } // End if threshold
+
695
+
696 // Build result
+
697 for (const auto &[i_fc, w] : aniso_w_weights) {
+
698 is_anisotropic[i_fc] = true;
+
699 aniso_seeds_pool.emplace_back(i_fc);
+
700 }
+
701 }
+
702
+
706 inline CoMMAIntType get_nb_cells() const { return this->_number_of_cells; }
+
707
+
716 inline std::unordered_set<CoMMAIndexType> get_neighbourhood_of_cc(
+
717 const std::unordered_set<CoMMAIndexType> &s_seeds,
+
718 const std::vector<bool> &is_fc_agglomerated_tmp) const {
+
719 std::unordered_set<CoMMAIndexType> cc_neighs{};
+
720 for (const auto fc : s_seeds)
+
721 for (auto n = this->neighbours_cbegin(fc); n != this->neighbours_cend(fc);
+
722 ++n)
+
723 if (!is_fc_agglomerated_tmp[*n] && s_seeds.find(*n) == s_seeds.end())
+
724 // If not agglomerated and not part of the coarse cell
+
725 cc_neighs.insert(*n);
+
726 return cc_neighs;
+
727 }
+
728
+
743 void compute_neighbourhood_of_cc(
+
744 const std::unordered_set<CoMMAIndexType> &s_seeds,
+
745 CoMMAIntType &nb_of_order_of_neighbourhood,
+
746 std::unordered_map<CoMMAIndexType, CoMMAIntType> &d_n_of_seed,
+
747 const CoMMAIntType max_card,
+
748 const std::vector<bool> &is_fc_agglomerated_tmp) const {
+
749 // Basic checks
+
750 assert(max_card > 1);
+
751 // dict of FC with the order of neighbouring from seed
+
752 std::unordered_map<CoMMAIndexType, CoMMAIntType> d_n_of_order_o_m_one;
+
753 // we initialize for seeds where order is 0
+
754 for (const CoMMAIndexType &i_fc : s_seeds) {
+
755 d_n_of_order_o_m_one[i_fc] = 0;
+
756 }
757
-
758 while ((i_order < nb_of_order_of_neighbourhood + 1)
-
759 || static_cast<CoMMAIntType>(
-
760 d_n_of_seed.size() + d_n_of_order_o_m_one.size())
-
761 < max_card) {
-
762 unordered_map<CoMMAIndexType, CoMMAIntType> d_n_of_order_o;
-
763
-
764 // If here, add elements of previous elements to output dictionary
-
765 for (auto id_M_one : d_n_of_order_o_m_one) {
-
766 d_n_of_seed[id_M_one.first] = id_M_one.second;
-
767 }
-
768
-
769 for (const auto &i_k_v : d_n_of_order_o_m_one) {
-
770 // For all the cells in the previous neighbourhood order...
-
771
-
772 CoMMAIndexType seed_tmp = i_k_v.first;
+
758 CoMMAIntType i_order = 1;
+
759
+
760 while ((i_order < nb_of_order_of_neighbourhood + 1)
+
761 || static_cast<CoMMAIntType>(
+
762 d_n_of_seed.size() + d_n_of_order_o_m_one.size())
+
763 < max_card) {
+
764 std::unordered_map<CoMMAIndexType, CoMMAIntType> d_n_of_order_o;
+
765
+
766 // If here, add elements of previous elements to output dictionary
+
767 for (auto id_M_one : d_n_of_order_o_m_one) {
+
768 d_n_of_seed[id_M_one.first] = id_M_one.second;
+
769 }
+
770
+
771 for (const auto &i_k_v : d_n_of_order_o_m_one) {
+
772 // For all the cells in the previous neighbourhood order...
773
-
774 for (auto i_fc_n = this->neighbours_cbegin(seed_tmp);
-
775 i_fc_n != this->neighbours_cend(seed_tmp); ++i_fc_n) {
-
776 // For all the neighbours of current seed...
-
777
-
778 if (
-
779 (d_n_of_seed.count(*i_fc_n) == 0)
-
780 && ((!is_fc_agglomerated_tmp[*i_fc_n]))) {
-
781 // If not yet in the final dictionary and not yet agglomerated...
-
782
-
783 if (d_n_of_order_o.count(*i_fc_n) == 0) {
-
784 // If not yet in the current neighbourhood order...
-
785 // a fc can be access via multiple ways. We look for the quickest
-
786 if (d_n_of_order_o_m_one.count(*i_fc_n)) {
-
787 // If it was already in the previous neighbourhood order
-
788
-
789 if (i_order < d_n_of_order_o_m_one[*i_fc_n]) {
-
790 // If current order smaller than the previous one
-
791 // ...update the order
-
792 d_n_of_order_o[*i_fc_n] = i_order;
-
793 }
-
794 } else {
-
795 // ...add the neighbour
-
796 d_n_of_order_o[*i_fc_n] = i_order;
-
797 }
-
798 }
-
799 }
-
800 }
-
801 }
-
802
-
803 // Exit condition (while)
-
804 if (d_n_of_order_o.empty()) {
-
805 // No more neighbours available:
-
806 break;
-
807 }
-
808
-
809 // Update previous order
-
810 d_n_of_order_o_m_one.clear();
-
811 for (auto id : d_n_of_order_o) {
-
812 d_n_of_order_o_m_one[id.first] = id.second;
-
813 }
-
814 i_order++;
-
815 } // End of while
-
816 // Update of d_n_of_seed
-
817 // d_n_of_seed.update(d_n_of_order_o_m_one)
-
818 for (auto id_M_one : d_n_of_order_o_m_one) {
-
819 d_n_of_seed[id_M_one.first] = id_M_one.second;
-
820 }
-
821
-
822 // We remove the seed from the neighbours of seed
-
823 for (const CoMMAIndexType &i_fc : s_seeds) {
-
824 d_n_of_seed.erase(i_fc);
-
825 }
-
826
-
827 nb_of_order_of_neighbourhood = i_order;
-
828 }
-
829};
-
830
-
831#endif // COMMA_PROJECT_DUAL_GRAPH_H
+
774 CoMMAIndexType seed_tmp = i_k_v.first;
+
775
+
776 for (auto i_fc_n = this->neighbours_cbegin(seed_tmp);
+
777 i_fc_n != this->neighbours_cend(seed_tmp); ++i_fc_n) {
+
778 // For all the neighbours of current seed...
+
779
+
780 if (
+
781 (d_n_of_seed.count(*i_fc_n) == 0)
+
782 && ((!is_fc_agglomerated_tmp[*i_fc_n]))) {
+
783 // If not yet in the final dictionary and not yet agglomerated...
+
784
+
785 if (d_n_of_order_o.count(*i_fc_n) == 0) {
+
786 // If not yet in the current neighbourhood order...
+
787 // a fc can be access via multiple ways. We look for the quickest
+
788 if (d_n_of_order_o_m_one.count(*i_fc_n)) {
+
789 // If it was already in the previous neighbourhood order
+
790
+
791 if (i_order < d_n_of_order_o_m_one[*i_fc_n]) {
+
792 // If current order smaller than the previous one
+
793 // ...update the order
+
794 d_n_of_order_o[*i_fc_n] = i_order;
+
795 }
+
796 } else {
+
797 // ...add the neighbour
+
798 d_n_of_order_o[*i_fc_n] = i_order;
+
799 }
+
800 }
+
801 }
+
802 }
+
803 }
+
804
+
805 // Exit condition (while)
+
806 if (d_n_of_order_o.empty()) {
+
807 // No more neighbours available:
+
808 break;
+
809 }
+
810
+
811 // Update previous order
+
812 d_n_of_order_o_m_one.clear();
+
813 for (auto id : d_n_of_order_o) {
+
814 d_n_of_order_o_m_one[id.first] = id.second;
+
815 }
+
816 i_order++;
+
817 } // End of while
+
818 // Update of d_n_of_seed
+
819 // d_n_of_seed.update(d_n_of_order_o_m_one)
+
820 for (auto id_M_one : d_n_of_order_o_m_one) {
+
821 d_n_of_seed[id_M_one.first] = id_M_one.second;
+
822 }
+
823
+
824 // We remove the seed from the neighbours of seed
+
825 for (const CoMMAIndexType &i_fc : s_seeds) {
+
826 d_n_of_seed.erase(i_fc);
+
827 }
+
828
+
829 nb_of_order_of_neighbourhood = i_order;
+
830 }
+
831};
+
832
+
833} // end namespace comma
+
834
+
835#endif // COMMA_PROJECT_DUAL_GRAPH_H
Seeds_Pool.h
-
Dual_Graph
A class implementing the CRS global graph representation of the global mesh.
Definition: Dual_Graph.h:514
-
Dual_Graph::~Dual_Graph
virtual ~Dual_Graph()=default
Destructor of the class.
-
Dual_Graph::_n_bnd_faces
const vector< CoMMAIntType > & _n_bnd_faces
Vector telling how many boundary faces each cell has.
Definition: Dual_Graph.h:571
-
Dual_Graph::get_nb_cells
CoMMAIntType get_nb_cells() const
Getter that returns the number of cells.
Definition: Dual_Graph.h:704
-
Dual_Graph::get_neighbourhood_of_cc
unordered_set< CoMMAIndexType > get_neighbourhood_of_cc(const unordered_set< CoMMAIndexType > &s_seeds, const vector< bool > &is_fc_agglomerated_tmp) const
Get the fine cells neighbours of a coarse cell.
Definition: Dual_Graph.h:714
-
Dual_Graph::CoMMASetOfPairType
set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Dual_Graph.h:526
-
Dual_Graph::compute_neighbourhood_of_cc
void compute_neighbourhood_of_cc(const unordered_set< CoMMAIndexType > &s_seeds, CoMMAIntType &nb_of_order_of_neighbourhood, unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const CoMMAIntType max_card, const vector< bool > &is_fc_agglomerated_tmp) const
Compute the dictionary of compactness of fine cells inside a coarse cell.
Definition: Dual_Graph.h:741
-
Dual_Graph::_compute_AR
function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
Function which computes the aspect-ratio from the minimum and maximum faces In 3D: In 2D: (Recal...
Definition: Dual_Graph.h:589
-
Dual_Graph::is_on_boundary
bool is_on_boundary(const CoMMAIndexType idx_c) const
Whether a cell is on the boundary.
Definition: Dual_Graph.h:602
-
Dual_Graph::_s_anisotropic_compliant_cells
const unordered_set< CoMMAIndexType > _s_anisotropic_compliant_cells
Elements that are checked if they are anisotropic. If an element satisfies the condition for being an...
Definition: Dual_Graph.h:578
-
Dual_Graph::tag_anisotropic_cells
void tag_anisotropic_cells(ContainerWeightType &max_weights, vector< bool > &is_anisotropic, deque< CoMMAIndexType > &aniso_seeds_pool, const CoMMAWeightType threshold_anisotropy, const ContainerWeightType &priority_weights, const CoMMAIndexType preserving)
Tag cells as anisotropic if their aspect-ratio is over a given threshold and order them according to ...
Definition: Dual_Graph.h:623
-
Dual_Graph::ContainerWeightType
vector< CoMMAWeightType > ContainerWeightType
Type for containers of weights.
Definition: Dual_Graph.h:49
-
Dual_Graph::ContainerIndexType
vector< CoMMAIndexType > ContainerIndexType
Type for containers of indices.
Definition: Dual_Graph.h:47
-
Dual_Graph::Dual_Graph
Dual_Graph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes, const vector< vector< CoMMAWeightType > > &centers, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType dimension, const ContainerIndexType &anisotropic_compliant_fc)
Constructor of the class.
Definition: Dual_Graph.h:543
-
Dual_Graph::_centers
const vector< vector< CoMMAWeightType > > & _centers
Vector of cell centers.
Definition: Dual_Graph.h:581
-
Dual_Graph::get_n_boundary_faces
CoMMAIntType get_n_boundary_faces(const CoMMAIndexType idx_c) const
Return how many boundary faces a certain cell has.
Definition: Dual_Graph.h:595
-
Dual_Graph::CoMMAPairType
pair< CoMMAIndexType, CoMMAWeightType > CoMMAPairType
Type of pair.
Definition: Dual_Graph.h:523
-
Graph
An interface class responsible of storing the cell centered dual graph and of acting on it (it is an ...
Definition: Dual_Graph.h:44
-
Graph::_visited
vector< bool > _visited
Helper vector for the DFS.
Definition: Dual_Graph.h:87
-
Graph::weights_cend
ContainerWeightConstIt weights_cend(const CoMMAIndexType &i_c) const
Get constant pointer to the element following the last neighbour of cell i_c.
Definition: Dual_Graph.h:222
-
Graph::neighbours_cend
ContainerIndexConstIt neighbours_cend(const CoMMAIndexType &i_c) const
Get constant pointer to the element following the last neighbour of cell i_c.
Definition: Dual_Graph.h:185
-
Graph::_m_CRS_Col_Ind
ContainerIndexType _m_CRS_Col_Ind
Vector of column index of CRS representation.
Definition: Dual_Graph.h:93
-
Graph::ContainerWeightConstIt
typename ContainerWeightType::const_iterator ContainerWeightConstIt
Type for constant iterators of containers of weights.
Definition: Dual_Graph.h:53
-
Graph::_volumes
ContainerWeightType _volumes
Vector of volumes.
Definition: Dual_Graph.h:99
-
Graph::compute_fc_compactness_inside_a_cc
unordered_map< CoMMAIndexType, CoMMAIntType > compute_fc_compactness_inside_a_cc(const unordered_set< CoMMAIndexType > &s_fc) const
Compute the dictionary of compactness of fine cells inside a coarse cell.
Definition: Dual_Graph.h:269
-
Graph::~Graph
virtual ~Graph()=default
Destructor of the class.
-
Graph::_m_CRS_Values
ContainerWeightType _m_CRS_Values
Vector of area weight of CRS representation.
Definition: Dual_Graph.h:96
-
Graph::get_weights
ContainerWeightType get_weights(const CoMMAIndexType &i_c) const
Based on the area of the faces composing the cell given as an input, we retrieve the faces connecting...
Definition: Dual_Graph.h:196
-
Graph::_number_of_cells
CoMMAIndexType _number_of_cells
Number of nodes in the Graph (it corresponds to the number of cells in the subgraph or the dual graph...
Definition: Dual_Graph.h:84
-
Graph::weights_cbegin
ContainerWeightConstIt weights_cbegin(const CoMMAIndexType &i_c) const
Get constant pointer to the first neighbour of cell i_c.
Definition: Dual_Graph.h:212
-
Graph::_m_CRS_Row_Ptr
ContainerIndexType _m_CRS_Row_Ptr
Vector of row pointer of CRS representation.
Definition: Dual_Graph.h:90
-
Graph::ContainerIndexConstIt
typename ContainerIndexType::const_iterator ContainerIndexConstIt
Type for constant iterators of containers of indices.
Definition: Dual_Graph.h:51
-
Graph::Graph
Graph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)
Constructor of the class.
Definition: Dual_Graph.h:64
-
Graph::ContainerWeightType
vector< CoMMAWeightType > ContainerWeightType
Type for containers of weights.
Definition: Dual_Graph.h:49
-
Graph::neighbours_cbegin
ContainerIndexConstIt neighbours_cbegin(const CoMMAIndexType &i_c) const
Get constant pointer to the first neighbour of cell i_c.
Definition: Dual_Graph.h:175
-
Graph::ContainerIndexType
vector< CoMMAIndexType > ContainerIndexType
Type for containers of indices.
Definition: Dual_Graph.h:47
-
Graph::compute_min_fc_compactness_inside_a_cc
CoMMAIntType compute_min_fc_compactness_inside_a_cc(const unordered_set< CoMMAIndexType > &s_fc) const
Compute the minimum compactness of fine cells inside a coarse cell.
Definition: Dual_Graph.h:245
-
Graph::BFS
void BFS(const CoMMAIndexType &root)
Breadth First Search (BFS) function.
Definition: Dual_Graph.h:114
-
Graph::get_neighbours
ContainerIndexType get_neighbours(const CoMMAIndexType &i_c) const
Based on the CRS representation retrieves the neighbours of the cell given as an input.
Definition: Dual_Graph.h:159
-
Graph::check_connectivity
bool check_connectivity()
Check the connectivity of the graph.
Definition: Dual_Graph.h:229
-
Graph::get_nb_of_neighbours
CoMMAIntType get_nb_of_neighbours(CoMMAIndexType i_c) const
Retrieve the number of neighbours.
Definition: Dual_Graph.h:149
-
Graph::DFS
void DFS(const CoMMAIndexType &i_fc)
Depth First Search (DFS) recursive function.
Definition: Dual_Graph.h:104
-
Subgraph
A class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the im...
Definition: Dual_Graph.h:300
-
Subgraph::_is_isotropic
bool _is_isotropic
Whether it originates from an isotropic cell.
Definition: Dual_Graph.h:347
-
Subgraph::_compactness
CoMMAIntType _compactness
Compactness of the given subgraph. The compactness is the minimum number of internal neighbours.
Definition: Dual_Graph.h:357
-
Subgraph::_cardinality
CoMMAIntType _cardinality
Cardinality of the given subgraph, alias the number of nodes contained.
Definition: Dual_Graph.h:352
-
Subgraph::ContainerWeightType
vector< CoMMAWeightType > ContainerWeightType
Type for containers of weights.
Definition: Dual_Graph.h:49
-
Subgraph::ContainerIndexType
vector< CoMMAIndexType > ContainerIndexType
Type for containers of indices.
Definition: Dual_Graph.h:47
-
Subgraph::~Subgraph
virtual ~Subgraph()=default
Destructor of the class.
-
Subgraph::_mapping_l_to_g
ContainerIndexType _mapping_l_to_g
Mapping from the local number of node to the global. Being a subgraph this variable connect the local...
Definition: Dual_Graph.h:363
-
Subgraph::insert_node
void insert_node(const ContainerIndexType &v_neigh, const CoMMAIndexType &i_fc, const CoMMAWeightType &volume, const ContainerWeightType &weight)
Insert a node in the subgraph and add it to the mapping the.
Definition: Dual_Graph.h:373
-
Subgraph::Subgraph
Subgraph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes, const ContainerIndexType &mapping_l_to_g, const bool &is_isotropic)
Constructor of the class.
Definition: Dual_Graph.h:321
-
Subgraph::remove_node
void remove_node(const CoMMAIndexType &elemento)
Remove a node from the CRS representation and automatically adjust the mapping.
Definition: Dual_Graph.h:430
+
comma::Dual_Graph
A class implementing the CRS global graph representation of the global mesh.
Definition: Dual_Graph.h:517
+
comma::Dual_Graph::get_n_boundary_faces
CoMMAIntType get_n_boundary_faces(const CoMMAIndexType idx_c) const
Return how many boundary faces a certain cell has.
Definition: Dual_Graph.h:598
+
comma::Dual_Graph::get_nb_cells
CoMMAIntType get_nb_cells() const
Getter that returns the number of cells.
Definition: Dual_Graph.h:706
+
comma::Dual_Graph::compute_neighbourhood_of_cc
void compute_neighbourhood_of_cc(const std::unordered_set< CoMMAIndexType > &s_seeds, CoMMAIntType &nb_of_order_of_neighbourhood, std::unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const CoMMAIntType max_card, const std::vector< bool > &is_fc_agglomerated_tmp) const
Compute the dictionary of compactness of fine cells inside a coarse cell.
Definition: Dual_Graph.h:743
+
comma::Dual_Graph::is_on_boundary
bool is_on_boundary(const CoMMAIndexType idx_c) const
Whether a cell is on the boundary.
Definition: Dual_Graph.h:605
+
comma::Dual_Graph::_centers
const std::vector< std::vector< CoMMAWeightType > > & _centers
Vector of cell centers.
Definition: Dual_Graph.h:584
+
comma::Dual_Graph::Dual_Graph
Dual_Graph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes, const std::vector< std::vector< CoMMAWeightType > > &centers, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType dimension, const ContainerIndexType &anisotropic_compliant_fc)
Constructor of the class.
Definition: Dual_Graph.h:546
+
comma::Dual_Graph::get_neighbourhood_of_cc
std::unordered_set< CoMMAIndexType > get_neighbourhood_of_cc(const std::unordered_set< CoMMAIndexType > &s_seeds, const std::vector< bool > &is_fc_agglomerated_tmp) const
Get the fine cells neighbours of a coarse cell.
Definition: Dual_Graph.h:716
+
comma::Dual_Graph::CoMMAPairType
std::pair< CoMMAIndexType, CoMMAWeightType > CoMMAPairType
Type of pair.
Definition: Dual_Graph.h:526
+
comma::Dual_Graph::_n_bnd_faces
const std::vector< CoMMAIntType > & _n_bnd_faces
Vector telling how many boundary faces each cell has.
Definition: Dual_Graph.h:574
+
comma::Dual_Graph::ContainerWeightType
std::vector< CoMMAWeightType > ContainerWeightType
Type for containers of weights.
Definition: Dual_Graph.h:49
+
comma::Dual_Graph::ContainerIndexType
std::vector< CoMMAIndexType > ContainerIndexType
Type for containers of indices.
Definition: Dual_Graph.h:47
+
comma::Dual_Graph::CoMMASetOfPairType
std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Dual_Graph.h:529
+
comma::Dual_Graph::~Dual_Graph
~Dual_Graph() override=default
Destructor of the class.
+
comma::Dual_Graph::_compute_AR
std::function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
Function which computes the aspect-ratio from the minimum and maximum faces In 3D: In 2D: (Recal...
Definition: Dual_Graph.h:592
+
comma::Dual_Graph::tag_anisotropic_cells
void tag_anisotropic_cells(ContainerWeightType &max_weights, std::vector< bool > &is_anisotropic, std::deque< CoMMAIndexType > &aniso_seeds_pool, const CoMMAWeightType threshold_anisotropy, const ContainerWeightType &priority_weights, const CoMMAIndexType preserving)
Tag cells as anisotropic if their aspect-ratio is over a given threshold and order them according to ...
Definition: Dual_Graph.h:626
+
comma::Dual_Graph::_s_anisotropic_compliant_cells
const std::unordered_set< CoMMAIndexType > _s_anisotropic_compliant_cells
Elements that are checked if they are anisotropic. If an element satisfies the condition for being an...
Definition: Dual_Graph.h:581
+
comma::Graph
An interface class responsible of storing the cell centered dual graph and of acting on it (it is an ...
Definition: Dual_Graph.h:44
+
comma::Graph::weights_cbegin
ContainerWeightConstIt weights_cbegin(const CoMMAIndexType &i_c) const
Get constant pointer to the first neighbour of cell i_c.
Definition: Dual_Graph.h:213
+
comma::Graph::_m_CRS_Values
ContainerWeightType _m_CRS_Values
Vector of area weight of CRS representation.
Definition: Dual_Graph.h:96
+
comma::Graph::DFS
void DFS(const CoMMAIndexType &i_fc)
Depth First Search (DFS) recursive function.
Definition: Dual_Graph.h:104
+
comma::Graph::Graph
Graph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)
Constructor of the class.
Definition: Dual_Graph.h:64
+
comma::Graph::get_neighbours
ContainerIndexType get_neighbours(const CoMMAIndexType &i_c) const
Based on the CRS representation retrieves the neighbours of the cell given as an input.
Definition: Dual_Graph.h:160
+
comma::Graph::ContainerWeightConstIt
typename ContainerWeightType::const_iterator ContainerWeightConstIt
Type for constant iterators of containers of weights.
Definition: Dual_Graph.h:53
+
comma::Graph::neighbours_cend
ContainerIndexConstIt neighbours_cend(const CoMMAIndexType &i_c) const
Get constant pointer to the element following the last neighbour of cell i_c.
Definition: Dual_Graph.h:186
+
comma::Graph::compute_min_fc_compactness_inside_a_cc
CoMMAIntType compute_min_fc_compactness_inside_a_cc(const std::unordered_set< CoMMAIndexType > &s_fc) const
Compute the minimum compactness of fine cells inside a coarse cell.
Definition: Dual_Graph.h:246
+
comma::Graph::get_nb_of_neighbours
CoMMAIntType get_nb_of_neighbours(CoMMAIndexType i_c) const
Retrieve the number of neighbours.
Definition: Dual_Graph.h:150
+
comma::Graph::compute_fc_compactness_inside_a_cc
std::unordered_map< CoMMAIndexType, CoMMAIntType > compute_fc_compactness_inside_a_cc(const std::unordered_set< CoMMAIndexType > &s_fc) const
Compute the dictionary of compactness of fine cells inside a coarse cell.
Definition: Dual_Graph.h:271
+
comma::Graph::ContainerIndexConstIt
typename ContainerIndexType::const_iterator ContainerIndexConstIt
Type for constant iterators of containers of indices.
Definition: Dual_Graph.h:51
+
comma::Graph::_m_CRS_Row_Ptr
ContainerIndexType _m_CRS_Row_Ptr
Vector of row pointer of CRS representation.
Definition: Dual_Graph.h:90
+
comma::Graph::check_connectivity
bool check_connectivity()
Check the connectivity of the graph.
Definition: Dual_Graph.h:230
+
comma::Graph::weights_cend
ContainerWeightConstIt weights_cend(const CoMMAIndexType &i_c) const
Get constant pointer to the element following the last neighbour of cell i_c.
Definition: Dual_Graph.h:223
+
comma::Graph::_m_CRS_Col_Ind
ContainerIndexType _m_CRS_Col_Ind
Vector of column index of CRS representation.
Definition: Dual_Graph.h:93
+
comma::Graph::ContainerWeightType
std::vector< CoMMAWeightType > ContainerWeightType
Type for containers of weights.
Definition: Dual_Graph.h:49
+
comma::Graph::ContainerIndexType
std::vector< CoMMAIndexType > ContainerIndexType
Type for containers of indices.
Definition: Dual_Graph.h:47
+
comma::Graph::_number_of_cells
CoMMAIndexType _number_of_cells
Number of nodes in the Graph (it corresponds to the number of cells in the subgraph or the dual graph...
Definition: Dual_Graph.h:84
+
comma::Graph::~Graph
virtual ~Graph()=default
Destructor of the class.
+
comma::Graph::_volumes
ContainerWeightType _volumes
Vector of volumes.
Definition: Dual_Graph.h:99
+
comma::Graph::neighbours_cbegin
ContainerIndexConstIt neighbours_cbegin(const CoMMAIndexType &i_c) const
Get constant pointer to the first neighbour of cell i_c.
Definition: Dual_Graph.h:176
+
comma::Graph::get_weights
ContainerWeightType get_weights(const CoMMAIndexType &i_c) const
Based on the area of the faces composing the cell given as an input, we retrieve the faces connecting...
Definition: Dual_Graph.h:197
+
comma::Graph::_visited
std::vector< bool > _visited
Helper vector for the DFS.
Definition: Dual_Graph.h:87
+
comma::Graph::BFS
void BFS(const CoMMAIndexType &root)
Breadth First Search (BFS) function.
Definition: Dual_Graph.h:114
+
comma::Subgraph
A class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the im...
Definition: Dual_Graph.h:302
+
comma::Subgraph::_is_isotropic
bool _is_isotropic
Whether it originates from an isotropic cell.
Definition: Dual_Graph.h:349
+
comma::Subgraph::_compactness
CoMMAIntType _compactness
Compactness of the given subgraph. The compactness is the minimum number of internal neighbours.
Definition: Dual_Graph.h:359
+
comma::Subgraph::~Subgraph
~Subgraph() override=default
Destructor of the class.
+
comma::Subgraph::insert_node
void insert_node(const ContainerIndexType &v_neigh, const CoMMAIndexType &i_fc, const CoMMAWeightType &volume, const ContainerWeightType &weight)
Insert a node in the subgraph and add it to the mapping the.
Definition: Dual_Graph.h:375
+
comma::Subgraph::_mapping_l_to_g
ContainerIndexType _mapping_l_to_g
Mapping from the local number of node to the global. Being a subgraph this variable connect the local...
Definition: Dual_Graph.h:365
+
comma::Subgraph::Subgraph
Subgraph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes, const ContainerIndexType &mapping_l_to_g, const bool &is_isotropic)
Constructor of the class.
Definition: Dual_Graph.h:323
+
comma::Subgraph::_cardinality
CoMMAIntType _cardinality
Cardinality of the given subgraph, alias the number of nodes contained.
Definition: Dual_Graph.h:354
+
comma::Subgraph::ContainerWeightType
std::vector< CoMMAWeightType > ContainerWeightType
Type for containers of weights.
Definition: Dual_Graph.h:49
+
comma::Subgraph::remove_node
void remove_node(const CoMMAIndexType &elemento)
Remove a node from the CRS representation and automatically adjust the mapping.
Definition: Dual_Graph.h:432
+
comma::Subgraph::ContainerIndexType
std::vector< CoMMAIndexType > ContainerIndexType
Type for containers of indices.
Definition: Dual_Graph.h:47
+
comma
Definition: Agglomerator.h:34
diff --git a/_neighbourhood_8h.html b/_neighbourhood_8h.html index fb84afe..9af6fc9 100644 --- a/_neighbourhood_8h.html +++ b/_neighbourhood_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Neighbourhood.h File Reference +CoMMA: include/CoMMA/Neighbourhood.h File Reference @@ -92,7 +92,8 @@
-Classes
+Classes | +Namespaces
Neighbourhood.h File Reference
@@ -104,29 +105,34 @@ #include <set>
#include <unordered_set>
#include <vector>
-#include "Util.h"
+#include "CoMMA/Util.h"

Go to the source code of this file.

- - + + - - + + - - + + - - + + - - + + - - + + + +

Classes

class  Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class representing the neighbourhood of a given cell in the graph. Mind that no information about the element being already agglomerated or not is known here. More...
class  comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class representing the neighbourhood of a given cell in the graph. Mind that no information about the element being already agglomerated or not is known here. More...
 
class  Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class representing the neighbourhood of a given cell in the graph. In this derived class the neighbourhood is extended, meaning that all the neighbours seen so far are candidates. More...
class  comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class representing the neighbourhood of a given cell in the graph. In this derived class the neighbourhood is extended, meaning that all the neighbours seen so far are candidates. More...
 
class  Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class representing the neighbourhood of a given cell in the graph. In this derived class, the neighbourhood is 'pure front-advancing', meaning that the next candidates are only the direct neighbours of the last added cell. More...
class  comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class representing the neighbourhood of a given cell in the graph. In this derived class, the neighbourhood is 'pure front-advancing', meaning that the next candidates are only the direct neighbours of the last added cell. More...
 
class  NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Pure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy. More...
class  comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Pure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy. More...
 
class  NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Creator of Neighbourhood_Extended objects. It can create from scratch or by copy. More...
class  comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Creator of Neighbourhood_Extended objects. It can create from scratch or by copy. More...
 
class  NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Creator of Neighbourhood_Extended objects. It can create from scratch or by copy. More...
class  comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Creator of Neighbourhood_Extended objects. It can create from scratch or by copy. More...
 
+ +

+Namespaces

namespace  comma
 
@@ -134,7 +140,7 @@ diff --git a/_neighbourhood_8h.js b/_neighbourhood_8h.js index 5dc547d..7064e02 100644 --- a/_neighbourhood_8h.js +++ b/_neighbourhood_8h.js @@ -1,9 +1,9 @@ var _neighbourhood_8h = [ - [ "Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_neighbourhood.html", "class_neighbourhood" ], - [ "Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_neighbourhood___extended.html", "class_neighbourhood___extended" ], - [ "Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_neighbourhood___pure___front.html", "class_neighbourhood___pure___front" ], - [ "NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_neighbourhood_creator.html", "class_neighbourhood_creator" ], - [ "NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_neighbourhood_extended_creator.html", "class_neighbourhood_extended_creator" ], - [ "NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_neighbourhood_pure_front_creator.html", "class_neighbourhood_pure_front_creator" ] + [ "comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_neighbourhood.html", "classcomma_1_1_neighbourhood" ], + [ "comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_neighbourhood___extended.html", "classcomma_1_1_neighbourhood___extended" ], + [ "comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_neighbourhood___pure___front.html", "classcomma_1_1_neighbourhood___pure___front" ], + [ "comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_neighbourhood_creator.html", "classcomma_1_1_neighbourhood_creator" ], + [ "comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_neighbourhood_extended_creator.html", "classcomma_1_1_neighbourhood_extended_creator" ], + [ "comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_neighbourhood_pure_front_creator.html", "classcomma_1_1_neighbourhood_pure_front_creator" ] ]; \ No newline at end of file diff --git a/_neighbourhood_8h_source.html b/_neighbourhood_8h_source.html index a2e343b..49ba139 100644 --- a/_neighbourhood_8h_source.html +++ b/_neighbourhood_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Neighbourhood.h Source File +CoMMA: include/CoMMA/Neighbourhood.h Source File @@ -100,7 +100,7 @@
4/*
5 * CoMMA
6 *
-
7 * Copyright © 2023 ONERA
+
7 * Copyright © 2024 ONERA
8 *
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
10 * Contributors: Karim Anemiche
@@ -119,21 +119,21 @@
23#include <unordered_set>
24#include <vector>
25
-
26#include "Util.h"
+
26#include "CoMMA/Util.h"
27
-
28using namespace std;
+
28namespace comma {
29
38template<
39 typename CoMMAIndexType,
40 typename CoMMAWeightType,
41 typename CoMMAIntType>
-
42class Neighbourhood {
+
42class Neighbourhood {
43#if 0
44Some remarks about the implementation. All the work is done in the function "update",
45hence that is where we have to focus on. There are only two constraints for the
46returned object: it should be an iterable, and the content (the indices of the neighbours)
47must be ordered using their weights. An ordered set of pair of (index, weight) with
-
48CustomPairGreaterFunctor as comparator would not work as because we want unique indices
+
48CustomPairGreaterFunctor as comparator would not work as because we want unique indices
49and that would have been quite hard to achieve even if defining a custom operator==,
50have a look here, https://stackoverflow.com/a/1114862
51We still use sets, but we have an extra check before inserting whether there already is
@@ -141,336 +141,366 @@
53#endif
54
55public:
-
57 using CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>;
-
59 using CoMMASetOfPairType =
-
60 set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType>>;
-
63 using CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor<CoMMAPairType>;
-
65 using CandidatesContainerType = deque<CoMMAIndexType>;
+
57 using CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>;
+
59 using CoMMASetOfPairType =
+
60 std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType>>;
+
63 using CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor<CoMMAPairType>;
+
65 using CandidatesContainerType = std::deque<CoMMAIndexType>;
66
-
73 Neighbourhood(
-
74 const unordered_set<CoMMAIndexType> &s_neighbours_of_seed,
-
75 const vector<CoMMAWeightType> &weights) :
-
76 _s_neighbours_of_seed(move(s_neighbours_of_seed)),
-
77 _weights(weights),
-
78 _s_fc(),
-
79 _candidates() {}
+
73 Neighbourhood(
+
74 const std::unordered_set<CoMMAIndexType> &s_neighbours_of_seed,
+
75 const std::vector<CoMMAWeightType> &weights) :
+
76 _s_neighbours_of_seed(std::move(s_neighbours_of_seed)),
+
77 _weights(weights),
+
78 _s_fc(),
+
79 _candidates() {}
80
-
82 Neighbourhood(
-
83 const Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> &other) =
+
82 Neighbourhood(
+
83 const Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> &other) =
84 default;
85
-
93 virtual void update(
-
94 const CoMMAIndexType new_fc,
-
95 const vector<CoMMAIndexType> &new_neighbours) = 0;
-
96
-
101 inline const CandidatesContainerType &get_candidates() const {
-
102 return this->_candidates;
-
103 }
-
104
-
105protected:
-
110 const unordered_set<CoMMAIndexType> _s_neighbours_of_seed;
-
111
-
113 const vector<CoMMAWeightType> &_weights;
+
87 virtual ~Neighbourhood() = default;
+
88
+
96 virtual void update(
+
97 const CoMMAIndexType new_fc,
+
98 const std::vector<CoMMAIndexType> &new_neighbours) = 0;
+
99
+
104 inline const CandidatesContainerType &get_candidates() const {
+
105 return this->_candidates;
+
106 }
+
107
+
108protected:
+
113 const std::unordered_set<CoMMAIndexType> _s_neighbours_of_seed;
114
-
116 unordered_set<CoMMAIndexType> _s_fc;
+
116 const std::vector<CoMMAWeightType> &_weights;
117
-
121 CandidatesContainerType _candidates;
-
122
-
126 inline void extract_and_update_candidates(
-
127 const CoMMASetOfPairType &candidates_w_weights) {
-
128 for (const auto &[idx, w] : candidates_w_weights)
-
129 this->_candidates.push_back(idx);
-
130 }
-
131};
-
132
-
141template<
-
142 typename CoMMAIndexType,
-
143 typename CoMMAWeightType,
-
144 typename CoMMAIntType>
-
145class Neighbourhood_Extended :
-
146 public Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
-
147public:
-
149 using NeighbourhoodBaseType =
-
150 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
152 using typename NeighbourhoodBaseType::CoMMAPairType;
-
154 using typename NeighbourhoodBaseType::CoMMASetOfPairType;
-
157 using typename NeighbourhoodBaseType::CoMMAPairFindFirstBasedType;
-
158
-
165 Neighbourhood_Extended(
-
166 const unordered_set<CoMMAIndexType> &s_neighbours_of_seed,
-
167 const vector<CoMMAWeightType> &weights) :
-
168 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
-
169 s_neighbours_of_seed, weights) {}
-
170
-
172 Neighbourhood_Extended(
-
173 const Neighbourhood_Extended<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
174 &other) = default;
-
175
-
183 void update(
-
184 const CoMMAIndexType new_fc,
-
185 const vector<CoMMAIndexType> &new_neighbours) override {
-
186 // Add new_fc to current CC and remove it from previous neighbourhoods
-
187 this->_s_fc.insert(new_fc);
-
188 auto new_fc_ptr =
-
189 find(this->_candidates.begin(), this->_candidates.end(), new_fc);
-
190 if (new_fc_ptr != this->_candidates.end())
-
191 this->_candidates.erase(new_fc_ptr);
-
192
-
193 // Compute the set of direct neighbours allowed by original
-
194 // neighbourhood-order
-
195 CoMMASetOfPairType neighs;
-
196 for (const CoMMAIndexType &i_fc : new_neighbours) {
-
197 if (
-
198 (find(this->_candidates.begin(), this->_candidates.end(), i_fc)
-
199 == this->_candidates.end())
-
200 && (this->_s_fc.count(i_fc) == 0)
-
201 && (this->_s_neighbours_of_seed.count(i_fc) > 0)) {
-
202 // If not yet in the FON, not yet in the coarse cell and among the
-
203 // allowed neighbours, insert
-
204 neighs.emplace(i_fc, this->_weights[i_fc]);
-
205 }
-
206 }
-
207 // Just add new candidates at the back. This will leave candidates closer to
-
208 // the original seed at the top, hence giving them a slightly higher
-
209 // priority
-
210 this->extract_and_update_candidates(neighs);
-
211 }
-
212};
-
213
-
223template<
-
224 typename CoMMAIndexType,
-
225 typename CoMMAWeightType,
-
226 typename CoMMAIntType>
-
227class Neighbourhood_Pure_Front :
-
228 public Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
-
229public:
-
231 using NeighbourhoodBaseType =
-
232 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
234 using typename NeighbourhoodBaseType::CoMMAPairType;
-
236 using typename NeighbourhoodBaseType::CoMMASetOfPairType;
-
239 using typename NeighbourhoodBaseType::CoMMAPairFindFirstBasedType;
-
240
-
248 Neighbourhood_Pure_Front(
-
249 const unordered_set<CoMMAIndexType> &s_neighbours_of_seed,
-
250 const vector<CoMMAWeightType> &weights,
-
251 CoMMAIntType dimension) :
-
252 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
-
253 s_neighbours_of_seed, weights),
-
254 _q_neighs_w_weights(),
-
255 _dimension(dimension) {}
-
256
-
258 Neighbourhood_Pure_Front(const Neighbourhood_Pure_Front<
-
259 CoMMAIndexType,
-
260 CoMMAWeightType,
-
261 CoMMAIntType> &other) = default;
+
119 std::unordered_set<CoMMAIndexType> _s_fc;
+
120
+
124 CandidatesContainerType _candidates;
+
125
+
129 inline void extract_and_update_candidates(
+
130 const CoMMASetOfPairType &candidates_w_weights) {
+
131 for (const auto &[idx, w] : candidates_w_weights)
+
132 this->_candidates.push_back(idx);
+
133 }
+
134};
+
135
+
144template<
+
145 typename CoMMAIndexType,
+
146 typename CoMMAWeightType,
+
147 typename CoMMAIntType>
+
148class Neighbourhood_Extended :
+
149 public Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
150public:
+
152 using NeighbourhoodBaseType =
+
153 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
155 using typename NeighbourhoodBaseType::CoMMAPairType;
+
157 using typename NeighbourhoodBaseType::CoMMASetOfPairType;
+
160 using typename NeighbourhoodBaseType::CoMMAPairFindFirstBasedType;
+
161
+
168 Neighbourhood_Extended(
+
169 const std::unordered_set<CoMMAIndexType> &s_neighbours_of_seed,
+
170 const std::vector<CoMMAWeightType> &weights) :
+
171 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
+
172 s_neighbours_of_seed, weights) {}
+
173
+
175 Neighbourhood_Extended(
+
176 const Neighbourhood_Extended<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
+
177 &other) = default;
+
178
+
180 ~Neighbourhood_Extended() override = default;
+
181
+
189 void update(
+
190 const CoMMAIndexType new_fc,
+
191 const std::vector<CoMMAIndexType> &new_neighbours) override {
+
192 // Add new_fc to current CC and remove it from previous neighbourhoods
+
193 this->_s_fc.insert(new_fc);
+
194 auto new_fc_ptr =
+
195 std::find(this->_candidates.begin(), this->_candidates.end(), new_fc);
+
196 if (new_fc_ptr != this->_candidates.end())
+
197 this->_candidates.erase(new_fc_ptr);
+
198
+
199 // Compute the set of direct neighbours allowed by original
+
200 // neighbourhood-order
+
201 CoMMASetOfPairType neighs;
+
202 for (const CoMMAIndexType &i_fc : new_neighbours) {
+
203 if (
+
204 (std::find(this->_candidates.begin(), this->_candidates.end(), i_fc)
+
205 == this->_candidates.end())
+
206 && (this->_s_fc.count(i_fc) == 0)
+
207 && (this->_s_neighbours_of_seed.count(i_fc) > 0)) {
+
208 // If not yet in the FON, not yet in the coarse cell and among the
+
209 // allowed neighbours, insert
+
210 neighs.emplace(i_fc, this->_weights[i_fc]);
+
211 }
+
212 }
+
213 // Just add new candidates at the back. This will leave candidates closer to
+
214 // the original seed at the top, hence giving them a slightly higher
+
215 // priority
+
216 this->extract_and_update_candidates(neighs);
+
217 }
+
218};
+
219
+
229template<
+
230 typename CoMMAIndexType,
+
231 typename CoMMAWeightType,
+
232 typename CoMMAIntType>
+
233class Neighbourhood_Pure_Front :
+
234 public Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
235public:
+
237 using NeighbourhoodBaseType =
+
238 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
240 using typename NeighbourhoodBaseType::CoMMAPairType;
+
242 using typename NeighbourhoodBaseType::CoMMASetOfPairType;
+
245 using typename NeighbourhoodBaseType::CoMMAPairFindFirstBasedType;
+
246
+
254 Neighbourhood_Pure_Front(
+
255 const std::unordered_set<CoMMAIndexType> &s_neighbours_of_seed,
+
256 const std::vector<CoMMAWeightType> &weights,
+
257 CoMMAIntType dimension) :
+
258 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
+
259 s_neighbours_of_seed, weights),
+
260 _q_neighs_w_weights(),
+
261 _dimension(dimension) {}
262
-
270 void update(
-
271 const CoMMAIndexType new_fc,
-
272 const vector<CoMMAIndexType> &new_neighbours) override {
-
273 this->_candidates.clear();
-
274 // Add new_fc to current CC and remove it from previous neighbourhoods
-
275 this->_s_fc.insert(new_fc);
-
276 for (auto &q : this->_q_neighs_w_weights) {
-
277 // There is erase_if for sets in C++20
-
278 // erase_if(q, [&new_fc](const CoMMAPairType &p){return p.first ==
-
279 // new_fc;});
-
280 auto it =
-
281 find_if(q.begin(), q.end(), CoMMAPairFindFirstBasedType(new_fc));
-
282 //[&new_fc](const CoMMAPairType &p){return p.first == new_fc;});
-
283 if (it != q.end()) q.erase(it);
-
284 }
-
285
-
286 // Compute the set of direct neighbours allowed by original
-
287 // neighbourhood-order
-
288 CoMMASetOfPairType curr_set = CoMMASetOfPairType();
-
289 for (const CoMMAIndexType &i_fc : new_neighbours) {
-
290 if (
-
291 (this->_s_fc.count(i_fc) == 0)
-
292 && (this->_s_neighbours_of_seed.count(i_fc) > 0)) {
-
293 // If not yet in coarse cell and among the allowed neighbours, insert
-
294 curr_set.emplace(i_fc, this->_weights[i_fc]);
-
295 }
-
296 }
-
297
-
298 this->_q_neighs_w_weights.push_front(curr_set);
-
299
-
300 // Now, see which neighbours to return. Here is the strategy:
-
301 // If most recent list is not empty, return it. If not, check the oldest
-
302 // list: if not empty return it, otherwise check the previous list. If
-
303 // empty, check the second oldest, and so on... We grant ourselves one
-
304 // exception...
-
305 if (
-
306 this->_q_neighs_w_weights.size()
-
307 <= static_cast<decltype(this->_q_neighs_w_weights.size())>(
-
308 this->_dimension)) {
-
309 // If at the (very) beginning of the agglomeration, still consider every
-
310 // possible neighbour. This will allow to obtain nice quads from quads
-
311 // TODO[RM]: I think this workaround is needed because we are not able to
-
312 // compute exactly the AR; if we ever we will be able we should try to
-
313 // remove it
-
314 for (auto prev_q = this->_q_neighs_w_weights.begin() + 1;
-
315 prev_q != this->_q_neighs_w_weights.end(); ++prev_q)
-
316 curr_set.insert(prev_q->begin(), prev_q->end());
-
317 this->extract_and_update_candidates(curr_set);
-
318 } else {
-
319 auto cur_front = decltype(this->_q_neighs_w_weights.size()){0};
-
320 auto cur_back = decltype(this->_q_neighs_w_weights.size()){
-
321 this->_q_neighs_w_weights.size() - 1};
-
322 while (cur_front <= cur_back) {
-
323 typename decltype(this->_q_neighs_w_weights)::iterator it =
-
324 this->_q_neighs_w_weights.begin() + (cur_front++);
-
325 if (!it->empty()) {
-
326 this->extract_and_update_candidates(*it);
-
327 break;
-
328 }
-
329 it = this->_q_neighs_w_weights.begin() + (cur_back--);
-
330 if (!it->empty()) {
-
331 this->extract_and_update_candidates(*it);
-
332 break;
-
333 }
-
334 }
-
335 }
-
336 }
-
337
-
343 inline const CoMMASetOfPairType &get_neighbours_by_level(
-
344 const CoMMAIntType lvl) const {
-
345 assert(
-
346 lvl >= 0
-
347 && lvl < static_cast<CoMMAIntType>(this->_q_neighs_w_weights.size()));
-
348 return this->_q_neighs_w_weights[lvl];
-
349 }
-
350
-
351protected:
-
354 deque<CoMMASetOfPairType> _q_neighs_w_weights;
-
355
-
358 CoMMAIntType _dimension;
-
359};
-
360
-
368template<
-
369 typename CoMMAIndexType,
-
370 typename CoMMAWeightType,
-
371 typename CoMMAIntType>
-
372class NeighbourhoodCreator {
-
373public:
-
375 using NeighbourhoodBaseType =
-
376 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
377
-
387 virtual shared_ptr<NeighbourhoodBaseType> create(
-
388 const unordered_set<CoMMAIndexType> &s_neighbours_of_seed,
-
389 const vector<CoMMAWeightType> &priority_weights,
-
390 const CoMMAIntType dimension) const = 0;
-
391
-
396 virtual shared_ptr<NeighbourhoodBaseType> clone(
-
397 shared_ptr<NeighbourhoodBaseType> other) const = 0;
-
398};
-
399
-
407template<
-
408 typename CoMMAIndexType,
-
409 typename CoMMAWeightType,
-
410 typename CoMMAIntType>
-
411class NeighbourhoodExtendedCreator :
-
412 public NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
-
413public:
-
415 using CreatorBaseType =
-
416 NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
418 using typename CreatorBaseType::NeighbourhoodBaseType;
-
422 using NeighbourhoodDerivedType =
-
423 Neighbourhood_Extended<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
424
-
435 inline shared_ptr<NeighbourhoodBaseType> create(
-
436 const unordered_set<CoMMAIndexType> &s_neighbours_of_seed,
-
437 const vector<CoMMAWeightType> &priority_weights,
-
438 const CoMMAIntType dimension) const override {
-
439 CoMMAUnused(dimension);
-
440 return make_shared<NeighbourhoodDerivedType>(
-
441 s_neighbours_of_seed, priority_weights);
-
442 }
-
443
-
449 inline shared_ptr<NeighbourhoodBaseType> clone(
-
450 shared_ptr<NeighbourhoodBaseType> other) const override {
-
451 // Using copy-constructor
-
452 return make_shared<NeighbourhoodDerivedType>(
-
453 *dynamic_pointer_cast<NeighbourhoodDerivedType>(other));
-
454 }
-
455};
-
456
-
464template<
-
465 typename CoMMAIndexType,
-
466 typename CoMMAWeightType,
-
467 typename CoMMAIntType>
-
468class NeighbourhoodPureFrontCreator :
-
469 public NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
-
470public:
-
472 using CreatorBaseType =
-
473 NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
475 using typename CreatorBaseType::NeighbourhoodBaseType;
-
479 using NeighbourhoodDerivedType =
-
480 Neighbourhood_Pure_Front<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
481
-
492 inline shared_ptr<NeighbourhoodBaseType> create(
-
493 const unordered_set<CoMMAIndexType> &s_neighbours_of_seed,
-
494 const vector<CoMMAWeightType> &priority_weights,
-
495 const CoMMAIntType dimension) const override {
-
496 return make_shared<NeighbourhoodDerivedType>(
-
497 s_neighbours_of_seed, priority_weights, dimension);
-
498 }
-
499
-
505 inline shared_ptr<NeighbourhoodBaseType> clone(
-
506 shared_ptr<NeighbourhoodBaseType> other) const override {
-
507 // Using copy-constructor
-
508 return make_shared<NeighbourhoodDerivedType>(
-
509 *dynamic_pointer_cast<NeighbourhoodDerivedType>(other));
-
510 }
-
511};
-
512
-
513#endif // COMMA_PROJECT_FIRST_ORDER_NEIGHBOURHOOD_H
+
264 Neighbourhood_Pure_Front(const Neighbourhood_Pure_Front<
+
265 CoMMAIndexType,
+
266 CoMMAWeightType,
+
267 CoMMAIntType> &other) = default;
+
268
+
270 ~Neighbourhood_Pure_Front() override = default;
+
271
+
279 void update(
+
280 const CoMMAIndexType new_fc,
+
281 const std::vector<CoMMAIndexType> &new_neighbours) override {
+
282 this->_candidates.clear();
+
283 // Add new_fc to current CC and remove it from previous neighbourhoods
+
284 this->_s_fc.insert(new_fc);
+
285 for (auto &queue : this->_q_neighs_w_weights) {
+
286 // There is erase_if for sets in C++20
+
287 // erase_if(queue, [&new_fc](const CoMMAPairType &p){return p.first ==
+
288 // new_fc;});
+
289 auto it = std::find_if(
+
290 queue.begin(), queue.end(), CoMMAPairFindFirstBasedType(new_fc));
+
291 //[&new_fc](const CoMMAPairType &p){return p.first == new_fc;});
+
292 if (it != queue.end()) queue.erase(it);
+
293 }
+
294
+
295 // Compute the set of direct neighbours allowed by original
+
296 // neighbourhood-order
+
297 CoMMASetOfPairType curr_set = CoMMASetOfPairType();
+
298 for (const CoMMAIndexType &i_fc : new_neighbours) {
+
299 if (
+
300 (this->_s_fc.count(i_fc) == 0)
+
301 && (this->_s_neighbours_of_seed.count(i_fc) > 0)) {
+
302 // If not yet in coarse cell and among the allowed neighbours, insert
+
303 curr_set.emplace(i_fc, this->_weights[i_fc]);
+
304 }
+
305 }
+
306
+
307 this->_q_neighs_w_weights.push_front(curr_set);
+
308
+
309 // Now, see which neighbours to return. Here is the strategy:
+
310 // If most recent list is not empty, return it. If not, check the oldest
+
311 // list: if not empty return it, otherwise check the previous list. If
+
312 // empty, check the second oldest, and so on... We grant ourselves one
+
313 // exception...
+
314 if (
+
315 this->_q_neighs_w_weights.size()
+
316 <= static_cast<decltype(this->_q_neighs_w_weights.size())>(
+
317 this->_dimension)) {
+
318 // If at the (very) beginning of the agglomeration, still consider every
+
319 // possible neighbour. This will allow to obtain nice quads from quads
+
320 // TODO[RM]: I think this workaround is needed because we are not able to
+
321 // compute exactly the AR; if we ever we will be able we should try to
+
322 // remove it
+
323 for (auto prev_q = this->_q_neighs_w_weights.begin() + 1;
+
324 prev_q != this->_q_neighs_w_weights.end(); ++prev_q)
+
325 curr_set.insert(prev_q->begin(), prev_q->end());
+
326 this->extract_and_update_candidates(curr_set);
+
327 } else {
+
328 auto cur_front = decltype(this->_q_neighs_w_weights.size()){0};
+
329 auto cur_back = decltype(this->_q_neighs_w_weights.size()){
+
330 this->_q_neighs_w_weights.size() - 1};
+
331 while (cur_front <= cur_back) {
+
332 // typename decltype(this->_q_neighs_w_weights)::iterator it =
+
333 auto it = this->_q_neighs_w_weights.begin() + (cur_front++);
+
334 if (!it->empty()) {
+
335 this->extract_and_update_candidates(*it);
+
336 break;
+
337 }
+
338 it = this->_q_neighs_w_weights.begin() + (cur_back--);
+
339 if (!it->empty()) {
+
340 this->extract_and_update_candidates(*it);
+
341 break;
+
342 }
+
343 }
+
344 }
+
345 }
+
346
+
352 inline const CoMMASetOfPairType &get_neighbours_by_level(
+
353 const CoMMAIntType lvl) const {
+
354 assert(
+
355 lvl >= 0
+
356 && lvl < static_cast<CoMMAIntType>(this->_q_neighs_w_weights.size()));
+
357 return this->_q_neighs_w_weights[lvl];
+
358 }
+
359
+
360protected:
+
363 std::deque<CoMMASetOfPairType> _q_neighs_w_weights;
+
364
+
367 CoMMAIntType _dimension;
+
368};
+
369
+
377template<
+
378 typename CoMMAIndexType,
+
379 typename CoMMAWeightType,
+
380 typename CoMMAIntType>
+
381class NeighbourhoodCreator {
+
382public:
+
384 using NeighbourhoodBaseType =
+
385 Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
386
+
388 NeighbourhoodCreator() = default;
+
389
+
391 virtual ~NeighbourhoodCreator() = default;
+
392
+
402 virtual std::shared_ptr<NeighbourhoodBaseType> create(
+
403 const std::unordered_set<CoMMAIndexType> &s_neighbours_of_seed,
+
404 const std::vector<CoMMAWeightType> &priority_weights,
+
405 const CoMMAIntType dimension) const = 0;
+
406
+
411 virtual std::shared_ptr<NeighbourhoodBaseType> clone(
+
412 std::shared_ptr<NeighbourhoodBaseType> other) const = 0;
+
413};
+
414
+
422template<
+
423 typename CoMMAIndexType,
+
424 typename CoMMAWeightType,
+
425 typename CoMMAIntType>
+
426class NeighbourhoodExtendedCreator :
+
427 public NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
428public:
+
430 using CreatorBaseType =
+
431 NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
433 using typename CreatorBaseType::NeighbourhoodBaseType;
+
437 using NeighbourhoodDerivedType =
+
438 Neighbourhood_Extended<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
439
+
441 NeighbourhoodExtendedCreator() : CreatorBaseType() {}
+
442
+
444 ~NeighbourhoodExtendedCreator() override = default;
+
445
+
456 inline std::shared_ptr<NeighbourhoodBaseType> create(
+
457 const std::unordered_set<CoMMAIndexType> &s_neighbours_of_seed,
+
458 const std::vector<CoMMAWeightType> &priority_weights,
+
459 const CoMMAIntType dimension) const override {
+
460 CoMMAUnused(dimension);
+
461 return std::make_shared<NeighbourhoodDerivedType>(
+
462 s_neighbours_of_seed, priority_weights);
+
463 }
+
464
+
470 inline std::shared_ptr<NeighbourhoodBaseType> clone(
+
471 std::shared_ptr<NeighbourhoodBaseType> other) const override {
+
472 // Using copy-constructor
+
473 return std::make_shared<NeighbourhoodDerivedType>(
+
474 *std::dynamic_pointer_cast<NeighbourhoodDerivedType>(other));
+
475 }
+
476};
+
477
+
485template<
+
486 typename CoMMAIndexType,
+
487 typename CoMMAWeightType,
+
488 typename CoMMAIntType>
+
489class NeighbourhoodPureFrontCreator :
+
490 public NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
491public:
+
493 using CreatorBaseType =
+
494 NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
496 using typename CreatorBaseType::NeighbourhoodBaseType;
+
500 using NeighbourhoodDerivedType =
+
501 Neighbourhood_Pure_Front<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
502
+
504 NeighbourhoodPureFrontCreator() : CreatorBaseType() {}
+
505
+
507 ~NeighbourhoodPureFrontCreator() override = default;
+
508
+
519 inline std::shared_ptr<NeighbourhoodBaseType> create(
+
520 const std::unordered_set<CoMMAIndexType> &s_neighbours_of_seed,
+
521 const std::vector<CoMMAWeightType> &priority_weights,
+
522 const CoMMAIntType dimension) const override {
+
523 return std::make_shared<NeighbourhoodDerivedType>(
+
524 s_neighbours_of_seed, priority_weights, dimension);
+
525 }
+
526
+
532 inline std::shared_ptr<NeighbourhoodBaseType> clone(
+
533 std::shared_ptr<NeighbourhoodBaseType> other) const override {
+
534 // Using copy-constructor
+
535 return std::make_shared<NeighbourhoodDerivedType>(
+
536 *std::dynamic_pointer_cast<NeighbourhoodDerivedType>(other));
+
537 }
+
538};
+
539
+
540} // end namespace comma
+
541
+
542#endif // COMMA_PROJECT_FIRST_ORDER_NEIGHBOURHOOD_H
Util.h
CoMMAUnused
#define CoMMAUnused(var)
Convenient function to avoid unused warnings.
Definition: Util.h:34
-
Neighbourhood_Extended
Class representing the neighbourhood of a given cell in the graph. In this derived class the neighbou...
Definition: Neighbourhood.h:146
-
Neighbourhood_Extended::CoMMASetOfPairType
set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Neighbourhood.h:60
-
Neighbourhood_Extended::update
void update(const CoMMAIndexType new_fc, const vector< CoMMAIndexType > &new_neighbours) override
Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted....
Definition: Neighbourhood.h:183
-
Neighbourhood_Extended::Neighbourhood_Extended
Neighbourhood_Extended(const Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
Copy constructor.
-
Neighbourhood_Extended::Neighbourhood_Extended
Neighbourhood_Extended(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)
Constructor.
Definition: Neighbourhood.h:165
-
Neighbourhood_Pure_Front
Class representing the neighbourhood of a given cell in the graph. In this derived class,...
Definition: Neighbourhood.h:228
-
Neighbourhood_Pure_Front::CoMMASetOfPairType
set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Neighbourhood.h:60
-
Neighbourhood_Pure_Front::get_neighbours_by_level
const CoMMASetOfPairType & get_neighbours_by_level(const CoMMAIntType lvl) const
Get the neighbours from a previous stage.
Definition: Neighbourhood.h:343
-
Neighbourhood_Pure_Front::_q_neighs_w_weights
deque< CoMMASetOfPairType > _q_neighs_w_weights
History of the first-order-neighbourhoods of the fine cells recently agglomerated.
Definition: Neighbourhood.h:354
-
Neighbourhood_Pure_Front::_dimension
CoMMAIntType _dimension
Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D)
Definition: Neighbourhood.h:358
-
Neighbourhood_Pure_Front::update
void update(const CoMMAIndexType new_fc, const vector< CoMMAIndexType > &new_neighbours) override
Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted....
Definition: Neighbourhood.h:270
-
Neighbourhood_Pure_Front::Neighbourhood_Pure_Front
Neighbourhood_Pure_Front(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights, CoMMAIntType dimension)
Constructor.
Definition: Neighbourhood.h:248
-
Neighbourhood_Pure_Front::Neighbourhood_Pure_Front
Neighbourhood_Pure_Front(const Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
Copy constructor.
-
NeighbourhoodCreator
Pure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy.
Definition: Neighbourhood.h:372
-
NeighbourhoodCreator::NeighbourhoodBaseType
Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > NeighbourhoodBaseType
Shortcut for the Neighborhood object type.
Definition: Neighbourhood.h:376
-
NeighbourhoodCreator::clone
virtual shared_ptr< NeighbourhoodBaseType > clone(shared_ptr< NeighbourhoodBaseType > other) const =0
Create a new Neighbourhood object by copy.
-
NeighbourhoodCreator::create
virtual shared_ptr< NeighbourhoodBaseType > create(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const =0
Create a new Neighbourhood object from scratch using the given arguments.
-
NeighbourhoodExtendedCreator
Creator of Neighbourhood_Extended objects. It can create from scratch or by copy.
Definition: Neighbourhood.h:412
-
NeighbourhoodExtendedCreator::create
shared_ptr< NeighbourhoodBaseType > create(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const override
Create a new Neighbourhood object from scratch using the given arguments.
Definition: Neighbourhood.h:435
-
NeighbourhoodExtendedCreator::clone
shared_ptr< NeighbourhoodBaseType > clone(shared_ptr< NeighbourhoodBaseType > other) const override
Create a new Neighbourhood object by copy.
Definition: Neighbourhood.h:449
-
Neighbourhood
Class representing the neighbourhood of a given cell in the graph. Mind that no information about the...
Definition: Neighbourhood.h:42
-
Neighbourhood::CoMMASetOfPairType
set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Neighbourhood.h:60
-
Neighbourhood::_s_fc
unordered_set< CoMMAIndexType > _s_fc
Set of the fine cells composing the coarse cell.
Definition: Neighbourhood.h:116
-
Neighbourhood::_s_neighbours_of_seed
const unordered_set< CoMMAIndexType > _s_neighbours_of_seed
Set of the neighbours of seed given as an input in the constructor. Here, we can find all the neighbo...
Definition: Neighbourhood.h:110
-
Neighbourhood::CoMMAPairType
pair< CoMMAIndexType, CoMMAWeightType > CoMMAPairType
Type of pair.
Definition: Neighbourhood.h:57
-
Neighbourhood::Neighbourhood
Neighbourhood(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)
Constructor.
Definition: Neighbourhood.h:73
-
Neighbourhood::_weights
const vector< CoMMAWeightType > & _weights
Priority weights.
Definition: Neighbourhood.h:113
-
Neighbourhood::update
virtual void update(const CoMMAIndexType new_fc, const vector< CoMMAIndexType > &new_neighbours)=0
Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted....
-
Neighbourhood::Neighbourhood
Neighbourhood(const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
Copy constructor.
-
Neighbourhood::CandidatesContainerType
deque< CoMMAIndexType > CandidatesContainerType
Type for container of candidates.
Definition: Neighbourhood.h:65
-
Neighbourhood::get_candidates
const CandidatesContainerType & get_candidates() const
Get candidates that should be consider in the next step of the agglomeration.
Definition: Neighbourhood.h:101
-
Neighbourhood::CoMMAPairFindFirstBasedType
PairFindFirstBasedFunctor< CoMMAPairType > CoMMAPairFindFirstBasedType
Functor used if find-like function relying only on first element of the pair.
Definition: Neighbourhood.h:63
-
Neighbourhood::extract_and_update_candidates
void extract_and_update_candidates(const CoMMASetOfPairType &candidates_w_weights)
Extract the indices from a list of index-weight pairs and add them at the back of the candidates list...
Definition: Neighbourhood.h:126
-
Neighbourhood::_candidates
CandidatesContainerType _candidates
Candidates that should be considered when choosing the next fine cell to add to the coarse one.
Definition: Neighbourhood.h:121
-
NeighbourhoodPureFrontCreator
Creator of Neighbourhood_Extended objects. It can create from scratch or by copy.
Definition: Neighbourhood.h:469
-
NeighbourhoodPureFrontCreator::clone
shared_ptr< NeighbourhoodBaseType > clone(shared_ptr< NeighbourhoodBaseType > other) const override
Create a new Neighbourhood object by copy.
Definition: Neighbourhood.h:505
-
NeighbourhoodPureFrontCreator::create
shared_ptr< NeighbourhoodBaseType > create(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const override
Create a new Neighbourhood object from scratch using the given arguments.
Definition: Neighbourhood.h:492
-
PairFindFirstBasedFunctor
Functor implementing an operator telling if a given value if the first one of pair.
Definition: Util.h:213
-
CustomPairGreaterFunctor
Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for ...
Definition: Util.h:154
+
comma::Neighbourhood_Extended
Class representing the neighbourhood of a given cell in the graph. In this derived class the neighbou...
Definition: Neighbourhood.h:149
+
comma::Neighbourhood_Extended::update
void update(const CoMMAIndexType new_fc, const std::vector< CoMMAIndexType > &new_neighbours) override
Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted....
Definition: Neighbourhood.h:189
+
comma::Neighbourhood_Extended::CoMMASetOfPairType
std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Neighbourhood.h:60
+
comma::Neighbourhood_Extended::Neighbourhood_Extended
Neighbourhood_Extended(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)
Constructor.
Definition: Neighbourhood.h:168
+
comma::Neighbourhood_Extended::~Neighbourhood_Extended
~Neighbourhood_Extended() override=default
Destructor.
+
comma::Neighbourhood_Extended::Neighbourhood_Extended
Neighbourhood_Extended(const Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
Copy constructor.
+
comma::Neighbourhood_Pure_Front
Class representing the neighbourhood of a given cell in the graph. In this derived class,...
Definition: Neighbourhood.h:234
+
comma::Neighbourhood_Pure_Front::~Neighbourhood_Pure_Front
~Neighbourhood_Pure_Front() override=default
Destructor.
+
comma::Neighbourhood_Pure_Front::Neighbourhood_Pure_Front
Neighbourhood_Pure_Front(const Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
Copy constructor.
+
comma::Neighbourhood_Pure_Front::CoMMASetOfPairType
std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Neighbourhood.h:60
+
comma::Neighbourhood_Pure_Front::get_neighbours_by_level
const CoMMASetOfPairType & get_neighbours_by_level(const CoMMAIntType lvl) const
Get the neighbours from a previous stage.
Definition: Neighbourhood.h:352
+
comma::Neighbourhood_Pure_Front::_q_neighs_w_weights
std::deque< CoMMASetOfPairType > _q_neighs_w_weights
History of the first-order-neighbourhoods of the fine cells recently agglomerated.
Definition: Neighbourhood.h:363
+
comma::Neighbourhood_Pure_Front::_dimension
CoMMAIntType _dimension
Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D)
Definition: Neighbourhood.h:367
+
comma::Neighbourhood_Pure_Front::update
void update(const CoMMAIndexType new_fc, const std::vector< CoMMAIndexType > &new_neighbours) override
Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted....
Definition: Neighbourhood.h:279
+
comma::Neighbourhood_Pure_Front::Neighbourhood_Pure_Front
Neighbourhood_Pure_Front(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights, CoMMAIntType dimension)
Constructor.
Definition: Neighbourhood.h:254
+
comma::NeighbourhoodCreator
Pure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy.
Definition: Neighbourhood.h:381
+
comma::NeighbourhoodCreator::clone
virtual std::shared_ptr< NeighbourhoodBaseType > clone(std::shared_ptr< NeighbourhoodBaseType > other) const =0
Create a new Neighbourhood object by copy.
+
comma::NeighbourhoodCreator::NeighbourhoodBaseType
Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > NeighbourhoodBaseType
Shortcut for the Neighborhood object type.
Definition: Neighbourhood.h:385
+
comma::NeighbourhoodCreator::~NeighbourhoodCreator
virtual ~NeighbourhoodCreator()=default
Destructor.
+
comma::NeighbourhoodCreator::NeighbourhoodCreator
NeighbourhoodCreator()=default
Constructor.
+
comma::NeighbourhoodCreator::create
virtual std::shared_ptr< NeighbourhoodBaseType > create(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const =0
Create a new Neighbourhood object from scratch using the given arguments.
+
comma::NeighbourhoodExtendedCreator
Creator of Neighbourhood_Extended objects. It can create from scratch or by copy.
Definition: Neighbourhood.h:427
+
comma::NeighbourhoodExtendedCreator::~NeighbourhoodExtendedCreator
~NeighbourhoodExtendedCreator() override=default
Destructor.
+
comma::NeighbourhoodExtendedCreator::create
std::shared_ptr< NeighbourhoodBaseType > create(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const override
Create a new Neighbourhood object from scratch using the given arguments.
Definition: Neighbourhood.h:456
+
comma::NeighbourhoodExtendedCreator::NeighbourhoodExtendedCreator
NeighbourhoodExtendedCreator()
Constructor.
Definition: Neighbourhood.h:441
+
comma::NeighbourhoodExtendedCreator::clone
std::shared_ptr< NeighbourhoodBaseType > clone(std::shared_ptr< NeighbourhoodBaseType > other) const override
Create a new Neighbourhood object by copy.
Definition: Neighbourhood.h:470
+
comma::Neighbourhood
Class representing the neighbourhood of a given cell in the graph. Mind that no information about the...
Definition: Neighbourhood.h:42
+
comma::Neighbourhood::_weights
const std::vector< CoMMAWeightType > & _weights
Priority weights.
Definition: Neighbourhood.h:116
+
comma::Neighbourhood::CoMMAPairFindFirstBasedType
PairFindFirstBasedFunctor< CoMMAPairType > CoMMAPairFindFirstBasedType
Functor used if find-like function relying only on first element of the pair.
Definition: Neighbourhood.h:63
+
comma::Neighbourhood::Neighbourhood
Neighbourhood(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)
Constructor.
Definition: Neighbourhood.h:73
+
comma::Neighbourhood::update
virtual void update(const CoMMAIndexType new_fc, const std::vector< CoMMAIndexType > &new_neighbours)=0
Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted....
+
comma::Neighbourhood::_s_neighbours_of_seed
const std::unordered_set< CoMMAIndexType > _s_neighbours_of_seed
Set of the neighbours of seed given as an input in the constructor. Here, we can find all the neighbo...
Definition: Neighbourhood.h:113
+
comma::Neighbourhood::get_candidates
const CandidatesContainerType & get_candidates() const
Get candidates that should be consider in the next step of the agglomeration.
Definition: Neighbourhood.h:104
+
comma::Neighbourhood::_candidates
CandidatesContainerType _candidates
Candidates that should be considered when choosing the next fine cell to add to the coarse one.
Definition: Neighbourhood.h:124
+
comma::Neighbourhood::CandidatesContainerType
std::deque< CoMMAIndexType > CandidatesContainerType
Type for container of candidates.
Definition: Neighbourhood.h:65
+
comma::Neighbourhood::CoMMASetOfPairType
std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Neighbourhood.h:60
+
comma::Neighbourhood::Neighbourhood
Neighbourhood(const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
Copy constructor.
+
comma::Neighbourhood::_s_fc
std::unordered_set< CoMMAIndexType > _s_fc
Set of the fine cells composing the coarse cell.
Definition: Neighbourhood.h:119
+
comma::Neighbourhood::extract_and_update_candidates
void extract_and_update_candidates(const CoMMASetOfPairType &candidates_w_weights)
Extract the indices from a list of index-weight pairs and add them at the back of the candidates list...
Definition: Neighbourhood.h:129
+
comma::Neighbourhood::CoMMAPairType
std::pair< CoMMAIndexType, CoMMAWeightType > CoMMAPairType
Type of pair.
Definition: Neighbourhood.h:57
+
comma::Neighbourhood::~Neighbourhood
virtual ~Neighbourhood()=default
Destructor.
+
comma::NeighbourhoodPureFrontCreator
Creator of Neighbourhood_Extended objects. It can create from scratch or by copy.
Definition: Neighbourhood.h:490
+
comma::NeighbourhoodPureFrontCreator::NeighbourhoodPureFrontCreator
NeighbourhoodPureFrontCreator()
Constructor.
Definition: Neighbourhood.h:504
+
comma::NeighbourhoodPureFrontCreator::clone
std::shared_ptr< NeighbourhoodBaseType > clone(std::shared_ptr< NeighbourhoodBaseType > other) const override
Create a new Neighbourhood object by copy.
Definition: Neighbourhood.h:532
+
comma::NeighbourhoodPureFrontCreator::~NeighbourhoodPureFrontCreator
~NeighbourhoodPureFrontCreator() override=default
Destructor.
+
comma::NeighbourhoodPureFrontCreator::create
std::shared_ptr< NeighbourhoodBaseType > create(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const override
Create a new Neighbourhood object from scratch using the given arguments.
Definition: Neighbourhood.h:519
+
comma::PairFindFirstBasedFunctor
Functor implementing an operator telling if a given value if the first one of pair.
Definition: Util.h:211
+
comma
Definition: Agglomerator.h:34
+
comma::CustomPairGreaterFunctor
Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for ...
Definition: Util.h:154
diff --git a/_priority___pair_8h.html b/_priority___pair_8h.html index 0f9960a..db9c4ae 100644 --- a/_priority___pair_8h.html +++ b/_priority___pair_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/deprecated/Priority_Pair.h File Reference +CoMMA: include/CoMMA/deprecated/Priority_Pair.h File Reference @@ -92,7 +92,8 @@
-Classes
+Classes | +Namespaces
Priority_Pair.h File Reference
@@ -102,8 +103,13 @@ - - + + + +

Classes

class  Priority_Pair< A, B >
 Wrapper around the STL pair with custom 'less than' operator: as in the standard case, first we compare the first elements, then the second ones; however it relies on the 'greater than' on the first elements, e.g., (4,X) < (3,Y), whereas standard rules apply to second elements, e.g., (4,3) < (4,4). More...
class  comma::Priority_Pair< A, B >
 Wrapper around the STL pair with custom 'less than' operator: as in the standard case, first we compare the first elements, then the second ones; however it relies on the 'greater than' on the first elements, e.g., (4,X) < (3,Y), whereas standard rules apply to second elements, e.g., (4,3) < (4,4). More...
 
+ +

+Namespaces

namespace  comma
 
@@ -111,7 +117,7 @@ diff --git a/_priority___pair_8h.js b/_priority___pair_8h.js index 7082acb..897cca1 100644 --- a/_priority___pair_8h.js +++ b/_priority___pair_8h.js @@ -1,4 +1,4 @@ var _priority___pair_8h = [ - [ "Priority_Pair< A, B >", "class_priority___pair.html", "class_priority___pair" ] + [ "comma::Priority_Pair< A, B >", "classcomma_1_1_priority___pair.html", "classcomma_1_1_priority___pair" ] ]; \ No newline at end of file diff --git a/_priority___pair_8h_source.html b/_priority___pair_8h_source.html index 7b30ec3..3ffb329 100644 --- a/_priority___pair_8h_source.html +++ b/_priority___pair_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/deprecated/Priority_Pair.h Source File +CoMMA: include/CoMMA/deprecated/Priority_Pair.h Source File @@ -100,7 +100,7 @@
4/*
5 * CoMMA
6 *
-
7 * Copyright © 2023 ONERA
+
7 * Copyright © 2024 ONERA
8 *
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
10 * Contributors: Karim Anemiche
@@ -112,54 +112,58 @@
16
17#include <utility>
18
-
19using namespace std;
+
19namespace comma {
20
29template<typename A, typename B>
-
30class Priority_Pair {
+
30class Priority_Pair {
31private:
-
33 pair<A, B> _p;
+
33 std::pair<A, B> _p;
34
35public:
-
37 Priority_Pair(){};
-
38
-
43 Priority_Pair(const A &a, const B &b) : _p(a, b){};
-
44
-
46 ~Priority_Pair(){};
-
47
-
51 // We accept to have a copy passed
-
52 A first() const { return _p.first; }
-
53
-
57 B second() const { return _p.second; }
-
58
-
66 inline friend bool operator<(const Priority_Pair &a, const Priority_Pair &b) {
-
67 if (a._p.first > b._p.first)
-
68 return true;
-
69 else if (a._p.first < b._p.first)
-
70 return false;
-
71 else /* a._p.first == b._p.first */
-
72 return a._p.second < b._p.second;
+
37 Priority_Pair() = default;
+
38 ;
+
39
+
44 Priority_Pair(const A &a, const B &b) : _p(a, b){};
+
45
+
47 ~Priority_Pair() = default;
+
48 ;
+
49
+
53 // We accept to have a copy passed
+
54 A first() const { return _p.first; }
+
55
+
59 B second() const { return _p.second; }
+
60
+
68 inline friend bool operator<(const Priority_Pair &a, const Priority_Pair &b) {
+
69 if (a._p.first > b._p.first) return true;
+
70 if (a._p.first < b._p.first) return false;
+
71 /* a._p.first == b._p.first */
+
72 return a._p.second < b._p.second;
73 }
74
-
80 inline friend bool operator==(
-
81 const Priority_Pair &a, const Priority_Pair &b) {
+
80 inline friend bool operator==(
+
81 const Priority_Pair &a, const Priority_Pair &b) {
82 return (a._p.first == b._p.first) && (a._p.second == b._p.second);
83 }
84};
-
85#endif // COMMA_PROJECT_PRIORITY_PAIR_H
-
Priority_Pair
Wrapper around the STL pair with custom 'less than' operator: as in the standard case,...
Definition: Priority_Pair.h:30
-
Priority_Pair::operator==
friend bool operator==(const Priority_Pair &a, const Priority_Pair &b)
Operator 'equal'.
Definition: Priority_Pair.h:80
-
Priority_Pair::second
B second() const
Accessor to the first element.
Definition: Priority_Pair.h:57
-
Priority_Pair::first
A first() const
Accessor to the first element.
Definition: Priority_Pair.h:52
-
Priority_Pair::operator<
friend bool operator<(const Priority_Pair &a, const Priority_Pair &b)
Operator 'less than'. It actually relies on the 'greater than' operator for the first elements and 'l...
Definition: Priority_Pair.h:66
-
Priority_Pair::Priority_Pair
Priority_Pair()
Constructor.
Definition: Priority_Pair.h:37
-
Priority_Pair::Priority_Pair
Priority_Pair(const A &a, const B &b)
Constructor.
Definition: Priority_Pair.h:43
-
Priority_Pair::~Priority_Pair
~Priority_Pair()
Destructor.
Definition: Priority_Pair.h:46
+
85
+
86} // end namespace comma
+
87
+
88#endif // COMMA_PROJECT_PRIORITY_PAIR_H
+
comma::Priority_Pair
Wrapper around the STL pair with custom 'less than' operator: as in the standard case,...
Definition: Priority_Pair.h:30
+
comma::Priority_Pair::~Priority_Pair
~Priority_Pair()=default
Destructor.
+
comma::Priority_Pair::Priority_Pair
Priority_Pair(const A &a, const B &b)
Constructor.
Definition: Priority_Pair.h:44
+
comma::Priority_Pair::operator==
friend bool operator==(const Priority_Pair &a, const Priority_Pair &b)
Operator 'equal'.
Definition: Priority_Pair.h:80
+
comma::Priority_Pair::Priority_Pair
Priority_Pair()=default
Constructor.
+
comma::Priority_Pair::operator<
friend bool operator<(const Priority_Pair &a, const Priority_Pair &b)
Operator 'less than'. It actually relies on the 'greater than' operator for the first elements and 'l...
Definition: Priority_Pair.h:68
+
comma::Priority_Pair::second
B second() const
Accessor to the first element.
Definition: Priority_Pair.h:59
+
comma::Priority_Pair::first
A first() const
Accessor to the first element.
Definition: Priority_Pair.h:54
+
comma
Definition: Agglomerator.h:34
diff --git a/_queue_8h.html b/_queue_8h.html index 4182d40..0e22f20 100644 --- a/_queue_8h.html +++ b/_queue_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/deprecated/Queue.h File Reference +CoMMA: include/CoMMA/deprecated/Queue.h File Reference @@ -92,7 +92,8 @@
-Classes
+Classes | +Namespaces
Queue.h File Reference
@@ -105,8 +106,13 @@ - - + + + +

Classes

class  Queue< T >
 A template class implementing a custom queue data structure. More...
class  comma::Queue< T >
 A template class implementing a custom queue data structure. More...
 
+ +

+Namespaces

namespace  comma
 
@@ -114,7 +120,7 @@ diff --git a/_queue_8h.js b/_queue_8h.js index d513fe6..b679374 100644 --- a/_queue_8h.js +++ b/_queue_8h.js @@ -1,4 +1,4 @@ var _queue_8h = [ - [ "Queue< T >", "class_queue.html", "class_queue" ] + [ "comma::Queue< T >", "classcomma_1_1_queue.html", "classcomma_1_1_queue" ] ]; \ No newline at end of file diff --git a/_queue_8h_source.html b/_queue_8h_source.html index 78fc45f..a9079e4 100644 --- a/_queue_8h_source.html +++ b/_queue_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/deprecated/Queue.h Source File +CoMMA: include/CoMMA/deprecated/Queue.h Source File @@ -100,7 +100,7 @@
4/*
5 * CoMMA
6 *
-
7 * Copyright © 2023 ONERA
+
7 * Copyright © 2024 ONERA
8 *
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
10 * Contributors: Karim Anemiche
@@ -115,42 +115,47 @@
19#include <iostream>
20#include <vector>
21
-
22using namespace std;
-
27template<typename T>
-
28class Queue {
-
29private:
-
31 deque<T> _elems;
-
32
-
33public:
-
35 Queue() {}
-
37 ~Queue() {}
-
41 void push(T const &elem) { _elems.push_back(elem); }
-
45 T pop() {
-
46 if (_elems.empty()) { return static_cast<T>(-1); }
-
47 T elem = _elems.front(); // Copy last element
-
48 _elems.pop_front(); // remove last element
-
49 return elem;
-
50 }
-
54 T top() const {
-
55 if (_elems.empty()) { return static_cast<T>(-1); }
-
56 return _elems.front();
-
57 }
-
61 inline bool empty() const { return _elems.empty(); }
-
62};
-
63#endif
-
Queue
A template class implementing a custom queue data structure.
Definition: Queue.h:28
-
Queue::empty
bool empty() const
Whether the queue is empty.
Definition: Queue.h:61
-
Queue::push
void push(T const &elem)
Push an element on the top of the queue.
Definition: Queue.h:41
-
Queue::~Queue
~Queue()
Destructor.
Definition: Queue.h:37
-
Queue::pop
T pop()
pop an element from the bottom of the queue
Definition: Queue.h:45
-
Queue::top
T top() const
Scope to the element on the bottom of the queue.
Definition: Queue.h:54
-
Queue::Queue
Queue()
Constructor.
Definition: Queue.h:35
+
22namespace comma {
+
23
+
28template<typename T>
+
29class Queue {
+
30private:
+
32 std::deque<T> _elems;
+
33
+
34public:
+
36 Queue() = default;
+
38 ~Queue() = default;
+
42 void push(T const &elem) { _elems.push_back(elem); }
+
46 T pop() {
+
47 if (_elems.empty()) { return static_cast<T>(-1); }
+
48 T elem = _elems.front(); // Copy last element
+
49 _elems.pop_front(); // remove last element
+
50 return elem;
+
51 }
+
55 T top() const {
+
56 if (_elems.empty()) { return static_cast<T>(-1); }
+
57 return _elems.front();
+
58 }
+
62 inline bool empty() const { return _elems.empty(); }
+
63};
+
64
+
65} // end namespace comma
+
66
+
67#endif
+
comma::Queue
A template class implementing a custom queue data structure.
Definition: Queue.h:29
+
comma::Queue::top
T top() const
Scope to the element on the bottom of the queue.
Definition: Queue.h:55
+
comma::Queue::pop
T pop()
pop an element from the bottom of the queue
Definition: Queue.h:46
+
comma::Queue::~Queue
~Queue()=default
Destructor.
+
comma::Queue::empty
bool empty() const
Whether the queue is empty.
Definition: Queue.h:62
+
comma::Queue::Queue
Queue()=default
Constructor.
+
comma::Queue::push
void push(T const &elem)
Push an element on the top of the queue.
Definition: Queue.h:42
+
comma
Definition: Agglomerator.h:34
diff --git a/_r_e_a_d_m_e_8md.html b/_r_e_a_d_m_e_8md.html index 86ec31e..4c1d4b3 100644 --- a/_r_e_a_d_m_e_8md.html +++ b/_r_e_a_d_m_e_8md.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/README.md File Reference +CoMMA: include/CoMMA/README.md File Reference @@ -91,7 +91,7 @@
-
CoMMA_lib/README.md File Reference
+
include/CoMMA/README.md File Reference
diff --git a/_seeds___pool_8h.html b/_seeds___pool_8h.html index 68d49b8..394d6d9 100644 --- a/_seeds___pool_8h.html +++ b/_seeds___pool_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Seeds_Pool.h File Reference +CoMMA: include/CoMMA/Seeds_Pool.h File Reference @@ -92,13 +92,15 @@
-Classes
+Classes | +Namespaces
Seeds_Pool.h File Reference
#include <algorithm>
#include <cassert>
#include <deque>
+#include <limits>
#include <list>
#include <map>
#include <memory>
@@ -107,30 +109,35 @@ #include <set>
#include <utility>
#include <vector>
-#include "CoMMATypes.h"
-#include "Util.h"
+#include "CoMMA/CoMMADefs.h"
+#include "CoMMA/Util.h"

Go to the source code of this file.

- - + + - - + + - - + + - - + + - - + + - - + + + +

Classes

struct  SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Functor performing the initialization of a seeds pool. More...
struct  comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Functor performing the initialization of a seeds pool. More...
 
struct  SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Functor performing the full initialization of a seeds pool. More...
struct  comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Functor performing the full initialization of a seeds pool. More...
 
struct  SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Functor performing the one-point initialization of a seeds pool. More...
struct  comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Functor performing the one-point initialization of a seeds pool. More...
 
class  Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class representing the pool of all the seeds for creating a coarse cell. More...
class  comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class representing the pool of all the seeds for creating a coarse cell. More...
 
class  Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are on the border. More...
class  comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are on the border. More...
 
class  Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are neighbours of already existing coarse cells. More...
class  comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are neighbours of already existing coarse cells. More...
 
+ +

+Namespaces

namespace  comma
 
@@ -138,7 +145,7 @@ diff --git a/_seeds___pool_8h.js b/_seeds___pool_8h.js index 02f3c30..ce00740 100644 --- a/_seeds___pool_8h.js +++ b/_seeds___pool_8h.js @@ -1,9 +1,9 @@ var _seeds___pool_8h = [ - [ "SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "struct_s_p_initializator.html", "struct_s_p_initializator" ], - [ "SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "struct_s_p_full_initializator.html", "struct_s_p_full_initializator" ], - [ "SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "struct_s_p_one_point_initializator.html", "struct_s_p_one_point_initializator" ], - [ "Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_seeds___pool.html", "class_seeds___pool" ], - [ "Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_seeds___pool___boundary___priority.html", "class_seeds___pool___boundary___priority" ], - [ "Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_seeds___pool___neighbourhood___priority.html", "class_seeds___pool___neighbourhood___priority" ] + [ "comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "structcomma_1_1_s_p_initializator.html", "structcomma_1_1_s_p_initializator" ], + [ "comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "structcomma_1_1_s_p_full_initializator.html", "structcomma_1_1_s_p_full_initializator" ], + [ "comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "structcomma_1_1_s_p_one_point_initializator.html", "structcomma_1_1_s_p_one_point_initializator" ], + [ "comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_seeds___pool.html", "classcomma_1_1_seeds___pool" ], + [ "comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_seeds___pool___boundary___priority.html", "classcomma_1_1_seeds___pool___boundary___priority" ], + [ "comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_seeds___pool___neighbourhood___priority.html", "classcomma_1_1_seeds___pool___neighbourhood___priority" ] ]; \ No newline at end of file diff --git a/_seeds___pool_8h_source.html b/_seeds___pool_8h_source.html index 5ec552d..ea6bfdc 100644 --- a/_seeds___pool_8h_source.html +++ b/_seeds___pool_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Seeds_Pool.h Source File +CoMMA: include/CoMMA/Seeds_Pool.h Source File @@ -100,7 +100,7 @@
4/*
5 * CoMMA
6 *
-
7 * Copyright © 2023 ONERA
+
7 * Copyright © 2024 ONERA
8 *
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
10 * Contributors: Karim Anemiche
@@ -113,516 +113,554 @@
17#include <algorithm>
18#include <cassert>
19#include <deque>
-
20#include <list>
-
21#include <map>
-
22#include <memory>
-
23#include <optional>
-
24#include <queue>
-
25#include <set>
-
26#include <utility>
-
27#include <vector>
-
28
-
29#include "CoMMATypes.h"
-
30#include "Util.h"
-
31
-
32using namespace std;
-
33
-
40template<
-
41 typename CoMMAIndexType,
-
42 typename CoMMAWeightType,
-
43 typename CoMMAIntType>
-
44struct SPInitializator {
-
46 using CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>;
-
48 using CoMMAQueueType = deque<CoMMAIndexType>;
-
50 using CoMMASetOfPairType =
-
51 set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType>>;
-
61 virtual void operator()(
-
62 const vector<CoMMAWeightType> &priority_weights,
-
63 const vector<CoMMAIntType> &n_bnd_faces,
-
64 const CoMMAIntType max_bnd,
-
65 CoMMAQueueType &q) = 0;
-
66};
-
67
-
74template<
-
75 typename CoMMAIndexType,
-
76 typename CoMMAWeightType,
-
77 typename CoMMAIntType>
-
78struct SPFullInitializator :
-
79 public SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
-
81 using BaseClass =
-
82 SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
84 using typename BaseClass::CoMMAQueueType;
-
86 using typename BaseClass::CoMMASetOfPairType;
-
96 void operator()(
-
97 const vector<CoMMAWeightType> &priority_weights,
-
98 const vector<CoMMAIntType> &n_bnd_faces,
-
99 const CoMMAIntType max_bnd,
-
100 CoMMAQueueType &q) override {
-
101 // Similar to function build_queue but without is_agglomerated
-
102 // Using set to force order
-
103 CoMMASetOfPairType tmp_set{};
-
104 for (auto i_fc = decltype(n_bnd_faces.size()){0}; i_fc < n_bnd_faces.size();
-
105 ++i_fc) {
-
106 if (n_bnd_faces[i_fc] >= max_bnd)
-
107 tmp_set.emplace(i_fc, priority_weights[i_fc]);
-
108 }
-
109 for (const auto &idx : tmp_set)
-
110 q.push_back(idx.first);
-
111 }
-
112};
-
113
-
120template<
-
121 typename CoMMAIndexType,
-
122 typename CoMMAWeightType,
-
123 typename CoMMAIntType>
-
124struct SPOnePointInitializator :
-
125 public SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
-
127 using BaseClass =
-
128 SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
130 using typename BaseClass::CoMMAPairType;
-
132 using typename BaseClass::CoMMAQueueType;
-
142 void operator()(
-
143 const vector<CoMMAWeightType> &priority_weights,
-
144 const vector<CoMMAIntType> &n_bnd_faces,
-
145 const CoMMAIntType max_bnd,
-
146 CoMMAQueueType &q) override {
-
147 CoMMAPairType cur_max{
-
148 numeric_limits<CoMMAIndexType>::max(),
-
149 numeric_limits<CoMMAWeightType>::min()};
-
150 const CustomPairGreaterFunctor<CoMMAPairType> comp_op{};
-
151 for (auto i_fc = decltype(n_bnd_faces.size()){0}; i_fc < n_bnd_faces.size();
-
152 ++i_fc) {
-
153 const CoMMAPairType p{i_fc, priority_weights[i_fc]};
-
154 if (n_bnd_faces[i_fc] >= max_bnd && comp_op(p, cur_max))
-
155 cur_max = move(p);
-
156 }
-
157 q.push_back(cur_max.first);
-
158 }
-
159};
-
160
-
168template<
-
169 typename CoMMAIndexType,
-
170 typename CoMMAWeightType,
-
171 typename CoMMAIntType>
-
172class Seeds_Pool {
-
173public:
-
175 using CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>;
-
176#if 0
-
178 // Better to use a deque (rather than the default vector) because it has nice
-
179 // insert / remove performances, and it's more closer to the philosophy we would
-
180 // like to obtain
-
181 using CoMMAContainerPairType = deque<CoMMAPairType>;
-
183 // A drawback of priority_queue to be aware of: it cannot be looped through
-
184 // A workaround is explained on https://stackoverflow.com/questions/4484767/how-to-iterate-over-a-priority-queue
-
185 // TODO: Maybe change to the advised make_heap (with vector or deque)
-
186 using CoMMAPriorityQueueType = priority_queue<CoMMAPairType,
-
187 CoMMAContainerPairType,
-
188 CustomPairLessFunctor<CoMMAPairType>>;
-
189#endif
-
191 using CoMMAQueueType = deque<CoMMAIndexType>;
-
193 using CoMMASetOfPairType =
-
194 set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType>>;
-
195
-
196protected:
-
201 vector<CoMMAQueueType> _l_of_seeds;
-
202
-
204 const vector<CoMMAWeightType> &_priority_weights;
-
205
-
209 optional<CoMMAIntType> _cur_top_queue;
-
210
-
212 shared_ptr<SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
-
213 _initializator;
-
214
-
215public:
-
217 const vector<CoMMAIntType> &_n_bnd_faces;
-
218
-
227 Seeds_Pool(
-
228 const vector<CoMMAIntType> &n_bnd_faces,
-
229 const vector<CoMMAWeightType> &priority_weights,
-
230 const bool one_point_init) :
-
231 _priority_weights(priority_weights),
-
232 _cur_top_queue(nullopt),
-
233 _n_bnd_faces(n_bnd_faces) {
-
234 // The size 4 corresponds to 0 : interior, 1 : valley, 2 : ridge, 3 : corner
-
235 _l_of_seeds = vector<CoMMAQueueType>(CoMMACellT::N_CELL_TYPES);
-
236
-
237 _initializator = nullptr;
-
238 if (one_point_init)
-
239 _initializator = make_shared<SPOnePointInitializator<
-
240 CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>();
-
241 else
-
242 _initializator = make_shared<
-
243 SPFullInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>();
-
244 }
-
245
-
247 virtual ~Seeds_Pool() = default;
-
248
-
255 inline optional<CoMMAIndexType> spoil_queue(
-
256 const vector<bool> &is_fc_agglomerated, CoMMAQueueType &queue) {
-
257 // If there still is something and it's already agglomerated, then keep on
-
258 // searching
-
259 for (; !queue.empty() && is_fc_agglomerated[queue.front()];
-
260 queue.pop_front()) {}
-
261 if (!queue.empty()) {
-
262 const auto seed = queue.front();
-
263 queue.pop_front();
-
264 return seed;
-
265 }
-
266 return nullopt;
+
20#include <limits>
+
21#include <list>
+
22#include <map>
+
23#include <memory>
+
24#include <optional>
+
25#include <queue>
+
26#include <set>
+
27#include <utility>
+
28#include <vector>
+
29
+
30#include "CoMMA/CoMMADefs.h"
+
31#include "CoMMA/Util.h"
+
32
+
33namespace comma {
+
34
+
41template<
+
42 typename CoMMAIndexType,
+
43 typename CoMMAWeightType,
+
44 typename CoMMAIntType>
+
45struct SPInitializator {
+
47 using CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>;
+
49 using CoMMAQueueType = std::deque<CoMMAIndexType>;
+
51 using CoMMASetOfPairType =
+
52 std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType>>;
+
53
+
55 SPInitializator() = default;
+
56
+
58 virtual ~SPInitializator() = default;
+
59
+
69 virtual void operator()(
+
70 const std::vector<CoMMAWeightType> &priority_weights,
+
71 const std::vector<CoMMAIntType> &n_bnd_faces,
+
72 const CoMMAIntType max_bnd,
+
73 CoMMAQueueType &queue) = 0;
+
74};
+
75
+
82template<
+
83 typename CoMMAIndexType,
+
84 typename CoMMAWeightType,
+
85 typename CoMMAIntType>
+
86struct SPFullInitializator :
+
87 public SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
89 using BaseClass =
+
90 SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
92 using typename BaseClass::CoMMAQueueType;
+
94 using typename BaseClass::CoMMASetOfPairType;
+
95
+
97 SPFullInitializator() : BaseClass() {}
+
98
+
100 ~SPFullInitializator() override = default;
+
101
+
111 void operator()(
+
112 const std::vector<CoMMAWeightType> &priority_weights,
+
113 const std::vector<CoMMAIntType> &n_bnd_faces,
+
114 const CoMMAIntType max_bnd,
+
115 CoMMAQueueType &queue) override {
+
116 // Similar to function build_queue but without is_agglomerated
+
117 // Using set to force order
+
118 CoMMASetOfPairType tmp_set{};
+
119 for (auto i_fc = decltype(n_bnd_faces.size()){0}; i_fc < n_bnd_faces.size();
+
120 ++i_fc) {
+
121 if (n_bnd_faces[i_fc] >= max_bnd)
+
122 tmp_set.emplace(i_fc, priority_weights[i_fc]);
+
123 }
+
124 for (const auto &idx : tmp_set)
+
125 queue.push_back(idx.first);
+
126 }
+
127};
+
128
+
135template<
+
136 typename CoMMAIndexType,
+
137 typename CoMMAWeightType,
+
138 typename CoMMAIntType>
+
139struct SPOnePointInitializator :
+
140 public SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
142 using BaseClass =
+
143 SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
145 using typename BaseClass::CoMMAPairType;
+
147 using typename BaseClass::CoMMAQueueType;
+
148
+
150 SPOnePointInitializator() : BaseClass() {}
+
151
+
153 ~SPOnePointInitializator() override = default;
+
154
+
164 void operator()(
+
165 const std::vector<CoMMAWeightType> &priority_weights,
+
166 const std::vector<CoMMAIntType> &n_bnd_faces,
+
167 const CoMMAIntType max_bnd,
+
168 CoMMAQueueType &queue) override {
+
169 CoMMAPairType cur_max{
+
170 std::numeric_limits<CoMMAIndexType>::max(),
+
171 std::numeric_limits<CoMMAWeightType>::min()};
+
172 const CustomPairGreaterFunctor<CoMMAPairType> comp_op{};
+
173 for (auto i_fc = decltype(n_bnd_faces.size()){0}; i_fc < n_bnd_faces.size();
+
174 ++i_fc) {
+
175 const CoMMAPairType cur_pair{i_fc, priority_weights[i_fc]};
+
176 if (n_bnd_faces[i_fc] >= max_bnd && comp_op(cur_pair, cur_max))
+
177 cur_max = std::move(cur_pair);
+
178 }
+
179 queue.push_back(cur_max.first);
+
180 }
+
181};
+
182
+
190template<
+
191 typename CoMMAIndexType,
+
192 typename CoMMAWeightType,
+
193 typename CoMMAIntType>
+
194class Seeds_Pool {
+
195public:
+
197 using CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>;
+
198#if 0
+
200 // Better to use a deque (rather than the default vector) because it has nice
+
201 // insert / remove performances, and it's more closer to the philosophy we would
+
202 // like to obtain
+
203 using CoMMAContainerPairType = std::deque<CoMMAPairType>;
+
205 // A drawback of priority_queue to be aware of: it cannot be looped through
+
206 // A workaround is explained on https://stackoverflow.com/questions/4484767/how-to-iterate-over-a-priority-queue
+
207 // TODO: Maybe change to the advised make_heap (with vector or deque)
+
208 using CoMMAPriorityQueueType = priority_queue<CoMMAPairType,
+
209 CoMMAContainerPairType,
+
210 CustomPairLessFunctor<CoMMAPairType>>;
+
211#endif
+
213 using CoMMAQueueType = std::deque<CoMMAIndexType>;
+
215 using CoMMASetOfPairType =
+
216 std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType>>;
+
217
+
218protected:
+
223 std::vector<CoMMAQueueType> _l_of_seeds;
+
224
+
226 const std::vector<CoMMAWeightType> &_priority_weights;
+
227
+
231 std::optional<CoMMAIntType> _cur_top_queue;
+
232
+
234 std::shared_ptr<
+
235 SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>
+
236 _initializator;
+
237
+
238public:
+
240 const std::vector<CoMMAIntType> &_n_bnd_faces;
+
241
+
250 Seeds_Pool(
+
251 const std::vector<CoMMAIntType> &n_bnd_faces,
+
252 const std::vector<CoMMAWeightType> &priority_weights,
+
253 const bool one_point_init) :
+
254 _priority_weights(priority_weights),
+
255 _cur_top_queue(std::nullopt),
+
256 _n_bnd_faces(n_bnd_faces) {
+
257 // The size 4 corresponds to 0 : interior, 1 : valley, 2 : ridge, 3 : corner
+
258 _l_of_seeds = std::vector<CoMMAQueueType>(CoMMACellT::N_CELL_TYPES);
+
259
+
260 _initializator = nullptr;
+
261 if (one_point_init)
+
262 _initializator = std::make_shared<SPOnePointInitializator<
+
263 CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>();
+
264 else
+
265 _initializator = std::make_shared<
+
266 SPFullInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>>();
267 }
268
-
274 virtual optional<CoMMAIndexType> choose_new_seed(
-
275 const vector<bool> &is_agglomerated) = 0;
-
276
-
283 virtual void update(const deque<CoMMAIndexType> &new_seeds) = 0;
-
284
-
290 virtual void order_new_seeds_and_update(
-
291 const unordered_set<CoMMAIndexType> &new_seeds) = 0;
-
292
-
301 inline void build_queue(
-
302 const vector<bool> &is_fc_agglomerated, const CoMMAIntType target) {
-
303 // Using set to force order
-
304 CoMMASetOfPairType tmp_set{};
-
305 for (auto i_fc = decltype(_n_bnd_faces.size()){0};
-
306 i_fc < _n_bnd_faces.size(); ++i_fc) {
-
307 if (!is_fc_agglomerated[i_fc] && _n_bnd_faces[i_fc] == target)
-
308 tmp_set.emplace(i_fc, _priority_weights[i_fc]);
-
309 }
-
310 for (const auto &idx : tmp_set)
-
311 _l_of_seeds[target].push_back(idx.first);
-
312 }
-
313
-
323 inline optional<CoMMAIntType> get_highest_n_bnd_yet_to_agglomerate(
-
324 const vector<bool> &is_fc_agglomerated,
-
325 const CoMMAIntType expected_max = CoMMACellT::CORNER) const {
-
326 optional<CoMMAIntType> max_bnd = nullopt;
-
327 for (auto i_fc = decltype(_n_bnd_faces.size()){0};
-
328 i_fc < _n_bnd_faces.size(); ++i_fc) {
-
329 if (!is_fc_agglomerated[i_fc]) {
-
330 const auto i_fc_bnd = _n_bnd_faces[i_fc];
-
331 if (!max_bnd.has_value()) max_bnd = i_fc_bnd;
-
332 if (i_fc_bnd >= expected_max) {
-
333 return i_fc_bnd;
-
334 } else if (i_fc_bnd > max_bnd) {
-
335 max_bnd = i_fc_bnd;
-
336 }
-
337 }
-
338 }
-
339 return max_bnd;
-
340 }
-
341
-
346 bool is_empty(CoMMAIntType i_level = CoMMACellT::N_CELL_TYPES) const {
-
347 assert(CoMMACellT::INTERIOR <= i_level);
-
348 assert(i_level <= CoMMACellT::N_CELL_TYPES);
-
349 if (_l_of_seeds.size() > 0) {
-
350 switch (i_level) {
-
351 case CoMMACellT::INTERIOR:
-
352 return _l_of_seeds[CoMMACellT::INTERIOR].empty();
-
353 case CoMMACellT::VALLEY:
-
354 return _l_of_seeds[CoMMACellT::VALLEY].empty();
-
355 case CoMMACellT::RIDGE:
-
356 return _l_of_seeds[CoMMACellT::RIDGE].empty();
-
357 case CoMMACellT::CORNER:
-
358 return _l_of_seeds[CoMMACellT::CORNER].empty();
-
359 case CoMMACellT::N_CELL_TYPES:
-
360 default:
-
361 return _l_of_seeds[CoMMACellT::INTERIOR].empty()
-
362 && _l_of_seeds[CoMMACellT::VALLEY].empty()
-
363 && _l_of_seeds[CoMMACellT::RIDGE].empty()
-
364 && _l_of_seeds[CoMMACellT::CORNER].empty();
-
365 } /* Switch */
-
366 }
-
367 return true;
-
368 }
-
369
-
375 virtual bool need_initialization(const vector<bool> &is_agglomerated) = 0;
-
376
-
378 inline void initialize() {
-
379 if (!_cur_top_queue.has_value())
-
380 // Computing the max number of boundary faces. Only the related seed queue
-
381 // will be filled at this initial stage
-
382 _cur_top_queue = *(max_element(_n_bnd_faces.begin(), _n_bnd_faces.end()));
-
383 (*this->_initializator)(
-
384 this->_priority_weights, this->_n_bnd_faces, this->_cur_top_queue.value(),
-
385 this->_l_of_seeds[this->_cur_top_queue.value()]);
-
386 }
-
387
-
391 inline void set_top_queue(const CoMMAIntType q_lvl) {
-
392 this->_cur_top_queue = q_lvl;
-
393 }
-
394};
-
395
-
404template<
-
405 typename CoMMAIndexType,
-
406 typename CoMMAWeightType,
-
407 typename CoMMAIntType>
-
408class Seeds_Pool_Boundary_Priority :
-
409 public Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
-
410public:
-
412 using SeedsPoolBaseType =
-
413 Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
415 using typename SeedsPoolBaseType::CoMMAPairType;
-
417 using typename SeedsPoolBaseType::CoMMASetOfPairType;
-
418
-
427 Seeds_Pool_Boundary_Priority(
-
428 const vector<CoMMAIntType> &n_bnd_faces,
-
429 const vector<CoMMAWeightType> &priority_weights,
-
430 const bool one_point_init) :
-
431 Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
-
432 n_bnd_faces, priority_weights, one_point_init) {}
-
433
-
439 optional<CoMMAIndexType> choose_new_seed(
-
440 const vector<bool> &is_agglomerated) override {
-
441 // Choose a correct seed from the fc pool list_of_seeds beyond not
-
442 // agglomerated fc.
-
443 // We choose preferably the corners, then the ridges, then the valley, and
-
444 // finally interior cells:
-
445 // see NIA (Mavriplis uses Wall and farfield only)
-
446 // Exactly the inverse of the order of the list. For this reason we proceed
-
447 // from the back
-
448 if (this->_cur_top_queue.has_value()) {
-
449 auto opt_seed = this->spoil_queue(
-
450 is_agglomerated, this->_l_of_seeds[this->_cur_top_queue.value()]);
-
451 if (opt_seed.has_value()) return opt_seed.value();
-
452 auto opt_top = this->get_highest_n_bnd_yet_to_agglomerate(
-
453 is_agglomerated, this->_cur_top_queue.value());
-
454 if (opt_top.has_value()) {
-
455 const auto cur_queue = opt_top.value();
-
456 this->_cur_top_queue = cur_queue;
-
457 // Could be the same top queue, but that's OK
-
458 opt_seed =
-
459 this->spoil_queue(is_agglomerated, this->_l_of_seeds[cur_queue]);
-
460 if (opt_seed.has_value()) return opt_seed.value();
-
461 // If here, we already used everything that we had in the seeds pool but
-
462 // there are still cells to agglomerate of the same type, hence we need
-
463 // to rebuild the queue from scratch
-
464 this->build_queue(is_agglomerated, cur_queue);
-
465
-
466 const auto seed = this->_l_of_seeds[cur_queue].front();
-
467 this->_l_of_seeds[cur_queue].pop_front();
-
468 return seed;
-
469 }
-
470 // If everything failed, set to null
-
471 this->_cur_top_queue = nullopt;
-
472 }
-
473 return nullopt;
-
474 }
-
475
-
482 inline void update(const deque<CoMMAIndexType> &new_seeds) override {
-
483 if (!new_seeds.empty()) {
-
484 CoMMAIntType max_bnd{0};
-
485 for (const auto &s : new_seeds) {
-
486 const auto n_bnd = this->_n_bnd_faces[s];
-
487 if (n_bnd > max_bnd) max_bnd = n_bnd;
-
488 // We add even if already present. Worst case scenario, a check if
-
489 // agglomerated is done when choosing new seed
-
490 this->_l_of_seeds[n_bnd].push_back(s);
-
491 }
-
492 if (
-
493 !this->_cur_top_queue.has_value()
-
494 || max_bnd > this->_cur_top_queue.value())
-
495 this->_cur_top_queue = max_bnd;
+
270 virtual ~Seeds_Pool() = default;
+
271
+
278 inline std::optional<CoMMAIndexType> spoil_queue(
+
279 const std::vector<bool> &is_fc_agglomerated, CoMMAQueueType &queue) {
+
280 // If there still is something and it's already agglomerated, then keep on
+
281 // searching
+
282 for (; !queue.empty() && is_fc_agglomerated[queue.front()];
+
283 queue.pop_front()) {}
+
284 if (!queue.empty()) {
+
285 const auto seed = queue.front();
+
286 queue.pop_front();
+
287 return seed;
+
288 }
+
289 return std::nullopt;
+
290 }
+
291
+
297 virtual std::optional<CoMMAIndexType> choose_new_seed(
+
298 const std::vector<bool> &is_agglomerated) = 0;
+
299
+
306 virtual void update(const std::deque<CoMMAIndexType> &new_seeds) = 0;
+
307
+
313 virtual void order_new_seeds_and_update(
+
314 const std::unordered_set<CoMMAIndexType> &new_seeds) = 0;
+
315
+
324 inline void build_queue(
+
325 const std::vector<bool> &is_fc_agglomerated, const CoMMAIntType target) {
+
326 // Using set to force order
+
327 CoMMASetOfPairType tmp_set{};
+
328 for (auto i_fc = decltype(_n_bnd_faces.size()){0};
+
329 i_fc < _n_bnd_faces.size(); ++i_fc) {
+
330 if (!is_fc_agglomerated[i_fc] && _n_bnd_faces[i_fc] == target)
+
331 tmp_set.emplace(i_fc, _priority_weights[i_fc]);
+
332 }
+
333 for (const auto &idx : tmp_set)
+
334 _l_of_seeds[target].push_back(idx.first);
+
335 }
+
336
+
346 inline std::optional<CoMMAIntType> get_highest_n_bnd_yet_to_agglomerate(
+
347 const std::vector<bool> &is_fc_agglomerated,
+
348 const CoMMAIntType expected_max = CoMMACellT::CORNER) const {
+
349 std::optional<CoMMAIntType> max_bnd = std::nullopt;
+
350 for (auto i_fc = decltype(_n_bnd_faces.size()){0};
+
351 i_fc < _n_bnd_faces.size(); ++i_fc) {
+
352 if (!is_fc_agglomerated[i_fc]) {
+
353 const auto i_fc_bnd = _n_bnd_faces[i_fc];
+
354 if (!max_bnd.has_value()) max_bnd = i_fc_bnd;
+
355 if (i_fc_bnd >= expected_max) { return i_fc_bnd; }
+
356 if (i_fc_bnd > max_bnd) { max_bnd = i_fc_bnd; }
+
357 }
+
358 }
+
359 return max_bnd;
+
360 }
+
361
+
366 bool is_empty(CoMMAIntType i_level = CoMMACellT::N_CELL_TYPES) const {
+
367 assert(CoMMACellT::INTERIOR <= i_level);
+
368 assert(i_level <= CoMMACellT::N_CELL_TYPES);
+
369 if (!_l_of_seeds.empty()) {
+
370 switch (i_level) {
+
371 case CoMMACellT::INTERIOR:
+
372 return _l_of_seeds[CoMMACellT::INTERIOR].empty();
+
373 case CoMMACellT::VALLEY:
+
374 return _l_of_seeds[CoMMACellT::VALLEY].empty();
+
375 case CoMMACellT::RIDGE:
+
376 return _l_of_seeds[CoMMACellT::RIDGE].empty();
+
377 case CoMMACellT::CORNER:
+
378 return _l_of_seeds[CoMMACellT::CORNER].empty();
+
379 case CoMMACellT::N_CELL_TYPES:
+
380 default:
+
381 return _l_of_seeds[CoMMACellT::INTERIOR].empty()
+
382 && _l_of_seeds[CoMMACellT::VALLEY].empty()
+
383 && _l_of_seeds[CoMMACellT::RIDGE].empty()
+
384 && _l_of_seeds[CoMMACellT::CORNER].empty();
+
385 } /* Switch */
+
386 }
+
387 return true;
+
388 }
+
389
+
395 virtual bool need_initialization(
+
396 const std::vector<bool> &is_agglomerated) = 0;
+
397
+
399 inline void initialize() {
+
400 if (!_cur_top_queue.has_value())
+
401 // Computing the max number of boundary faces. Only the related seed queue
+
402 // will be filled at this initial stage
+
403 _cur_top_queue = *(max_element(_n_bnd_faces.begin(), _n_bnd_faces.end()));
+
404 (*this->_initializator)(
+
405 this->_priority_weights, this->_n_bnd_faces, this->_cur_top_queue.value(),
+
406 this->_l_of_seeds[this->_cur_top_queue.value()]);
+
407 }
+
408
+
412 inline void set_top_queue(const CoMMAIntType q_lvl) {
+
413 this->_cur_top_queue = q_lvl;
+
414 }
+
415};
+
416
+
425template<
+
426 typename CoMMAIndexType,
+
427 typename CoMMAWeightType,
+
428 typename CoMMAIntType>
+
429class Seeds_Pool_Boundary_Priority :
+
430 public Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
431public:
+
433 using SeedsPoolBaseType =
+
434 Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
436 using typename SeedsPoolBaseType::CoMMAPairType;
+
438 using typename SeedsPoolBaseType::CoMMASetOfPairType;
+
439
+
448 Seeds_Pool_Boundary_Priority(
+
449 const std::vector<CoMMAIntType> &n_bnd_faces,
+
450 const std::vector<CoMMAWeightType> &priority_weights,
+
451 const bool one_point_init) :
+
452 Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
+
453 n_bnd_faces, priority_weights, one_point_init) {}
+
454
+
456 ~Seeds_Pool_Boundary_Priority() override = default;
+
457
+
463 std::optional<CoMMAIndexType> choose_new_seed(
+
464 const std::vector<bool> &is_agglomerated) override {
+
465 // Choose a correct seed from the fc pool list_of_seeds beyond not
+
466 // agglomerated fc.
+
467 // We choose preferably the corners, then the ridges, then the valley, and
+
468 // finally interior cells:
+
469 // see NIA (Mavriplis uses Wall and farfield only)
+
470 // Exactly the inverse of the order of the list. For this reason we proceed
+
471 // from the back
+
472 if (this->_cur_top_queue.has_value()) {
+
473 auto opt_seed = this->spoil_queue(
+
474 is_agglomerated, this->_l_of_seeds[this->_cur_top_queue.value()]);
+
475 if (opt_seed.has_value()) return opt_seed.value();
+
476 auto opt_top = this->get_highest_n_bnd_yet_to_agglomerate(
+
477 is_agglomerated, this->_cur_top_queue.value());
+
478 if (opt_top.has_value()) {
+
479 const auto cur_queue = opt_top.value();
+
480 this->_cur_top_queue = cur_queue;
+
481 // Could be the same top queue, but that's OK
+
482 opt_seed =
+
483 this->spoil_queue(is_agglomerated, this->_l_of_seeds[cur_queue]);
+
484 if (opt_seed.has_value()) return opt_seed.value();
+
485 // If here, we already used everything that we had in the seeds pool but
+
486 // there are still cells to agglomerate of the same type, hence we need
+
487 // to rebuild the queue from scratch
+
488 this->build_queue(is_agglomerated, cur_queue);
+
489
+
490 const auto seed = this->_l_of_seeds[cur_queue].front();
+
491 this->_l_of_seeds[cur_queue].pop_front();
+
492 return seed;
+
493 }
+
494 // If everything failed, set to null
+
495 this->_cur_top_queue = std::nullopt;
496 }
-
497 }
-
498
-
504 inline void order_new_seeds_and_update(
-
505 const unordered_set<CoMMAIndexType> &new_seeds) override {
-
506 map<CoMMAIntType, CoMMASetOfPairType, greater<>> new_seeds_by_bnd;
+
497 return std::nullopt;
+
498 }
+
499
+
506 inline void update(const std::deque<CoMMAIndexType> &new_seeds) override {
507 if (!new_seeds.empty()) {
-
508 for (const auto s : new_seeds) {
-
509 new_seeds_by_bnd[this->_n_bnd_faces[s]].emplace(
-
510 s, this->_priority_weights[s]);
-
511 }
-
512 const auto max_bnd = new_seeds_by_bnd.begin()->first;
-
513 if (
-
514 !this->_cur_top_queue.has_value()
-
515 || max_bnd > this->_cur_top_queue.value())
-
516 this->_cur_top_queue = max_bnd;
-
517 for (const auto &[n_bnd, seeds] : new_seeds_by_bnd) {
-
518 // We add even if already present. Worst case scenario, a check if
-
519 // agglomerated is done when choosing new seed
-
520 transform(
-
521 seeds.cbegin(), seeds.cend(), back_inserter(this->_l_of_seeds[n_bnd]),
-
522 [](const auto &p) { return p.first; });
-
523 }
-
524 }
-
525 }
-
526
-
533 bool need_initialization(const vector<bool> &is_agglomerated) override {
-
534 if (this->is_empty() || (!this->_cur_top_queue.has_value())) return true;
-
535 const auto max_bnd =
-
536 this->get_highest_n_bnd_yet_to_agglomerate(is_agglomerated);
-
537 if (max_bnd.has_value() && max_bnd.value() > this->_cur_top_queue.value()) {
-
538 this->_cur_top_queue = max_bnd.value();
-
539 return true;
-
540 }
-
541 return false;
-
542 }
-
543};
-
544
-
553template<
-
554 typename CoMMAIndexType,
-
555 typename CoMMAWeightType,
-
556 typename CoMMAIntType>
-
557class Seeds_Pool_Neighbourhood_Priority :
-
558 public Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
-
559public:
-
561 using SeedsPoolBaseType =
-
562 Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
-
564 using typename SeedsPoolBaseType::CoMMAPairType;
-
566 using typename SeedsPoolBaseType::CoMMASetOfPairType;
-
567
-
576 Seeds_Pool_Neighbourhood_Priority(
-
577 const vector<CoMMAIntType> &n_bnd_faces,
-
578 const vector<CoMMAWeightType> &priority_weights,
-
579 const bool one_point_init) :
-
580 Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
-
581 n_bnd_faces, priority_weights, one_point_init) {}
-
582
-
588 optional<CoMMAIndexType> choose_new_seed(
-
589 const vector<bool> &is_agglomerated) override {
-
590 // Choose a correct seed from the fc pool list_of_seeds beyond not
-
591 // agglomerated fc.
-
592 // We choose preferably the corners, then the ridges, then the valley, and
-
593 // finally interior cells:
-
594 // see NIA (Mavriplis uses Wall and farfield only)
-
595 // Exactly the inverse of the order of the list. For this reason we proceed
-
596 // from the back
-
597 if (this->_cur_top_queue.has_value()) {
-
598 for (auto q =
-
599 this->_l_of_seeds.rbegin()
-
600 + (this->_l_of_seeds.size() - (this->_cur_top_queue.value() + 1));
-
601 q != this->_l_of_seeds.rend(); ++q) {
-
602 const auto opt_seed = this->spoil_queue(is_agglomerated, *q);
-
603 if (opt_seed.has_value()) {
-
604 this->_cur_top_queue = distance(q, this->_l_of_seeds.rend()) - 1;
-
605 return opt_seed.value();
-
606 }
-
607 }
-
608
-
609 // If not found, see which is the highest unfinished level
-
610 const auto opt_top = this->get_highest_n_bnd_yet_to_agglomerate(
-
611 is_agglomerated, this->_cur_top_queue.value());
-
612 if (opt_top.has_value()) {
-
613 const auto cur_queue = opt_top.value();
-
614 this->_cur_top_queue = cur_queue;
-
615 // Could be the same top queue, but that's OK
-
616 const auto opt_seed =
-
617 this->spoil_queue(is_agglomerated, this->_l_of_seeds[cur_queue]);
-
618 if (opt_seed.has_value()) return opt_seed.value();
-
619 // If here, we already used everything that we had in the seeds pool but
-
620 // there are still cells to agglomerate of the same type, hence we need
-
621 // to rebuild the queue from scratch
-
622 this->build_queue(is_agglomerated, cur_queue);
-
623
-
624 const auto seed = this->_l_of_seeds[cur_queue].front();
-
625 this->_l_of_seeds[cur_queue].pop_front();
-
626 return seed;
-
627 }
-
628 // If everything failed, set to null
-
629 this->_cur_top_queue = nullopt;
-
630 }
-
631 return nullopt;
-
632 }
-
633
-
640 inline void update(const deque<CoMMAIndexType> &new_seeds) override {
-
641 for (const auto &s : new_seeds) {
-
642 // In order to the neighbourhood priority, we choose to append to the
-
643 // current top queue, rather than switching queue
-
644 const auto q_lvl =
-
645 this->_cur_top_queue.has_value()
-
646 ? min(this->_n_bnd_faces[s], this->_cur_top_queue.value())
-
647 : this->_n_bnd_faces[s];
-
648 // We add even if already present. Worst case scenario, a check if
-
649 // agglomerated is done when choosing new seed
-
650 this->_l_of_seeds[q_lvl].push_back(s);
-
651 }
-
652 }
-
653
-
659 inline void order_new_seeds_and_update(
-
660 const unordered_set<CoMMAIndexType> &new_seeds) override {
-
661 map<CoMMAIntType, CoMMASetOfPairType, greater<>> new_seeds_by_bnd;
-
662 for (const auto s : new_seeds) {
-
663 new_seeds_by_bnd[this->_n_bnd_faces[s]].emplace(
-
664 s, this->_priority_weights[s]);
-
665 }
-
666 for (auto &[n_bnd, seeds] : new_seeds_by_bnd) {
-
667 // In order to the neighbourhood priority, we choose to append to the
-
668 // current top queue, rather than switching queue
-
669 const auto q_lvl = this->_cur_top_queue.has_value()
-
670 ? min(n_bnd, this->_cur_top_queue.value())
-
671 : n_bnd;
-
672 // We add even if already present. Worst case scenario, a check if
-
673 // agglomerated is done when choosing new seed
-
674 transform(
-
675 seeds.cbegin(), seeds.cend(), back_inserter(this->_l_of_seeds[q_lvl]),
-
676 [](const auto &p) { return p.first; });
-
677 }
-
678 }
-
679
-
684 bool need_initialization(const vector<bool> &is_agglomerated) override {
-
685 CoMMAUnused(is_agglomerated);
-
686 return this->is_empty() || (!this->_cur_top_queue.has_value());
-
687 }
-
688};
-
689#endif // COMMA_PROJECT_SEEDS_POOL_H
-
CoMMATypes.h
+
508 CoMMAIntType max_bnd{0};
+
509 for (const auto &seed : new_seeds) {
+
510 const auto n_bnd = this->_n_bnd_faces[seed];
+
511 if (n_bnd > max_bnd) max_bnd = n_bnd;
+
512 // We add even if already present. Worst case scenario, a check if
+
513 // agglomerated is done when choosing new seed
+
514 this->_l_of_seeds[n_bnd].push_back(seed);
+
515 }
+
516 if (
+
517 !this->_cur_top_queue.has_value()
+
518 || max_bnd > this->_cur_top_queue.value())
+
519 this->_cur_top_queue = max_bnd;
+
520 }
+
521 }
+
522
+
528 inline void order_new_seeds_and_update(
+
529 const std::unordered_set<CoMMAIndexType> &new_seeds) override {
+
530 std::map<CoMMAIntType, CoMMASetOfPairType, std::greater<>> new_seeds_by_bnd;
+
531 if (!new_seeds.empty()) {
+
532 for (const auto seed : new_seeds) {
+
533 new_seeds_by_bnd[this->_n_bnd_faces[seed]].emplace(
+
534 seed, this->_priority_weights[seed]);
+
535 }
+
536 const auto max_bnd = new_seeds_by_bnd.begin()->first;
+
537 if (
+
538 !this->_cur_top_queue.has_value()
+
539 || max_bnd > this->_cur_top_queue.value())
+
540 this->_cur_top_queue = max_bnd;
+
541 for (const auto &[n_bnd, seeds] : new_seeds_by_bnd) {
+
542 // We add even if already present. Worst case scenario, a check if
+
543 // agglomerated is done when choosing new seed
+
544 std::transform(
+
545 seeds.cbegin(), seeds.cend(),
+
546 std::back_inserter(this->_l_of_seeds[n_bnd]),
+
547 [](const auto &pr) { return pr.first; });
+
548 }
+
549 }
+
550 }
+
551
+
558 bool need_initialization(const std::vector<bool> &is_agglomerated) override {
+
559 if (this->is_empty() || (!this->_cur_top_queue.has_value())) return true;
+
560 const auto max_bnd =
+
561 this->get_highest_n_bnd_yet_to_agglomerate(is_agglomerated);
+
562 if (max_bnd.has_value() && max_bnd.value() > this->_cur_top_queue.value()) {
+
563 this->_cur_top_queue = max_bnd.value();
+
564 return true;
+
565 }
+
566 return false;
+
567 }
+
568};
+
569
+
578template<
+
579 typename CoMMAIndexType,
+
580 typename CoMMAWeightType,
+
581 typename CoMMAIntType>
+
582class Seeds_Pool_Neighbourhood_Priority :
+
583 public Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> {
+
584public:
+
586 using SeedsPoolBaseType =
+
587 Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
589 using typename SeedsPoolBaseType::CoMMAPairType;
+
591 using typename SeedsPoolBaseType::CoMMASetOfPairType;
+
592
+
601 Seeds_Pool_Neighbourhood_Priority(
+
602 const std::vector<CoMMAIntType> &n_bnd_faces,
+
603 const std::vector<CoMMAWeightType> &priority_weights,
+
604 const bool one_point_init) :
+
605 Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>(
+
606 n_bnd_faces, priority_weights, one_point_init) {}
+
607
+
609 ~Seeds_Pool_Neighbourhood_Priority() override = default;
+
610
+
616 std::optional<CoMMAIndexType> choose_new_seed(
+
617 const std::vector<bool> &is_agglomerated) override {
+
618 // Choose a correct seed from the fc pool list_of_seeds beyond not
+
619 // agglomerated fc.
+
620 // We choose preferably the corners, then the ridges, then the valley, and
+
621 // finally interior cells:
+
622 // see NIA (Mavriplis uses Wall and farfield only)
+
623 // Exactly the inverse of the order of the list. For this reason we proceed
+
624 // from the back
+
625 if (this->_cur_top_queue.has_value()) {
+
626 for (auto queue =
+
627 this->_l_of_seeds.rbegin()
+
628 + (this->_l_of_seeds.size() - (this->_cur_top_queue.value() + 1));
+
629 queue != this->_l_of_seeds.rend(); ++queue) {
+
630 const auto opt_seed = this->spoil_queue(is_agglomerated, *queue);
+
631 if (opt_seed.has_value()) {
+
632 this->_cur_top_queue = distance(queue, this->_l_of_seeds.rend()) - 1;
+
633 return opt_seed.value();
+
634 }
+
635 }
+
636
+
637 // If not found, see which is the highest unfinished level
+
638 const auto opt_top = this->get_highest_n_bnd_yet_to_agglomerate(
+
639 is_agglomerated, this->_cur_top_queue.value());
+
640 if (opt_top.has_value()) {
+
641 const auto cur_queue = opt_top.value();
+
642 this->_cur_top_queue = cur_queue;
+
643 // Could be the same top queue, but that's OK
+
644 const auto opt_seed =
+
645 this->spoil_queue(is_agglomerated, this->_l_of_seeds[cur_queue]);
+
646 if (opt_seed.has_value()) return opt_seed.value();
+
647 // If here, we already used everything that we had in the seeds pool but
+
648 // there are still cells to agglomerate of the same type, hence we need
+
649 // to rebuild the queue from scratch
+
650 this->build_queue(is_agglomerated, cur_queue);
+
651
+
652 const auto seed = this->_l_of_seeds[cur_queue].front();
+
653 this->_l_of_seeds[cur_queue].pop_front();
+
654 return seed;
+
655 }
+
656 // If everything failed, set to null
+
657 this->_cur_top_queue = std::nullopt;
+
658 }
+
659 return std::nullopt;
+
660 }
+
661
+
668 inline void update(const std::deque<CoMMAIndexType> &new_seeds) override {
+
669 for (const auto &seed : new_seeds) {
+
670 // In order to the neighbourhood priority, we choose to append to the
+
671 // current top queue, rather than switching queue
+
672 const auto q_lvl =
+
673 this->_cur_top_queue.has_value()
+
674 ? std::min(this->_n_bnd_faces[seed], this->_cur_top_queue.value())
+
675 : this->_n_bnd_faces[seed];
+
676 // We add even if already present. Worst case scenario, a check if
+
677 // agglomerated is done when choosing new seed
+
678 this->_l_of_seeds[q_lvl].push_back(seed);
+
679 }
+
680 }
+
681
+
687 inline void order_new_seeds_and_update(
+
688 const std::unordered_set<CoMMAIndexType> &new_seeds) override {
+
689 std::map<CoMMAIntType, CoMMASetOfPairType, std::greater<>> new_seeds_by_bnd;
+
690 for (const auto &seed : new_seeds) {
+
691 new_seeds_by_bnd[this->_n_bnd_faces[seed]].emplace(
+
692 seed, this->_priority_weights[seed]);
+
693 }
+
694 for (auto &[n_bnd, seeds] : new_seeds_by_bnd) {
+
695 // In order to the neighbourhood priority, we choose to append to the
+
696 // current top queue, rather than switching queue
+
697 const auto q_lvl = this->_cur_top_queue.has_value()
+
698 ? std::min(n_bnd, this->_cur_top_queue.value())
+
699 : n_bnd;
+
700 // We add even if already present. Worst case scenario, a check if
+
701 // agglomerated is done when choosing new seed
+
702 std::transform(
+
703 seeds.cbegin(), seeds.cend(),
+
704 std::back_inserter(this->_l_of_seeds[q_lvl]),
+
705 [](const auto &pr) { return pr.first; });
+
706 }
+
707 }
+
708
+
713 bool need_initialization(const std::vector<bool> &is_agglomerated) override {
+
714 CoMMAUnused(is_agglomerated);
+
715 return this->is_empty() || (!this->_cur_top_queue.has_value());
+
716 }
+
717};
+
718
+
719} // end namespace comma
+
720
+
721#endif // COMMA_PROJECT_SEEDS_POOL_H
+
CoMMADefs.h
Util.h
CoMMAUnused
#define CoMMAUnused(var)
Convenient function to avoid unused warnings.
Definition: Util.h:34
-
Seeds_Pool_Boundary_Priority
Class representing the pool of all the seeds for creating a coarse cell. This derived class gives hig...
Definition: Seeds_Pool.h:409
-
Seeds_Pool_Boundary_Priority::need_initialization
bool need_initialization(const vector< bool > &is_agglomerated) override
Whether the seeds pool need to be initialized. It updates the top queue if necessary.
Definition: Seeds_Pool.h:533
-
Seeds_Pool_Boundary_Priority::order_new_seeds_and_update
void order_new_seeds_and_update(const unordered_set< CoMMAIndexType > &new_seeds) override
Add the provided seeds to a seeds pool queue according to the number of boundary faces....
Definition: Seeds_Pool.h:504
-
Seeds_Pool_Boundary_Priority::Seeds_Pool_Boundary_Priority
Seeds_Pool_Boundary_Priority(const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
Constructor.
Definition: Seeds_Pool.h:427
-
Seeds_Pool_Boundary_Priority::update
void update(const deque< CoMMAIndexType > &new_seeds) override
Add the provided seeds to a seeds pool queue according to the number of boundary faces....
Definition: Seeds_Pool.h:482
-
Seeds_Pool_Boundary_Priority::choose_new_seed
optional< CoMMAIndexType > choose_new_seed(const vector< bool > &is_agglomerated) override
Choose a new seed in the pool.
Definition: Seeds_Pool.h:439
-
Seeds_Pool_Neighbourhood_Priority
Class representing the pool of all the seeds for creating a coarse cell. This derived class gives hig...
Definition: Seeds_Pool.h:558
-
Seeds_Pool_Neighbourhood_Priority::update
void update(const deque< CoMMAIndexType > &new_seeds) override
Add the provided seeds to a seeds pool queue according to the number of boundary faces.
Definition: Seeds_Pool.h:640
-
Seeds_Pool_Neighbourhood_Priority::choose_new_seed
optional< CoMMAIndexType > choose_new_seed(const vector< bool > &is_agglomerated) override
Choose a new seed in the pool.
Definition: Seeds_Pool.h:588
-
Seeds_Pool_Neighbourhood_Priority::order_new_seeds_and_update
void order_new_seeds_and_update(const unordered_set< CoMMAIndexType > &new_seeds) override
Add the provided seeds to a seeds pool queue according to the number of boundary faces....
Definition: Seeds_Pool.h:659
-
Seeds_Pool_Neighbourhood_Priority::need_initialization
bool need_initialization(const vector< bool > &is_agglomerated) override
Whether the seeds pool need to be initialized.
Definition: Seeds_Pool.h:684
-
Seeds_Pool_Neighbourhood_Priority::Seeds_Pool_Neighbourhood_Priority
Seeds_Pool_Neighbourhood_Priority(const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
Constructor.
Definition: Seeds_Pool.h:576
-
Seeds_Pool
Class representing the pool of all the seeds for creating a coarse cell.
Definition: Seeds_Pool.h:172
-
Seeds_Pool::Seeds_Pool
Seeds_Pool(const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
Constructor.
Definition: Seeds_Pool.h:227
-
Seeds_Pool::initialize
void initialize()
Initialize the seeds pool via a call to its initializator.
Definition: Seeds_Pool.h:378
-
Seeds_Pool::build_queue
void build_queue(const vector< bool > &is_fc_agglomerated, const CoMMAIntType target)
Build the weight-ordered queue of seed for a given target level. A set of (index, weight) pair with s...
Definition: Seeds_Pool.h:301
-
Seeds_Pool::_n_bnd_faces
const vector< CoMMAIntType > & _n_bnd_faces
Vector of number of faces on boundary per cell.
Definition: Seeds_Pool.h:217
-
Seeds_Pool::CoMMASetOfPairType
set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Seeds_Pool.h:194
-
Seeds_Pool::choose_new_seed
virtual optional< CoMMAIndexType > choose_new_seed(const vector< bool > &is_agglomerated)=0
Choose a new seed in the pool.
-
Seeds_Pool::order_new_seeds_and_update
virtual void order_new_seeds_and_update(const unordered_set< CoMMAIndexType > &new_seeds)=0
Add the provided seeds to a seeds pool queue according to the number of boundary faces....
-
Seeds_Pool::_cur_top_queue
optional< CoMMAIntType > _cur_top_queue
Optional possibly containing the level (0,1,2,3, see Seeds_Pool::_l_of_seeds) of the queue currently ...
Definition: Seeds_Pool.h:209
-
Seeds_Pool::_priority_weights
const vector< CoMMAWeightType > & _priority_weights
Weights used to set the order of the seed to choose.
Definition: Seeds_Pool.h:204
-
Seeds_Pool::is_empty
bool is_empty(CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) const
Given the default levels we define if the list of the targeted level is empty.
Definition: Seeds_Pool.h:346
-
Seeds_Pool::~Seeds_Pool
virtual ~Seeds_Pool()=default
Destructor.
-
Seeds_Pool::_l_of_seeds
vector< CoMMAQueueType > _l_of_seeds
List of deque of seeds. For each identifier we have the available seeds. We want the seed to be chose...
Definition: Seeds_Pool.h:201
-
Seeds_Pool::CoMMAPairType
pair< CoMMAIndexType, CoMMAWeightType > CoMMAPairType
Type of pair.
Definition: Seeds_Pool.h:175
-
Seeds_Pool::get_highest_n_bnd_yet_to_agglomerate
optional< CoMMAIntType > get_highest_n_bnd_yet_to_agglomerate(const vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) const
Compute the highest number of boundary faces of cells which are not agglomerated yet.
Definition: Seeds_Pool.h:323
-
Seeds_Pool::need_initialization
virtual bool need_initialization(const vector< bool > &is_agglomerated)=0
Whether the seeds pool need to be initialized.
-
Seeds_Pool::CoMMAQueueType
deque< CoMMAIndexType > CoMMAQueueType
Type of queue which holds seeds.
Definition: Seeds_Pool.h:191
-
Seeds_Pool::spoil_queue
optional< CoMMAIndexType > spoil_queue(const vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)
Spoil a queue looking for an not-yet-agglomerated seed.
Definition: Seeds_Pool.h:255
-
Seeds_Pool::_initializator
shared_ptr< SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _initializator
Pointer to a SPInitializator.
Definition: Seeds_Pool.h:213
-
Seeds_Pool::update
virtual void update(const deque< CoMMAIndexType > &new_seeds)=0
Add the provided seeds to a seeds pool queue according to the number of boundary faces.
-
Seeds_Pool::set_top_queue
void set_top_queue(const CoMMAIntType q_lvl)
Setter for the top queue member.
Definition: Seeds_Pool.h:391
-
CustomPairGreaterFunctor
Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for ...
Definition: Util.h:154
-
CustomPairLessFunctor
Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the se...
Definition: Util.h:129
-
SPFullInitializator
Functor performing the full initialization of a seeds pool.
Definition: Seeds_Pool.h:79
-
SPFullInitializator::operator()
void operator()(const vector< CoMMAWeightType > &priority_weights, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &q) override
Initialize a queue of a seeds pool.
Definition: Seeds_Pool.h:96
-
SPFullInitializator::CoMMASetOfPairType
set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Seeds_Pool.h:51
-
SPFullInitializator::CoMMAQueueType
deque< CoMMAIndexType > CoMMAQueueType
Type of queue which holds seeds.
Definition: Seeds_Pool.h:48
-
SPInitializator
Functor performing the initialization of a seeds pool.
Definition: Seeds_Pool.h:44
-
SPInitializator::operator()
virtual void operator()(const vector< CoMMAWeightType > &priority_weights, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &q)=0
Initialize a queue of a seeds pool.
-
SPInitializator::CoMMASetOfPairType
set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Seeds_Pool.h:51
-
SPInitializator::CoMMAQueueType
deque< CoMMAIndexType > CoMMAQueueType
Type of queue which holds seeds.
Definition: Seeds_Pool.h:48
-
SPInitializator::CoMMAPairType
pair< CoMMAIndexType, CoMMAWeightType > CoMMAPairType
Type of pair.
Definition: Seeds_Pool.h:46
-
SPOnePointInitializator
Functor performing the one-point initialization of a seeds pool.
Definition: Seeds_Pool.h:125
-
SPOnePointInitializator::CoMMAQueueType
deque< CoMMAIndexType > CoMMAQueueType
Type of queue which holds seeds.
Definition: Seeds_Pool.h:48
-
SPOnePointInitializator::operator()
void operator()(const vector< CoMMAWeightType > &priority_weights, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &q) override
Initialize a queue of a seeds pool.
Definition: Seeds_Pool.h:142
-
SPOnePointInitializator::CoMMAPairType
pair< CoMMAIndexType, CoMMAWeightType > CoMMAPairType
Type of pair.
Definition: Seeds_Pool.h:46
+
comma::Seeds_Pool_Boundary_Priority
Class representing the pool of all the seeds for creating a coarse cell. This derived class gives hig...
Definition: Seeds_Pool.h:430
+
comma::Seeds_Pool_Boundary_Priority::order_new_seeds_and_update
void order_new_seeds_and_update(const std::unordered_set< CoMMAIndexType > &new_seeds) override
Add the provided seeds to a seeds pool queue according to the number of boundary faces....
Definition: Seeds_Pool.h:528
+
comma::Seeds_Pool_Boundary_Priority::need_initialization
bool need_initialization(const std::vector< bool > &is_agglomerated) override
Whether the seeds pool need to be initialized. It updates the top queue if necessary.
Definition: Seeds_Pool.h:558
+
comma::Seeds_Pool_Boundary_Priority::Seeds_Pool_Boundary_Priority
Seeds_Pool_Boundary_Priority(const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
Constructor.
Definition: Seeds_Pool.h:448
+
comma::Seeds_Pool_Boundary_Priority::~Seeds_Pool_Boundary_Priority
~Seeds_Pool_Boundary_Priority() override=default
Destructor.
+
comma::Seeds_Pool_Boundary_Priority::update
void update(const std::deque< CoMMAIndexType > &new_seeds) override
Add the provided seeds to a seeds pool queue according to the number of boundary faces....
Definition: Seeds_Pool.h:506
+
comma::Seeds_Pool_Boundary_Priority::choose_new_seed
std::optional< CoMMAIndexType > choose_new_seed(const std::vector< bool > &is_agglomerated) override
Choose a new seed in the pool.
Definition: Seeds_Pool.h:463
+
comma::Seeds_Pool_Neighbourhood_Priority
Class representing the pool of all the seeds for creating a coarse cell. This derived class gives hig...
Definition: Seeds_Pool.h:583
+
comma::Seeds_Pool_Neighbourhood_Priority::choose_new_seed
std::optional< CoMMAIndexType > choose_new_seed(const std::vector< bool > &is_agglomerated) override
Choose a new seed in the pool.
Definition: Seeds_Pool.h:616
+
comma::Seeds_Pool_Neighbourhood_Priority::need_initialization
bool need_initialization(const std::vector< bool > &is_agglomerated) override
Whether the seeds pool need to be initialized.
Definition: Seeds_Pool.h:713
+
comma::Seeds_Pool_Neighbourhood_Priority::Seeds_Pool_Neighbourhood_Priority
Seeds_Pool_Neighbourhood_Priority(const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
Constructor.
Definition: Seeds_Pool.h:601
+
comma::Seeds_Pool_Neighbourhood_Priority::~Seeds_Pool_Neighbourhood_Priority
~Seeds_Pool_Neighbourhood_Priority() override=default
Destructor.
+
comma::Seeds_Pool_Neighbourhood_Priority::order_new_seeds_and_update
void order_new_seeds_and_update(const std::unordered_set< CoMMAIndexType > &new_seeds) override
Add the provided seeds to a seeds pool queue according to the number of boundary faces....
Definition: Seeds_Pool.h:687
+
comma::Seeds_Pool_Neighbourhood_Priority::update
void update(const std::deque< CoMMAIndexType > &new_seeds) override
Add the provided seeds to a seeds pool queue according to the number of boundary faces.
Definition: Seeds_Pool.h:668
+
comma::Seeds_Pool
Class representing the pool of all the seeds for creating a coarse cell.
Definition: Seeds_Pool.h:194
+
comma::Seeds_Pool::need_initialization
virtual bool need_initialization(const std::vector< bool > &is_agglomerated)=0
Whether the seeds pool need to be initialized.
+
comma::Seeds_Pool::_l_of_seeds
std::vector< CoMMAQueueType > _l_of_seeds
List of deque of seeds. For each identifier we have the available seeds. We want the seed to be chose...
Definition: Seeds_Pool.h:223
+
comma::Seeds_Pool::get_highest_n_bnd_yet_to_agglomerate
std::optional< CoMMAIntType > get_highest_n_bnd_yet_to_agglomerate(const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) const
Compute the highest number of boundary faces of cells which are not agglomerated yet.
Definition: Seeds_Pool.h:346
+
comma::Seeds_Pool::_priority_weights
const std::vector< CoMMAWeightType > & _priority_weights
Weights used to set the order of the seed to choose.
Definition: Seeds_Pool.h:226
+
comma::Seeds_Pool::Seeds_Pool
Seeds_Pool(const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
Constructor.
Definition: Seeds_Pool.h:250
+
comma::Seeds_Pool::choose_new_seed
virtual std::optional< CoMMAIndexType > choose_new_seed(const std::vector< bool > &is_agglomerated)=0
Choose a new seed in the pool.
+
comma::Seeds_Pool::is_empty
bool is_empty(CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) const
Given the default levels we define if the list of the targeted level is empty.
Definition: Seeds_Pool.h:366
+
comma::Seeds_Pool::CoMMAPairType
std::pair< CoMMAIndexType, CoMMAWeightType > CoMMAPairType
Type of pair.
Definition: Seeds_Pool.h:197
+
comma::Seeds_Pool::~Seeds_Pool
virtual ~Seeds_Pool()=default
Destructor.
+
comma::Seeds_Pool::initialize
void initialize()
Initialize the seeds pool via a call to its initializator.
Definition: Seeds_Pool.h:399
+
comma::Seeds_Pool::update
virtual void update(const std::deque< CoMMAIndexType > &new_seeds)=0
Add the provided seeds to a seeds pool queue according to the number of boundary faces.
+
comma::Seeds_Pool::CoMMASetOfPairType
std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Seeds_Pool.h:216
+
comma::Seeds_Pool::_cur_top_queue
std::optional< CoMMAIntType > _cur_top_queue
Optional possibly containing the level (0,1,2,3, see Seeds_Pool::_l_of_seeds) of the queue currently ...
Definition: Seeds_Pool.h:231
+
comma::Seeds_Pool::spoil_queue
std::optional< CoMMAIndexType > spoil_queue(const std::vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)
Spoil a queue looking for an not-yet-agglomerated seed.
Definition: Seeds_Pool.h:278
+
comma::Seeds_Pool::set_top_queue
void set_top_queue(const CoMMAIntType q_lvl)
Setter for the top queue member.
Definition: Seeds_Pool.h:412
+
comma::Seeds_Pool::CoMMAQueueType
std::deque< CoMMAIndexType > CoMMAQueueType
Type of queue which holds seeds.
Definition: Seeds_Pool.h:213
+
comma::Seeds_Pool::_initializator
std::shared_ptr< SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _initializator
Pointer to a SPInitializator.
Definition: Seeds_Pool.h:236
+
comma::Seeds_Pool::order_new_seeds_and_update
virtual void order_new_seeds_and_update(const std::unordered_set< CoMMAIndexType > &new_seeds)=0
Add the provided seeds to a seeds pool queue according to the number of boundary faces....
+
comma::Seeds_Pool::build_queue
void build_queue(const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType target)
Build the weight-ordered queue of seed for a given target level. A set of (index, weight) pair with s...
Definition: Seeds_Pool.h:324
+
comma::Seeds_Pool::_n_bnd_faces
const std::vector< CoMMAIntType > & _n_bnd_faces
Vector of number of faces on boundary per cell.
Definition: Seeds_Pool.h:240
+
comma
Definition: Agglomerator.h:34
+
comma::N_CELL_TYPES
@ N_CELL_TYPES
Total number of values.
Definition: CoMMADefs.h:31
+
comma::CORNER
@ CORNER
Corners, three boundary faces.
Definition: CoMMADefs.h:28
+
comma::VALLEY
@ VALLEY
Valley, one boundary face.
Definition: CoMMADefs.h:26
+
comma::RIDGE
@ RIDGE
Ridge, two boundary faces.
Definition: CoMMADefs.h:27
+
comma::INTERIOR
@ INTERIOR
Interior cell, no boundary faces.
Definition: CoMMADefs.h:25
+
comma::CustomPairGreaterFunctor
Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for ...
Definition: Util.h:154
+
comma::CustomPairLessFunctor
Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the se...
Definition: Util.h:131
+
comma::SPFullInitializator
Functor performing the full initialization of a seeds pool.
Definition: Seeds_Pool.h:87
+
comma::SPFullInitializator::SPFullInitializator
SPFullInitializator()
Constructor.
Definition: Seeds_Pool.h:97
+
comma::SPFullInitializator::~SPFullInitializator
~SPFullInitializator() override=default
Destructor.
+
comma::SPFullInitializator::operator()
void operator()(const std::vector< CoMMAWeightType > &priority_weights, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &queue) override
Initialize a queue of a seeds pool.
Definition: Seeds_Pool.h:111
+
comma::SPFullInitializator::CoMMASetOfPairType
std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Seeds_Pool.h:52
+
comma::SPFullInitializator::CoMMAQueueType
std::deque< CoMMAIndexType > CoMMAQueueType
Type of queue which holds seeds.
Definition: Seeds_Pool.h:49
+
comma::SPInitializator
Functor performing the initialization of a seeds pool.
Definition: Seeds_Pool.h:45
+
comma::SPInitializator::CoMMAPairType
std::pair< CoMMAIndexType, CoMMAWeightType > CoMMAPairType
Type of pair.
Definition: Seeds_Pool.h:47
+
comma::SPInitializator::~SPInitializator
virtual ~SPInitializator()=default
Destructor.
+
comma::SPInitializator::SPInitializator
SPInitializator()=default
Constructor.
+
comma::SPInitializator::operator()
virtual void operator()(const std::vector< CoMMAWeightType > &priority_weights, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &queue)=0
Initialize a queue of a seeds pool.
+
comma::SPInitializator::CoMMASetOfPairType
std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > > CoMMASetOfPairType
Type of set of pairs.
Definition: Seeds_Pool.h:52
+
comma::SPInitializator::CoMMAQueueType
std::deque< CoMMAIndexType > CoMMAQueueType
Type of queue which holds seeds.
Definition: Seeds_Pool.h:49
+
comma::SPOnePointInitializator
Functor performing the one-point initialization of a seeds pool.
Definition: Seeds_Pool.h:140
+
comma::SPOnePointInitializator::CoMMAPairType
std::pair< CoMMAIndexType, CoMMAWeightType > CoMMAPairType
Type of pair.
Definition: Seeds_Pool.h:47
+
comma::SPOnePointInitializator::operator()
void operator()(const std::vector< CoMMAWeightType > &priority_weights, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &queue) override
Initialize a queue of a seeds pool.
Definition: Seeds_Pool.h:164
+
comma::SPOnePointInitializator::~SPOnePointInitializator
~SPOnePointInitializator() override=default
Destructor.
+
comma::SPOnePointInitializator::SPOnePointInitializator
SPOnePointInitializator()
Constructor.
Definition: Seeds_Pool.h:150
+
comma::SPOnePointInitializator::CoMMAQueueType
std::deque< CoMMAIndexType > CoMMAQueueType
Type of queue which holds seeds.
Definition: Seeds_Pool.h:49
diff --git a/_tree_8h.html b/_tree_8h.html index 42f02ce..e43245c 100644 --- a/_tree_8h.html +++ b/_tree_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/deprecated/Tree.h File Reference +CoMMA: include/CoMMA/deprecated/Tree.h File Reference @@ -92,7 +92,8 @@
-Classes
+Classes | +Namespaces
Tree.h File Reference
@@ -106,11 +107,16 @@ - - + + - - + + + +

Classes

class  Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Node data structure that represent a node of the tree. More...
class  comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Node data structure that represent a node of the tree. More...
 
class  Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Tree structure that represent a coarse cell, the fine cell and the neighbours to them. More...
class  comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Tree structure that represent a coarse cell, the fine cell and the neighbours to them. More...
 
+ +

+Namespaces

namespace  comma
 
@@ -118,7 +124,7 @@ diff --git a/_tree_8h.js b/_tree_8h.js index 95cd570..b06a410 100644 --- a/_tree_8h.js +++ b/_tree_8h.js @@ -1,5 +1,5 @@ var _tree_8h = [ - [ "Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_node.html", "class_node" ], - [ "Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_tree.html", "class_tree" ] + [ "comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_node.html", "classcomma_1_1_node" ], + [ "comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_tree.html", "classcomma_1_1_tree" ] ]; \ No newline at end of file diff --git a/_tree_8h_source.html b/_tree_8h_source.html index 3eb16d9..c69cbf3 100644 --- a/_tree_8h_source.html +++ b/_tree_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/deprecated/Tree.h Source File +CoMMA: include/CoMMA/deprecated/Tree.h Source File @@ -100,7 +100,7 @@
4/*
5 * CoMMA
6 *
-
7 * Copyright © 2023 ONERA
+
7 * Copyright © 2024 ONERA
8 *
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
10 * Contributors: Karim Anemiche
@@ -116,137 +116,141 @@
20#include <memory>
21#include <vector>
22
-
23using namespace std;
+
23namespace comma {
24
32template<
33 typename CoMMAIndexType,
34 typename CoMMAWeightType,
35 typename CoMMAIntType>
-
36class Node {
+
36class Node {
37public:
-
38 Node(CoMMAIndexType index, CoMMAWeightType volume) :
-
39 _index(index), _volume(volume){};
-
41 CoMMAIndexType _index;
-
43 CoMMAWeightType _volume;
-
45 CoMMAIntType _sonc = 0;
-
47 shared_ptr<Node> _father;
-
49 shared_ptr<Node> _left_idx;
-
51 shared_ptr<Node> _right_idx;
-
53 shared_ptr<Node> _left_son_idx;
+
38 Node(CoMMAIndexType index, CoMMAWeightType volume) :
+
39 _index(index), _volume(volume){};
+
41 CoMMAIndexType _index;
+
43 CoMMAWeightType _volume;
+
45 CoMMAIntType _sonc = 0;
+
47 std::shared_ptr<Node> _father;
+
49 std::shared_ptr<Node> _left_idx;
+
51 std::shared_ptr<Node> _right_idx;
+
53 std::shared_ptr<Node> _left_son_idx;
54};
55
64template<
65 typename CoMMAIndexType,
66 typename CoMMAWeightType,
67 typename CoMMAIntType>
-
68class Tree {
+
68class Tree {
69public:
-
71 using NodeType = Node<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
+
71 using NodeType = Node<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>;
72
-
76 Tree(shared_ptr<NodeType> &root) : _root(root) {}
+
76 explicit Tree(std::shared_ptr<NodeType> &root) : _root(root) {}
77
-
79 ~Tree(){};
+
79 ~Tree() = default;
80
-
82 shared_ptr<NodeType> _root;
+
82 std::shared_ptr<NodeType> _root;
83
-
90 void insertSon(
+
90 void insertSon(
91 const CoMMAIndexType &father_index,
92 const CoMMAIndexType &index,
93 const CoMMAWeightType &volume,
94 const CoMMAIntType &root) {
-
95 shared_ptr<NodeType> insertion = make_shared<NodeType>(index, volume);
-
96 auto u_p_father =
-
97 root == 1 ? _root : search(_root->_left_son_idx, father_index);
-
98 assert(u_p_father != nullptr);
-
99 insertion->_father = u_p_father;
-
100 auto left_idx = transverse(u_p_father->_left_son_idx);
-
101 if (left_idx == nullptr) {
-
102 u_p_father->_left_son_idx = insertion;
-
103 } else {
-
104 insertion->_left_idx = left_idx;
-
105 left_idx->_right_idx = insertion;
-
106 }
-
107 u_p_father->_sonc = u_p_father->_sonc + 1;
-
108 // cout << u_p_father->_sonc << endl;
-
109 }
-
110
-
116 shared_ptr<NodeType> search(
-
117 shared_ptr<NodeType> &node, const CoMMAIndexType &value) {
-
118 if (node->_index == value && node->_father != nullptr) { return node; }
-
119 if (node == nullptr || node->_right_idx == nullptr) { return nullptr; }
-
120 return (search(node->_right_idx, value));
-
121 }
-
122
-
127 shared_ptr<NodeType> transverse(shared_ptr<NodeType> &node) {
-
128 if (node == nullptr || node->_right_idx == nullptr) { return node; }
-
129 return (transverse(node->_right_idx));
-
130 }
-
131
-
135 void deleteNode(const CoMMAIndexType &value) {
-
136 delete_node(_root->_left_son_idx, value);
-
137 }
-
138
-
143 void delete_node(
-
144 shared_ptr<NodeType> &searched_node, const CoMMAIndexType &value) {
-
145 if (searched_node == nullptr) { return; }
-
146 if (searched_node->_index == value) {
-
147 // case 0: leftest node
-
148 if (searched_node->_left_idx == nullptr) {
-
149 searched_node->_father->_sonc--;
-
150 searched_node->_father->_left_son_idx = searched_node->_right_idx;
-
151 searched_node->_right_idx->_left_idx = nullptr;
-
152 }
-
153 // case 1: rightest node
-
154 else if (searched_node->_right_idx == nullptr) {
-
155 searched_node->_father->_sonc = searched_node->_father->_sonc - 1;
-
156 searched_node->_left_idx->_right_idx.reset();
-
157 } else {
-
158 searched_node->_father->_sonc--;
-
159 searched_node->_left_idx->_right_idx = searched_node->_right_idx;
-
160 searched_node->_right_idx->_left_idx = searched_node->_left_idx;
-
161 }
-
162 return;
-
163 }
-
164 delete_node(searched_node->_right_idx, value);
-
165 }
-
166
-
168 void print() { print_nodes(_root); }
-
169
-
173 void print_nodes(shared_ptr<NodeType> &node) {
-
174 if (node == nullptr) { return; }
-
175 // cout << "node" << node->_index << endl;
-
176 print_nodes(node->_left_son_idx);
-
177 print_nodes(node->_right_idx);
-
178 }
-
179};
-
180
-
181#endif // COMMA_PROJECT_TREE_H
-
Node
Node data structure that represent a node of the tree.
Definition: Tree.h:36
-
Node::_left_son_idx
shared_ptr< Node > _left_son_idx
Shared pointer to the left element.
Definition: Tree.h:53
-
Node::_sonc
CoMMAIntType _sonc
Number of son.
Definition: Tree.h:45
-
Node::_index
CoMMAIndexType _index
Index of the cell.
Definition: Tree.h:41
-
Node::_father
shared_ptr< Node > _father
Shared pointer to the father node.
Definition: Tree.h:47
-
Node::_right_idx
shared_ptr< Node > _right_idx
Shared pointer to the right element.
Definition: Tree.h:51
-
Node::_left_idx
shared_ptr< Node > _left_idx
Shared pointer to the left element.
Definition: Tree.h:49
-
Node::_volume
CoMMAWeightType _volume
Volume.
Definition: Tree.h:43
-
Node::Node
Node(CoMMAIndexType index, CoMMAWeightType volume)
Definition: Tree.h:38
-
Tree
Tree structure that represent a coarse cell, the fine cell and the neighbours to them.
Definition: Tree.h:68
-
Tree::search
shared_ptr< NodeType > search(shared_ptr< NodeType > &node, const CoMMAIndexType &value)
Look for a node.
Definition: Tree.h:116
-
Tree::transverse
shared_ptr< NodeType > transverse(shared_ptr< NodeType > &node)
Traverse the tree.
Definition: Tree.h:127
-
Tree::print
void print()
Print the tree.
Definition: Tree.h:168
-
Tree::deleteNode
void deleteNode(const CoMMAIndexType &value)
Delete a node.
Definition: Tree.h:135
-
Tree::delete_node
void delete_node(shared_ptr< NodeType > &searched_node, const CoMMAIndexType &value)
Delete a node.
Definition: Tree.h:143
-
Tree::_root
shared_ptr< NodeType > _root
The Node at the root of the tree.
Definition: Tree.h:82
-
Tree::print_nodes
void print_nodes(shared_ptr< NodeType > &node)
Print the branches starting from a given node.
Definition: Tree.h:173
-
Tree::Tree
Tree(shared_ptr< NodeType > &root)
Constructor.
Definition: Tree.h:76
-
Tree::insertSon
void insertSon(const CoMMAIndexType &father_index, const CoMMAIndexType &index, const CoMMAWeightType &volume, const CoMMAIntType &root)
Insert a node as child of a given node.
Definition: Tree.h:90
-
Tree::~Tree
~Tree()
Destructor.
Definition: Tree.h:79
+
95 std::shared_ptr<NodeType> insertion =
+
96 std::make_shared<NodeType>(index, volume);
+
97 auto u_p_father =
+
98 root == 1 ? _root : search(_root->_left_son_idx, father_index);
+
99 assert(u_p_father != nullptr);
+
100 insertion->_father = u_p_father;
+
101 auto left_idx = transverse(u_p_father->_left_son_idx);
+
102 if (left_idx == nullptr) {
+
103 u_p_father->_left_son_idx = insertion;
+
104 } else {
+
105 insertion->_left_idx = left_idx;
+
106 left_idx->_right_idx = insertion;
+
107 }
+
108 u_p_father->_sonc = u_p_father->_sonc + 1;
+
109 // std::cout << u_p_father->_sonc << std::endl;
+
110 }
+
111
+
117 std::shared_ptr<NodeType> search(
+
118 std::shared_ptr<NodeType> &node, const CoMMAIndexType &value) {
+
119 if (node->_index == value && node->_father != nullptr) { return node; }
+
120 if (node == nullptr || node->_right_idx == nullptr) { return nullptr; }
+
121 return (search(node->_right_idx, value));
+
122 }
+
123
+
128 std::shared_ptr<NodeType> transverse(std::shared_ptr<NodeType> &node) {
+
129 if (node == nullptr || node->_right_idx == nullptr) { return node; }
+
130 return (transverse(node->_right_idx));
+
131 }
+
132
+
136 void deleteNode(const CoMMAIndexType &value) {
+
137 delete_node(_root->_left_son_idx, value);
+
138 }
+
139
+
144 void delete_node(
+
145 std::shared_ptr<NodeType> &searched_node, const CoMMAIndexType &value) {
+
146 if (searched_node == nullptr) { return; }
+
147 if (searched_node->_index == value) {
+
148 // case 0: leftest node
+
149 if (searched_node->_left_idx == nullptr) {
+
150 searched_node->_father->_sonc--;
+
151 searched_node->_father->_left_son_idx = searched_node->_right_idx;
+
152 searched_node->_right_idx->_left_idx = nullptr;
+
153 }
+
154 // case 1: rightest node
+
155 else if (searched_node->_right_idx == nullptr) {
+
156 searched_node->_father->_sonc = searched_node->_father->_sonc - 1;
+
157 searched_node->_left_idx->_right_idx.reset();
+
158 } else {
+
159 searched_node->_father->_sonc--;
+
160 searched_node->_left_idx->_right_idx = searched_node->_right_idx;
+
161 searched_node->_right_idx->_left_idx = searched_node->_left_idx;
+
162 }
+
163 return;
+
164 }
+
165 delete_node(searched_node->_right_idx, value);
+
166 }
+
167
+
169 void print() { print_nodes(_root); }
+
170
+
174 void print_nodes(std::shared_ptr<NodeType> &node) {
+
175 if (node == nullptr) { return; }
+
176 // std::cout << "node" << node->_index << std::endl;
+
177 print_nodes(node->_left_son_idx);
+
178 print_nodes(node->_right_idx);
+
179 }
+
180};
+
181
+
182} // end namespace comma
+
183
+
184#endif // COMMA_PROJECT_TREE_H
+
comma::Node
Node data structure that represent a node of the tree.
Definition: Tree.h:36
+
comma::Node::_right_idx
std::shared_ptr< Node > _right_idx
Shared pointer to the right element.
Definition: Tree.h:51
+
comma::Node::_left_son_idx
std::shared_ptr< Node > _left_son_idx
Shared pointer to the left element.
Definition: Tree.h:53
+
comma::Node::_father
std::shared_ptr< Node > _father
Shared pointer to the father node.
Definition: Tree.h:47
+
comma::Node::_volume
CoMMAWeightType _volume
Volume.
Definition: Tree.h:43
+
comma::Node::_left_idx
std::shared_ptr< Node > _left_idx
Shared pointer to the left element.
Definition: Tree.h:49
+
comma::Node::_sonc
CoMMAIntType _sonc
Number of son.
Definition: Tree.h:45
+
comma::Node::Node
Node(CoMMAIndexType index, CoMMAWeightType volume)
Definition: Tree.h:38
+
comma::Node::_index
CoMMAIndexType _index
Index of the cell.
Definition: Tree.h:41
+
comma::Tree
Tree structure that represent a coarse cell, the fine cell and the neighbours to them.
Definition: Tree.h:68
+
comma::Tree::print_nodes
void print_nodes(std::shared_ptr< NodeType > &node)
Print the branches starting from a given node.
Definition: Tree.h:174
+
comma::Tree::_root
std::shared_ptr< NodeType > _root
The Node at the root of the tree.
Definition: Tree.h:82
+
comma::Tree::deleteNode
void deleteNode(const CoMMAIndexType &value)
Delete a node.
Definition: Tree.h:136
+
comma::Tree::insertSon
void insertSon(const CoMMAIndexType &father_index, const CoMMAIndexType &index, const CoMMAWeightType &volume, const CoMMAIntType &root)
Insert a node as child of a given node.
Definition: Tree.h:90
+
comma::Tree::transverse
std::shared_ptr< NodeType > transverse(std::shared_ptr< NodeType > &node)
Traverse the tree.
Definition: Tree.h:128
+
comma::Tree::print
void print()
Print the tree.
Definition: Tree.h:169
+
comma::Tree::search
std::shared_ptr< NodeType > search(std::shared_ptr< NodeType > &node, const CoMMAIndexType &value)
Look for a node.
Definition: Tree.h:117
+
comma::Tree::delete_node
void delete_node(std::shared_ptr< NodeType > &searched_node, const CoMMAIndexType &value)
Delete a node.
Definition: Tree.h:144
+
comma::Tree::~Tree
~Tree()=default
Destructor.
+
comma::Tree::Tree
Tree(std::shared_ptr< NodeType > &root)
Constructor.
Definition: Tree.h:76
+
comma
Definition: Agglomerator.h:34
diff --git a/_util_8h.html b/_util_8h.html index 0c7b8af..67dacf8 100644 --- a/_util_8h.html +++ b/_util_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Util.h File Reference +CoMMA: include/CoMMA/Util.h File Reference @@ -93,6 +93,7 @@
Classes | +Namespaces | Macros | Functions | Variables
@@ -115,17 +116,22 @@ - - + + - - + + - - + + - - + + + +

Classes

struct  CustomPairLessFunctor< PairT >
 Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones. More...
struct  comma::CustomPairLessFunctor< PairT >
 Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones. More...
 
struct  CustomPairGreaterFunctor< PairT >
 Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones. More...
struct  comma::CustomPairGreaterFunctor< PairT >
 Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones. More...
 
struct  PairSecondBasedLessFunctor< PairT >
 Functor for pairs implementing a less operator based only on the second element of the pair. More...
struct  comma::PairSecondBasedLessFunctor< PairT >
 Functor for pairs implementing a less operator based only on the second element of the pair. More...
 
class  PairFindFirstBasedFunctor< PairT >
 Functor implementing an operator telling if a given value if the first one of pair. More...
class  comma::PairFindFirstBasedFunctor< PairT >
 Functor implementing an operator telling if a given value if the first one of pair. More...
 
+ +

+Namespaces

namespace  comma
 

@@ -136,43 +142,43 @@

- - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + It takes a compressed version of the connectivity of the mesh. It uses a BFS algorithm to visit all the cells. More...
+

Functions

template<typename T >
bool dot_deviate (const T dot)
 Tell whether the dot product given as input comes from two parallel vectors. Compared against deviate_thresh. More...
 
template<typename T >
dot_product (const vector< T > &a, const vector< T > &b)
 Compute the dot product between two vectors. No check on size is performed. More...
 
template<typename T >
get_direction (const vector< T > &a, const vector< T > &b, vector< T > &dir)
 Compute the direction from point a to point b and store it as unit vector in dir. More...
 
template<typename T >
squared_euclidean_distance (const vector< T > &a, const vector< T > &b)
 Compute the squared Euclidean distance between two points seen as vectors. We use vectors because we can have both 2- and 3D points (also we can have 3D points even if the dimension given to CoMMA is 2D, e.g., with CODA pseudo-2D meshes). The dimension used as reference is the one of the first point. More...
 
template<typename CoMMAContainerPairType >
vector< typename CoMMAContainerPairType::value_type::first_type > vector_of_first_elements (const CoMMAContainerPairType &c)
 Given a container of pairs, return a vector with first elements only. More...
 
template<typename KeyT , typename ValueT >
unordered_set< KeyT > d_keys_to_set (const unordered_map< KeyT, ValueT > &dict)
 Utility function for creating a set out of the keys of a map. More...
 
template<typename IndexT , typename DistT >
void compute_neighbourhood_based_wall_distance (const vector< IndexT > &neigh_idxs, const vector< IndexT > &neighs, const vector< IndexT > &wall, vector< DistT > &dist)
 Compute a neighbourhood-base wall-distance, that is, the distance of a given cell from a wall is the number of cells though which the minimum path starting from the cell and ending at the wall. For example, in a Cartesian grids this is equivalent to the minimum of the Manhattan distance.
+
template<typename T >
bool comma::dot_deviate (const T dot)
 Tell whether the dot product given as input comes from two parallel vectors. Compared against deviate_thresh. More...
 
template<typename T >
comma::dot_product (const std::vector< T > &a, const std::vector< T > &b)
 Compute the dot product between two vectors. No check on size is performed. More...
 
template<typename T >
comma::get_direction (const std::vector< T > &a, const std::vector< T > &b, std::vector< T > &dir)
 Compute the direction from point a to point b and store it as unit vector in dir. More...
 
template<typename T >
comma::squared_euclidean_distance (const std::vector< T > &a, const std::vector< T > &b)
 Compute the squared Euclidean distance between two points seen as vectors. We use vectors because we can have both 2- and 3D points (also we can have 3D points even if the dimension given to CoMMA is 2D, e.g., with CODA pseudo-2D meshes). The dimension used as reference is the one of the first point. More...
 
template<typename CoMMAContainerPairType >
std::vector< typename CoMMAContainerPairType::value_type::first_type > comma::vector_of_first_elements (const CoMMAContainerPairType &cont)
 Given a container of pairs, return a vector with first elements only. More...
 
template<typename KeyT , typename ValueT >
std::unordered_set< KeyT > comma::d_keys_to_set (const std::unordered_map< KeyT, ValueT > &dict)
 Utility function for creating a set out of the keys of a map. More...
 
template<typename IndexT , typename DistT >
void comma::compute_neighbourhood_based_wall_distance (const std::vector< IndexT > &neigh_idxs, const std::vector< IndexT > &neighs, const std::vector< IndexT > &wall, std::vector< DistT > &dist)
 Compute a neighbourhood-base wall-distance, that is, the distance of a given cell from a wall is the number of cells though which the minimum path starting from the cell and ending at the wall. For example, in a Cartesian grids this is equivalent to the minimum of the Manhattan distance.
If the vector defining the wall is empty, return negative values.
If a cell is unconnected to the domain with the wall, its distance will be negative.
- It takes a compressed version of the connectivity of the mesh. It uses a BFS algorithm to visit all the cells. More...
 
 
- - - + + +

Variables

constexpr double deviate_thresh = 0.9396926207859084
 Threshold used in combination with a dot product to tell whether two vector deviate. It is set to $ \cos(20^\circ) $. More...
 
constexpr double comma::deviate_thresh = 0.9396926207859084
 Threshold used in combination with a dot product to tell whether two vector deviate. It is set to $ \cos(20^\circ) $. More...
 

Macro Definition Documentation

@@ -193,395 +199,6 @@

Function Documentation

- -

◆ compute_neighbourhood_based_wall_distance()

- -
-
-
-template<typename IndexT , typename DistT >
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void compute_neighbourhood_based_wall_distance (const vector< IndexT > & neigh_idxs,
const vector< IndexT > & neighs,
const vector< IndexT > & wall,
vector< DistT > & dist 
)
-
- -

Compute a neighbourhood-base wall-distance, that is, the distance of a given cell from a wall is the number of cells though which the minimum path starting from the cell and ending at the wall. For example, in a Cartesian grids this is equivalent to the minimum of the Manhattan distance.
- If the vector defining the wall is empty, return negative values.
- If a cell is unconnected to the domain with the wall, its distance will be negative.
- It takes a compressed version of the connectivity of the mesh. It uses a BFS algorithm to visit all the cells.

-
Template Parameters
- - - -
IndexTType for cell indices
DistTType for distance (should be signed)
-
-
-
Parameters
- - - - - -
[in]neigh_idxsIndices used to recover the neighbours of each cells provided in neighs. The length is $ N_{cells} + 1 $
[in]neighsNeighbours of the cells
[in]wallCells composing the wall from which the distance is computed
[out]distDistance from the wall. This vector is resized inside the function to hold all the cells
-
-
-
Warning
This function is experimental. Moreover, since CoMMA has knoledge of the current domain only, this function might not give the right result if the domain hab been partitioned. It is advised to use this function only when considering one domain only.
- -
-
- -

◆ d_keys_to_set()

- -
-
-
-template<typename KeyT , typename ValueT >
- - - - - -
- - - - - - - - -
unordered_set< KeyT > d_keys_to_set (const unordered_map< KeyT, ValueT > & dict)
-
-inline
-
- -

Utility function for creating a set out of the keys of a map.

-
Template Parameters
- - - -
KeyTType of the keys of the map
ValueTType of the values of the map
-
-
-
Parameters
- - -
[in]dictA map
-
-
-
Returns
a set
- -
-
- -

◆ dot_deviate()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
bool dot_deviate (const T dot)
-
-inline
-
- -

Tell whether the dot product given as input comes from two parallel vectors. Compared against deviate_thresh.

-
Template Parameters
- - -
TInput type
-
-
-
Parameters
- - -
[in]dotDot product
-
-
-
Returns
true if higher than a reference threshold
- -
-
- -

◆ dot_product()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
T dot_product (const vector< T > & a,
const vector< T > & b 
)
-
-inline
-
- -

Compute the dot product between two vectors. No check on size is performed.

-
Template Parameters
- - -
TInput type
-
-
-
Parameters
- - - -
[in]aFirst vector
[in]bSecond vector
-
-
-
Returns
the dot product
- -
-
- -

◆ get_direction()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
T get_direction (const vector< T > & a,
const vector< T > & b,
vector< T > & dir 
)
-
-inline
-
- -

Compute the direction from point a to point b and store it as unit vector in dir.

-
Template Parameters
- - -
TInput type
-
-
-
Parameters
- - - - -
[in]aStarting point
[in]bEnd point
[out]dirUnit vector of the direction
-
-
-
Returns
the distance from the two points (the norm used for the normalization)
- -
-
- -

◆ squared_euclidean_distance()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
T squared_euclidean_distance (const vector< T > & a,
const vector< T > & b 
)
-
-inline
-
- -

Compute the squared Euclidean distance between two points seen as vectors. We use vectors because we can have both 2- and 3D points (also we can have 3D points even if the dimension given to CoMMA is 2D, e.g., with CODA pseudo-2D meshes). The dimension used as reference is the one of the first point.

-
Template Parameters
- - -
TType for real numbers
-
-
-
Parameters
- - - -
[in]aFirst point
[in]bSecond point
-
-
-
Returns
The squared Euclidean distance between the two points
- -
-
- -

◆ vector_of_first_elements()

- -
-
-
-template<typename CoMMAContainerPairType >
- - - - - -
- - - - - - - - -
vector< typename CoMMAContainerPairType::value_type::first_type > vector_of_first_elements (const CoMMAContainerPairType & c)
-
-inline
-
- -

Given a container of pairs, return a vector with first elements only.

-
Template Parameters
- - -
CoMMAContainerPairTypeType of the input container
-
-
-
Parameters
- - -
[in]cA container of pairs from which the first elements will be extracted
-
-
-
Returns
The first elements of each pair
- -
-
-

Variable Documentation

- -

◆ deviate_thresh

- -
-
- - - - - -
- - - - -
constexpr double deviate_thresh = 0.9396926207859084
-
-constexpr
-
- -

Threshold used in combination with a dot product to tell whether two vector deviate. It is set to $ \cos(20^\circ) $.

-
@@ -589,7 +206,7 @@

diff --git a/_util_8h.js b/_util_8h.js index 369c09a..dfd5e50 100644 --- a/_util_8h.js +++ b/_util_8h.js @@ -1,16 +1,16 @@ var _util_8h = [ - [ "CustomPairLessFunctor< PairT >", "struct_custom_pair_less_functor.html", "struct_custom_pair_less_functor" ], - [ "CustomPairGreaterFunctor< PairT >", "struct_custom_pair_greater_functor.html", "struct_custom_pair_greater_functor" ], - [ "PairSecondBasedLessFunctor< PairT >", "struct_pair_second_based_less_functor.html", "struct_pair_second_based_less_functor" ], - [ "PairFindFirstBasedFunctor< PairT >", "class_pair_find_first_based_functor.html", "class_pair_find_first_based_functor" ], + [ "comma::CustomPairLessFunctor< PairT >", "structcomma_1_1_custom_pair_less_functor.html", "structcomma_1_1_custom_pair_less_functor" ], + [ "comma::CustomPairGreaterFunctor< PairT >", "structcomma_1_1_custom_pair_greater_functor.html", "structcomma_1_1_custom_pair_greater_functor" ], + [ "comma::PairSecondBasedLessFunctor< PairT >", "structcomma_1_1_pair_second_based_less_functor.html", "structcomma_1_1_pair_second_based_less_functor" ], + [ "comma::PairFindFirstBasedFunctor< PairT >", "classcomma_1_1_pair_find_first_based_functor.html", "classcomma_1_1_pair_find_first_based_functor" ], [ "CoMMAUnused", "_util_8h.html#a8084ea35afd15dd36dacfc54e6f8ff90", null ], - [ "compute_neighbourhood_based_wall_distance", "_util_8h.html#a391837a2e1b572f5f7926b9aaae04d44", null ], - [ "d_keys_to_set", "_util_8h.html#a0f9e797856aaddc8607e26502cea3658", null ], - [ "dot_deviate", "_util_8h.html#aeec73ae34bff3c397b99dcf03d14a4a5", null ], - [ "dot_product", "_util_8h.html#a92f46b4dab5ae23f1a86a2c55c2a6beb", null ], - [ "get_direction", "_util_8h.html#a40c9ba8185d11790d9d1a4e466d98a35", null ], - [ "squared_euclidean_distance", "_util_8h.html#a4cbf9d2aae5e1f86e108538e5baa10f8", null ], - [ "vector_of_first_elements", "_util_8h.html#a4eb847819a7f5df06f9de67ff7dff82a", null ], - [ "deviate_thresh", "_util_8h.html#a92bafb9d36c34646ee1bf8ec1c67f3c9", null ] + [ "compute_neighbourhood_based_wall_distance", "_util_8h.html#ae3653181db03b3ea76722462c3b3e02b", null ], + [ "d_keys_to_set", "_util_8h.html#a81affca718f9c9927cfb82c317c8239e", null ], + [ "dot_deviate", "_util_8h.html#aa6823809d0c8cc7a1e30d51cfb0ce21a", null ], + [ "dot_product", "_util_8h.html#a0e43c30768d45d4f1f643f2f8be53f5d", null ], + [ "get_direction", "_util_8h.html#a3fda6288b7b5c19904abf0312557c774", null ], + [ "squared_euclidean_distance", "_util_8h.html#a39eb676bbec9475d7b0b5a6186b5f3d0", null ], + [ "vector_of_first_elements", "_util_8h.html#ab712cf58df5dacc470f08332abdde7ec", null ], + [ "deviate_thresh", "_util_8h.html#a75164a303f92061683959fa690d67906", null ] ]; \ No newline at end of file diff --git a/_util_8h_source.html b/_util_8h_source.html index 27a8717..b880fe8 100644 --- a/_util_8h_source.html +++ b/_util_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/Util.h Source File +CoMMA: include/CoMMA/Util.h Source File @@ -100,7 +100,7 @@
4/*
5 * CoMMA
6 *
-
7 * Copyright © 2023 ONERA
+
7 * Copyright © 2024 ONERA
8 *
9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
10 * Contributors: Karim Anemiche
@@ -122,19 +122,19 @@
26#include <utility>
27#include <vector>
28
-
29using namespace std;
+
29namespace comma {
30
34#define CoMMAUnused(var) (void)(var)
35
-
39constexpr double deviate_thresh = 0.9396926207859084;
+
39constexpr double deviate_thresh = 0.9396926207859084;
40
47template<typename T>
-
48inline bool dot_deviate(const T dot) {
-
49 return fabs(dot) < decltype(fabs(dot)){deviate_thresh};
+
48inline bool dot_deviate(const T dot) {
+
49 return fabs(dot) < decltype(fabs(dot)){deviate_thresh};
50}
51
59template<typename T>
-
60inline T dot_product(const vector<T> &a, const vector<T> &b) {
+
60inline T dot_product(const std::vector<T> &a, const std::vector<T> &b) {
61#if 0
62 const CoMMAWeightType dot = inner_product(
63 prev_dir.begin(), prev_dir.end(), cur_dir.begin(),
@@ -147,167 +147,169 @@
70}
71
81template<typename T>
-
82inline T get_direction(const vector<T> &a, const vector<T> &b, vector<T> &dir) {
-
83 T norm{0.};
-
84 for (auto i = decltype(a.size()){0}; i < a.size(); ++i) {
-
85 const T di = b[i] - a[i];
-
86 dir[i] = di;
-
87 norm += di * di;
-
88 }
-
89 norm = sqrt(norm);
-
90 const T ov_norm = T{1.} / norm;
-
91 for (auto &di : dir)
-
92 di *= ov_norm;
-
93 return norm;
-
94}
-
95
-
106template<typename T>
-
107inline T squared_euclidean_distance(const vector<T> &a, const vector<T> &b) {
-
108#if 0
-
109 return sqrt(
-
110 transform_reduce(a.cbegin(), a.cend(), b.cbegin(), T{0.},
-
111 [](const auto sum, const auto val){return sum + val*val;},
-
112 minus<T>())
-
113 );
-
114#endif
-
115 T ret{0.};
-
116 for (auto i = decltype(a.size()){0}; i < a.size(); ++i) {
-
117 const auto d = a[i] - b[i];
-
118 ret += d * d;
-
119 }
-
120 return ret;
-
121}
-
122
-
128template<class PairT>
- -
138 inline bool operator()(const PairT &p, const PairT &q) const {
-
139 if (p.second < q.second)
-
140 return true;
-
141 else if (p.second > q.second)
-
142 return false;
-
143 else /* p.second == q.second */
-
144 return p.first > q.first;
+ +
83 const std::vector<T> &a, const std::vector<T> &b, std::vector<T> &dir) {
+
84 T norm{0.};
+
85 for (auto i = decltype(a.size()){0}; i < a.size(); ++i) {
+
86 const T di = b[i] - a[i];
+
87 dir[i] = di;
+
88 norm += di * di;
+
89 }
+
90 norm = sqrt(norm);
+
91 const T ov_norm = T{1.} / norm;
+
92 for (auto &di : dir)
+
93 di *= ov_norm;
+
94 return norm;
+
95}
+
96
+
107template<typename T>
+ +
109 const std::vector<T> &a, const std::vector<T> &b) {
+
110#if 0
+
111 return sqrt(
+
112 transform_reduce(a.cbegin(), a.cend(), b.cbegin(), T{0.},
+
113 [](const auto sum, const auto val){return sum + val*val;},
+
114 minus<T>())
+
115 );
+
116#endif
+
117 T dist{0.};
+
118 for (auto i = decltype(a.size()){0}; i < a.size(); ++i) {
+
119 const auto diff = a[i] - b[i];
+
120 dist += diff * diff;
+
121 }
+
122 return dist;
+
123}
+
124
+
130template<class PairT>
+ +
140 inline bool operator()(const PairT &left, const PairT &right) const {
+
141 if (left.second < right.second) return true;
+
142 if (left.second > right.second) return false;
+
143 /* left.second == right.second */
+
144 return left.first > right.first;
145 }
146};
147
153template<typename PairT>
- -
163 inline bool operator()(const PairT &p, const PairT &q) const {
-
164 // I tried this: return !CustomPairLessFunctor<PairT>()(p,q);
+ +
163 inline bool operator()(const PairT &left, const PairT &right) const {
+
164 // I tried this: return !CustomPairLessFunctor<PairT>()(left,right);
165 // but it didn't work well for equality
-
166 if (p.second > q.second)
-
167 return true;
-
168 else if (p.second < q.second)
-
169 return false;
-
170 else /* p.second == q.second */
-
171 return p.first < q.first;
-
172 }
-
173};
-
174
-
179template<typename PairT>
- -
187 inline bool operator()(const PairT &p, const PairT &q) const {
-
188 return p.second < q.second;
-
189 }
-
190};
-
191
-
198template<typename CoMMAContainerPairType>
-
199inline vector<typename CoMMAContainerPairType::value_type::first_type>
-
200vector_of_first_elements(const CoMMAContainerPairType &c) {
-
201 vector<typename CoMMAContainerPairType::value_type::first_type> fe;
-
202 fe.reserve(c.size());
-
203 for (const auto &p : c)
-
204 fe.emplace_back(p.first);
-
205 return fe;
-
206}
-
207
-
212template<typename PairT>
- -
214public:
- -
220 PairFindFirstBasedFunctor(const typename PairT::first_type &target) :
-
221 _target(target){};
- -
229 inline bool operator()(const PairT &p) const { return p.first == _target; }
-
230
-
231private:
-
233 typename PairT::first_type _target;
-
234};
-
235
-
242template<typename KeyT, typename ValueT>
-
243inline unordered_set<KeyT> d_keys_to_set(
-
244 const unordered_map<KeyT, ValueT> &dict) {
-
245 unordered_set<KeyT> s_neighbours_of_seed = {};
-
246 for (const auto &i_k_v : dict) {
-
247 s_neighbours_of_seed.insert(i_k_v.first);
-
248 }
-
249 return s_neighbours_of_seed;
-
250}
-
251
-
273template<typename IndexT, typename DistT>
- -
275 const vector<IndexT> &neigh_idxs,
-
276 const vector<IndexT> &neighs,
-
277 const vector<IndexT> &wall,
-
278 vector<DistT> &dist) {
-
279 static_assert(
-
280 is_signed<DistT>::value,
-
281 "The distance type should be signed to allow flags (negative values)");
-
282 dist.resize(neigh_idxs.size() - 1);
-
283 fill(dist.begin(), dist.end(), DistT{-1});
-
284 queue<IndexT> to_visit{};
-
285 for (const auto &cell : wall) {
-
286 dist[cell] = DistT{0};
-
287 to_visit.emplace(cell);
-
288 }
-
289 while (!to_visit.empty()) {
-
290 // If you get wrong results, this could might be to the fact that one should
-
291 // consider not specially the first of the queue, but the one with lowest
-
292 // distance visited so far. So, the definition of `cur` below should be
-
293 // changed, and with that, another container should be used instead of a
-
294 // queue, since one might pop from whenever and not only the front (a deque
-
295 // should work).
-
296 const auto cur = to_visit.front();
-
297 to_visit.pop();
-
298 const auto d = dist[cur] + DistT{1};
-
299 for (auto neigh = neighs.cbegin() + neigh_idxs[cur];
-
300 neigh < neighs.cbegin() + neigh_idxs[cur + 1]; ++neigh) {
-
301 if (dist[*neigh] < DistT{0}) {
-
302 dist[*neigh] = d;
-
303 to_visit.emplace(*neigh);
-
304 } else if (dist[*neigh] > d) {
-
305 dist[*neigh] = d;
-
306 }
-
307 }
-
308 }
-
309}
-
310
-
311#endif // COMMA_PROJECT_UTIL_H
-
unordered_set< KeyT > d_keys_to_set(const unordered_map< KeyT, ValueT > &dict)
Utility function for creating a set out of the keys of a map.
Definition: Util.h:243
-
void compute_neighbourhood_based_wall_distance(const vector< IndexT > &neigh_idxs, const vector< IndexT > &neighs, const vector< IndexT > &wall, vector< DistT > &dist)
Compute a neighbourhood-base wall-distance, that is, the distance of a given cell from a wall is the ...
Definition: Util.h:274
-
T get_direction(const vector< T > &a, const vector< T > &b, vector< T > &dir)
Compute the direction from point a to point b and store it as unit vector in dir.
Definition: Util.h:82
-
T squared_euclidean_distance(const vector< T > &a, const vector< T > &b)
Compute the squared Euclidean distance between two points seen as vectors. We use vectors because we ...
Definition: Util.h:107
-
vector< typename CoMMAContainerPairType::value_type::first_type > vector_of_first_elements(const CoMMAContainerPairType &c)
Given a container of pairs, return a vector with first elements only.
Definition: Util.h:200
-
constexpr double deviate_thresh
Threshold used in combination with a dot product to tell whether two vector deviate....
Definition: Util.h:39
-
T dot_product(const vector< T > &a, const vector< T > &b)
Compute the dot product between two vectors. No check on size is performed.
Definition: Util.h:60
-
bool dot_deviate(const T dot)
Tell whether the dot product given as input comes from two parallel vectors. Compared against deviate...
Definition: Util.h:48
-
Functor implementing an operator telling if a given value if the first one of pair.
Definition: Util.h:213
-
PairFindFirstBasedFunctor(const typename PairT::first_type &target)
Constructor.
Definition: Util.h:220
-
bool operator()(const PairT &p) const
Operator telling if the first value of the given pair is equal to the reference one.
Definition: Util.h:229
-
PairFindFirstBasedFunctor()
Constructor.
Definition: Util.h:216
-
~PairFindFirstBasedFunctor()
Destructor.
Definition: Util.h:223
-
Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for ...
Definition: Util.h:154
-
bool operator()(const PairT &p, const PairT &q) const
Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for ...
Definition: Util.h:163
-
Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the se...
Definition: Util.h:129
-
bool operator()(const PairT &p, const PairT &q) const
Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the se...
Definition: Util.h:138
-
Functor for pairs implementing a less operator based only on the second element of the pair.
Definition: Util.h:180
-
bool operator()(const PairT &p, const PairT &q) const
Functor for pairs implementing a less operator based only on the second element of the pair.
Definition: Util.h:187
+
166 if (left.second > right.second) return true;
+
167 if (left.second < right.second) return false;
+
168 /* left.second == right.second */
+
169 return left.first < right.first;
+
170 }
+
171};
+
172
+
177template<typename PairT>
+ +
185 inline bool operator()(const PairT &left, const PairT &right) const {
+
186 return left.second < right.second;
+
187 }
+
188};
+
189
+
196template<typename CoMMAContainerPairType>
+
197inline std::vector<typename CoMMAContainerPairType::value_type::first_type>
+
198vector_of_first_elements(const CoMMAContainerPairType &cont) {
+
199 std::vector<typename CoMMAContainerPairType::value_type::first_type> fe;
+
200 fe.reserve(cont.size());
+
201 for (const auto &pr : cont)
+
202 fe.emplace_back(pr.first);
+
203 return fe;
+
204}
+
205
+
210template<typename PairT>
+ +
212public:
+ +
218 // NOLINTNEXTLINE
+
219 PairFindFirstBasedFunctor(const typename PairT::first_type &target) :
+
220 _target(target){};
+ +
228 inline bool operator()(const PairT &pr) const { return pr.first == _target; }
+
229
+
230private:
+
232 typename PairT::first_type _target;
+
233};
+
234
+
241template<typename KeyT, typename ValueT>
+
242inline std::unordered_set<KeyT> d_keys_to_set(
+
243 const std::unordered_map<KeyT, ValueT> &dict) {
+
244 std::unordered_set<KeyT> s_neighbours_of_seed = {};
+
245 for (const auto &i_k_v : dict) {
+
246 s_neighbours_of_seed.insert(i_k_v.first);
+
247 }
+
248 return s_neighbours_of_seed;
+
249}
+
250
+
272template<typename IndexT, typename DistT>
+ +
274 const std::vector<IndexT> &neigh_idxs,
+
275 const std::vector<IndexT> &neighs,
+
276 const std::vector<IndexT> &wall,
+
277 std::vector<DistT> &dist) {
+
278 static_assert(
+
279 std::is_signed<DistT>::value,
+
280 "The distance type should be signed to allow flags (negative values)");
+
281 dist.resize(neigh_idxs.size() - 1);
+
282 std::fill(dist.begin(), dist.end(), DistT{-1});
+
283 std::queue<IndexT> to_visit{};
+
284 for (const auto &cell : wall) {
+
285 dist[cell] = DistT{0};
+
286 to_visit.emplace(cell);
+
287 }
+
288 while (!to_visit.empty()) {
+
289 // If you get wrong results, this could might be to the fact that one should
+
290 // consider not specially the first of the queue, but the one with lowest
+
291 // distance visited so far. So, the definition of `cur` below should be
+
292 // changed, and with that, another container should be used instead of a
+
293 // queue, since one might pop from whenever and not only the front (a deque
+
294 // should work).
+
295 const auto cur = to_visit.front();
+
296 to_visit.pop();
+
297 const auto cur_dist = dist[cur] + DistT{1};
+
298 for (auto neigh = neighs.cbegin() + neigh_idxs[cur];
+
299 neigh < neighs.cbegin() + neigh_idxs[cur + 1]; ++neigh) {
+
300 if (dist[*neigh] < DistT{0}) {
+
301 dist[*neigh] = cur_dist;
+
302 to_visit.emplace(*neigh);
+
303 } else if (dist[*neigh] > cur_dist) {
+
304 dist[*neigh] = cur_dist;
+
305 }
+
306 }
+
307 }
+
308}
+
309
+
310} // end namespace comma
+
311
+
312#endif // COMMA_PROJECT_UTIL_H
+
Functor implementing an operator telling if a given value if the first one of pair.
Definition: Util.h:211
+
bool operator()(const PairT &pr) const
Operator telling if the first value of the given pair is equal to the reference one.
Definition: Util.h:228
+
~PairFindFirstBasedFunctor()=default
Destructor.
+
PairFindFirstBasedFunctor()
Constructor.
Definition: Util.h:214
+
PairFindFirstBasedFunctor(const typename PairT::first_type &target)
Constructor.
Definition: Util.h:219
+
Definition: Agglomerator.h:34
+
T dot_product(const std::vector< T > &a, const std::vector< T > &b)
Compute the dot product between two vectors. No check on size is performed.
Definition: Util.h:60
+
T squared_euclidean_distance(const std::vector< T > &a, const std::vector< T > &b)
Compute the squared Euclidean distance between two points seen as vectors. We use vectors because we ...
Definition: Util.h:108
+
T get_direction(const std::vector< T > &a, const std::vector< T > &b, std::vector< T > &dir)
Compute the direction from point a to point b and store it as unit vector in dir.
Definition: Util.h:82
+
constexpr double deviate_thresh
Threshold used in combination with a dot product to tell whether two vector deviate....
Definition: Util.h:39
+
std::unordered_set< KeyT > d_keys_to_set(const std::unordered_map< KeyT, ValueT > &dict)
Utility function for creating a set out of the keys of a map.
Definition: Util.h:242
+
bool dot_deviate(const T dot)
Tell whether the dot product given as input comes from two parallel vectors. Compared against deviate...
Definition: Util.h:48
+
std::vector< typename CoMMAContainerPairType::value_type::first_type > vector_of_first_elements(const CoMMAContainerPairType &cont)
Given a container of pairs, return a vector with first elements only.
Definition: Util.h:198
+
void compute_neighbourhood_based_wall_distance(const std::vector< IndexT > &neigh_idxs, const std::vector< IndexT > &neighs, const std::vector< IndexT > &wall, std::vector< DistT > &dist)
Compute a neighbourhood-base wall-distance, that is, the distance of a given cell from a wall is the ...
Definition: Util.h:273
+
Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for ...
Definition: Util.h:154
+
bool operator()(const PairT &left, const PairT &right) const
Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for ...
Definition: Util.h:163
+
Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the se...
Definition: Util.h:131
+
bool operator()(const PairT &left, const PairT &right) const
Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the se...
Definition: Util.h:140
+
Functor for pairs implementing a less operator based only on the second element of the pair.
Definition: Util.h:178
+
bool operator()(const PairT &left, const PairT &right) const
Functor for pairs implementing a less operator based only on the second element of the pair.
Definition: Util.h:185
diff --git a/annotated.html b/annotated.html index e5bb75d..3aa488e 100644 --- a/annotated.html +++ b/annotated.html @@ -95,39 +95,40 @@
Here are the classes, structs, unions and interfaces with brief descriptions:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
[detail level 12]
 CAgglomeratorA class responsible to do the interface between the different kinds of agglomerator
 CAgglomerator_AnisotropicAgglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Anisotropic agglomeration
 CAgglomerator_BiconnectedChild class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the agglomeration. We call it biconnected case, but it is the greedy algorithm in reality
 CAgglomerator_IsotropicAgglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Isotropic agglomeration
 CAgglomerator_IterativeChild class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the search of fine cells
 CBimapAn easy and straight forward implementation of a Bimap
 CCoarse_CellClass describing a coarse cell
 CCoarse_Cell_ContainerClass implementing a custom container where the coarse cells are stored
 CCoarse_Cell_SubgraphClass describing a coarse cell with a full description, that is, it also holds a subgraph describing how the fine cells are connected inside the coarse one
 CCustomPairGreaterFunctorFunctor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones
 CCustomPairLessFunctorFunctor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones
 CDual_GraphA class implementing the CRS global graph representation of the global mesh
 CGraphAn interface class responsible of storing the cell centered dual graph and of acting on it (it is an interface for the global Dual_Graph and the Subgraph)
 CNeighbourhoodClass representing the neighbourhood of a given cell in the graph. Mind that no information about the element being already agglomerated or not is known here
 CNeighbourhood_ExtendedClass representing the neighbourhood of a given cell in the graph. In this derived class the neighbourhood is extended, meaning that all the neighbours seen so far are candidates
 CNeighbourhood_Pure_FrontClass representing the neighbourhood of a given cell in the graph. In this derived class, the neighbourhood is 'pure front-advancing', meaning that the next candidates are only the direct neighbours of the last added cell
 CNeighbourhoodCreatorPure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy
 CNeighbourhoodExtendedCreatorCreator of Neighbourhood_Extended objects. It can create from scratch or by copy
 CNeighbourhoodPureFrontCreatorCreator of Neighbourhood_Extended objects. It can create from scratch or by copy
 CNodeNode data structure that represent a node of the tree
 CPairFindFirstBasedFunctorFunctor implementing an operator telling if a given value if the first one of pair
 CPairSecondBasedLessFunctorFunctor for pairs implementing a less operator based only on the second element of the pair
 CPriority_PairWrapper around the STL pair with custom 'less than' operator: as in the standard case, first we compare the first elements, then the second ones; however it relies on the 'greater than' on the first elements, e.g., (4,X) < (3,Y), whereas standard rules apply to second elements, e.g., (4,3) < (4,4)
 CQueueA template class implementing a custom queue data structure
 CSeeds_PoolClass representing the pool of all the seeds for creating a coarse cell
 CSeeds_Pool_Boundary_PriorityClass representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are on the border
 CSeeds_Pool_Neighbourhood_PriorityClass representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are neighbours of already existing coarse cells
 CSPFullInitializatorFunctor performing the full initialization of a seeds pool
 CSPInitializatorFunctor performing the initialization of a seeds pool
 CSPOnePointInitializatorFunctor performing the one-point initialization of a seeds pool
 CSubgraphA class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the implementation of the CSR representation of the coarse cells
 CTreeTree structure that represent a coarse cell, the fine cell and the neighbours to them
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Ncomma
 CAgglomeratorA class responsible to do the interface between the different kinds of agglomerator
 CAgglomerator_AnisotropicAgglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Anisotropic agglomeration
 CAgglomerator_BiconnectedChild class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the agglomeration. We call it biconnected case, but it is the greedy algorithm in reality
 CAgglomerator_IsotropicAgglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Isotropic agglomeration
 CAgglomerator_IterativeChild class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the search of fine cells
 CBimapAn easy and straight forward implementation of a Bimap
 CCoarse_CellClass describing a coarse cell
 CCoarse_Cell_ContainerClass implementing a custom container where the coarse cells are stored
 CCoarse_Cell_SubgraphClass describing a coarse cell with a full description, that is, it also holds a subgraph describing how the fine cells are connected inside the coarse one
 CCustomPairGreaterFunctorFunctor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones
 CCustomPairLessFunctorFunctor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones
 CDual_GraphA class implementing the CRS global graph representation of the global mesh
 CGraphAn interface class responsible of storing the cell centered dual graph and of acting on it (it is an interface for the global Dual_Graph and the Subgraph)
 CNeighbourhoodClass representing the neighbourhood of a given cell in the graph. Mind that no information about the element being already agglomerated or not is known here
 CNeighbourhood_ExtendedClass representing the neighbourhood of a given cell in the graph. In this derived class the neighbourhood is extended, meaning that all the neighbours seen so far are candidates
 CNeighbourhood_Pure_FrontClass representing the neighbourhood of a given cell in the graph. In this derived class, the neighbourhood is 'pure front-advancing', meaning that the next candidates are only the direct neighbours of the last added cell
 CNeighbourhoodCreatorPure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy
 CNeighbourhoodExtendedCreatorCreator of Neighbourhood_Extended objects. It can create from scratch or by copy
 CNeighbourhoodPureFrontCreatorCreator of Neighbourhood_Extended objects. It can create from scratch or by copy
 CNodeNode data structure that represent a node of the tree
 CPairFindFirstBasedFunctorFunctor implementing an operator telling if a given value if the first one of pair
 CPairSecondBasedLessFunctorFunctor for pairs implementing a less operator based only on the second element of the pair
 CPriority_PairWrapper around the STL pair with custom 'less than' operator: as in the standard case, first we compare the first elements, then the second ones; however it relies on the 'greater than' on the first elements, e.g., (4,X) < (3,Y), whereas standard rules apply to second elements, e.g., (4,3) < (4,4)
 CQueueA template class implementing a custom queue data structure
 CSeeds_PoolClass representing the pool of all the seeds for creating a coarse cell
 CSeeds_Pool_Boundary_PriorityClass representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are on the border
 CSeeds_Pool_Neighbourhood_PriorityClass representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are neighbours of already existing coarse cells
 CSPFullInitializatorFunctor performing the full initialization of a seeds pool
 CSPInitializatorFunctor performing the initialization of a seeds pool
 CSPOnePointInitializatorFunctor performing the one-point initialization of a seeds pool
 CSubgraphA class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the implementation of the CSR representation of the coarse cells
 CTreeTree structure that represent a coarse cell, the fine cell and the neighbours to them
diff --git a/annotated_dup.js b/annotated_dup.js index 072a96e..86732ec 100644 --- a/annotated_dup.js +++ b/annotated_dup.js @@ -1,35 +1,37 @@ var annotated_dup = [ - [ "Agglomerator", "class_agglomerator.html", "class_agglomerator" ], - [ "Agglomerator_Anisotropic", "class_agglomerator___anisotropic.html", "class_agglomerator___anisotropic" ], - [ "Agglomerator_Biconnected", "class_agglomerator___biconnected.html", "class_agglomerator___biconnected" ], - [ "Agglomerator_Isotropic", "class_agglomerator___isotropic.html", "class_agglomerator___isotropic" ], - [ "Agglomerator_Iterative", "class_agglomerator___iterative.html", "class_agglomerator___iterative" ], - [ "Bimap", "class_bimap.html", "class_bimap" ], - [ "Coarse_Cell", "class_coarse___cell.html", "class_coarse___cell" ], - [ "Coarse_Cell_Container", "class_coarse___cell___container.html", "class_coarse___cell___container" ], - [ "Coarse_Cell_Subgraph", "class_coarse___cell___subgraph.html", "class_coarse___cell___subgraph" ], - [ "CustomPairGreaterFunctor", "struct_custom_pair_greater_functor.html", "struct_custom_pair_greater_functor" ], - [ "CustomPairLessFunctor", "struct_custom_pair_less_functor.html", "struct_custom_pair_less_functor" ], - [ "Dual_Graph", "class_dual___graph.html", "class_dual___graph" ], - [ "Graph", "class_graph.html", "class_graph" ], - [ "Neighbourhood", "class_neighbourhood.html", "class_neighbourhood" ], - [ "Neighbourhood_Extended", "class_neighbourhood___extended.html", "class_neighbourhood___extended" ], - [ "Neighbourhood_Pure_Front", "class_neighbourhood___pure___front.html", "class_neighbourhood___pure___front" ], - [ "NeighbourhoodCreator", "class_neighbourhood_creator.html", "class_neighbourhood_creator" ], - [ "NeighbourhoodExtendedCreator", "class_neighbourhood_extended_creator.html", "class_neighbourhood_extended_creator" ], - [ "NeighbourhoodPureFrontCreator", "class_neighbourhood_pure_front_creator.html", "class_neighbourhood_pure_front_creator" ], - [ "Node", "class_node.html", "class_node" ], - [ "PairFindFirstBasedFunctor", "class_pair_find_first_based_functor.html", "class_pair_find_first_based_functor" ], - [ "PairSecondBasedLessFunctor", "struct_pair_second_based_less_functor.html", "struct_pair_second_based_less_functor" ], - [ "Priority_Pair", "class_priority___pair.html", "class_priority___pair" ], - [ "Queue", "class_queue.html", "class_queue" ], - [ "Seeds_Pool", "class_seeds___pool.html", "class_seeds___pool" ], - [ "Seeds_Pool_Boundary_Priority", "class_seeds___pool___boundary___priority.html", "class_seeds___pool___boundary___priority" ], - [ "Seeds_Pool_Neighbourhood_Priority", "class_seeds___pool___neighbourhood___priority.html", "class_seeds___pool___neighbourhood___priority" ], - [ "SPFullInitializator", "struct_s_p_full_initializator.html", "struct_s_p_full_initializator" ], - [ "SPInitializator", "struct_s_p_initializator.html", "struct_s_p_initializator" ], - [ "SPOnePointInitializator", "struct_s_p_one_point_initializator.html", "struct_s_p_one_point_initializator" ], - [ "Subgraph", "class_subgraph.html", "class_subgraph" ], - [ "Tree", "class_tree.html", "class_tree" ] + [ "comma", "namespacecomma.html", [ + [ "Agglomerator", "classcomma_1_1_agglomerator.html", "classcomma_1_1_agglomerator" ], + [ "Agglomerator_Anisotropic", "classcomma_1_1_agglomerator___anisotropic.html", "classcomma_1_1_agglomerator___anisotropic" ], + [ "Agglomerator_Biconnected", "classcomma_1_1_agglomerator___biconnected.html", "classcomma_1_1_agglomerator___biconnected" ], + [ "Agglomerator_Isotropic", "classcomma_1_1_agglomerator___isotropic.html", "classcomma_1_1_agglomerator___isotropic" ], + [ "Agglomerator_Iterative", "classcomma_1_1_agglomerator___iterative.html", "classcomma_1_1_agglomerator___iterative" ], + [ "Bimap", "classcomma_1_1_bimap.html", "classcomma_1_1_bimap" ], + [ "Coarse_Cell", "classcomma_1_1_coarse___cell.html", "classcomma_1_1_coarse___cell" ], + [ "Coarse_Cell_Container", "classcomma_1_1_coarse___cell___container.html", "classcomma_1_1_coarse___cell___container" ], + [ "Coarse_Cell_Subgraph", "classcomma_1_1_coarse___cell___subgraph.html", "classcomma_1_1_coarse___cell___subgraph" ], + [ "CustomPairGreaterFunctor", "structcomma_1_1_custom_pair_greater_functor.html", "structcomma_1_1_custom_pair_greater_functor" ], + [ "CustomPairLessFunctor", "structcomma_1_1_custom_pair_less_functor.html", "structcomma_1_1_custom_pair_less_functor" ], + [ "Dual_Graph", "classcomma_1_1_dual___graph.html", "classcomma_1_1_dual___graph" ], + [ "Graph", "classcomma_1_1_graph.html", "classcomma_1_1_graph" ], + [ "Neighbourhood", "classcomma_1_1_neighbourhood.html", "classcomma_1_1_neighbourhood" ], + [ "Neighbourhood_Extended", "classcomma_1_1_neighbourhood___extended.html", "classcomma_1_1_neighbourhood___extended" ], + [ "Neighbourhood_Pure_Front", "classcomma_1_1_neighbourhood___pure___front.html", "classcomma_1_1_neighbourhood___pure___front" ], + [ "NeighbourhoodCreator", "classcomma_1_1_neighbourhood_creator.html", "classcomma_1_1_neighbourhood_creator" ], + [ "NeighbourhoodExtendedCreator", "classcomma_1_1_neighbourhood_extended_creator.html", "classcomma_1_1_neighbourhood_extended_creator" ], + [ "NeighbourhoodPureFrontCreator", "classcomma_1_1_neighbourhood_pure_front_creator.html", "classcomma_1_1_neighbourhood_pure_front_creator" ], + [ "Node", "classcomma_1_1_node.html", "classcomma_1_1_node" ], + [ "PairFindFirstBasedFunctor", "classcomma_1_1_pair_find_first_based_functor.html", "classcomma_1_1_pair_find_first_based_functor" ], + [ "PairSecondBasedLessFunctor", "structcomma_1_1_pair_second_based_less_functor.html", "structcomma_1_1_pair_second_based_less_functor" ], + [ "Priority_Pair", "classcomma_1_1_priority___pair.html", "classcomma_1_1_priority___pair" ], + [ "Queue", "classcomma_1_1_queue.html", "classcomma_1_1_queue" ], + [ "Seeds_Pool", "classcomma_1_1_seeds___pool.html", "classcomma_1_1_seeds___pool" ], + [ "Seeds_Pool_Boundary_Priority", "classcomma_1_1_seeds___pool___boundary___priority.html", "classcomma_1_1_seeds___pool___boundary___priority" ], + [ "Seeds_Pool_Neighbourhood_Priority", "classcomma_1_1_seeds___pool___neighbourhood___priority.html", "classcomma_1_1_seeds___pool___neighbourhood___priority" ], + [ "SPFullInitializator", "structcomma_1_1_s_p_full_initializator.html", "structcomma_1_1_s_p_full_initializator" ], + [ "SPInitializator", "structcomma_1_1_s_p_initializator.html", "structcomma_1_1_s_p_initializator" ], + [ "SPOnePointInitializator", "structcomma_1_1_s_p_one_point_initializator.html", "structcomma_1_1_s_p_one_point_initializator" ], + [ "Subgraph", "classcomma_1_1_subgraph.html", "classcomma_1_1_subgraph" ], + [ "Tree", "classcomma_1_1_tree.html", "classcomma_1_1_tree" ] + ] ] ]; \ No newline at end of file diff --git a/class_agglomerator-members.html b/class_agglomerator-members.html deleted file mode 100644 index 6a052ec..0000000 --- a/class_agglomerator-members.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - -
_cc_graphAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_compute_ARAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_dimensionAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_graphAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_goal_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_nb_of_cellsAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_max_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_neighbourhoodAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_seeds_poolAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_threshold_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
Agglomerator(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_fc_2_cc() constAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Agglomerator()=defaultAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
-
- - - - diff --git a/class_agglomerator.js b/class_agglomerator.js deleted file mode 100644 index 3ffb0ed..0000000 --- a/class_agglomerator.js +++ /dev/null @@ -1,18 +0,0 @@ -var class_agglomerator = -[ - [ "Agglomerator", "class_agglomerator.html#a7f04bd9151b63c4945af474d0173df26", null ], - [ "~Agglomerator", "class_agglomerator.html#a7d4c2d619c8e433387d181b3628155cc", null ], - [ "agglomerate_one_level", "class_agglomerator.html#a9ec8984ec317c1a6588f2aa004e83c30", null ], - [ "get_fc_2_cc", "class_agglomerator.html#a68d800a84b0b3d7bbe1d91e1226dd327", null ], - [ "_cc_graph", "class_agglomerator.html#a7b47f55bf7c7edcab6589e4ff93f28d6", null ], - [ "_compute_AR", "class_agglomerator.html#ad2d5d7d04112d5cf3b7e597cb9c3eca4", null ], - [ "_dimension", "class_agglomerator.html#a80151a5a6c0e81861a6fe4b2f9fd5517", null ], - [ "_fc_graph", "class_agglomerator.html#a38e7e1e9096ee706bcdd8571d85391f3", null ], - [ "_goal_card", "class_agglomerator.html#af86ca3a8b211b4b3aa0297598bbd6e2c", null ], - [ "_l_nb_of_cells", "class_agglomerator.html#aad06993145e0a315a30438c1213358ef", null ], - [ "_max_card", "class_agglomerator.html#a4e39d5b4ef1fc4e0f6831b37e2f4f3d6", null ], - [ "_min_card", "class_agglomerator.html#a0ac5f57bf96ca2504a7db6e6f9ed6fbf", null ], - [ "_min_neighbourhood", "class_agglomerator.html#a383f9f3c19557031a4cfdbf5f9997557", null ], - [ "_seeds_pool", "class_agglomerator.html#ac0c848d78d09919644771d45b56acac1", null ], - [ "_threshold_card", "class_agglomerator.html#a58a3b2a3576b7f6819e4226228bfe77f", null ] -]; \ No newline at end of file diff --git a/class_agglomerator.png b/class_agglomerator.png deleted file mode 100644 index 20bd671..0000000 Binary files a/class_agglomerator.png and /dev/null differ diff --git a/class_agglomerator___anisotropic-members.html b/class_agglomerator___anisotropic-members.html deleted file mode 100644 index b50ccae..0000000 --- a/class_agglomerator___anisotropic-members.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_aniso_neighboursAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_cc_graphAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_compute_ARAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_dimensionAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_graphAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_goal_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_nb_of_cellsAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_max_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_neighbourhoodAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_nb_linesAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_odd_line_lengthAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_seeds_poolAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_should_agglomerateAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_threshold_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_v_linesAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps) overrideAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
Agglomerator(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Anisotropic(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, const CoMMAWeightType threshold_anisotropy, const vector< CoMMAIndexType > &agglomerationLines_Idx, const vector< CoMMAIndexType > &agglomerationLines, const vector< CoMMAWeightType > &priority_weights, const bool build_lines, const bool odd_line_length, CoMMAIntType dimension=3)Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
AnisotropicLine typedefAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
AnisotropicLinePtr typedefAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
build_anisotropic_lines(const vector< CoMMAWeightType > &priority_weights, const CoMMAWeightType threshold_anisotropy)Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlineprotected
CoMMAPairType typedefAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMASetOfPairType typedefAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
export_anisotropic_lines(CoMMAIntType level, vector< CoMMAIndexType > &aniso_lines_idx, vector< CoMMAIndexType > &aniso_lines) constAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_fc_2_cc() constAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
update_seeds_pool()Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Agglomerator()=defaultAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Agglomerator_Anisotropic()=defaultAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
-
- - - - diff --git a/class_agglomerator___anisotropic.html b/class_agglomerator___anisotropic.html deleted file mode 100644 index 3ef5517..0000000 --- a/class_agglomerator___anisotropic.html +++ /dev/null @@ -1,784 +0,0 @@ - - - - - - - -CoMMA: Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
-
-
- -

Agglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Anisotropic agglomeration. - More...

- -

#include <Agglomerator.h>

-
-Inheritance diagram for Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - -

-Public Types

using AnisotropicLine = deque< CoMMAIndexType >
 Container for an anisotropic line. More...
 
using AnisotropicLinePtr = shared_ptr< AnisotropicLine >
 (Shared) Pointer to an anisotropic line More...
 
using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Agglomerator_Anisotropic (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, const CoMMAWeightType threshold_anisotropy, const vector< CoMMAIndexType > &agglomerationLines_Idx, const vector< CoMMAIndexType > &agglomerationLines, const vector< CoMMAWeightType > &priority_weights, const bool build_lines, const bool odd_line_length, CoMMAIntType dimension=3)
 Constructor. More...
 
virtual ~Agglomerator_Anisotropic ()=default
 Destructor. More...
 
void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
 Specialization of the pure virtual function to the class Agglomerator_Anisotropic. We add the override key as a guard to possible mistakes: https://stackoverflow.com/questions/46446652/is-there-any-point-in-using-override-when-overriding-a-pure-virtual-function. More...
 
void update_seeds_pool ()
 Update the seeds pool with the neighbours of the anisotropic cells agglomerated so far. More...
 
void export_anisotropic_lines (CoMMAIntType level, vector< CoMMAIndexType > &aniso_lines_idx, vector< CoMMAIndexType > &aniso_lines) const
 Function that prepares the anisotropic lines for output. More...
 
- Public Member Functions inherited from Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)
 The constructor of the interface. More...
 
virtual ~Agglomerator ()=default
 The destructor of the class. More...
 
vector< CoMMAIndexType > get_fc_2_cc () const
 Accessor to retrieve the fine cells to coarse cells from the coarse cell graphs class. More...
 
virtual void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0
 Pure virtual function which implementation is specified in the related child classes and that defines the agglomeration of one level. More...
 
- - - - - - - - - - - - - - -

-Public Attributes

vector< CoMMAIndexType > _nb_lines
 Vector of number of Anisotropic agglomeration lines per level. More...
 
vector< vector< AnisotropicLinePtr > > _v_lines
 _v_lines : Agglomeration lines structure: More...
 
bool _should_agglomerate
 Whether agglomeration is possible: for instance, if anisotropy requested but no anisotropic cells found, there is no actual need. More...
 
- Public Attributes inherited from Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
 Function which computes the aspect-ratio from a diameter and a volume
- In 3D: $ AR = \frac{diam_{CC}}{\sqrt{vol_{CC}}} $
- In 2D: $ AR = \frac{diam_{CC}}{\sqrt[3]{vol_{CC}}} $
- (Recall that in 2D the volume is the surface) More...
 
- - - - -

-Protected Member Functions

bool build_anisotropic_lines (const vector< CoMMAWeightType > &priority_weights, const CoMMAWeightType threshold_anisotropy)
 Build the anisotropic lines at the first level (only called at the first level of agglomeration). Two main steps are performed: More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Protected Attributes

deque< CoMMAIndexType > _aniso_neighbours
 Neighbours of the anisotropic cells agglomerated. They are used to update the seeds pool. More...
 
bool _odd_line_length
 Whether anisotropic lines with odd length are allowed. More...
 
- Protected Attributes inherited from Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIntType _dimension
 Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D) More...
 
CoMMAIntType _min_neighbourhood = 3
 Minimum number of neighbourhood we extend to search the neighbourhood in the greedy algorithm. Set as default to 3. More...
 
CoMMAIntType _min_card = 0
 Minimum cardinality (default = 0, meaning, equal to the dimension) More...
 
CoMMAIntType _max_card = 0
 Maximum cardinality (default = 0, meaning, 5 or 10 for, resp., 2- and 3D. More...
 
CoMMAIntType _goal_card = 0
 Goal cardinality (default = 0, meaning, 4 or 8 for, resp., 2- and 3D. More...
 
CoMMAIntType _threshold_card = 0
 Threshold cardinality (default = 0, meaning, equal to the dimension) More...
 
vector< CoMMAIndexType > _l_nb_of_cells
 List of number of cells per coarse cell created. More...
 
shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _fc_graph
 Dual_Graph object determining Fine cells graph and hence the connectivity. More...
 
shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _cc_graph
 pointer to Coarse_Cell_Container element More...
 
shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _seeds_pool
 Seeds_Pool object giving the order in which the fine cells should be considered when agglomerating. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Agglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Anisotropic agglomeration.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ AnisotropicLine

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::AnisotropicLine = deque<CoMMAIndexType>
-
- -

Container for an anisotropic line.

- -
-
- -

◆ AnisotropicLinePtr

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::AnisotropicLinePtr = shared_ptr<AnisotropicLine>
-
- -

(Shared) Pointer to an anisotropic line

- -
-
- -

◆ CoMMAPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>
-
- -

Type of pair.

- -
-
- -

◆ CoMMASetOfPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
-
- -

Type of set of pairs.

- -
-
-

Constructor & Destructor Documentation

- -

◆ Agglomerator_Anisotropic()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Agglomerator_Anisotropic (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph,
shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph,
shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool,
const CoMMAWeightType threshold_anisotropy,
const vector< CoMMAIndexType > & agglomerationLines_Idx,
const vector< CoMMAIndexType > & agglomerationLines,
const vector< CoMMAWeightType > & priority_weights,
const bool build_lines,
const bool odd_line_length,
CoMMAIntType dimension = 3 
)
-
-inline
-
- -

Constructor.

-
Parameters
- - - - - - - - - - - -
[in]graphDual_Graph object that determines the connectivity of the matrix
[in]cc_graphContainer for the coarse cells
[in]seeds_poolSeeds_Pool object giving the order in which the fine cells should be considered when agglomerating
[in]agglomerationLines_IdxConnectivity for the agglomeration lines: each element points to a particular element in the vector agglomerationLines
[in]agglomerationLinesVector storing all the elements of the anisotropic lines
[in]threshold_anisotropyValue of the aspect-ratio above which a cell is considered as anisotropic
[in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
[in]build_linesWhether lines joining the anisotropic cells should be built
[in]odd_line_lengthWhether anisotropic lines with odd length are allowed
[in]dimensionDimension of the problem
-
-
- -
-
- -

◆ ~Agglomerator_Anisotropic()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - -
virtual Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Agglomerator_Anisotropic ()
-
-virtualdefault
-
- -

Destructor.

- -
-
-

Member Function Documentation

- -

◆ agglomerate_one_level()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::agglomerate_one_level (const CoMMAIntType goal_card,
const CoMMAIntType min_card,
const CoMMAIntType max_card,
const vector< CoMMAWeightType > & priority_weights,
bool correction_steps 
)
-
-inlineoverridevirtual
-
- -

Specialization of the pure virtual function to the class Agglomerator_Anisotropic. We add the override key as a guard to possible mistakes: https://stackoverflow.com/questions/46446652/is-there-any-point-in-using-override-when-overriding-a-pure-virtual-function.

-
Parameters
- - - - - - -
[in]goal_cardgoal cardinality of the coarse cell
[in]min_cardminimum cardinality of the coarse cell
[in]max_cardmaximum cardinality of the coarse cell
[in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
[in]correction_stepsit defines if corrections for the isotropic algorithm are activated or not, for anisotropic algorithm not taken into account.
-
-
-
Note
The input arguments are not used since the structure of the anisotropic agglomerator is fixed: cells belonging to the same anisotropic lines are agglomerated pairwise (by 3 on some rare occasions).
- -

Implements Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ build_anisotropic_lines()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::build_anisotropic_lines (const vector< CoMMAWeightType > & priority_weights,
const CoMMAWeightType threshold_anisotropy 
)
-
-inlineprotected
-
- -

Build the anisotropic lines at the first level (only called at the first level of agglomeration). Two main steps are performed:

-
    -
  1. Tag anisotropic cells (via the dual graph)
  2. -
  3. Build anisotropic lines
  4. -
-
Parameters
- - - -
[in]priority_weightsWeights used to set the order telling where to start
[in]threshold_anisotropyValue of the aspect-ratio above which a cell is
-
-
-
Returns
whether at least one line was built
-
Todo:
Not properly efficient. We risk to do twice the operations (we overwrite the seed). This is not proper
- -
-
- -

◆ export_anisotropic_lines()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::export_anisotropic_lines (CoMMAIntType level,
vector< CoMMAIndexType > & aniso_lines_idx,
vector< CoMMAIndexType > & aniso_lines 
) const
-
-inline
-
- -

Function that prepares the anisotropic lines for output.

-
Parameters
- - - - -
[in]levelof the agglomeration process into the Multigrid algorithm
[out]aniso_lines_idxConnectivity for the agglomeration lines: each element points to a particular element in the vector aniso_lines
[out]aniso_linesVector storing all the elements of the anisotropic lines
-
-
- -
-
- -

◆ update_seeds_pool()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - -
void Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update_seeds_pool ()
-
-inline
-
- -

Update the seeds pool with the neighbours of the anisotropic cells agglomerated so far.

- -
-
-

Member Data Documentation

- -

◆ _aniso_neighbours

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - -
deque<CoMMAIndexType> Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_aniso_neighbours
-
-protected
-
- -

Neighbours of the anisotropic cells agglomerated. They are used to update the seeds pool.

- -
-
- -

◆ _nb_lines

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
vector<CoMMAIndexType> Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_nb_lines
-
- -

Vector of number of Anisotropic agglomeration lines per level.

- -
-
- -

◆ _odd_line_length

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - -
bool Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_odd_line_length
-
-protected
-
- -

Whether anisotropic lines with odd length are allowed.

- -
-
- -

◆ _should_agglomerate

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
bool Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_should_agglomerate
-
- -

Whether agglomeration is possible: for instance, if anisotropy requested but no anisotropic cells found, there is no actual need.

- -
-
- -

◆ _v_lines

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
vector<vector<AnisotropicLinePtr> > Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_v_lines
-
- -

_v_lines : Agglomeration lines structure:

-
    -
  • vector : level
    -
  • -
  • forward list : identifier of the line
    -
  • -
  • deque : line cells
    -
  • -
  • e.g., _v_lines[0] --> agglomeration lines at the finest level
  • -
- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_agglomerator___anisotropic.js b/class_agglomerator___anisotropic.js deleted file mode 100644 index 2283f88..0000000 --- a/class_agglomerator___anisotropic.js +++ /dev/null @@ -1,18 +0,0 @@ -var class_agglomerator___anisotropic = -[ - [ "AnisotropicLine", "class_agglomerator___anisotropic.html#a1f9699116b07859f52101dabe450b475", null ], - [ "AnisotropicLinePtr", "class_agglomerator___anisotropic.html#af5d54b1e2a586ecb589251f64db47681", null ], - [ "CoMMAPairType", "class_agglomerator___anisotropic.html#a11c37eea028c942be60e5c6a224449a0", null ], - [ "CoMMASetOfPairType", "class_agglomerator___anisotropic.html#af5c47e43c784e7daef89c1f202dff74e", null ], - [ "Agglomerator_Anisotropic", "class_agglomerator___anisotropic.html#ac765abc6d952dbe3b81e1bee877fcb69", null ], - [ "~Agglomerator_Anisotropic", "class_agglomerator___anisotropic.html#ac0219221b9c9ee4b730c32246df96246", null ], - [ "agglomerate_one_level", "class_agglomerator___anisotropic.html#acdf28be45307f3ee1a30e120dd91ac24", null ], - [ "build_anisotropic_lines", "class_agglomerator___anisotropic.html#a16ce420726335c28ca83cab73fa3f995", null ], - [ "export_anisotropic_lines", "class_agglomerator___anisotropic.html#af042ee016e1176de1edd69227b4c73cd", null ], - [ "update_seeds_pool", "class_agglomerator___anisotropic.html#a25a66ffe537285ba800a6ea7ab4b8238", null ], - [ "_aniso_neighbours", "class_agglomerator___anisotropic.html#ab0c44e5709cbe57ecab367f622e05eac", null ], - [ "_nb_lines", "class_agglomerator___anisotropic.html#a6aa2ebc6c7b6e70ca305219ad6836aa1", null ], - [ "_odd_line_length", "class_agglomerator___anisotropic.html#a59eae018fc07aada999110ca24597795", null ], - [ "_should_agglomerate", "class_agglomerator___anisotropic.html#aa5fe90f46019de67520ebe04eaa08e07", null ], - [ "_v_lines", "class_agglomerator___anisotropic.html#a650ab1acbe83f765d0314efb8f319cd0", null ] -]; \ No newline at end of file diff --git a/class_agglomerator___anisotropic.png b/class_agglomerator___anisotropic.png deleted file mode 100644 index 28e3ceb..0000000 Binary files a/class_agglomerator___anisotropic.png and /dev/null differ diff --git a/class_agglomerator___biconnected-members.html b/class_agglomerator___biconnected-members.html deleted file mode 100644 index fee3d33..0000000 --- a/class_agglomerator___biconnected-members.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_cc_graphAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_compute_ARAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_dimensionAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_graphAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_iterAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_goal_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_nb_of_cellsAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_max_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_neighbourhoodAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_neigh_crtorAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_seeds_poolAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_threshold_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps) overrideAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
Agglomerator(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Biconnected(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Isotropic(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
choose_optimal_cc_and_update_seeds_pool(const CoMMAIndexType seed, const vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness) overrideAgglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
compute_best_fc_to_add(const CoMMAIntType fc_iter, const shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) constAgglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
compute_next_cc_features(const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) constAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
estimate_boundary_face(const vector< CoMMAWeightType > &int_faces) constAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_fc_2_cc() constAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
NeighbourhoodCreatorBaseType typedefAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodCreatorExtType typedefAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodCreatorPFType typedefAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
set_agglomeration_parameter(CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Agglomerator()=defaultAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Agglomerator_Biconnected()=defaultAgglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Agglomerator_Isotropic()=defaultAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
-
- - - - diff --git a/class_agglomerator___biconnected.html b/class_agglomerator___biconnected.html deleted file mode 100644 index bb6fb8c..0000000 --- a/class_agglomerator___biconnected.html +++ /dev/null @@ -1,526 +0,0 @@ - - - - - - - -CoMMA: Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
-
-
- -

Child class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the agglomeration. We call it biconnected case, but it is the greedy algorithm in reality. - More...

- -

#include <Agglomerator.h>

-
-Inheritance diagram for Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Agglomerator_Biconnected (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
 Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Isotropic. More...
 
virtual ~Agglomerator_Biconnected ()=default
 Destructor. More...
 
unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed, const vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness) override
 Specialization of the pure virtual function in the parent class, to be used in couple with the agglomerate_one_level of the Agglomerator_Isotropic. More...
 
virtual void compute_best_fc_to_add (const CoMMAIntType fc_iter, const shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) const
 Computes the best fine cell to add to the coarse cell. The choice depends on: the number of shared faces (tries to maximize it), the neighbourhood order (tries to minimize it), and the aspect-ratio of the coarse cell (tries to minimize it). More...
 
- Public Member Functions inherited from Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator_Isotropic (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
 Constructor. The constructor takes as arguments the same arguments of the father and in this way activates also the constructor of the base class. More...
 
virtual ~Agglomerator_Isotropic ()=default
 Destructor. More...
 
void set_agglomeration_parameter (CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)
 The task of the function is to set the parameters of determine the cardinality limits with respect to the parameters passed. More...
 
void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
 Specialization of the pure virtual function to the class Agglomerator_Isotropic. We add the override key as a guard to possible mistakes: https://stackoverflow.com/questions/46446652/is-there-any-point-in-using-override-when-overriding-a-pure-virtual-function
- The function calls function choose_optimal_cc_and_update_seeds_pool of the derived class. For further information about the structure, have a look at: http://www.cplusplus.com/forum/general/31851/
- The pseudo-code considers the while function and the agglomeration process is not completed until all the cells are not agglomerated. Hence, while there are still non agglomerate fine cells, repeat the following steps: More...
 
CoMMAWeightType estimate_boundary_face (const vector< CoMMAWeightType > &int_faces) const
 Approximate the value of a boundary face using the known internal faces. It uses a (geometric) average, so the result is correct only if the cell is a regular polygon. More...
 
void compute_next_cc_features (const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) const
 Computes features of the CC obtained by adding a given fine cell. The features are Aspect-Ratio and number of face shared with other cells already agglomerated (Current coarse cell means without i_fc) More...
 
virtual unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed, const vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness)=0
 Pure virtual function that must be implemented in child classes to define the optimal coarse cell. More...
 
- Public Member Functions inherited from Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)
 The constructor of the interface. More...
 
virtual ~Agglomerator ()=default
 The destructor of the class. More...
 
vector< CoMMAIndexType > get_fc_2_cc () const
 Accessor to retrieve the fine cells to coarse cells from the coarse cell graphs class. More...
 
virtual void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0
 Pure virtual function which implementation is specified in the related child classes and that defines the agglomeration of one level. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Types inherited from Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
using NeighbourhoodCreatorBaseType = NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodCreator type (base class) More...
 
using NeighbourhoodCreatorExtType = NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodExtendedCreator type (derived class) More...
 
using NeighbourhoodCreatorPFType = NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodPureFrontCreator type (derived class) More...
 
- Public Attributes inherited from Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIntType _fc_iter
 Number of iterations allowed for the algorithm choosing which fine cell to add next. More...
 
shared_ptr< NeighbourhoodCreatorBaseType_neigh_crtor
 Creator responsible for neighborhood objects. More...
 
- Public Attributes inherited from Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
 Function which computes the aspect-ratio from a diameter and a volume
- In 3D: $ AR = \frac{diam_{CC}}{\sqrt{vol_{CC}}} $
- In 2D: $ AR = \frac{diam_{CC}}{\sqrt[3]{vol_{CC}}} $
- (Recall that in 2D the volume is the surface) More...
 
- Protected Attributes inherited from Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIntType _dimension
 Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D) More...
 
CoMMAIntType _min_neighbourhood = 3
 Minimum number of neighbourhood we extend to search the neighbourhood in the greedy algorithm. Set as default to 3. More...
 
CoMMAIntType _min_card = 0
 Minimum cardinality (default = 0, meaning, equal to the dimension) More...
 
CoMMAIntType _max_card = 0
 Maximum cardinality (default = 0, meaning, 5 or 10 for, resp., 2- and 3D. More...
 
CoMMAIntType _goal_card = 0
 Goal cardinality (default = 0, meaning, 4 or 8 for, resp., 2- and 3D. More...
 
CoMMAIntType _threshold_card = 0
 Threshold cardinality (default = 0, meaning, equal to the dimension) More...
 
vector< CoMMAIndexType > _l_nb_of_cells
 List of number of cells per coarse cell created. More...
 
shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _fc_graph
 Dual_Graph object determining Fine cells graph and hence the connectivity. More...
 
shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _cc_graph
 pointer to Coarse_Cell_Container element More...
 
shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _seeds_pool
 Seeds_Pool object giving the order in which the fine cells should be considered when agglomerating. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Child class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the agglomeration. We call it biconnected case, but it is the greedy algorithm in reality.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Constructor & Destructor Documentation

- -

◆ Agglomerator_Biconnected()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Agglomerator_Biconnected (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph,
shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph,
shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool,
CoMMAIntType neighbourhood_type,
CoMMAIntType fc_iter,
CoMMAIntType dimension = 3 
)
-
-inline
-
- -

Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Isotropic.

-
Parameters
- - - - - - - -
[in]graphDual_Graph object that determines the connectivity of the matrix
[in]cc_graphContainer for the coarse cells
[in]seeds_poolSeeds_Pool object giving the order in which the fine cells should be considered when agglomerating
[in]neighbourhood_typeType of neighbourhood to use when growing a coarse cell. See CoMMANeighbourhoodT for more details.
[in]fc_iterNumber of iterations allowed for the algorithm choosing which fine cell to add next. The cost grows exponentially, hence use small values.
[in]dimensionDimension of the problem
-
-
- -
-
- -

◆ ~Agglomerator_Biconnected()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - -
virtual Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Agglomerator_Biconnected ()
-
-virtualdefault
-
- -

Destructor.

- -
-
-

Member Function Documentation

- -

◆ choose_optimal_cc_and_update_seeds_pool()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
unordered_set< CoMMAIndexType > Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed,
const vector< CoMMAWeightType > & priority_weights,
CoMMAIntType & compactness 
)
-
-inlineoverridevirtual
-
- -

Specialization of the pure virtual function in the parent class, to be used in couple with the agglomerate_one_level of the Agglomerator_Isotropic.

-
Parameters
- - - - -
[in]seedCell from which the agglomeration of the CC starts
[in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
[out]compactnessCompactness of the final CC, that is, the minimum number of neighbours of a fine cell inside a coarse cell
-
-
-
Returns
the (unordered) set of the fine cells composing the coarse cell
- -

Implements Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ compute_best_fc_to_add()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual void Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::compute_best_fc_to_add (const CoMMAIntType fc_iter,
const shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood,
const unordered_map< CoMMAIndexType, CoMMAIntType > & d_n_of_seed,
const bool & is_order_primary,
const CoMMAWeightType & diam_cc,
const CoMMAWeightType & vol_cc,
const unordered_set< CoMMAIndexType > & s_of_fc_for_current_cc,
CoMMAIndexType & argmin_ar,
CoMMAIntType & max_faces_in_common,
CoMMAWeightType & min_ar_diam,
CoMMAWeightType & min_ar_vol 
) const
-
-inlinevirtual
-
- -

Computes the best fine cell to add to the coarse cell. The choice depends on: the number of shared faces (tries to maximize it), the neighbourhood order (tries to minimize it), and the aspect-ratio of the coarse cell (tries to minimize it).

-
Parameters
- - - - - - - - - - - - -
[in]fc_iter(Unused) Number of iteration for the fine cell research algorithm
[in]neighbourhoodNeighborhood object
[in]d_n_of_seedDictionary containing the cells to consider for the agglomeration with their neighbourhood order wrt to the original seed
[in]is_order_primaryIf true, the neighbourhood order prevails on other criteria
[in]diam_cc(Approximation of the) Diameter of the current coarse cell
[in]vol_ccVolume of the current coarse cell
[in]s_of_fc_for_current_ccIndices of the fine cells already agglomerated in the coarse cell
[out]argmin_arIndex wrt to neighbours vector of the chosen fine cell
[out]max_faces_in_commonNumber of faces shared between the chosen fine cell and the coarse cell
[out]min_ar_diam(Approximation of the) Diameter of the coarse cell after the addition of the chosen fine cell
[out]min_ar_volVolume of the coarse cell after the addition of the chosen fine cell
-
-
- -

Reimplemented in Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_agglomerator___biconnected.js b/class_agglomerator___biconnected.js deleted file mode 100644 index 3547d12..0000000 --- a/class_agglomerator___biconnected.js +++ /dev/null @@ -1,7 +0,0 @@ -var class_agglomerator___biconnected = -[ - [ "Agglomerator_Biconnected", "class_agglomerator___biconnected.html#a66a006a8b8b2f02b3bbfef050c1190d6", null ], - [ "~Agglomerator_Biconnected", "class_agglomerator___biconnected.html#ad2c325577dcfe05b9b4d4b27dd37de40", null ], - [ "choose_optimal_cc_and_update_seeds_pool", "class_agglomerator___biconnected.html#a48c585ecde2224027023eb2303062c95", null ], - [ "compute_best_fc_to_add", "class_agglomerator___biconnected.html#a7816d78ede33b94ecf33fc9e5919e1a7", null ] -]; \ No newline at end of file diff --git a/class_agglomerator___biconnected.png b/class_agglomerator___biconnected.png deleted file mode 100644 index d06c00a..0000000 Binary files a/class_agglomerator___biconnected.png and /dev/null differ diff --git a/class_agglomerator___isotropic-members.html b/class_agglomerator___isotropic-members.html deleted file mode 100644 index 70a5e37..0000000 --- a/class_agglomerator___isotropic-members.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
_cc_graphAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_compute_ARAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_dimensionAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_graphAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_iterAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_goal_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_nb_of_cellsAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_max_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_neighbourhoodAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_neigh_crtorAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_seeds_poolAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_threshold_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps) overrideAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
Agglomerator(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Isotropic(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
choose_optimal_cc_and_update_seeds_pool(const CoMMAIndexType seed, const vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness)=0Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
compute_next_cc_features(const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) constAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
estimate_boundary_face(const vector< CoMMAWeightType > &int_faces) constAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_fc_2_cc() constAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
NeighbourhoodCreatorBaseType typedefAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodCreatorExtType typedefAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodCreatorPFType typedefAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
set_agglomeration_parameter(CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Agglomerator()=defaultAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Agglomerator_Isotropic()=defaultAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
-
- - - - diff --git a/class_agglomerator___isotropic.html b/class_agglomerator___isotropic.html deleted file mode 100644 index c02fa68..0000000 --- a/class_agglomerator___isotropic.html +++ /dev/null @@ -1,758 +0,0 @@ - - - - - - - -CoMMA: Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Referenceabstract
-
-
- -

Agglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Isotropic agglomeration. - More...

- -

#include <Agglomerator.h>

-
-Inheritance diagram for Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - -

-Public Types

using NeighbourhoodCreatorBaseType = NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodCreator type (base class) More...
 
using NeighbourhoodCreatorExtType = NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodExtendedCreator type (derived class) More...
 
using NeighbourhoodCreatorPFType = NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodPureFrontCreator type (derived class) More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Agglomerator_Isotropic (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
 Constructor. The constructor takes as arguments the same arguments of the father and in this way activates also the constructor of the base class. More...
 
virtual ~Agglomerator_Isotropic ()=default
 Destructor. More...
 
void set_agglomeration_parameter (CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)
 The task of the function is to set the parameters of determine the cardinality limits with respect to the parameters passed. More...
 
void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
 Specialization of the pure virtual function to the class Agglomerator_Isotropic. We add the override key as a guard to possible mistakes: https://stackoverflow.com/questions/46446652/is-there-any-point-in-using-override-when-overriding-a-pure-virtual-function
- The function calls function choose_optimal_cc_and_update_seeds_pool of the derived class. For further information about the structure, have a look at: http://www.cplusplus.com/forum/general/31851/
- The pseudo-code considers the while function and the agglomeration process is not completed until all the cells are not agglomerated. Hence, while there are still non agglomerate fine cells, repeat the following steps: More...
 
CoMMAWeightType estimate_boundary_face (const vector< CoMMAWeightType > &int_faces) const
 Approximate the value of a boundary face using the known internal faces. It uses a (geometric) average, so the result is correct only if the cell is a regular polygon. More...
 
void compute_next_cc_features (const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) const
 Computes features of the CC obtained by adding a given fine cell. The features are Aspect-Ratio and number of face shared with other cells already agglomerated (Current coarse cell means without i_fc) More...
 
virtual unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed, const vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness)=0
 Pure virtual function that must be implemented in child classes to define the optimal coarse cell. More...
 
- Public Member Functions inherited from Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)
 The constructor of the interface. More...
 
virtual ~Agglomerator ()=default
 The destructor of the class. More...
 
vector< CoMMAIndexType > get_fc_2_cc () const
 Accessor to retrieve the fine cells to coarse cells from the coarse cell graphs class. More...
 
virtual void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0
 Pure virtual function which implementation is specified in the related child classes and that defines the agglomeration of one level. More...
 
- - - - - - - - - - - -

-Public Attributes

CoMMAIntType _fc_iter
 Number of iterations allowed for the algorithm choosing which fine cell to add next. More...
 
shared_ptr< NeighbourhoodCreatorBaseType_neigh_crtor
 Creator responsible for neighborhood objects. More...
 
- Public Attributes inherited from Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
 Function which computes the aspect-ratio from a diameter and a volume
- In 3D: $ AR = \frac{diam_{CC}}{\sqrt{vol_{CC}}} $
- In 2D: $ AR = \frac{diam_{CC}}{\sqrt[3]{vol_{CC}}} $
- (Recall that in 2D the volume is the surface) More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Protected Attributes inherited from Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIntType _dimension
 Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D) More...
 
CoMMAIntType _min_neighbourhood = 3
 Minimum number of neighbourhood we extend to search the neighbourhood in the greedy algorithm. Set as default to 3. More...
 
CoMMAIntType _min_card = 0
 Minimum cardinality (default = 0, meaning, equal to the dimension) More...
 
CoMMAIntType _max_card = 0
 Maximum cardinality (default = 0, meaning, 5 or 10 for, resp., 2- and 3D. More...
 
CoMMAIntType _goal_card = 0
 Goal cardinality (default = 0, meaning, 4 or 8 for, resp., 2- and 3D. More...
 
CoMMAIntType _threshold_card = 0
 Threshold cardinality (default = 0, meaning, equal to the dimension) More...
 
vector< CoMMAIndexType > _l_nb_of_cells
 List of number of cells per coarse cell created. More...
 
shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _fc_graph
 Dual_Graph object determining Fine cells graph and hence the connectivity. More...
 
shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _cc_graph
 pointer to Coarse_Cell_Container element More...
 
shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _seeds_pool
 Seeds_Pool object giving the order in which the fine cells should be considered when agglomerating. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Agglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Isotropic agglomeration.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ NeighbourhoodCreatorBaseType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodCreatorBaseType = NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

NeighbourhoodCreator type (base class)

- -
-
- -

◆ NeighbourhoodCreatorExtType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodCreatorExtType = NeighbourhoodExtendedCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

NeighbourhoodExtendedCreator type (derived class)

- -
-
- -

◆ NeighbourhoodCreatorPFType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodCreatorPFType = NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

NeighbourhoodPureFrontCreator type (derived class)

- -
-
-

Constructor & Destructor Documentation

- -

◆ Agglomerator_Isotropic()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Agglomerator_Isotropic (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph,
shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph,
shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool,
CoMMAIntType neighbourhood_type,
CoMMAIntType fc_iter,
CoMMAIntType dimension = 3 
)
-
-inline
-
- -

Constructor. The constructor takes as arguments the same arguments of the father and in this way activates also the constructor of the base class.

-
Parameters
- - - - - - - -
[in]graphDual_Graph object that determines the connectivity of the matrix
[in]cc_graphContainer for the coarse cells
[in]seeds_poolSeeds_Pool object giving the order in which the fine cells should be considered when agglomerating
[in]neighbourhood_typeType of neighbourhood to use when growing a coarse cell. See CoMMANeighbourhoodT for more details.
[in]fc_iterNumber of iterations allowed for the algorithm choosing which fine cell to add next. The cost grows exponentially, hence use small values.
[in]dimensionDimension of the problem
-
-
- -
-
- -

◆ ~Agglomerator_Isotropic()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - -
virtual Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Agglomerator_Isotropic ()
-
-virtualdefault
-
- -

Destructor.

- -
-
-

Member Function Documentation

- -

◆ agglomerate_one_level()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::agglomerate_one_level (const CoMMAIntType goal_card,
const CoMMAIntType min_card,
const CoMMAIntType max_card,
const vector< CoMMAWeightType > & priority_weights,
bool correction_steps 
)
-
-inlineoverridevirtual
-
- -

Specialization of the pure virtual function to the class Agglomerator_Isotropic. We add the override key as a guard to possible mistakes: https://stackoverflow.com/questions/46446652/is-there-any-point-in-using-override-when-overriding-a-pure-virtual-function
- The function calls function choose_optimal_cc_and_update_seeds_pool of the derived class. For further information about the structure, have a look at: http://www.cplusplus.com/forum/general/31851/
- The pseudo-code considers the while function and the agglomeration process is not completed until all the cells are not agglomerated. Hence, while there are still non agglomerate fine cells, repeat the following steps:

-
    -
  1. Choose a new seed
  2. -
  3. Check with a specific algorithm the neighbouring cells to agglomerate to the seed
  4. -
  5. Create a new coarse cell (using the apposite method in cc_graph)
    Parameters
    - - - - - - -
    [in]goal_cardgoal cardinality of the coarse cell
    [in]min_cardminimum cardinality of the coarse cell
    [in]max_cardmaximum cardinality of the coarse cell
    [in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
    [in]correction_stepsit defines if corrections for the isotropic algorithm are activated or not, for anisotropic algorithm not taken into account.
    -
    -
    -
  6. -
- -

Implements Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ choose_optimal_cc_and_update_seeds_pool()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual unordered_set< CoMMAIndexType > Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed,
const vector< CoMMAWeightType > & priority_weights,
CoMMAIntType & compactness 
)
-
-pure virtual
-
- -

Pure virtual function that must be implemented in child classes to define the optimal coarse cell.

-
Parameters
- - - - -
[in]seedCell from which the agglomeration of the CC starts
[in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
[out]compactnessCompactness of the final CC, that is, the minimum number of neighbours of a fine cell inside a coarse cell
-
-
-
Returns
the (unordered) set of the fine cells composing the coarse cell
- -

Implemented in Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ compute_next_cc_features()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::compute_next_cc_features (const CoMMAIndexType i_fc,
const CoMMAWeightType cc_diam,
const CoMMAWeightType cc_vol,
const unordered_set< CoMMAIndexType > & fc_of_cc,
CoMMAIntType & shared_faces,
CoMMAWeightType & aspect_ratio,
CoMMAWeightType & new_diam,
CoMMAWeightType & new_vol 
) const
-
-inline
-
- -

Computes features of the CC obtained by adding a given fine cell. The features are Aspect-Ratio and number of face shared with other cells already agglomerated (Current coarse cell means without i_fc)

-
Parameters
- - - - - - - - - -
[in]i_fcIndex of the fine cell to add to the coarse cell
[in]cc_diam(Approximation of the) Diameter of the current coarse cell
[in]cc_volVolume of the current coarse cell
[in]fc_of_ccIndex of the fine cells already agglomerated in the coarse cell
[out]shared_facesNumber of faces shared by the fine cell with the current coarse cell
[out]aspect_ratioAspect-Ratio of the (final) coarse cell
[out]new_diam(Approximation of the) Diameter of the (final) coarse cell
[out]new_volVolume of the (final) coarse cell
-
-
- -
-
- -

◆ estimate_boundary_face()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
CoMMAWeightType Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::estimate_boundary_face (const vector< CoMMAWeightType > & int_faces) const
-
-inline
-
- -

Approximate the value of a boundary face using the known internal faces. It uses a (geometric) average, so the result is correct only if the cell is a regular polygon.

-
Parameters
- - -
int_facesVector of the surfaces of the internal faces
-
-
-
Returns
An approximation of the surface of a boundary face
- -
-
- -

◆ set_agglomeration_parameter()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::set_agglomeration_parameter (CoMMAIntType goal_card = 0,
CoMMAIntType min_card = 0,
CoMMAIntType max_card = 0 
)
-
-inline
-
- -

The task of the function is to set the parameters of determine the cardinality limits with respect to the parameters passed.

-
Parameters
- - - - -
[in]goal_cardgoal cardinality of the coarse cell (set as default to 0 indicating in our case the maximum value)
[in]min_cardminimum cardinality of the coarse cell(set as default -to 0 indicating in our case the maximum value)
[in]max_cardmaximum cardinality of the coarse cell(set as default -to 0 indicating in our case the maximum value)
-
-
- -
-
-

Member Data Documentation

- -

◆ _fc_iter

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
CoMMAIntType Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_fc_iter
-
- -

Number of iterations allowed for the algorithm choosing which fine cell to add next.

- -
-
- -

◆ _neigh_crtor

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
shared_ptr<NeighbourhoodCreatorBaseType> Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_neigh_crtor
-
- -

Creator responsible for neighborhood objects.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_agglomerator___isotropic.js b/class_agglomerator___isotropic.js deleted file mode 100644 index 70b0c18..0000000 --- a/class_agglomerator___isotropic.js +++ /dev/null @@ -1,15 +0,0 @@ -var class_agglomerator___isotropic = -[ - [ "NeighbourhoodCreatorBaseType", "class_agglomerator___isotropic.html#aa245ac4c02bde4ca77f58385fbf98958", null ], - [ "NeighbourhoodCreatorExtType", "class_agglomerator___isotropic.html#ac5499e103590911ed10b4f87eebc29a9", null ], - [ "NeighbourhoodCreatorPFType", "class_agglomerator___isotropic.html#a03588cd463325589cb44471e3d980824", null ], - [ "Agglomerator_Isotropic", "class_agglomerator___isotropic.html#a72d96dedea94efc932d50ae95e9aa01d", null ], - [ "~Agglomerator_Isotropic", "class_agglomerator___isotropic.html#aa232687cd2b7b8bc93953d1dff5d4f84", null ], - [ "agglomerate_one_level", "class_agglomerator___isotropic.html#a7c47e1d03561b56428dbee75803612f1", null ], - [ "choose_optimal_cc_and_update_seeds_pool", "class_agglomerator___isotropic.html#a2a74055172b861f3de243a55d5cd4622", null ], - [ "compute_next_cc_features", "class_agglomerator___isotropic.html#acd6b14cda474839dfe2430b253966b5b", null ], - [ "estimate_boundary_face", "class_agglomerator___isotropic.html#a5235e06b6e1d681b5970a43c6eb90123", null ], - [ "set_agglomeration_parameter", "class_agglomerator___isotropic.html#a7cc56d96d75a20a5f87c73f9459bbeef", null ], - [ "_fc_iter", "class_agglomerator___isotropic.html#aedc834cf0d9bb4af59452033b837120c", null ], - [ "_neigh_crtor", "class_agglomerator___isotropic.html#abd429139ef36679e33a85e56d2b26d99", null ] -]; \ No newline at end of file diff --git a/class_agglomerator___isotropic.png b/class_agglomerator___isotropic.png deleted file mode 100644 index df7bc39..0000000 Binary files a/class_agglomerator___isotropic.png and /dev/null differ diff --git a/class_agglomerator___iterative-members.html b/class_agglomerator___iterative-members.html deleted file mode 100644 index 71bf1db..0000000 --- a/class_agglomerator___iterative-members.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_cc_graphAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_compute_ARAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_dimensionAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_graphAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_iterAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_goal_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_nb_of_cellsAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_max_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_neighbourhoodAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_neigh_crtorAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_seeds_poolAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_threshold_cardAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps) overrideAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
Agglomerator(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Biconnected(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Isotropic(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Iterative(shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
choose_optimal_cc_and_update_seeds_pool(const CoMMAIndexType seed, const vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness) overrideAgglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
compute_best_fc_to_add(const CoMMAIntType fc_iter, const shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) const overrideAgglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
compute_next_cc_features(const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) constAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
estimate_boundary_face(const vector< CoMMAWeightType > &int_faces) constAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_fc_2_cc() constAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
NeighbourhoodCreatorBaseType typedefAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodCreatorExtType typedefAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodCreatorPFType typedefAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
set_agglomeration_parameter(CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Agglomerator()=defaultAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Agglomerator_Biconnected()=defaultAgglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Agglomerator_Isotropic()=defaultAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Agglomerator_Iterative()=defaultAgglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
-
- - - - diff --git a/class_agglomerator___iterative.html b/class_agglomerator___iterative.html deleted file mode 100644 index c034fb4..0000000 --- a/class_agglomerator___iterative.html +++ /dev/null @@ -1,479 +0,0 @@ - - - - - - - -CoMMA: Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
-
-
- -

Child class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the search of fine cells. - More...

- -

#include <Agglomerator.h>

-
-Inheritance diagram for Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Agglomerator_Iterative (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
 Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Biconnected. More...
 
virtual ~Agglomerator_Iterative ()=default
 Destructor. More...
 
void compute_best_fc_to_add (const CoMMAIntType fc_iter, const shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) const override
 Specialization of the parent function. This is an iterative version. Computes the best fine cell to add to the coarse cell. The choice depends on: the number of shared faces (tries to maximize it), the neighbourhood order (tries to minimize it), and the aspect-ratio of the coarse cell (tries to minimize it). More...
 
- Public Member Functions inherited from Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator_Biconnected (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
 Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Isotropic. More...
 
virtual ~Agglomerator_Biconnected ()=default
 Destructor. More...
 
unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed, const vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness) override
 Specialization of the pure virtual function in the parent class, to be used in couple with the agglomerate_one_level of the Agglomerator_Isotropic. More...
 
virtual void compute_best_fc_to_add (const CoMMAIntType fc_iter, const shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) const
 Computes the best fine cell to add to the coarse cell. The choice depends on: the number of shared faces (tries to maximize it), the neighbourhood order (tries to minimize it), and the aspect-ratio of the coarse cell (tries to minimize it). More...
 
- Public Member Functions inherited from Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator_Isotropic (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
 Constructor. The constructor takes as arguments the same arguments of the father and in this way activates also the constructor of the base class. More...
 
virtual ~Agglomerator_Isotropic ()=default
 Destructor. More...
 
void set_agglomeration_parameter (CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)
 The task of the function is to set the parameters of determine the cardinality limits with respect to the parameters passed. More...
 
void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
 Specialization of the pure virtual function to the class Agglomerator_Isotropic. We add the override key as a guard to possible mistakes: https://stackoverflow.com/questions/46446652/is-there-any-point-in-using-override-when-overriding-a-pure-virtual-function
- The function calls function choose_optimal_cc_and_update_seeds_pool of the derived class. For further information about the structure, have a look at: http://www.cplusplus.com/forum/general/31851/
- The pseudo-code considers the while function and the agglomeration process is not completed until all the cells are not agglomerated. Hence, while there are still non agglomerate fine cells, repeat the following steps: More...
 
CoMMAWeightType estimate_boundary_face (const vector< CoMMAWeightType > &int_faces) const
 Approximate the value of a boundary face using the known internal faces. It uses a (geometric) average, so the result is correct only if the cell is a regular polygon. More...
 
void compute_next_cc_features (const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) const
 Computes features of the CC obtained by adding a given fine cell. The features are Aspect-Ratio and number of face shared with other cells already agglomerated (Current coarse cell means without i_fc) More...
 
virtual unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed, const vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness)=0
 Pure virtual function that must be implemented in child classes to define the optimal coarse cell. More...
 
- Public Member Functions inherited from Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)
 The constructor of the interface. More...
 
virtual ~Agglomerator ()=default
 The destructor of the class. More...
 
vector< CoMMAIndexType > get_fc_2_cc () const
 Accessor to retrieve the fine cells to coarse cells from the coarse cell graphs class. More...
 
virtual void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0
 Pure virtual function which implementation is specified in the related child classes and that defines the agglomeration of one level. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Types inherited from Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
using NeighbourhoodCreatorBaseType = NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodCreator type (base class) More...
 
using NeighbourhoodCreatorExtType = NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodExtendedCreator type (derived class) More...
 
using NeighbourhoodCreatorPFType = NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodPureFrontCreator type (derived class) More...
 
- Public Attributes inherited from Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIntType _fc_iter
 Number of iterations allowed for the algorithm choosing which fine cell to add next. More...
 
shared_ptr< NeighbourhoodCreatorBaseType_neigh_crtor
 Creator responsible for neighborhood objects. More...
 
- Public Attributes inherited from Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
 Function which computes the aspect-ratio from a diameter and a volume
- In 3D: $ AR = \frac{diam_{CC}}{\sqrt{vol_{CC}}} $
- In 2D: $ AR = \frac{diam_{CC}}{\sqrt[3]{vol_{CC}}} $
- (Recall that in 2D the volume is the surface) More...
 
- Protected Attributes inherited from Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIntType _dimension
 Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D) More...
 
CoMMAIntType _min_neighbourhood = 3
 Minimum number of neighbourhood we extend to search the neighbourhood in the greedy algorithm. Set as default to 3. More...
 
CoMMAIntType _min_card = 0
 Minimum cardinality (default = 0, meaning, equal to the dimension) More...
 
CoMMAIntType _max_card = 0
 Maximum cardinality (default = 0, meaning, 5 or 10 for, resp., 2- and 3D. More...
 
CoMMAIntType _goal_card = 0
 Goal cardinality (default = 0, meaning, 4 or 8 for, resp., 2- and 3D. More...
 
CoMMAIntType _threshold_card = 0
 Threshold cardinality (default = 0, meaning, equal to the dimension) More...
 
vector< CoMMAIndexType > _l_nb_of_cells
 List of number of cells per coarse cell created. More...
 
shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _fc_graph
 Dual_Graph object determining Fine cells graph and hence the connectivity. More...
 
shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _cc_graph
 pointer to Coarse_Cell_Container element More...
 
shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _seeds_pool
 Seeds_Pool object giving the order in which the fine cells should be considered when agglomerating. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Child class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the search of fine cells.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Constructor & Destructor Documentation

- -

◆ Agglomerator_Iterative()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Agglomerator_Iterative (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph,
shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph,
shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool,
CoMMAIntType neighbourhood_type,
CoMMAIntType fc_iter,
CoMMAIntType dimension = 3 
)
-
-inline
-
- -

Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Biconnected.

-
Parameters
- - - - - - - -
[in]graphDual_Graph object that determines the connectivity of the matrix
[in]cc_graphContainer for the coarse cells
[in]seeds_poolSeeds_Pool object giving the order in which the fine cells should be considered when agglomerating
[in]neighbourhood_typeType of neighbourhood to use when growing a coarse cell. See CoMMANeighbourhoodT for more details.
[in]fc_iterNumber of iterations allowed for the algorithm choosing which fine cell to add next. The cost grows exponentially, hence use small values.
[in]dimensionDimension of the problem
-
-
- -
-
- -

◆ ~Agglomerator_Iterative()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - -
virtual Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Agglomerator_Iterative ()
-
-virtualdefault
-
- -

Destructor.

- -
-
-

Member Function Documentation

- -

◆ compute_best_fc_to_add()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::compute_best_fc_to_add (const CoMMAIntType fc_iter,
const shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood,
const unordered_map< CoMMAIndexType, CoMMAIntType > & d_n_of_seed,
const bool & is_order_primary,
const CoMMAWeightType & diam_cc,
const CoMMAWeightType & vol_cc,
const unordered_set< CoMMAIndexType > & s_of_fc_for_current_cc,
CoMMAIndexType & argmin_ar,
CoMMAIntType & max_faces_in_common,
CoMMAWeightType & min_ar_diam,
CoMMAWeightType & min_ar_vol 
) const
-
-inlineoverridevirtual
-
- -

Specialization of the parent function. This is an iterative version. Computes the best fine cell to add to the coarse cell. The choice depends on: the number of shared faces (tries to maximize it), the neighbourhood order (tries to minimize it), and the aspect-ratio of the coarse cell (tries to minimize it).

-
Parameters
- - - - - - - - - - - - -
[in]fc_iterNumber of iteration for the fine-cell research algorithm
[in]neighbourhoodNeighborhood object
[in]d_n_of_seedDictionary containing the cells to consider for the agglomeration with their neighbourhood order wrt to the original seed
[in]is_order_primaryIf true, the neighbourhood order prevails on other criteria
[in]diam_cc(Approximation of the) Diameter of the current coarse cell
[in]vol_ccVolume of the current coarse cell
[in]s_of_fc_for_current_ccIndices of the fine cells already agglomerated in the coarse cell
[out]argmin_arIndex wrt to neighbours vector of the chosen fine cell
[out]max_faces_in_commonNumber of faces shared between the chosen fine cell and the coarse cell
[out]min_ar_diam(Approximation of the) Diameter of the coarse cell after the addition of the chosen fine cell
[out]min_ar_volVolume of the coarse cell after the addition of the chosen fine cell
-
-
- -

Reimplemented from Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_agglomerator___iterative.js b/class_agglomerator___iterative.js deleted file mode 100644 index 154242f..0000000 --- a/class_agglomerator___iterative.js +++ /dev/null @@ -1,6 +0,0 @@ -var class_agglomerator___iterative = -[ - [ "Agglomerator_Iterative", "class_agglomerator___iterative.html#a5b2972f94b006e90d8e5878e272378d2", null ], - [ "~Agglomerator_Iterative", "class_agglomerator___iterative.html#a080de7d893873a51618f9ce39a522467", null ], - [ "compute_best_fc_to_add", "class_agglomerator___iterative.html#acb0661b873442a19ad0b2ea678345642", null ] -]; \ No newline at end of file diff --git a/class_agglomerator___iterative.png b/class_agglomerator___iterative.png deleted file mode 100644 index 2e85c90..0000000 Binary files a/class_agglomerator___iterative.png and /dev/null differ diff --git a/class_bimap-members.html b/class_bimap-members.html deleted file mode 100644 index ce38da7..0000000 --- a/class_bimap-members.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Bimap< A, B > Member List
-
-
- -

This is the complete list of members for Bimap< A, B >, including all inherited members.

- - - - - - - - - - - - - - -
_mapABimap< A, B >protected
_mapBBimap< A, B >protected
Bimap()Bimap< A, B >inline
empty()Bimap< A, B >inline
erase_B(const A &a)Bimap< A, B >inline
get_A(const B &b)Bimap< A, B >inline
get_B(const A &a)Bimap< A, B >inline
insert(const A &a, const B &b)Bimap< A, B >inline
lung()Bimap< A, B >inline
print()Bimap< A, B >inline
update_nodeA(const B &b_old, const B &b_new)Bimap< A, B >inline
update_nodeB(const A &a_old, const A &a_new)Bimap< A, B >inline
~Bimap()Bimap< A, B >inline
-
- - - - diff --git a/class_bimap.js b/class_bimap.js deleted file mode 100644 index 3495b6a..0000000 --- a/class_bimap.js +++ /dev/null @@ -1,16 +0,0 @@ -var class_bimap = -[ - [ "Bimap", "class_bimap.html#adab123f3fcc176fabad0712d1479bfb1", null ], - [ "~Bimap", "class_bimap.html#ac15ec85665c5628b1c5ac0dfdfc27274", null ], - [ "empty", "class_bimap.html#aed5fb1baaa71c1137984e96e9117ae5f", null ], - [ "erase_B", "class_bimap.html#aff20ef4205c50149fe441250a5966712", null ], - [ "get_A", "class_bimap.html#af467a3fe1c6a834f59fb11e73ecaffe7", null ], - [ "get_B", "class_bimap.html#acc0c46d71708ab4a071dc045ea48c76f", null ], - [ "insert", "class_bimap.html#ace92920f113af9bf07f930e21689d9c4", null ], - [ "lung", "class_bimap.html#a4c78f72df8b5689251721a94a138c13d", null ], - [ "print", "class_bimap.html#aa4f8c3c9dd622bccffe066167db3f021", null ], - [ "update_nodeA", "class_bimap.html#a8f0d12e64f86e857b3ec6f709301c186", null ], - [ "update_nodeB", "class_bimap.html#adcf24cc8cc3f6fbef8783712d00415e2", null ], - [ "_mapA", "class_bimap.html#a6be43beacb00b26c8e24958950a66b82", null ], - [ "_mapB", "class_bimap.html#a433a7a0d989b19d687458f760bffa665", null ] -]; \ No newline at end of file diff --git a/class_coarse___cell-members.html b/class_coarse___cell-members.html deleted file mode 100644 index 205d831..0000000 --- a/class_coarse___cell-members.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
- -
- - - - diff --git a/class_coarse___cell.js b/class_coarse___cell.js deleted file mode 100644 index 80cebbe..0000000 --- a/class_coarse___cell.js +++ /dev/null @@ -1,15 +0,0 @@ -var class_coarse___cell = -[ - [ "DualGraphPtr", "class_coarse___cell.html#a8be4bfb51fc40000cf941d264323f6b2", null ], - [ "Coarse_Cell", "class_coarse___cell.html#a838221044200a9e58592b27c7f61769b", null ], - [ "~Coarse_Cell", "class_coarse___cell.html#af75a1031ce60bbf121083ddda51f1941", null ], - [ "insert_cell", "class_coarse___cell.html#a8933946e4838039b06b01854ea02bba1", null ], - [ "insert_cells", "class_coarse___cell.html#aa72685cf11b7ef850592386bbbbf07cb", null ], - [ "is_connected", "class_coarse___cell.html#a9141f6b11ffcb23820a6bf94cff94375", null ], - [ "_cardinality", "class_coarse___cell.html#a4d90745cd32adfe8298a840af8ed02c8", null ], - [ "_compactness", "class_coarse___cell.html#a047166bfed95c800f5818571ad353d64", null ], - [ "_fc_graph", "class_coarse___cell.html#a9d0de841b50f912776594f0569e027ce", null ], - [ "_idx", "class_coarse___cell.html#ab4e9114443109a7cdd92baca0d0fad0a", null ], - [ "_is_isotropic", "class_coarse___cell.html#a38bbb07dde775ec8b93e59d449f8496d", null ], - [ "_s_fc", "class_coarse___cell.html#a90c9c5cde7ccf85d11f5cfc98997368d", null ] -]; \ No newline at end of file diff --git a/class_coarse___cell.png b/class_coarse___cell.png deleted file mode 100644 index 81244f7..0000000 Binary files a/class_coarse___cell.png and /dev/null differ diff --git a/class_coarse___cell___container-members.html b/class_coarse___cell___container-members.html deleted file mode 100644 index c1bea32..0000000 --- a/class_coarse___cell___container-members.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - -
_cc_counterCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_ccsCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_delayed_ccCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_2_ccCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_fc_graphCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_is_fc_agglomeratedCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_nb_of_agglomerated_fcCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_sing_card_threshCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_singular_ccCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
cc_create_all_delayed_cc()Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Coarse_Cell_Container(DualGraphPtr &fc_graph, const CoMMAIntType singular_card_thresh)Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
CoarseCellPtr typedefCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoarseCellType typedefCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
correct(const CoMMAIntType max_card)Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
create_cc(const unordered_set< CoMMAIndexType > &s_fc, const CoMMAIntType compactness, bool is_anisotropic=false, bool is_creation_delayed=false)Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
DualGraphPtr typedefCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
get_nb_of_cc() constCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_neighs_cc(const CoMMAIndexType &i_fc, const CoMMAIndexType &i_cc) constCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_number_of_fc_agglomerated() constCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_shared_faces(const CoMMAIndexType fc, const CoarseCellPtr cc) constCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
select_best_cc_to_agglomerate(const CoMMAIndexType fc, const set< CoMMAIndexType > &neighs, const CoMMAIntType max_card, optional< CoMMAIntType > &new_compactness) constCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
select_best_cc_to_agglomerate_whole(const unordered_set< CoMMAIndexType > &fcs, const set< CoMMAIndexType > &neighs, const CoMMAIntType max_card, optional< CoMMAIntType > &new_compactness) constCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Coarse_Cell_Container()=defaultCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
-
- - - - diff --git a/class_coarse___cell___container.js b/class_coarse___cell___container.js deleted file mode 100644 index 0e59f21..0000000 --- a/class_coarse___cell___container.js +++ /dev/null @@ -1,26 +0,0 @@ -var class_coarse___cell___container = -[ - [ "CoarseCellPtr", "class_coarse___cell___container.html#a319328848c99b14f01a0914710217371", null ], - [ "CoarseCellType", "class_coarse___cell___container.html#a66f8c6355a3a99ac2f6487e86f17fc5c", null ], - [ "DualGraphPtr", "class_coarse___cell___container.html#ae1f92ee786149dd1dccf1a63b9e6232e", null ], - [ "Coarse_Cell_Container", "class_coarse___cell___container.html#a534208d33bc0bdc591223024496a3796", null ], - [ "~Coarse_Cell_Container", "class_coarse___cell___container.html#acbf8e09f2a919012a743a323564c3b3a", null ], - [ "cc_create_all_delayed_cc", "class_coarse___cell___container.html#a03acb3ee71ea2d53e899943912f7fc12", null ], - [ "correct", "class_coarse___cell___container.html#ad8f17759e8670d7c89b2931282f55617", null ], - [ "create_cc", "class_coarse___cell___container.html#a89af69d54fd9564d112fcc0897e8f8c3", null ], - [ "get_nb_of_cc", "class_coarse___cell___container.html#a914e4ce6536ddc54463f399e8e85f5b5", null ], - [ "get_neighs_cc", "class_coarse___cell___container.html#a209dae87bf495d5e9a9a1b51019203df", null ], - [ "get_number_of_fc_agglomerated", "class_coarse___cell___container.html#a09b33c3ceda1cc06bee353e8a23dfc02", null ], - [ "get_shared_faces", "class_coarse___cell___container.html#a1a4fee09c0e84fcd74804ee3aadb7665", null ], - [ "select_best_cc_to_agglomerate", "class_coarse___cell___container.html#aba3dc19912418f8bd60fc006c6d17e6d", null ], - [ "select_best_cc_to_agglomerate_whole", "class_coarse___cell___container.html#a420e4d3b4c4b4a11c151a5caf31f26d3", null ], - [ "_cc_counter", "class_coarse___cell___container.html#aaedb1987672cc4859f2f6fe7e1ec8233", null ], - [ "_ccs", "class_coarse___cell___container.html#acd55a3361f7870e4e3a6fecc0b722143", null ], - [ "_delayed_cc", "class_coarse___cell___container.html#a9ff233d4ed5041ea03911c235ea31cb1", null ], - [ "_fc_2_cc", "class_coarse___cell___container.html#a424991a123832bea6e516b5e05498ab6", null ], - [ "_fc_graph", "class_coarse___cell___container.html#a9ae47860d515a99af0e0199f4d844473", null ], - [ "_is_fc_agglomerated", "class_coarse___cell___container.html#a7940da5753d067f786aead5b6bc7f792", null ], - [ "_nb_of_agglomerated_fc", "class_coarse___cell___container.html#ad6364e5fed3a17cdbe68a52a205c836a", null ], - [ "_sing_card_thresh", "class_coarse___cell___container.html#a40c1a7820ff7948cde2ac8cb189be0f5", null ], - [ "_singular_cc", "class_coarse___cell___container.html#afc84ade812ac4538c434bd8ad5907a62", null ] -]; \ No newline at end of file diff --git a/class_coarse___cell___subgraph-members.html b/class_coarse___cell___subgraph-members.html deleted file mode 100644 index 274b182..0000000 --- a/class_coarse___cell___subgraph-members.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
- -
- - - - diff --git a/class_coarse___cell___subgraph.html b/class_coarse___cell___subgraph.html deleted file mode 100644 index 5182750..0000000 --- a/class_coarse___cell___subgraph.html +++ /dev/null @@ -1,508 +0,0 @@ - - - - - - - -CoMMA: Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
-
-
- -

Class describing a coarse cell with a full description, that is, it also holds a subgraph describing how the fine cells are connected inside the coarse one. - More...

- -

#include <Coarse_Cell.h>

-
-Inheritance diagram for Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - -

-Public Types

using BaseClass = Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Type for the base Coarse_Cell class. More...
 
using SubGraphType = Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Type for a Subgraph object. More...
 
using SubGraphPtr = shared_ptr< SubGraphType >
 Type for a shared pointer to a Subgraph object. More...
 
using DualGraphPtr = shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > >
 Type for a shared pointer to a Dual_Graph object. More...
 
- - - - - - - - - - - - - -

-Public Member Functions

 Coarse_Cell_Subgraph (DualGraphPtr fc_graph, CoMMAIndexType i_cc, const unordered_set< CoMMAIndexType > &s_fc, CoMMAIntType compactness, bool is_isotropic=true)
 Constructor of the class. More...
 
void insert_cell (const CoMMAIndexType i_fc, const optional< CoMMAIntType > new_compactness=nullopt) override
 Insert a FC in the CC (and update sub-graph if necessary) More...
 
void insert_cells (const unordered_set< CoMMAIndexType > &fcs, const optional< CoMMAIntType > new_compactness=nullopt) override
 Insert several FC in the CC (and update sub-graph if necessary) More...
 
void update_connectivity ()
 Analyse subgraph and update the connectivity. More...
 
- - - - - - - - - - -

-Public Attributes

SubGraphPtr _cc_graph
 Shared pointer of the subgraph structure (CSR representation) More...
 
bool _is_connected
 Whether the cell connected. More...
 
bool _is_connectivity_up_to_date
 Whether the connectivity has been checked. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Class describing a coarse cell with a full description, that is, it also holds a subgraph describing how the fine cells are connected inside the coarse one.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ BaseClass

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::BaseClass = Coarse_Cell<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Type for the base Coarse_Cell class.

- -
-
- -

◆ DualGraphPtr

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::DualGraphPtr = shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> >
-
- -

Type for a shared pointer to a Dual_Graph object.

- -
-
- -

◆ SubGraphPtr

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::SubGraphPtr = shared_ptr<SubGraphType>
-
- -

Type for a shared pointer to a Subgraph object.

- -
-
- -

◆ SubGraphType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::SubGraphType = Subgraph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Type for a Subgraph object.

- -
-
-

Constructor & Destructor Documentation

- -

◆ Coarse_Cell_Subgraph()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Coarse_Cell_Subgraph (DualGraphPtr fc_graph,
CoMMAIndexType i_cc,
const unordered_set< CoMMAIndexType > & s_fc,
CoMMAIntType compactness,
bool is_isotropic = true 
)
-
-inline
-
- -

Constructor of the class.

-
Parameters
- - - - - - -
[in]fc_graphDual_Graph object from where are taken the set of fine cells to create the coarse cell.
[in]i_ccIndex of the coarse cell
[in]s_fcUnordered set of fine cells constituting the coarse cell
[in]compactnessCompactness degree of the CC
[in]is_isotropic(default = true) boolean describing if the cell is coming from an isotropic agglomeration process or an anisotropic agglomeration process.
-
-
- -
-
-

Member Function Documentation

- -

◆ insert_cell()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::insert_cell (const CoMMAIndexType i_fc,
const optional< CoMMAIntType > new_compactness = nullopt 
)
-
-inlineoverridevirtual
-
- -

Insert a FC in the CC (and update sub-graph if necessary)

-
Parameters
- - - -
[in]i_fcIndex of the fine cell to add
[in]new_compactnessOptional, default void, giving the compactness of the CC after the addition
-
-
- -

Reimplemented from Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ insert_cells()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::insert_cells (const unordered_set< CoMMAIndexType > & fcs,
const optional< CoMMAIntType > new_compactness = nullopt 
)
-
-inlineoverridevirtual
-
- -

Insert several FC in the CC (and update sub-graph if necessary)

-
Parameters
- - - -
[in]fcsSet of indices of the fine cells to add
[in]new_compactnessOptional, default void, giving the compactness of the CC after the addition
-
-
- -

Reimplemented from Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ update_connectivity()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - -
void Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update_connectivity ()
-
-inline
-
- -

Analyse subgraph and update the connectivity.

- -
-
-

Member Data Documentation

- -

◆ _cc_graph

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
SubGraphPtr Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_cc_graph
-
- -

Shared pointer of the subgraph structure (CSR representation)

- -
-
- -

◆ _is_connected

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
bool Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_is_connected
-
- -

Whether the cell connected.

- -
-
- -

◆ _is_connectivity_up_to_date

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
bool Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_is_connectivity_up_to_date
-
- -

Whether the connectivity has been checked.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_coarse___cell___subgraph.js b/class_coarse___cell___subgraph.js deleted file mode 100644 index 00c85b5..0000000 --- a/class_coarse___cell___subgraph.js +++ /dev/null @@ -1,14 +0,0 @@ -var class_coarse___cell___subgraph = -[ - [ "BaseClass", "class_coarse___cell___subgraph.html#acf2adc2a72a1f59ad4c7cbd630186f18", null ], - [ "DualGraphPtr", "class_coarse___cell___subgraph.html#a8be4bfb51fc40000cf941d264323f6b2", null ], - [ "SubGraphPtr", "class_coarse___cell___subgraph.html#ac834adecb0b435e9722eb1e138bdac76", null ], - [ "SubGraphType", "class_coarse___cell___subgraph.html#ab1c363143bc71d7b35e942d44eac78ab", null ], - [ "Coarse_Cell_Subgraph", "class_coarse___cell___subgraph.html#a6721f05cc78e6cc4cb300522acddcf06", null ], - [ "insert_cell", "class_coarse___cell___subgraph.html#acbd2ec917d2031f3d8c0e8a499c57185", null ], - [ "insert_cells", "class_coarse___cell___subgraph.html#ad8656ac6fe4f8ab894e250fa160c5809", null ], - [ "update_connectivity", "class_coarse___cell___subgraph.html#a66b1e4e891688f3ec18bd1d91b80b968", null ], - [ "_cc_graph", "class_coarse___cell___subgraph.html#a51ceea95e630f9bb05d09b4517c62444", null ], - [ "_is_connected", "class_coarse___cell___subgraph.html#a7a1792cefef0e843930729b039ae6fe0", null ], - [ "_is_connectivity_up_to_date", "class_coarse___cell___subgraph.html#adb35fdd9503dff948d1b6dc62a27d85d", null ] -]; \ No newline at end of file diff --git a/class_coarse___cell___subgraph.png b/class_coarse___cell___subgraph.png deleted file mode 100644 index 9f693e8..0000000 Binary files a/class_coarse___cell___subgraph.png and /dev/null differ diff --git a/class_dual___graph-members.html b/class_dual___graph-members.html deleted file mode 100644 index ae18d91..0000000 --- a/class_dual___graph-members.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_centersDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_compute_ARDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_m_CRS_Col_IndGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_m_CRS_Row_PtrGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_m_CRS_ValuesGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_n_bnd_facesDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_number_of_cellsGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_s_anisotropic_compliant_cellsDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_visitedGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_volumesGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
BaseClass typedefDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
BFS(const CoMMAIndexType &root)Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
check_connectivity()Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
CoMMAPairType typedefDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMASetOfPairType typedefDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
compute_fc_compactness_inside_a_cc(const unordered_set< CoMMAIndexType > &s_fc) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
compute_min_fc_compactness_inside_a_cc(const unordered_set< CoMMAIndexType > &s_fc) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
compute_neighbourhood_of_cc(const unordered_set< CoMMAIndexType > &s_seeds, CoMMAIntType &nb_of_order_of_neighbourhood, unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const CoMMAIntType max_card, const vector< bool > &is_fc_agglomerated_tmp) constDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
ContainerIndexConstIt typedefGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
ContainerIndexType typedefDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
ContainerWeightConstIt typedefGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
ContainerWeightType typedefDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
DFS(const CoMMAIndexType &i_fc)Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Dual_Graph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes, const vector< vector< CoMMAWeightType > > &centers, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType dimension, const ContainerIndexType &anisotropic_compliant_fc)Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_n_boundary_faces(const CoMMAIndexType idx_c) constDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_nb_cells() constDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_nb_of_neighbours(CoMMAIndexType i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_neighbourhood_of_cc(const unordered_set< CoMMAIndexType > &s_seeds, const vector< bool > &is_fc_agglomerated_tmp) constDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_neighbours(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_weights(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Graph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
is_on_boundary(const CoMMAIndexType idx_c) constDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
neighbours_cbegin(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
neighbours_cend(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
tag_anisotropic_cells(ContainerWeightType &max_weights, vector< bool > &is_anisotropic, deque< CoMMAIndexType > &aniso_seeds_pool, const CoMMAWeightType threshold_anisotropy, const ContainerWeightType &priority_weights, const CoMMAIndexType preserving)Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
weights_cbegin(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
weights_cend(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Dual_Graph()=defaultDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Graph()=defaultGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
-
- - - - diff --git a/class_dual___graph.html b/class_dual___graph.html deleted file mode 100644 index f935d6a..0000000 --- a/class_dual___graph.html +++ /dev/null @@ -1,868 +0,0 @@ - - - - - - - -CoMMA: Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
-
-
- -

A class implementing the CRS global graph representation of the global mesh. - More...

- -

#include <Dual_Graph.h>

-
-Inheritance diagram for Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

using BaseClass = Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Parent class. More...
 
using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
using ContainerIndexType = vector< CoMMAIndexType >
 Type for containers of indices. More...
 
using ContainerWeightType = vector< CoMMAWeightType >
 Type for containers of weights. More...
 
- Public Types inherited from Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
using ContainerIndexType = vector< CoMMAIndexType >
 Type for containers of indices. More...
 
using ContainerWeightType = vector< CoMMAWeightType >
 Type for containers of weights. More...
 
using ContainerIndexConstIt = typename ContainerIndexType::const_iterator
 Type for constant iterators of containers of indices. More...
 
using ContainerWeightConstIt = typename ContainerWeightType::const_iterator
 Type for constant iterators of containers of weights. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Dual_Graph (const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes, const vector< vector< CoMMAWeightType > > &centers, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType dimension, const ContainerIndexType &anisotropic_compliant_fc)
 Constructor of the class. More...
 
virtual ~Dual_Graph ()=default
 Destructor of the class. More...
 
CoMMAIntType get_n_boundary_faces (const CoMMAIndexType idx_c) const
 Return how many boundary faces a certain cell has. More...
 
bool is_on_boundary (const CoMMAIndexType idx_c) const
 Whether a cell is on the boundary. More...
 
void tag_anisotropic_cells (ContainerWeightType &max_weights, vector< bool > &is_anisotropic, deque< CoMMAIndexType > &aniso_seeds_pool, const CoMMAWeightType threshold_anisotropy, const ContainerWeightType &priority_weights, const CoMMAIndexType preserving)
 Tag cells as anisotropic if their aspect-ratio is over a given threshold and order them according to given priority. More...
 
CoMMAIntType get_nb_cells () const
 Getter that returns the number of cells. More...
 
unordered_set< CoMMAIndexType > get_neighbourhood_of_cc (const unordered_set< CoMMAIndexType > &s_seeds, const vector< bool > &is_fc_agglomerated_tmp) const
 Get the fine cells neighbours of a coarse cell. More...
 
void compute_neighbourhood_of_cc (const unordered_set< CoMMAIndexType > &s_seeds, CoMMAIntType &nb_of_order_of_neighbourhood, unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const CoMMAIntType max_card, const vector< bool > &is_fc_agglomerated_tmp) const
 Compute the dictionary of compactness of fine cells inside a coarse cell. More...
 
- Public Member Functions inherited from Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Graph (const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)
 Constructor of the class. More...
 
virtual ~Graph ()=default
 Destructor of the class. More...
 
void DFS (const CoMMAIndexType &i_fc)
 Depth First Search (DFS) recursive function. More...
 
void BFS (const CoMMAIndexType &root)
 Breadth First Search (BFS) function. More...
 
CoMMAIntType get_nb_of_neighbours (CoMMAIndexType i_c) const
 Retrieve the number of neighbours. More...
 
ContainerIndexType get_neighbours (const CoMMAIndexType &i_c) const
 Based on the CRS representation retrieves the neighbours of the cell given as an input. More...
 
ContainerIndexConstIt neighbours_cbegin (const CoMMAIndexType &i_c) const
 Get constant pointer to the first neighbour of cell i_c. More...
 
ContainerIndexConstIt neighbours_cend (const CoMMAIndexType &i_c) const
 Get constant pointer to the element following the last neighbour of cell i_c. More...
 
ContainerWeightType get_weights (const CoMMAIndexType &i_c) const
 Based on the area of the faces composing the cell given as an input, we retrieve the faces connecting the given cell with the neighbourhood that can be described also as the weight of the graph. More...
 
ContainerWeightConstIt weights_cbegin (const CoMMAIndexType &i_c) const
 Get constant pointer to the first neighbour of cell i_c. More...
 
ContainerWeightConstIt weights_cend (const CoMMAIndexType &i_c) const
 Get constant pointer to the element following the last neighbour of cell i_c. More...
 
bool check_connectivity ()
 Check the connectivity of the graph. More...
 
CoMMAIntType compute_min_fc_compactness_inside_a_cc (const unordered_set< CoMMAIndexType > &s_fc) const
 Compute the minimum compactness of fine cells inside a coarse cell. More...
 
unordered_map< CoMMAIndexType, CoMMAIntType > compute_fc_compactness_inside_a_cc (const unordered_set< CoMMAIndexType > &s_fc) const
 Compute the dictionary of compactness of fine cells inside a coarse cell. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

const vector< CoMMAIntType > & _n_bnd_faces
 Vector telling how many boundary faces each cell has. More...
 
const unordered_set< CoMMAIndexType > _s_anisotropic_compliant_cells
 Elements that are checked if they are anisotropic. If an element satisfies the condition for being anisotropic (typically, AR > threshold) but it not in this set, it will not considered as anisotropic. We use a set to ensure uniqueness. More...
 
const vector< vector< CoMMAWeightType > > & _centers
 Vector of cell centers. More...
 
function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
 Function which computes the aspect-ratio from the minimum and maximum faces
- In 3D: $ AR = sqrt(\frac{max_{surf}}{min_{surf}}) $
- In 2D: $ AR = \frac{max_{surf}}{min_{surf}} $
- (Recall that in 2D a face is actually an edge) More...
 
- Public Attributes inherited from Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIndexType _number_of_cells
 Number of nodes in the Graph (it corresponds to the number of cells in the subgraph or the dual graph. More...
 
vector< bool > _visited
 Helper vector for the DFS. More...
 
ContainerIndexType _m_CRS_Row_Ptr
 Vector of row pointer of CRS representation. More...
 
ContainerIndexType _m_CRS_Col_Ind
 Vector of column index of CRS representation. More...
 
ContainerWeightType _m_CRS_Values
 Vector of area weight of CRS representation. More...
 
ContainerWeightType _volumes
 Vector of volumes. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

A class implementing the CRS global graph representation of the global mesh.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ BaseClass

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::BaseClass = Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Parent class.

- -
-
- -

◆ CoMMAPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>
-
- -

Type of pair.

- -
-
- -

◆ CoMMASetOfPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
-
- -

Type of set of pairs.

- -
-
- -

◆ ContainerIndexType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerIndexType = vector<CoMMAIndexType>
-
- -

Type for containers of indices.

- -
-
- -

◆ ContainerWeightType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerWeightType = vector<CoMMAWeightType>
-
- -

Type for containers of weights.

- -
-
-

Constructor & Destructor Documentation

- -

◆ Dual_Graph()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Dual_Graph (const CoMMAIndexType & nb_c,
const ContainerIndexTypem_crs_row_ptr,
const ContainerIndexTypem_crs_col_ind,
const ContainerWeightTypem_crs_values,
const ContainerWeightTypevolumes,
const vector< vector< CoMMAWeightType > > & centers,
const vector< CoMMAIntType > & n_bnd_faces,
const CoMMAIntType dimension,
const ContainerIndexTypeanisotropic_compliant_fc 
)
-
-inline
-
- -

Constructor of the class.

-
Parameters
- - - - - - - - - - -
[in]nb_cNumber of cells
[in]m_crs_row_ptrThe row pointer of the CRS representation
[in]m_crs_col_indThe column index of the CRS representation
[in]m_crs_valuesThe weight of the CRS representation (in CoMMA case will be the area of the faces that in the graph representation are the edges between two nodes represented by the cell centers.
[in]volumesThe volumes of the cells
[in]centersCell centers
[in]n_bnd_facesVector telling how many boundary faces each cell has
[in]dimensionDimensionality of the problem, 2- or 3D
[in]anisotropic_compliant_fcSet of compliant fc cells (in the most of the case all)
-
-
- -
-
- -

◆ ~Dual_Graph()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - -
virtual Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Dual_Graph ()
-
-virtualdefault
-
- -

Destructor of the class.

- -
-
-

Member Function Documentation

- -

◆ compute_neighbourhood_of_cc()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::compute_neighbourhood_of_cc (const unordered_set< CoMMAIndexType > & s_seeds,
CoMMAIntType & nb_of_order_of_neighbourhood,
unordered_map< CoMMAIndexType, CoMMAIntType > & d_n_of_seed,
const CoMMAIntType max_card,
const vector< bool > & is_fc_agglomerated_tmp 
) const
-
-inline
-
- -

Compute the dictionary of compactness of fine cells inside a coarse cell.

-
Parameters
- - - - - - -
[in]s_seedsSet of seeds for which the neighbourhood must be computed. Generally they are the fine cells composing the coarse cell for which we are trying to compute the neighbourhood.
[in]nb_of_order_of_neighbourhoodorder Of the neighbourhood at which we want to extend the dictionary
[out]d_n_of_seedDictionary of the neighbourhood given as an output. The key of the associative structure is the index of the fine cell, the value is the order of the distance.
[in]max_cardMaximum cardinality
[in]is_fc_agglomerated_tmpVector reporting the already agglomerated cell, useful in the algorithm
-
-
- -
-
- -

◆ get_n_boundary_faces()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
CoMMAIntType Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_n_boundary_faces (const CoMMAIndexType idx_c) const
-
-inline
-
- -

Return how many boundary faces a certain cell has.

-
Parameters
- - -
[in]idx_cIndex of the cell
-
-
-
Returns
the number of boundary faces
- -
-
- -

◆ get_nb_cells()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - -
CoMMAIntType Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_nb_cells () const
-
-inline
-
- -

Getter that returns the number of cells.

-
Returns
number of cells
- -
-
- -

◆ get_neighbourhood_of_cc()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
unordered_set< CoMMAIndexType > Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_neighbourhood_of_cc (const unordered_set< CoMMAIndexType > & s_seeds,
const vector< bool > & is_fc_agglomerated_tmp 
) const
-
-inline
-
- -

Get the fine cells neighbours of a coarse cell.

-
Parameters
- - - -
[in]s_seedsSet of seeds for which the neighbourhood should be computed. Generally they are the fine cells composing the coarse cell for which we are trying to compute the neighbourhood.
[in]is_fc_agglomerated_tmpVector reporting the already agglomerated cell, useful in the algorithm
-
-
-
Returns
The set of neighbours
- -
-
- -

◆ is_on_boundary()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
bool Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::is_on_boundary (const CoMMAIndexType idx_c) const
-
-inline
-
- -

Whether a cell is on the boundary.

-
Parameters
- - -
[in]idx_cIndex of the cell
-
-
-
Returns
Whether a cell is on the boundary
- -
-
- -

◆ tag_anisotropic_cells()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::tag_anisotropic_cells (ContainerWeightTypemax_weights,
vector< bool > & is_anisotropic,
deque< CoMMAIndexType > & aniso_seeds_pool,
const CoMMAWeightType threshold_anisotropy,
const ContainerWeightTypepriority_weights,
const CoMMAIndexType preserving 
)
-
-inline
-
- -

Tag cells as anisotropic if their aspect-ratio is over a given threshold and order them according to given priority.

-
Parameters
- - - - - - - -
[out]max_weightsArray of the maximum weight: the biggest area of the faces composing the given fine cell
[out]is_anisotropicVector of length equal to the total number of cell telling whether a cell is anisotropic
[out]aniso_seeds_poolContainer containing the anisotropic cells in the order they should be considered when computing the lines
[in]threshold_anisotropyValue of the aspect ratio above which a cell is considered anisotropic. If negative, all compliant cells are considered as anisotropic
[in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
[in]preservingif 0 does not hit only the BL prism to preserve the boundary layer otherwise 2 for 2D or 3 for the 3D to preserve the BL only in the anisotropic agglomeration
-
-
- -
-
-

Member Data Documentation

- -

◆ _centers

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
const vector<vector<CoMMAWeightType> >& Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_centers
-
- -

Vector of cell centers.

- -
-
- -

◆ _compute_AR

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
function<CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_compute_AR
-
- -

Function which computes the aspect-ratio from the minimum and maximum faces
- In 3D: $ AR = sqrt(\frac{max_{surf}}{min_{surf}}) $
- In 2D: $ AR = \frac{max_{surf}}{min_{surf}} $
- (Recall that in 2D a face is actually an edge)

- -
-
- -

◆ _n_bnd_faces

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
const vector<CoMMAIntType>& Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_n_bnd_faces
-
- -

Vector telling how many boundary faces each cell has.

- -
-
- -

◆ _s_anisotropic_compliant_cells

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
const unordered_set<CoMMAIndexType> Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_s_anisotropic_compliant_cells
-
- -

Elements that are checked if they are anisotropic. If an element satisfies the condition for being anisotropic (typically, AR > threshold) but it not in this set, it will not considered as anisotropic. We use a set to ensure uniqueness.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_dual___graph.js b/class_dual___graph.js deleted file mode 100644 index 6ed4c92..0000000 --- a/class_dual___graph.js +++ /dev/null @@ -1,20 +0,0 @@ -var class_dual___graph = -[ - [ "BaseClass", "class_dual___graph.html#a66fb85f140bc4c7dd8c7af4b1976f6d9", null ], - [ "CoMMAPairType", "class_dual___graph.html#afd3bb2bfafa15c8db3d2adae54137714", null ], - [ "CoMMASetOfPairType", "class_dual___graph.html#a2e99aaad85e912fedd34f6c9686d3021", null ], - [ "ContainerIndexType", "class_dual___graph.html#abb8937d3bdb846254d3f63f0eb378dee", null ], - [ "ContainerWeightType", "class_dual___graph.html#ab70bf7df2dc00ac790e2854f8a2eef6a", null ], - [ "Dual_Graph", "class_dual___graph.html#adb7691275dece84b9bc51514b27d0641", null ], - [ "~Dual_Graph", "class_dual___graph.html#a0480781b854e4e7542659dfecadee968", null ], - [ "compute_neighbourhood_of_cc", "class_dual___graph.html#a3a4977d15b734d7c28ca851f6871230e", null ], - [ "get_n_boundary_faces", "class_dual___graph.html#aed45a1fa00a3234c2f122ad7bfca9812", null ], - [ "get_nb_cells", "class_dual___graph.html#a1ebf7d891501216863dbea7d603eadc2", null ], - [ "get_neighbourhood_of_cc", "class_dual___graph.html#a26a06a0cdafc77b7e5a16a609384424a", null ], - [ "is_on_boundary", "class_dual___graph.html#a758730c4af1e17ac1531389083345ff2", null ], - [ "tag_anisotropic_cells", "class_dual___graph.html#ab33e369fe1af55d0f913f64143d8c6ce", null ], - [ "_centers", "class_dual___graph.html#adee0ab6f08caf03b8acade0c9c7515c8", null ], - [ "_compute_AR", "class_dual___graph.html#a61237752c04eb7a93d5306c4ccf789af", null ], - [ "_n_bnd_faces", "class_dual___graph.html#a12ebafe2c27293840b5b57e934a7bd6a", null ], - [ "_s_anisotropic_compliant_cells", "class_dual___graph.html#a8283d424689ee579c7ae6ad8c5a49f36", null ] -]; \ No newline at end of file diff --git a/class_dual___graph.png b/class_dual___graph.png deleted file mode 100644 index df42c6b..0000000 Binary files a/class_dual___graph.png and /dev/null differ diff --git a/class_graph-members.html b/class_graph-members.html deleted file mode 100644 index 0b5dc26..0000000 --- a/class_graph-members.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - -
_m_CRS_Col_IndGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_m_CRS_Row_PtrGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_m_CRS_ValuesGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_number_of_cellsGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_visitedGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_volumesGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
BFS(const CoMMAIndexType &root)Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
check_connectivity()Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
compute_fc_compactness_inside_a_cc(const unordered_set< CoMMAIndexType > &s_fc) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
compute_min_fc_compactness_inside_a_cc(const unordered_set< CoMMAIndexType > &s_fc) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
ContainerIndexConstIt typedefGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
ContainerIndexType typedefGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
ContainerWeightConstIt typedefGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
ContainerWeightType typedefGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
DFS(const CoMMAIndexType &i_fc)Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_nb_of_neighbours(CoMMAIndexType i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_neighbours(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_weights(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Graph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
neighbours_cbegin(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
neighbours_cend(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
weights_cbegin(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
weights_cend(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Graph()=defaultGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
-
- - - - diff --git a/class_graph.js b/class_graph.js deleted file mode 100644 index 8b804ec..0000000 --- a/class_graph.js +++ /dev/null @@ -1,27 +0,0 @@ -var class_graph = -[ - [ "ContainerIndexConstIt", "class_graph.html#aad80e86de524b83ff2e582073fc6b950", null ], - [ "ContainerIndexType", "class_graph.html#abb8937d3bdb846254d3f63f0eb378dee", null ], - [ "ContainerWeightConstIt", "class_graph.html#a4088baba0398cdc0e6a4f4083c54f840", null ], - [ "ContainerWeightType", "class_graph.html#ab70bf7df2dc00ac790e2854f8a2eef6a", null ], - [ "Graph", "class_graph.html#aaed2c17ea94ec186aecac55ed1c3c591", null ], - [ "~Graph", "class_graph.html#a5596a1d6e1d107c5648c70903e8f6a76", null ], - [ "BFS", "class_graph.html#ae22f936394d29e34b877581e4014cc65", null ], - [ "check_connectivity", "class_graph.html#af05d0f47a18adcd45211fe6cf795e039", null ], - [ "compute_fc_compactness_inside_a_cc", "class_graph.html#a491a1c7a463f291568123421ba1e7ae9", null ], - [ "compute_min_fc_compactness_inside_a_cc", "class_graph.html#ac7db1170e6505b0ea16d40ce255f18bf", null ], - [ "DFS", "class_graph.html#afb191c20fe7d483a018b7a448aabc037", null ], - [ "get_nb_of_neighbours", "class_graph.html#af4d018aff36d0de453999de56b7a27c1", null ], - [ "get_neighbours", "class_graph.html#aeb473d9568add4ad25a3da43f1067f70", null ], - [ "get_weights", "class_graph.html#a7a915976e94c826f8d9305376b9c78d0", null ], - [ "neighbours_cbegin", "class_graph.html#ab898e7dc50ae162e9ae6663bd4e04cea", null ], - [ "neighbours_cend", "class_graph.html#a33bbbcc09e102d47cf0944989d043d77", null ], - [ "weights_cbegin", "class_graph.html#a902a970714be95d373a5b18de1cddaeb", null ], - [ "weights_cend", "class_graph.html#a12311cab4fac8b78b4e61df8c0337a98", null ], - [ "_m_CRS_Col_Ind", "class_graph.html#a37918efd419ec9a1e9f4f21fbf3472c2", null ], - [ "_m_CRS_Row_Ptr", "class_graph.html#aa1cafeb913e75f305f2ea42d1c08cdc3", null ], - [ "_m_CRS_Values", "class_graph.html#a6e8f302f604d04f448e633628de2c1ec", null ], - [ "_number_of_cells", "class_graph.html#a7e08c1758034942c58024c58690e8c30", null ], - [ "_visited", "class_graph.html#a0245c0b3d009235b3357b584cae21642", null ], - [ "_volumes", "class_graph.html#a43a49b14a5c4dbde4d6e2f7dd2779b15", null ] -]; \ No newline at end of file diff --git a/class_graph.png b/class_graph.png deleted file mode 100644 index 1c5d8ec..0000000 Binary files a/class_graph.png and /dev/null differ diff --git a/class_neighbourhood-members.html b/class_neighbourhood-members.html deleted file mode 100644 index 3d9cb1b..0000000 --- a/class_neighbourhood-members.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - -
_candidatesNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_s_fcNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_s_neighbours_of_seedNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_weightsNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
CandidatesContainerType typedefNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAPairFindFirstBasedType typedefNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAPairType typedefNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMASetOfPairType typedefNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
extract_and_update_candidates(const CoMMASetOfPairType &candidates_w_weights)Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlineprotected
get_candidates() constNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Neighbourhood(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Neighbourhood(const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=defaultNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
update(const CoMMAIndexType new_fc, const vector< CoMMAIndexType > &new_neighbours)=0Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
-
- - - - diff --git a/class_neighbourhood.html b/class_neighbourhood.html deleted file mode 100644 index c94286f..0000000 --- a/class_neighbourhood.html +++ /dev/null @@ -1,560 +0,0 @@ - - - - - - - -CoMMA: Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Referenceabstract
-
-
- -

Class representing the neighbourhood of a given cell in the graph. Mind that no information about the element being already agglomerated or not is known here. - More...

- -

#include <Neighbourhood.h>

-
-Inheritance diagram for Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - -

-Public Types

using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
using CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor< CoMMAPairType >
 Functor used if find-like function relying only on first element of the pair. More...
 
using CandidatesContainerType = deque< CoMMAIndexType >
 Type for container of candidates. More...
 
- - - - - - - - - - - - - -

-Public Member Functions

 Neighbourhood (const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)
 Constructor. More...
 
 Neighbourhood (const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
 Copy constructor. More...
 
virtual void update (const CoMMAIndexType new_fc, const vector< CoMMAIndexType > &new_neighbours)=0
 Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are added as candidates. More...
 
const CandidatesContainerTypeget_candidates () const
 Get candidates that should be consider in the next step of the agglomeration. More...
 
- - - - -

-Protected Member Functions

void extract_and_update_candidates (const CoMMASetOfPairType &candidates_w_weights)
 Extract the indices from a list of index-weight pairs and add them at the back of the candidates list. More...
 
- - - - - - - - - - - - - -

-Protected Attributes

const unordered_set< CoMMAIndexType > _s_neighbours_of_seed
 Set of the neighbours of seed given as an input in the constructor. Here, we can find all the neighbours of order up to a user-defined value of the initial seed. Hence, it holds the cells allowed to be agglomerated. More...
 
const vector< CoMMAWeightType > & _weights
 Priority weights. More...
 
unordered_set< CoMMAIndexType > _s_fc
 Set of the fine cells composing the coarse cell. More...
 
CandidatesContainerType _candidates
 Candidates that should be considered when choosing the next fine cell to add to the coarse one. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Class representing the neighbourhood of a given cell in the graph. Mind that no information about the element being already agglomerated or not is known here.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ CandidatesContainerType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CandidatesContainerType = deque<CoMMAIndexType>
-
- -

Type for container of candidates.

- -
-
- -

◆ CoMMAPairFindFirstBasedType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor<CoMMAPairType>
-
- -

Functor used if find-like function relying only on first element of the pair.

- -
-
- -

◆ CoMMAPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>
-
- -

Type of pair.

- -
-
- -

◆ CoMMASetOfPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
-
- -

Type of set of pairs.

- -
-
-

Constructor & Destructor Documentation

- -

◆ Neighbourhood() [1/2]

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Neighbourhood (const unordered_set< CoMMAIndexType > & s_neighbours_of_seed,
const vector< CoMMAWeightType > & weights 
)
-
-inline
-
- -

Constructor.

-
Parameters
- - - -
[in]s_neighbours_of_seedSet of the neighbours of the given cell chosen as seed
[in]weightsWeights used to set up the order of the neighbours to visit
-
-
- -
-
- -

◆ Neighbourhood() [2/2]

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Neighbourhood (const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > & other)
-
-default
-
- -

Copy constructor.

- -
-
-

Member Function Documentation

- -

◆ extract_and_update_candidates()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
void Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::extract_and_update_candidates (const CoMMASetOfPairTypecandidates_w_weights)
-
-inlineprotected
-
- -

Extract the indices from a list of index-weight pairs and add them at the back of the candidates list.

- -
-
- -

◆ get_candidates()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - -
const CandidatesContainerType & Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_candidates () const
-
-inline
-
- -

Get candidates that should be consider in the next step of the agglomeration.

-
Returns
The candidates
- -
-
- -

◆ update()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
virtual void Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update (const CoMMAIndexType new_fc,
const vector< CoMMAIndexType > & new_neighbours 
)
-
-pure virtual
-
- -

Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are added as candidates.

-
Parameters
- - - -
[in]new_fcIndex of the new fine cell to be added to the set of fine cells
[in]new_neighboursVector of the new neighbours to be analysed
-
-
- -

Implemented in Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
-

Member Data Documentation

- -

◆ _candidates

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - -
CandidatesContainerType Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_candidates
-
-protected
-
- -

Candidates that should be considered when choosing the next fine cell to add to the coarse one.

- -
-
- -

◆ _s_fc

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - -
unordered_set<CoMMAIndexType> Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_s_fc
-
-protected
-
- -

Set of the fine cells composing the coarse cell.

- -
-
- -

◆ _s_neighbours_of_seed

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - -
const unordered_set<CoMMAIndexType> Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_s_neighbours_of_seed
-
-protected
-
- -

Set of the neighbours of seed given as an input in the constructor. Here, we can find all the neighbours of order up to a user-defined value of the initial seed. Hence, it holds the cells allowed to be agglomerated.

- -
-
- -

◆ _weights

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - -
const vector<CoMMAWeightType>& Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_weights
-
-protected
-
- -

Priority weights.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_neighbourhood.js b/class_neighbourhood.js deleted file mode 100644 index 536b822..0000000 --- a/class_neighbourhood.js +++ /dev/null @@ -1,16 +0,0 @@ -var class_neighbourhood = -[ - [ "CandidatesContainerType", "class_neighbourhood.html#ab702a531ecdd5f909011e98db309eae9", null ], - [ "CoMMAPairFindFirstBasedType", "class_neighbourhood.html#ae06ab9e75b3e20ee885c4ccb59d4c01e", null ], - [ "CoMMAPairType", "class_neighbourhood.html#a788b1672a154ea6e9d91d512ce4d4b70", null ], - [ "CoMMASetOfPairType", "class_neighbourhood.html#a2732482bc200b9b8eceb1886ef51747d", null ], - [ "Neighbourhood", "class_neighbourhood.html#a7add6b8c246cec11cd1f2aa8867937e1", null ], - [ "Neighbourhood", "class_neighbourhood.html#a9e8f7bb0a8be9fdd20c3d0756caa805d", null ], - [ "extract_and_update_candidates", "class_neighbourhood.html#ae3588ec9956d43fa93f8ece1f09bd6c7", null ], - [ "get_candidates", "class_neighbourhood.html#ac9d1f9097ecfb39b5c1cea0333e7c9dc", null ], - [ "update", "class_neighbourhood.html#a977a87103b31f7709bd762499c0e4fa0", null ], - [ "_candidates", "class_neighbourhood.html#ae40fea4817fd6c5603eb7b9bd6740b68", null ], - [ "_s_fc", "class_neighbourhood.html#a2f86c452a0c4f7642388e37a6a213e77", null ], - [ "_s_neighbours_of_seed", "class_neighbourhood.html#a3ddbac48fd3e9644422f8268fe96f0bd", null ], - [ "_weights", "class_neighbourhood.html#a7f6e92db94e65505a45de7d8a7a6947c", null ] -]; \ No newline at end of file diff --git a/class_neighbourhood.png b/class_neighbourhood.png deleted file mode 100644 index 62ad0bc..0000000 Binary files a/class_neighbourhood.png and /dev/null differ diff --git a/class_neighbourhood___extended-members.html b/class_neighbourhood___extended-members.html deleted file mode 100644 index e380940..0000000 --- a/class_neighbourhood___extended-members.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - -
_candidatesNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_s_fcNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_s_neighbours_of_seedNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_weightsNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
CandidatesContainerType typedefNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAPairFindFirstBasedType typedefNeighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAPairType typedefNeighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMASetOfPairType typedefNeighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
extract_and_update_candidates(const CoMMASetOfPairType &candidates_w_weights)Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlineprotected
get_candidates() constNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Neighbourhood(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Neighbourhood(const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=defaultNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
Neighbourhood_Extended(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Neighbourhood_Extended(const Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=defaultNeighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodBaseType typedefNeighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
update(const CoMMAIndexType new_fc, const vector< CoMMAIndexType > &new_neighbours) overrideNeighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
-
- - - - diff --git a/class_neighbourhood___extended.html b/class_neighbourhood___extended.html deleted file mode 100644 index 19cd692..0000000 --- a/class_neighbourhood___extended.html +++ /dev/null @@ -1,414 +0,0 @@ - - - - - - - -CoMMA: Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
-
-
- -

Class representing the neighbourhood of a given cell in the graph. In this derived class the neighbourhood is extended, meaning that all the neighbours seen so far are candidates. - More...

- -

#include <Neighbourhood.h>

-
-Inheritance diagram for Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Base class. More...
 
using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
using CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor< CoMMAPairType >
 Functor used if find-like function relying only on first element of the pair. More...
 
- Public Types inherited from Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
using CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor< CoMMAPairType >
 Functor used if find-like function relying only on first element of the pair. More...
 
using CandidatesContainerType = deque< CoMMAIndexType >
 Type for container of candidates. More...
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Neighbourhood_Extended (const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)
 Constructor. More...
 
 Neighbourhood_Extended (const Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
 Copy constructor. More...
 
void update (const CoMMAIndexType new_fc, const vector< CoMMAIndexType > &new_neighbours) override
 Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are added as candidates. More...
 
- Public Member Functions inherited from Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Neighbourhood (const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)
 Constructor. More...
 
 Neighbourhood (const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
 Copy constructor. More...
 
virtual void update (const CoMMAIndexType new_fc, const vector< CoMMAIndexType > &new_neighbours)=0
 Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are added as candidates. More...
 
const CandidatesContainerTypeget_candidates () const
 Get candidates that should be consider in the next step of the agglomeration. More...
 
- - - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
void extract_and_update_candidates (const CoMMASetOfPairType &candidates_w_weights)
 Extract the indices from a list of index-weight pairs and add them at the back of the candidates list. More...
 
- Protected Attributes inherited from Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
const unordered_set< CoMMAIndexType > _s_neighbours_of_seed
 Set of the neighbours of seed given as an input in the constructor. Here, we can find all the neighbours of order up to a user-defined value of the initial seed. Hence, it holds the cells allowed to be agglomerated. More...
 
const vector< CoMMAWeightType > & _weights
 Priority weights. More...
 
unordered_set< CoMMAIndexType > _s_fc
 Set of the fine cells composing the coarse cell. More...
 
CandidatesContainerType _candidates
 Candidates that should be considered when choosing the next fine cell to add to the coarse one. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Class representing the neighbourhood of a given cell in the graph. In this derived class the neighbourhood is extended, meaning that all the neighbours seen so far are candidates.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ CoMMAPairFindFirstBasedType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor<CoMMAPairType>
-
- -

Functor used if find-like function relying only on first element of the pair.

- -
-
- -

◆ CoMMAPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>
-
- -

Type of pair.

- -
-
- -

◆ CoMMASetOfPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
-
- -

Type of set of pairs.

- -
-
- -

◆ NeighbourhoodBaseType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodBaseType = Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Base class.

- -
-
-

Constructor & Destructor Documentation

- -

◆ Neighbourhood_Extended() [1/2]

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Neighbourhood_Extended (const unordered_set< CoMMAIndexType > & s_neighbours_of_seed,
const vector< CoMMAWeightType > & weights 
)
-
-inline
-
- -

Constructor.

-
Parameters
- - - -
[in]s_neighbours_of_seedSet of the neighbours of the given cell chosen as seed
[in]weightsWeights used to set up the order of the neighbours to visit
-
-
- -
-
- -

◆ Neighbourhood_Extended() [2/2]

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Neighbourhood_Extended (const Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > & other)
-
-default
-
- -

Copy constructor.

- -
-
-

Member Function Documentation

- -

◆ update()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update (const CoMMAIndexType new_fc,
const vector< CoMMAIndexType > & new_neighbours 
)
-
-inlineoverridevirtual
-
- -

Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are added as candidates.

-
Parameters
- - - -
[in]new_fcIndex of the new fine cell to be added to the set of fine cells
[in]new_neighboursVector of the new neighbours to be analysed
-
-
- -

Implements Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_neighbourhood___extended.js b/class_neighbourhood___extended.js deleted file mode 100644 index 07dba3e..0000000 --- a/class_neighbourhood___extended.js +++ /dev/null @@ -1,10 +0,0 @@ -var class_neighbourhood___extended = -[ - [ "CoMMAPairFindFirstBasedType", "class_neighbourhood___extended.html#ae06ab9e75b3e20ee885c4ccb59d4c01e", null ], - [ "CoMMAPairType", "class_neighbourhood___extended.html#a788b1672a154ea6e9d91d512ce4d4b70", null ], - [ "CoMMASetOfPairType", "class_neighbourhood___extended.html#a2732482bc200b9b8eceb1886ef51747d", null ], - [ "NeighbourhoodBaseType", "class_neighbourhood___extended.html#a5f895ae7b37a44a28e7c4b1d92492946", null ], - [ "Neighbourhood_Extended", "class_neighbourhood___extended.html#a9d83345feb7a960eb430040f2e0dcfc6", null ], - [ "Neighbourhood_Extended", "class_neighbourhood___extended.html#a598c0e2de4bdbe38780e5976c4782ecd", null ], - [ "update", "class_neighbourhood___extended.html#a3ae4f2f2052bc05e6f431a35ef06bcbb", null ] -]; \ No newline at end of file diff --git a/class_neighbourhood___extended.png b/class_neighbourhood___extended.png deleted file mode 100644 index c60a88a..0000000 Binary files a/class_neighbourhood___extended.png and /dev/null differ diff --git a/class_neighbourhood___pure___front-members.html b/class_neighbourhood___pure___front-members.html deleted file mode 100644 index 147d94d..0000000 --- a/class_neighbourhood___pure___front-members.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - -
_candidatesNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_dimensionNeighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_q_neighs_w_weightsNeighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_s_fcNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_s_neighbours_of_seedNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_weightsNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
CandidatesContainerType typedefNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAPairFindFirstBasedType typedefNeighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAPairType typedefNeighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMASetOfPairType typedefNeighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
extract_and_update_candidates(const CoMMASetOfPairType &candidates_w_weights)Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlineprotected
get_candidates() constNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_neighbours_by_level(const CoMMAIntType lvl) constNeighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Neighbourhood(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Neighbourhood(const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=defaultNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
Neighbourhood_Pure_Front(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights, CoMMAIntType dimension)Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Neighbourhood_Pure_Front(const Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=defaultNeighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodBaseType typedefNeighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
update(const CoMMAIndexType new_fc, const vector< CoMMAIndexType > &new_neighbours) overrideNeighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
-
- - - - diff --git a/class_neighbourhood___pure___front.html b/class_neighbourhood___pure___front.html deleted file mode 100644 index ba05754..0000000 --- a/class_neighbourhood___pure___front.html +++ /dev/null @@ -1,524 +0,0 @@ - - - - - - - -CoMMA: Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
-
-
- -

Class representing the neighbourhood of a given cell in the graph. In this derived class, the neighbourhood is 'pure front-advancing', meaning that the next candidates are only the direct neighbours of the last added cell. - More...

- -

#include <Neighbourhood.h>

-
-Inheritance diagram for Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Base class. More...
 
using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
using CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor< CoMMAPairType >
 Functor used if find-like function relying only on first element of the pair. More...
 
- Public Types inherited from Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
using CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor< CoMMAPairType >
 Functor used if find-like function relying only on first element of the pair. More...
 
using CandidatesContainerType = deque< CoMMAIndexType >
 Type for container of candidates. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Neighbourhood_Pure_Front (const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights, CoMMAIntType dimension)
 Constructor. More...
 
 Neighbourhood_Pure_Front (const Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
 Copy constructor. More...
 
void update (const CoMMAIndexType new_fc, const vector< CoMMAIndexType > &new_neighbours) override
 Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are considered as candidates. More...
 
const CoMMASetOfPairTypeget_neighbours_by_level (const CoMMAIntType lvl) const
 Get the neighbours from a previous stage. More...
 
- Public Member Functions inherited from Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Neighbourhood (const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)
 Constructor. More...
 
 Neighbourhood (const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
 Copy constructor. More...
 
virtual void update (const CoMMAIndexType new_fc, const vector< CoMMAIndexType > &new_neighbours)=0
 Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are added as candidates. More...
 
const CandidatesContainerTypeget_candidates () const
 Get candidates that should be consider in the next step of the agglomeration. More...
 
- - - - - - - - - - - - - - - - - - - - -

-Protected Attributes

deque< CoMMASetOfPairType_q_neighs_w_weights
 History of the first-order-neighbourhoods of the fine cells recently agglomerated. More...
 
CoMMAIntType _dimension
 Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D) More...
 
- Protected Attributes inherited from Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
const unordered_set< CoMMAIndexType > _s_neighbours_of_seed
 Set of the neighbours of seed given as an input in the constructor. Here, we can find all the neighbours of order up to a user-defined value of the initial seed. Hence, it holds the cells allowed to be agglomerated. More...
 
const vector< CoMMAWeightType > & _weights
 Priority weights. More...
 
unordered_set< CoMMAIndexType > _s_fc
 Set of the fine cells composing the coarse cell. More...
 
CandidatesContainerType _candidates
 Candidates that should be considered when choosing the next fine cell to add to the coarse one. More...
 
- - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
void extract_and_update_candidates (const CoMMASetOfPairType &candidates_w_weights)
 Extract the indices from a list of index-weight pairs and add them at the back of the candidates list. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Class representing the neighbourhood of a given cell in the graph. In this derived class, the neighbourhood is 'pure front-advancing', meaning that the next candidates are only the direct neighbours of the last added cell.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ CoMMAPairFindFirstBasedType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor<CoMMAPairType>
-
- -

Functor used if find-like function relying only on first element of the pair.

- -
-
- -

◆ CoMMAPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>
-
- -

Type of pair.

- -
-
- -

◆ CoMMASetOfPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
-
- -

Type of set of pairs.

- -
-
- -

◆ NeighbourhoodBaseType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodBaseType = Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Base class.

- -
-
-

Constructor & Destructor Documentation

- -

◆ Neighbourhood_Pure_Front() [1/2]

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Neighbourhood_Pure_Front (const unordered_set< CoMMAIndexType > & s_neighbours_of_seed,
const vector< CoMMAWeightType > & weights,
CoMMAIntType dimension 
)
-
-inline
-
- -

Constructor.

-
Parameters
- - - - -
[in]s_neighbours_of_seedSet of the neighbours of the given cell chosen as seed
[in]weightsWeights used to set up the order of the neighbours to visit
[in]dimensionDimension of the problem
-
-
- -
-
- -

◆ Neighbourhood_Pure_Front() [2/2]

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Neighbourhood_Pure_Front (const Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > & other)
-
-default
-
- -

Copy constructor.

- -
-
-

Member Function Documentation

- -

◆ get_neighbours_by_level()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
const CoMMASetOfPairType & Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_neighbours_by_level (const CoMMAIntType lvl) const
-
-inline
-
- -

Get the neighbours from a previous stage.

-
Parameters
- - -
[in]lvlStage identifier. 0 = current neighbours, 1 = previous neighbours, 2 = second-to-last neighbours, etc...
-
-
-
Returns
A constant reference to a set of pairs of neighbours and weights
- -
-
- -

◆ update()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update (const CoMMAIndexType new_fc,
const vector< CoMMAIndexType > & new_neighbours 
)
-
-inlineoverridevirtual
-
- -

Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are considered as candidates.

-
Parameters
- - - -
[in]new_fcIndex of the new fine cell to be added to the set of fine cells
[in]new_neighboursVector of the new neighbours to be analysed
-
-
- -

Implements Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
-

Member Data Documentation

- -

◆ _dimension

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - -
CoMMAIntType Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_dimension
-
-protected
-
- -

Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D)

- -
-
- -

◆ _q_neighs_w_weights

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - -
deque<CoMMASetOfPairType> Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_q_neighs_w_weights
-
-protected
-
- -

History of the first-order-neighbourhoods of the fine cells recently agglomerated.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_neighbourhood___pure___front.js b/class_neighbourhood___pure___front.js deleted file mode 100644 index f87f419..0000000 --- a/class_neighbourhood___pure___front.js +++ /dev/null @@ -1,13 +0,0 @@ -var class_neighbourhood___pure___front = -[ - [ "CoMMAPairFindFirstBasedType", "class_neighbourhood___pure___front.html#ae06ab9e75b3e20ee885c4ccb59d4c01e", null ], - [ "CoMMAPairType", "class_neighbourhood___pure___front.html#a788b1672a154ea6e9d91d512ce4d4b70", null ], - [ "CoMMASetOfPairType", "class_neighbourhood___pure___front.html#a2732482bc200b9b8eceb1886ef51747d", null ], - [ "NeighbourhoodBaseType", "class_neighbourhood___pure___front.html#a99d20edd1d58840dce2ea95153d8f346", null ], - [ "Neighbourhood_Pure_Front", "class_neighbourhood___pure___front.html#ab1fe82f0f4c5ddc07946b0c0fcdc2f65", null ], - [ "Neighbourhood_Pure_Front", "class_neighbourhood___pure___front.html#adbe2555ab33ea43e96f1db86ef9ebc5a", null ], - [ "get_neighbours_by_level", "class_neighbourhood___pure___front.html#a2e706d0e5f7573df0b7744f4ad318f3f", null ], - [ "update", "class_neighbourhood___pure___front.html#a487983e2d219c5527a9151056d61b7ed", null ], - [ "_dimension", "class_neighbourhood___pure___front.html#a476e4cd4e4dec20336072c55504a1ed5", null ], - [ "_q_neighs_w_weights", "class_neighbourhood___pure___front.html#a378d383cd5c63f3a5a3f2a739ec52e40", null ] -]; \ No newline at end of file diff --git a/class_neighbourhood___pure___front.png b/class_neighbourhood___pure___front.png deleted file mode 100644 index 539dc83..0000000 Binary files a/class_neighbourhood___pure___front.png and /dev/null differ diff --git a/class_neighbourhood_creator-members.html b/class_neighbourhood_creator-members.html deleted file mode 100644 index c62113f..0000000 --- a/class_neighbourhood_creator-members.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - -
clone(shared_ptr< NeighbourhoodBaseType > other) const =0NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
create(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const =0NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
NeighbourhoodBaseType typedefNeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
-
- - - - diff --git a/class_neighbourhood_creator.html b/class_neighbourhood_creator.html deleted file mode 100644 index 0d127ae..0000000 --- a/class_neighbourhood_creator.html +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - -CoMMA: NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Referenceabstract
-
-
- -

Pure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy. - More...

- -

#include <Neighbourhood.h>

-
-Inheritance diagram for NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - -

-Public Types

using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Shortcut for the Neighborhood object type. More...
 
- - - - - - - -

-Public Member Functions

virtual shared_ptr< NeighbourhoodBaseTypecreate (const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const =0
 Create a new Neighbourhood object from scratch using the given arguments. More...
 
virtual shared_ptr< NeighbourhoodBaseTypeclone (shared_ptr< NeighbourhoodBaseType > other) const =0
 Create a new Neighbourhood object by copy. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Pure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ NeighbourhoodBaseType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodBaseType = Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Shortcut for the Neighborhood object type.

- -
-
-

Member Function Documentation

- -

◆ clone()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
virtual shared_ptr< NeighbourhoodBaseType > NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::clone (shared_ptr< NeighbourhoodBaseTypeother) const
-
-pure virtual
-
- -

Create a new Neighbourhood object by copy.

-
Parameters
- - -
[in]otherShared pointer to an existing Neighbourhood object
-
-
-
Returns
a shared pointer to a new Neighborhood object
- -

Implemented in NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ create()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual shared_ptr< NeighbourhoodBaseType > NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::create (const unordered_set< CoMMAIndexType > & s_neighbours_of_seed,
const vector< CoMMAWeightType > & priority_weights,
const CoMMAIntType dimension 
) const
-
-pure virtual
-
- -

Create a new Neighbourhood object from scratch using the given arguments.

-
Parameters
- - - - -
[in]s_neighbours_of_seedSet of the neighbours of the given cell chosen as seed
[in]priority_weightsWeights used to set up the order of the neighbours to visit
[in]dimensionDimension of the problem
-
-
-
Returns
a shared pointer to a new Neighborhood object
- -

Implemented in NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_neighbourhood_creator.js b/class_neighbourhood_creator.js deleted file mode 100644 index eaecbbd..0000000 --- a/class_neighbourhood_creator.js +++ /dev/null @@ -1,6 +0,0 @@ -var class_neighbourhood_creator = -[ - [ "NeighbourhoodBaseType", "class_neighbourhood_creator.html#a694bd4a43d05d3f7d98b374f7217eaf2", null ], - [ "clone", "class_neighbourhood_creator.html#ac97c8d2b2d33bb0ac38264fd12da5bcf", null ], - [ "create", "class_neighbourhood_creator.html#adb2b715bfe127683cacee497f3622e58", null ] -]; \ No newline at end of file diff --git a/class_neighbourhood_creator.png b/class_neighbourhood_creator.png deleted file mode 100644 index 2010b35..0000000 Binary files a/class_neighbourhood_creator.png and /dev/null differ diff --git a/class_neighbourhood_extended_creator.html b/class_neighbourhood_extended_creator.html deleted file mode 100644 index 6e1e921..0000000 --- a/class_neighbourhood_extended_creator.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - - -CoMMA: NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
-
-
- -

Creator of Neighbourhood_Extended objects. It can create from scratch or by copy. - More...

- -

#include <Neighbourhood.h>

-
-Inheritance diagram for NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - - -

-Public Types

using CreatorBaseType = NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Base class. More...
 
using NeighbourhoodDerivedType = Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Shortcut for the Neighborhood object derived type (Extended, in this case) More...
 
using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Shortcut for the Neighborhood object type. More...
 
- Public Types inherited from NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Shortcut for the Neighborhood object type. More...
 
- - - - - - - - - - - - - -

-Public Member Functions

shared_ptr< NeighbourhoodBaseTypecreate (const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const override
 Create a new Neighbourhood object from scratch using the given arguments. More...
 
shared_ptr< NeighbourhoodBaseTypeclone (shared_ptr< NeighbourhoodBaseType > other) const override
 Create a new Neighbourhood object by copy. More...
 
virtual shared_ptr< NeighbourhoodBaseTypecreate (const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const =0
 Create a new Neighbourhood object from scratch using the given arguments. More...
 
virtual shared_ptr< NeighbourhoodBaseTypeclone (shared_ptr< NeighbourhoodBaseType > other) const =0
 Create a new Neighbourhood object by copy. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Creator of Neighbourhood_Extended objects. It can create from scratch or by copy.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ CreatorBaseType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CreatorBaseType = NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Base class.

- -
-
- -

◆ NeighbourhoodBaseType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodBaseType = Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Shortcut for the Neighborhood object type.

- -
-
- -

◆ NeighbourhoodDerivedType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodDerivedType = Neighbourhood_Extended<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Shortcut for the Neighborhood object derived type (Extended, in this case)

- -
-
-

Member Function Documentation

- -

◆ clone()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
shared_ptr< NeighbourhoodBaseType > NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::clone (shared_ptr< NeighbourhoodBaseTypeother) const
-
-inlineoverridevirtual
-
- -

Create a new Neighbourhood object by copy.

-
Parameters
- - -
[in]otherShared pointer to an existing Neighbourhood object
-
-
-
Returns
a shared pointer (base type) to a new Neighborhood (derived type) object
- -

Implements NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ create()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
shared_ptr< NeighbourhoodBaseType > NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::create (const unordered_set< CoMMAIndexType > & s_neighbours_of_seed,
const vector< CoMMAWeightType > & priority_weights,
const CoMMAIntType dimension 
) const
-
-inlineoverridevirtual
-
- -

Create a new Neighbourhood object from scratch using the given arguments.

-
Parameters
- - - - -
[in]s_neighbours_of_seedSet of the neighbours of the given cell chosen as seed
[in]priority_weightsWeights used to set up the order of the neighbours to visit
[in]dimensionDimension of the problem
-
-
-
Returns
a shared pointer (base type) to a new Neighborhood (derived type) object
- -

Implements NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_neighbourhood_extended_creator.js b/class_neighbourhood_extended_creator.js deleted file mode 100644 index 32b6ffd..0000000 --- a/class_neighbourhood_extended_creator.js +++ /dev/null @@ -1,8 +0,0 @@ -var class_neighbourhood_extended_creator = -[ - [ "CreatorBaseType", "class_neighbourhood_extended_creator.html#a5d3b220e990ffb8f12d5937915b8b530", null ], - [ "NeighbourhoodBaseType", "class_neighbourhood_extended_creator.html#a694bd4a43d05d3f7d98b374f7217eaf2", null ], - [ "NeighbourhoodDerivedType", "class_neighbourhood_extended_creator.html#ae35290e079c36b28efff609a94476922", null ], - [ "clone", "class_neighbourhood_extended_creator.html#ac05c6d6367be13473953a9382567b1ad", null ], - [ "create", "class_neighbourhood_extended_creator.html#a95aaccfb071d8af38792bc7d3a714bb5", null ] -]; \ No newline at end of file diff --git a/class_neighbourhood_extended_creator.png b/class_neighbourhood_extended_creator.png deleted file mode 100644 index 37fabb9..0000000 Binary files a/class_neighbourhood_extended_creator.png and /dev/null differ diff --git a/class_neighbourhood_pure_front_creator.html b/class_neighbourhood_pure_front_creator.html deleted file mode 100644 index 07711ad..0000000 --- a/class_neighbourhood_pure_front_creator.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - - -CoMMA: NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
-
-
- -

Creator of Neighbourhood_Extended objects. It can create from scratch or by copy. - More...

- -

#include <Neighbourhood.h>

-
-Inheritance diagram for NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - - -

-Public Types

using CreatorBaseType = NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Base class. More...
 
using NeighbourhoodDerivedType = Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Shortcut for the Neighborhood object derived type (Pure_Front, in this case) More...
 
using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Shortcut for the Neighborhood object type. More...
 
- Public Types inherited from NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Shortcut for the Neighborhood object type. More...
 
- - - - - - - - - - - - - -

-Public Member Functions

shared_ptr< NeighbourhoodBaseTypecreate (const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const override
 Create a new Neighbourhood object from scratch using the given arguments. More...
 
shared_ptr< NeighbourhoodBaseTypeclone (shared_ptr< NeighbourhoodBaseType > other) const override
 Create a new Neighbourhood object by copy. More...
 
virtual shared_ptr< NeighbourhoodBaseTypecreate (const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const =0
 Create a new Neighbourhood object from scratch using the given arguments. More...
 
virtual shared_ptr< NeighbourhoodBaseTypeclone (shared_ptr< NeighbourhoodBaseType > other) const =0
 Create a new Neighbourhood object by copy. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Creator of Neighbourhood_Extended objects. It can create from scratch or by copy.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ CreatorBaseType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CreatorBaseType = NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Base class.

- -
-
- -

◆ NeighbourhoodBaseType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodBaseType = Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Shortcut for the Neighborhood object type.

- -
-
- -

◆ NeighbourhoodDerivedType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodDerivedType = Neighbourhood_Pure_Front<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Shortcut for the Neighborhood object derived type (Pure_Front, in this case)

- -
-
-

Member Function Documentation

- -

◆ clone()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
shared_ptr< NeighbourhoodBaseType > NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::clone (shared_ptr< NeighbourhoodBaseTypeother) const
-
-inlineoverridevirtual
-
- -

Create a new Neighbourhood object by copy.

-
Parameters
- - -
[in]otherShared pointer to an existing Neighbourhood object
-
-
-
Returns
a shared pointer (base type) to a new Neighborhood (derived type) object
- -

Implements NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ create()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
shared_ptr< NeighbourhoodBaseType > NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::create (const unordered_set< CoMMAIndexType > & s_neighbours_of_seed,
const vector< CoMMAWeightType > & priority_weights,
const CoMMAIntType dimension 
) const
-
-inlineoverridevirtual
-
- -

Create a new Neighbourhood object from scratch using the given arguments.

-
Parameters
- - - - -
[in]s_neighbours_of_seedSet of the neighbours of the given cell chosen as seed
[in]priority_weightsWeights used to set up the order of the neighbours to visit
[in]dimensionDimension of the problem
-
-
-
Returns
a shared pointer (base type) to a new Neighborhood (derived type) object
- -

Implements NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_neighbourhood_pure_front_creator.js b/class_neighbourhood_pure_front_creator.js deleted file mode 100644 index be50546..0000000 --- a/class_neighbourhood_pure_front_creator.js +++ /dev/null @@ -1,8 +0,0 @@ -var class_neighbourhood_pure_front_creator = -[ - [ "CreatorBaseType", "class_neighbourhood_pure_front_creator.html#ae382bc506c3b92487f915312b5843c26", null ], - [ "NeighbourhoodBaseType", "class_neighbourhood_pure_front_creator.html#a694bd4a43d05d3f7d98b374f7217eaf2", null ], - [ "NeighbourhoodDerivedType", "class_neighbourhood_pure_front_creator.html#a52f10c48b22181c5d1f2784b958b705c", null ], - [ "clone", "class_neighbourhood_pure_front_creator.html#a61e707ffe7a0727ed7468777dc9b9d94", null ], - [ "create", "class_neighbourhood_pure_front_creator.html#a8fcdc6ff2ed08f0806a1bd021728d6f1", null ] -]; \ No newline at end of file diff --git a/class_neighbourhood_pure_front_creator.png b/class_neighbourhood_pure_front_creator.png deleted file mode 100644 index e0090bd..0000000 Binary files a/class_neighbourhood_pure_front_creator.png and /dev/null differ diff --git a/class_node.js b/class_node.js deleted file mode 100644 index a6547ee..0000000 --- a/class_node.js +++ /dev/null @@ -1,11 +0,0 @@ -var class_node = -[ - [ "Node", "class_node.html#afeedc506abd5ba81abf6485aad28bf5d", null ], - [ "_father", "class_node.html#ab606cdd496b5cead1175beccdd6bf9e2", null ], - [ "_index", "class_node.html#a55da666a9ff1b5a264f6ed64b505ff5c", null ], - [ "_left_idx", "class_node.html#acb9869a5c79ec10452851f23a95b1f1e", null ], - [ "_left_son_idx", "class_node.html#a27d40cf9fb43d5b7ef5e0cac50b7b9ed", null ], - [ "_right_idx", "class_node.html#ab90e84725773f5a76757d45ac14df54d", null ], - [ "_sonc", "class_node.html#a42dfa5fd9feef4fa4633b75d4b056f7e", null ], - [ "_volume", "class_node.html#acecc90c44683ccf6f4fc02d285e6221e", null ] -]; \ No newline at end of file diff --git a/class_pair_find_first_based_functor-members.html b/class_pair_find_first_based_functor-members.html deleted file mode 100644 index 2f838fa..0000000 --- a/class_pair_find_first_based_functor-members.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
PairFindFirstBasedFunctor< PairT > Member List
-
-
- -

This is the complete list of members for PairFindFirstBasedFunctor< PairT >, including all inherited members.

- - - - - -
operator()(const PairT &p) constPairFindFirstBasedFunctor< PairT >inline
PairFindFirstBasedFunctor()PairFindFirstBasedFunctor< PairT >inline
PairFindFirstBasedFunctor(const typename PairT::first_type &target)PairFindFirstBasedFunctor< PairT >inline
~PairFindFirstBasedFunctor()PairFindFirstBasedFunctor< PairT >inline
-
- - - - diff --git a/class_pair_find_first_based_functor.js b/class_pair_find_first_based_functor.js deleted file mode 100644 index 30b6ae5..0000000 --- a/class_pair_find_first_based_functor.js +++ /dev/null @@ -1,7 +0,0 @@ -var class_pair_find_first_based_functor = -[ - [ "PairFindFirstBasedFunctor", "class_pair_find_first_based_functor.html#a968048ebd83977dd8ea344e35fe105e7", null ], - [ "PairFindFirstBasedFunctor", "class_pair_find_first_based_functor.html#a0d1ac677374943a662cbc3a592473465", null ], - [ "~PairFindFirstBasedFunctor", "class_pair_find_first_based_functor.html#af0a85839b1ca6439a4594fdfbbf14550", null ], - [ "operator()", "class_pair_find_first_based_functor.html#a8cae901fdfde46d800070162ff963367", null ] -]; \ No newline at end of file diff --git a/class_priority___pair-members.html b/class_priority___pair-members.html deleted file mode 100644 index 5a1d078..0000000 --- a/class_priority___pair-members.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Priority_Pair< A, B > Member List
-
-
- -

This is the complete list of members for Priority_Pair< A, B >, including all inherited members.

- - - - - - - - -
first() constPriority_Pair< A, B >inline
operator<Priority_Pair< A, B >friend
operator==Priority_Pair< A, B >friend
Priority_Pair()Priority_Pair< A, B >inline
Priority_Pair(const A &a, const B &b)Priority_Pair< A, B >inline
second() constPriority_Pair< A, B >inline
~Priority_Pair()Priority_Pair< A, B >inline
-
- - - - diff --git a/class_priority___pair.js b/class_priority___pair.js deleted file mode 100644 index a7ce637..0000000 --- a/class_priority___pair.js +++ /dev/null @@ -1,10 +0,0 @@ -var class_priority___pair = -[ - [ "Priority_Pair", "class_priority___pair.html#a65316a8c3d03d0413d3398b7b3ed453f", null ], - [ "Priority_Pair", "class_priority___pair.html#ab21a9232231493249cf97b1f24998f68", null ], - [ "~Priority_Pair", "class_priority___pair.html#ac642de9d7479a589b93ac5cc5751634a", null ], - [ "first", "class_priority___pair.html#a5d49cb729ca12b11ed1f465dfe700cf5", null ], - [ "second", "class_priority___pair.html#a3667ccbd1eaedd085805055e4d818c00", null ], - [ "operator<", "class_priority___pair.html#a6445c73468c4c111a2c73330395ae9c3", null ], - [ "operator==", "class_priority___pair.html#a310cd15c31749fbad8133e67993f0481", null ] -]; \ No newline at end of file diff --git a/class_queue.js b/class_queue.js deleted file mode 100644 index 11a2011..0000000 --- a/class_queue.js +++ /dev/null @@ -1,9 +0,0 @@ -var class_queue = -[ - [ "Queue", "class_queue.html#af73bb29c868f7b37f369c668f114bd9f", null ], - [ "~Queue", "class_queue.html#aa7eef1b427e24555780505de20e9acbc", null ], - [ "empty", "class_queue.html#a84af2287bc5dad708508b588dc73457d", null ], - [ "pop", "class_queue.html#abeee018138cbb5226e5352a5788e23bd", null ], - [ "push", "class_queue.html#a8e75adf40c581bcf8804a70ae0be18a3", null ], - [ "top", "class_queue.html#ac6f60c0282f64f3197d309e4f414da6f", null ] -]; \ No newline at end of file diff --git a/class_seeds___pool-members.html b/class_seeds___pool-members.html deleted file mode 100644 index c439bee..0000000 --- a/class_seeds___pool-members.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - -
_cur_top_queueSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_initializatorSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_of_seedsSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_n_bnd_facesSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_priority_weightsSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
build_queue(const vector< bool > &is_fc_agglomerated, const CoMMAIntType target)Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
choose_new_seed(const vector< bool > &is_agglomerated)=0Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
CoMMAPairType typedefSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAQueueType typedefSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMASetOfPairType typedefSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
get_highest_n_bnd_yet_to_agglomerate(const vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) constSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
initialize()Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
is_empty(CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) constSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
need_initialization(const vector< bool > &is_agglomerated)=0Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
order_new_seeds_and_update(const unordered_set< CoMMAIndexType > &new_seeds)=0Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
Seeds_Pool(const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
set_top_queue(const CoMMAIntType q_lvl)Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
spoil_queue(const vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
update(const deque< CoMMAIndexType > &new_seeds)=0Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
~Seeds_Pool()=defaultSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
-
- - - - diff --git a/class_seeds___pool.html b/class_seeds___pool.html deleted file mode 100644 index a27d92b..0000000 --- a/class_seeds___pool.html +++ /dev/null @@ -1,877 +0,0 @@ - - - - - - - -CoMMA: Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Referenceabstract
-
-
- -

Class representing the pool of all the seeds for creating a coarse cell. - More...

- -

#include <Seeds_Pool.h>

-
-Inheritance diagram for Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - -

-Public Types

using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMAQueueType = deque< CoMMAIndexType >
 Type of queue which holds seeds. More...
 
using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Seeds_Pool (const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
 Constructor. More...
 
virtual ~Seeds_Pool ()=default
 Destructor. More...
 
optional< CoMMAIndexType > spoil_queue (const vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)
 Spoil a queue looking for an not-yet-agglomerated seed. More...
 
virtual optional< CoMMAIndexType > choose_new_seed (const vector< bool > &is_agglomerated)=0
 Choose a new seed in the pool. More...
 
virtual void update (const deque< CoMMAIndexType > &new_seeds)=0
 Add the provided seeds to a seeds pool queue according to the number of boundary faces. More...
 
virtual void order_new_seeds_and_update (const unordered_set< CoMMAIndexType > &new_seeds)=0
 Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue. More...
 
void build_queue (const vector< bool > &is_fc_agglomerated, const CoMMAIntType target)
 Build the weight-ordered queue of seed for a given target level. A set of (index, weight) pair with special comparator is used to enforced order, then the indices are extracted. More...
 
optional< CoMMAIntType > get_highest_n_bnd_yet_to_agglomerate (const vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) const
 Compute the highest number of boundary faces of cells which are not agglomerated yet. More...
 
bool is_empty (CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) const
 Given the default levels we define if the list of the targeted level is empty. More...
 
virtual bool need_initialization (const vector< bool > &is_agglomerated)=0
 Whether the seeds pool need to be initialized. More...
 
void initialize ()
 Initialize the seeds pool via a call to its initializator. More...
 
void set_top_queue (const CoMMAIntType q_lvl)
 Setter for the top queue member. More...
 
- - - - -

-Public Attributes

const vector< CoMMAIntType > & _n_bnd_faces
 Vector of number of faces on boundary per cell. More...
 
- - - - - - - - - - - - - -

-Protected Attributes

vector< CoMMAQueueType_l_of_seeds
 List of deque of seeds. For each identifier we have the available seeds. We want the seed to be chosen preferably in the corner, then ridges, valleys and then interiors, see CoMMACellT. More...
 
const vector< CoMMAWeightType > & _priority_weights
 Weights used to set the order of the seed to choose. More...
 
optional< CoMMAIntType > _cur_top_queue
 Optional possibly containing the level (0,1,2,3, see Seeds_Pool::_l_of_seeds) of the queue currently being spoiled. More...
 
shared_ptr< SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _initializator
 Pointer to a SPInitializator. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Class representing the pool of all the seeds for creating a coarse cell.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ CoMMAPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>
-
- -

Type of pair.

- -
-
- -

◆ CoMMAQueueType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAQueueType = deque<CoMMAIndexType>
-
- -

Type of queue which holds seeds.

- -
-
- -

◆ CoMMASetOfPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
-
- -

Type of set of pairs.

- -
-
-

Constructor & Destructor Documentation

- -

◆ Seeds_Pool()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Seeds_Pool (const vector< CoMMAIntType > & n_bnd_faces,
const vector< CoMMAWeightType > & priority_weights,
const bool one_point_init 
)
-
-inline
-
- -

Constructor.

-
Parameters
- - - - -
[in]n_bnd_facesVector telling how many boundary faces each cell has
[in]priority_weightsWeights used to set the order of the seed to choose
[in]one_point_initWhether the initialization should be done for the highest boundary level or just for one point
-
-
- -
-
- -

◆ ~Seeds_Pool()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - -
virtual Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Seeds_Pool ()
-
-virtualdefault
-
- -

Destructor.

- -
-
-

Member Function Documentation

- -

◆ build_queue()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::build_queue (const vector< bool > & is_fc_agglomerated,
const CoMMAIntType target 
)
-
-inline
-
- -

Build the weight-ordered queue of seed for a given target level. A set of (index, weight) pair with special comparator is used to enforced order, then the indices are extracted.

-
Parameters
- - - -
[in]is_fc_agglomeratedVector of boolean telling whether a face has been agglomerated
[in]targetLevel of the queue to build. It corresponds to the number of boundary faces
-
-
- -
-
- -

◆ choose_new_seed()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
virtual optional< CoMMAIndexType > Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::choose_new_seed (const vector< bool > & is_agglomerated)
-
-pure virtual
-
- -

Choose a new seed in the pool.

-
Parameters
- - -
[in]is_agglomeratedVector of booleans telling whether fine cells are agglomerated
-
-
-
Returns
New seed
- -

Implemented in Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ get_highest_n_bnd_yet_to_agglomerate()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
optional< CoMMAIntType > Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_highest_n_bnd_yet_to_agglomerate (const vector< bool > & is_fc_agglomerated,
const CoMMAIntType expected_max = CoMMACellT::CORNER 
) const
-
-inline
-
- -

Compute the highest number of boundary faces of cells which are not agglomerated yet.

-
Parameters
- - - -
[in]is_fc_agglomeratedVector of boolean telling whether a face has been agglomerated
[in]expected_maxExpected value. If found, function returns immediately. Defaulted to CoMMACellT::CORNER
-
-
-
Returns
An optional which contains the number of boundary faces if there is at least one cell left to agglomerate
- -
-
- -

◆ initialize()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - -
void Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::initialize ()
-
-inline
-
- -

Initialize the seeds pool via a call to its initializator.

- -
-
- -

◆ is_empty()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
bool Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::is_empty (CoMMAIntType i_level = CoMMACellT::N_CELL_TYPES) const
-
-inline
-
- -

Given the default levels we define if the list of the targeted level is empty.

-
Parameters
- - -
[in]i_levellevel of the defined list
-
-
- -
-
- -

◆ need_initialization()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
virtual bool Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::need_initialization (const vector< bool > & is_agglomerated)
-
-pure virtual
-
- -

Whether the seeds pool need to be initialized.

-
Parameters
- - -
[in]is_agglomeratedVector of booleans telling whether fine cells are agglomerated
-
-
-
Returns
A bool
- -

Implemented in Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ order_new_seeds_and_update()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
virtual void Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::order_new_seeds_and_update (const unordered_set< CoMMAIndexType > & new_seeds)
-
-pure virtual
-
- -

Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue.

-
Parameters
- - -
[in]new_seedsVector of seeds to add
-
-
- -

Implemented in Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ set_top_queue()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
void Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::set_top_queue (const CoMMAIntType q_lvl)
-
-inline
-
- -

Setter for the top queue member.

-
Parameters
- - -
[in]q_lvlLevel of the new top queue
-
-
- -
-
- -

◆ spoil_queue()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
optional< CoMMAIndexType > Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::spoil_queue (const vector< bool > & is_fc_agglomerated,
CoMMAQueueTypequeue 
)
-
-inline
-
- -

Spoil a queue looking for an not-yet-agglomerated seed.

-
Parameters
- - - -
[in]is_fc_agglomeratedVector of boolean telling whether a face has been agglomerated
[out]queueThe queue to spoil
-
-
-
Returns
An optional which contains the new seed if found
- -
-
- -

◆ update()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
virtual void Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update (const deque< CoMMAIndexType > & new_seeds)
-
-pure virtual
-
- -

Add the provided seeds to a seeds pool queue according to the number of boundary faces.

-
Parameters
- - -
[in]new_seedsSeeds to add
-
-
-
Warning
new_seeds is supposed to be already ordered by the priority weight, therefore no check will be performed
- -

Implemented in Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
-

Member Data Documentation

- -

◆ _cur_top_queue

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - -
optional<CoMMAIntType> Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_cur_top_queue
-
-protected
-
- -

Optional possibly containing the level (0,1,2,3, see Seeds_Pool::_l_of_seeds) of the queue currently being spoiled.

- -
-
- -

◆ _initializator

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - -
shared_ptr<SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> > Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_initializator
-
-protected
-
- -

Pointer to a SPInitializator.

- -
-
- -

◆ _l_of_seeds

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - -
vector<CoMMAQueueType> Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_l_of_seeds
-
-protected
-
- -

List of deque of seeds. For each identifier we have the available seeds. We want the seed to be chosen preferably in the corner, then ridges, valleys and then interiors, see CoMMACellT.

- -
-
- -

◆ _n_bnd_faces

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
const vector<CoMMAIntType>& Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_n_bnd_faces
-
- -

Vector of number of faces on boundary per cell.

- -
-
- -

◆ _priority_weights

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - -
const vector<CoMMAWeightType>& Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_priority_weights
-
-protected
-
- -

Weights used to set the order of the seed to choose.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_seeds___pool.js b/class_seeds___pool.js deleted file mode 100644 index 3351d5d..0000000 --- a/class_seeds___pool.js +++ /dev/null @@ -1,23 +0,0 @@ -var class_seeds___pool = -[ - [ "CoMMAPairType", "class_seeds___pool.html#a9678e5bbd5f135398366fd74d95b925a", null ], - [ "CoMMAQueueType", "class_seeds___pool.html#abc1107196890a26c678ce4e4aa3fb4cb", null ], - [ "CoMMASetOfPairType", "class_seeds___pool.html#a3d6ff9145c49b79610f4d7777dfdc342", null ], - [ "Seeds_Pool", "class_seeds___pool.html#a1567e2e69f9de4642a48a62dc3688c17", null ], - [ "~Seeds_Pool", "class_seeds___pool.html#a91f79ccf5fda9ea80726b78df15a7b94", null ], - [ "build_queue", "class_seeds___pool.html#a3b7070b7ddb7c2f856f35407bb76a73f", null ], - [ "choose_new_seed", "class_seeds___pool.html#a54aeaf8e86cccde8f7bca556ec005f3c", null ], - [ "get_highest_n_bnd_yet_to_agglomerate", "class_seeds___pool.html#aae5389ce2e287218835acd3b0c97b61e", null ], - [ "initialize", "class_seeds___pool.html#a23a0f231be556d1d87f216a5c002e760", null ], - [ "is_empty", "class_seeds___pool.html#a90276b0aebe130de57c4b04afb7b45fc", null ], - [ "need_initialization", "class_seeds___pool.html#ab7e85e018510d448d7eed7a3c92b3108", null ], - [ "order_new_seeds_and_update", "class_seeds___pool.html#a5605fc7f8d961cac3343cc69b64a23f3", null ], - [ "set_top_queue", "class_seeds___pool.html#af2a613ae8e3acd93667292399fe925fc", null ], - [ "spoil_queue", "class_seeds___pool.html#ac134287c9c4d234dbc2e73b5aa2db96b", null ], - [ "update", "class_seeds___pool.html#adc6a34efef0ec0ffe69a4d4b50741d07", null ], - [ "_cur_top_queue", "class_seeds___pool.html#a7397a981bac53b7356e8ca715ac99a52", null ], - [ "_initializator", "class_seeds___pool.html#acf803da96cb6760c6bf2d4fa5a8552ac", null ], - [ "_l_of_seeds", "class_seeds___pool.html#a958a26a313e6a7d11aeef6ecb506ee6f", null ], - [ "_n_bnd_faces", "class_seeds___pool.html#a3b7c154f4775ee5be6800bae7a564f99", null ], - [ "_priority_weights", "class_seeds___pool.html#a748320ddb30c58dd41c89f392e7692e7", null ] -]; \ No newline at end of file diff --git a/class_seeds___pool.png b/class_seeds___pool.png deleted file mode 100644 index eda6cd4..0000000 Binary files a/class_seeds___pool.png and /dev/null differ diff --git a/class_seeds___pool___boundary___priority-members.html b/class_seeds___pool___boundary___priority-members.html deleted file mode 100644 index e4409ac..0000000 --- a/class_seeds___pool___boundary___priority-members.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - -
_cur_top_queueSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_initializatorSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_of_seedsSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_n_bnd_facesSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_priority_weightsSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
build_queue(const vector< bool > &is_fc_agglomerated, const CoMMAIntType target)Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
choose_new_seed(const vector< bool > &is_agglomerated) overrideSeeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
CoMMAPairType typedefSeeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAQueueType typedefSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMASetOfPairType typedefSeeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
get_highest_n_bnd_yet_to_agglomerate(const vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) constSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
initialize()Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
is_empty(CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) constSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
need_initialization(const vector< bool > &is_agglomerated) overrideSeeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
order_new_seeds_and_update(const unordered_set< CoMMAIndexType > &new_seeds) overrideSeeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
Seeds_Pool(const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Seeds_Pool_Boundary_Priority(const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
SeedsPoolBaseType typedefSeeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
set_top_queue(const CoMMAIntType q_lvl)Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
spoil_queue(const vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
update(const deque< CoMMAIndexType > &new_seeds) overrideSeeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
~Seeds_Pool()=defaultSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
-
- - - - diff --git a/class_seeds___pool___boundary___priority.html b/class_seeds___pool___boundary___priority.html deleted file mode 100644 index 4f39714..0000000 --- a/class_seeds___pool___boundary___priority.html +++ /dev/null @@ -1,503 +0,0 @@ - - - - - - - -CoMMA: Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
-
-
- -

Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are on the border. - More...

- -

#include <Seeds_Pool.h>

-
-Inheritance diagram for Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - - - - - - - - -

-Public Types

using SeedsPoolBaseType = Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Base class. More...
 
using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
- Public Types inherited from Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMAQueueType = deque< CoMMAIndexType >
 Type of queue which holds seeds. More...
 
using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Seeds_Pool_Boundary_Priority (const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
 Constructor. More...
 
optional< CoMMAIndexType > choose_new_seed (const vector< bool > &is_agglomerated) override
 Choose a new seed in the pool. More...
 
void update (const deque< CoMMAIndexType > &new_seeds) override
 Add the provided seeds to a seeds pool queue according to the number of boundary faces. It updates the current top queue if necessary. More...
 
void order_new_seeds_and_update (const unordered_set< CoMMAIndexType > &new_seeds) override
 Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue. More...
 
bool need_initialization (const vector< bool > &is_agglomerated) override
 Whether the seeds pool need to be initialized. It updates the top queue if necessary. More...
 
- Public Member Functions inherited from Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Seeds_Pool (const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
 Constructor. More...
 
virtual ~Seeds_Pool ()=default
 Destructor. More...
 
optional< CoMMAIndexType > spoil_queue (const vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)
 Spoil a queue looking for an not-yet-agglomerated seed. More...
 
virtual optional< CoMMAIndexType > choose_new_seed (const vector< bool > &is_agglomerated)=0
 Choose a new seed in the pool. More...
 
virtual void update (const deque< CoMMAIndexType > &new_seeds)=0
 Add the provided seeds to a seeds pool queue according to the number of boundary faces. More...
 
virtual void order_new_seeds_and_update (const unordered_set< CoMMAIndexType > &new_seeds)=0
 Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue. More...
 
void build_queue (const vector< bool > &is_fc_agglomerated, const CoMMAIntType target)
 Build the weight-ordered queue of seed for a given target level. A set of (index, weight) pair with special comparator is used to enforced order, then the indices are extracted. More...
 
optional< CoMMAIntType > get_highest_n_bnd_yet_to_agglomerate (const vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) const
 Compute the highest number of boundary faces of cells which are not agglomerated yet. More...
 
bool is_empty (CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) const
 Given the default levels we define if the list of the targeted level is empty. More...
 
virtual bool need_initialization (const vector< bool > &is_agglomerated)=0
 Whether the seeds pool need to be initialized. More...
 
void initialize ()
 Initialize the seeds pool via a call to its initializator. More...
 
void set_top_queue (const CoMMAIntType q_lvl)
 Setter for the top queue member. More...
 
- - - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Attributes inherited from Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
const vector< CoMMAIntType > & _n_bnd_faces
 Vector of number of faces on boundary per cell. More...
 
- Protected Attributes inherited from Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
vector< CoMMAQueueType_l_of_seeds
 List of deque of seeds. For each identifier we have the available seeds. We want the seed to be chosen preferably in the corner, then ridges, valleys and then interiors, see CoMMACellT. More...
 
const vector< CoMMAWeightType > & _priority_weights
 Weights used to set the order of the seed to choose. More...
 
optional< CoMMAIntType > _cur_top_queue
 Optional possibly containing the level (0,1,2,3, see Seeds_Pool::_l_of_seeds) of the queue currently being spoiled. More...
 
shared_ptr< SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _initializator
 Pointer to a SPInitializator. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are on the border.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ CoMMAPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>
-
- -

Type of pair.

- -
-
- -

◆ CoMMASetOfPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
-
- -

Type of set of pairs.

- -
-
- -

◆ SeedsPoolBaseType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::SeedsPoolBaseType = Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Base class.

- -
-
-

Constructor & Destructor Documentation

- -

◆ Seeds_Pool_Boundary_Priority()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Seeds_Pool_Boundary_Priority (const vector< CoMMAIntType > & n_bnd_faces,
const vector< CoMMAWeightType > & priority_weights,
const bool one_point_init 
)
-
-inline
-
- -

Constructor.

-
Parameters
- - - - -
[in]n_bnd_facesVector telling how many boundary faces each cell has
[in]priority_weightsWeights used to set the order of the seed to choose
[in]one_point_initWhether the initialization should be done for the highest boundary level or just for one point
-
-
- -
-
-

Member Function Documentation

- -

◆ choose_new_seed()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
optional< CoMMAIndexType > Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::choose_new_seed (const vector< bool > & is_agglomerated)
-
-inlineoverridevirtual
-
- -

Choose a new seed in the pool.

-
Parameters
- - -
[in]is_agglomeratedVector of booleans telling whether fine cells are agglomerated
-
-
-
Returns
New seed
- -

Implements Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ need_initialization()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
bool Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::need_initialization (const vector< bool > & is_agglomerated)
-
-inlineoverridevirtual
-
- -

Whether the seeds pool need to be initialized. It updates the top queue if necessary.

-
Parameters
- - -
[in]is_agglomeratedVector of booleans telling whether fine cells are agglomerated
-
-
-
Returns
A bool
- -

Implements Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ order_new_seeds_and_update()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
void Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::order_new_seeds_and_update (const unordered_set< CoMMAIndexType > & new_seeds)
-
-inlineoverridevirtual
-
- -

Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue.

-
Parameters
- - -
[in]new_seedsVector of seeds to add
-
-
- -

Implements Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ update()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
void Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update (const deque< CoMMAIndexType > & new_seeds)
-
-inlineoverridevirtual
-
- -

Add the provided seeds to a seeds pool queue according to the number of boundary faces. It updates the current top queue if necessary.

-
Parameters
- - -
[in]new_seedsSeeds to add
-
-
-
Warning
new_seeds is supposed to be already ordered by the priority weight, therefore no check will be performed
- -

Implements Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_seeds___pool___boundary___priority.js b/class_seeds___pool___boundary___priority.js deleted file mode 100644 index 0861ca7..0000000 --- a/class_seeds___pool___boundary___priority.js +++ /dev/null @@ -1,11 +0,0 @@ -var class_seeds___pool___boundary___priority = -[ - [ "CoMMAPairType", "class_seeds___pool___boundary___priority.html#a9678e5bbd5f135398366fd74d95b925a", null ], - [ "CoMMASetOfPairType", "class_seeds___pool___boundary___priority.html#a3d6ff9145c49b79610f4d7777dfdc342", null ], - [ "SeedsPoolBaseType", "class_seeds___pool___boundary___priority.html#a607c4ab9284f6116d12e4356fe4702b6", null ], - [ "Seeds_Pool_Boundary_Priority", "class_seeds___pool___boundary___priority.html#aa286e6beeaf6cc1915ed1de6b5b5cc6f", null ], - [ "choose_new_seed", "class_seeds___pool___boundary___priority.html#af3f91b37d8b3704c6bad00c8324f71be", null ], - [ "need_initialization", "class_seeds___pool___boundary___priority.html#a7e10b833156c1c19009a093570697e75", null ], - [ "order_new_seeds_and_update", "class_seeds___pool___boundary___priority.html#a95eaa542d85779930aca1fd962f88893", null ], - [ "update", "class_seeds___pool___boundary___priority.html#acba386e4effac0b7d795ba8b2fb41372", null ] -]; \ No newline at end of file diff --git a/class_seeds___pool___boundary___priority.png b/class_seeds___pool___boundary___priority.png deleted file mode 100644 index f8bf6a7..0000000 Binary files a/class_seeds___pool___boundary___priority.png and /dev/null differ diff --git a/class_seeds___pool___neighbourhood___priority-members.html b/class_seeds___pool___neighbourhood___priority-members.html deleted file mode 100644 index ced7b83..0000000 --- a/class_seeds___pool___neighbourhood___priority-members.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - -
_cur_top_queueSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_initializatorSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_of_seedsSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_n_bnd_facesSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_priority_weightsSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
build_queue(const vector< bool > &is_fc_agglomerated, const CoMMAIntType target)Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
choose_new_seed(const vector< bool > &is_agglomerated) overrideSeeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
CoMMAPairType typedefSeeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAQueueType typedefSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMASetOfPairType typedefSeeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
get_highest_n_bnd_yet_to_agglomerate(const vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) constSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
initialize()Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
is_empty(CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) constSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
need_initialization(const vector< bool > &is_agglomerated) overrideSeeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
order_new_seeds_and_update(const unordered_set< CoMMAIndexType > &new_seeds) overrideSeeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
Seeds_Pool(const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Seeds_Pool_Neighbourhood_Priority(const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
SeedsPoolBaseType typedefSeeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
set_top_queue(const CoMMAIntType q_lvl)Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
spoil_queue(const vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
update(const deque< CoMMAIndexType > &new_seeds) overrideSeeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
~Seeds_Pool()=defaultSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
-
- - - - diff --git a/class_seeds___pool___neighbourhood___priority.html b/class_seeds___pool___neighbourhood___priority.html deleted file mode 100644 index 500fc23..0000000 --- a/class_seeds___pool___neighbourhood___priority.html +++ /dev/null @@ -1,503 +0,0 @@ - - - - - - - -CoMMA: Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
-
-
- -

Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are neighbours of already existing coarse cells. - More...

- -

#include <Seeds_Pool.h>

-
-Inheritance diagram for Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - - - - - - - - -

-Public Types

using SeedsPoolBaseType = Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Base class. More...
 
using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
- Public Types inherited from Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMAQueueType = deque< CoMMAIndexType >
 Type of queue which holds seeds. More...
 
using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Seeds_Pool_Neighbourhood_Priority (const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
 Constructor. More...
 
optional< CoMMAIndexType > choose_new_seed (const vector< bool > &is_agglomerated) override
 Choose a new seed in the pool. More...
 
void update (const deque< CoMMAIndexType > &new_seeds) override
 Add the provided seeds to a seeds pool queue according to the number of boundary faces. More...
 
void order_new_seeds_and_update (const unordered_set< CoMMAIndexType > &new_seeds) override
 Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue. More...
 
bool need_initialization (const vector< bool > &is_agglomerated) override
 Whether the seeds pool need to be initialized. More...
 
- Public Member Functions inherited from Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Seeds_Pool (const vector< CoMMAIntType > &n_bnd_faces, const vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
 Constructor. More...
 
virtual ~Seeds_Pool ()=default
 Destructor. More...
 
optional< CoMMAIndexType > spoil_queue (const vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)
 Spoil a queue looking for an not-yet-agglomerated seed. More...
 
virtual optional< CoMMAIndexType > choose_new_seed (const vector< bool > &is_agglomerated)=0
 Choose a new seed in the pool. More...
 
virtual void update (const deque< CoMMAIndexType > &new_seeds)=0
 Add the provided seeds to a seeds pool queue according to the number of boundary faces. More...
 
virtual void order_new_seeds_and_update (const unordered_set< CoMMAIndexType > &new_seeds)=0
 Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue. More...
 
void build_queue (const vector< bool > &is_fc_agglomerated, const CoMMAIntType target)
 Build the weight-ordered queue of seed for a given target level. A set of (index, weight) pair with special comparator is used to enforced order, then the indices are extracted. More...
 
optional< CoMMAIntType > get_highest_n_bnd_yet_to_agglomerate (const vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) const
 Compute the highest number of boundary faces of cells which are not agglomerated yet. More...
 
bool is_empty (CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) const
 Given the default levels we define if the list of the targeted level is empty. More...
 
virtual bool need_initialization (const vector< bool > &is_agglomerated)=0
 Whether the seeds pool need to be initialized. More...
 
void initialize ()
 Initialize the seeds pool via a call to its initializator. More...
 
void set_top_queue (const CoMMAIntType q_lvl)
 Setter for the top queue member. More...
 
- - - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Attributes inherited from Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
const vector< CoMMAIntType > & _n_bnd_faces
 Vector of number of faces on boundary per cell. More...
 
- Protected Attributes inherited from Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
vector< CoMMAQueueType_l_of_seeds
 List of deque of seeds. For each identifier we have the available seeds. We want the seed to be chosen preferably in the corner, then ridges, valleys and then interiors, see CoMMACellT. More...
 
const vector< CoMMAWeightType > & _priority_weights
 Weights used to set the order of the seed to choose. More...
 
optional< CoMMAIntType > _cur_top_queue
 Optional possibly containing the level (0,1,2,3, see Seeds_Pool::_l_of_seeds) of the queue currently being spoiled. More...
 
shared_ptr< SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _initializator
 Pointer to a SPInitializator. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are neighbours of already existing coarse cells.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ CoMMAPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>
-
- -

Type of pair.

- -
-
- -

◆ CoMMASetOfPairType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
-
- -

Type of set of pairs.

- -
-
- -

◆ SeedsPoolBaseType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::SeedsPoolBaseType = Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Base class.

- -
-
-

Constructor & Destructor Documentation

- -

◆ Seeds_Pool_Neighbourhood_Priority()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Seeds_Pool_Neighbourhood_Priority (const vector< CoMMAIntType > & n_bnd_faces,
const vector< CoMMAWeightType > & priority_weights,
const bool one_point_init 
)
-
-inline
-
- -

Constructor.

-
Parameters
- - - - -
[in]n_bnd_facesVector telling how many boundary faces each cell has
[in]priority_weightsWeights used to set the order of the seed to choose
[in]one_point_initWhether the initialization should be done for the highest boundary level or just for one point
-
-
- -
-
-

Member Function Documentation

- -

◆ choose_new_seed()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
optional< CoMMAIndexType > Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::choose_new_seed (const vector< bool > & is_agglomerated)
-
-inlineoverridevirtual
-
- -

Choose a new seed in the pool.

-
Parameters
- - -
[in]is_agglomeratedVector of booleans telling whether fine cells are agglomerated
-
-
-
Returns
New seed
- -

Implements Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ need_initialization()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
bool Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::need_initialization (const vector< bool > & is_agglomerated)
-
-inlineoverridevirtual
-
- -

Whether the seeds pool need to be initialized.

-
Parameters
- - -
[in]is_agglomeratedvector of boolean with fine cells
-
-
-
Returns
A bool
- -

Implements Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ order_new_seeds_and_update()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
void Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::order_new_seeds_and_update (const unordered_set< CoMMAIndexType > & new_seeds)
-
-inlineoverridevirtual
-
- -

Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue.

-
Parameters
- - -
[in]new_seedsVector of seeds to add
-
-
- -

Implements Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
- -

◆ update()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
void Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update (const deque< CoMMAIndexType > & new_seeds)
-
-inlineoverridevirtual
-
- -

Add the provided seeds to a seeds pool queue according to the number of boundary faces.

-
Parameters
- - -
[in]new_seedsSeeds to add
-
-
-
Warning
new_seeds is supposed to be already ordered by the priority weight, therefore no check will be performed
- -

Implements Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_seeds___pool___neighbourhood___priority.js b/class_seeds___pool___neighbourhood___priority.js deleted file mode 100644 index 2ef0a6b..0000000 --- a/class_seeds___pool___neighbourhood___priority.js +++ /dev/null @@ -1,11 +0,0 @@ -var class_seeds___pool___neighbourhood___priority = -[ - [ "CoMMAPairType", "class_seeds___pool___neighbourhood___priority.html#a9678e5bbd5f135398366fd74d95b925a", null ], - [ "CoMMASetOfPairType", "class_seeds___pool___neighbourhood___priority.html#a3d6ff9145c49b79610f4d7777dfdc342", null ], - [ "SeedsPoolBaseType", "class_seeds___pool___neighbourhood___priority.html#a1fa4863f05ee5d83399275bfcd430e53", null ], - [ "Seeds_Pool_Neighbourhood_Priority", "class_seeds___pool___neighbourhood___priority.html#afc8716dedda1636bce1de070b9f90326", null ], - [ "choose_new_seed", "class_seeds___pool___neighbourhood___priority.html#a1db03da69eb61cc4f6486d303065261d", null ], - [ "need_initialization", "class_seeds___pool___neighbourhood___priority.html#aec2b6ee916560feeab9cda7204a6429a", null ], - [ "order_new_seeds_and_update", "class_seeds___pool___neighbourhood___priority.html#ae9694b6adced185e4282ec3bf8394346", null ], - [ "update", "class_seeds___pool___neighbourhood___priority.html#a114213b8d042b86fd4c735b74c4af8a5", null ] -]; \ No newline at end of file diff --git a/class_seeds___pool___neighbourhood___priority.png b/class_seeds___pool___neighbourhood___priority.png deleted file mode 100644 index c81872f..0000000 Binary files a/class_seeds___pool___neighbourhood___priority.png and /dev/null differ diff --git a/class_subgraph-members.html b/class_subgraph-members.html deleted file mode 100644 index e1aeaea..0000000 --- a/class_subgraph-members.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_cardinalitySubgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_compactnessSubgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_is_isotropicSubgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_m_CRS_Col_IndGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_m_CRS_Row_PtrGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_m_CRS_ValuesGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_mapping_l_to_gSubgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_number_of_cellsGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_visitedGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_volumesGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
BaseClass typedefSubgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
BFS(const CoMMAIndexType &root)Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
check_connectivity()Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
compute_fc_compactness_inside_a_cc(const unordered_set< CoMMAIndexType > &s_fc) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
compute_min_fc_compactness_inside_a_cc(const unordered_set< CoMMAIndexType > &s_fc) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
ContainerIndexConstIt typedefGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
ContainerIndexType typedefSubgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
ContainerWeightConstIt typedefGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
ContainerWeightType typedefSubgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
DFS(const CoMMAIndexType &i_fc)Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_nb_of_neighbours(CoMMAIndexType i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_neighbours(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_weights(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Graph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
insert_node(const ContainerIndexType &v_neigh, const CoMMAIndexType &i_fc, const CoMMAWeightType &volume, const ContainerWeightType &weight)Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
neighbours_cbegin(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
neighbours_cend(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
remove_node(const CoMMAIndexType &elemento)Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Subgraph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes, const ContainerIndexType &mapping_l_to_g, const bool &is_isotropic)Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
weights_cbegin(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
weights_cend(const CoMMAIndexType &i_c) constGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Graph()=defaultGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Subgraph()=defaultSubgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
-
- - - - diff --git a/class_subgraph.html b/class_subgraph.html deleted file mode 100644 index f050f32..0000000 --- a/class_subgraph.html +++ /dev/null @@ -1,596 +0,0 @@ - - - - - - - -CoMMA: Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
- -
Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
-
-
- -

A class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the implementation of the CSR representation of the coarse cells. - More...

- -

#include <Dual_Graph.h>

-
-Inheritance diagram for Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
-
-
- - -Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
- - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

using BaseClass = Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Parent class. More...
 
using ContainerIndexType = vector< CoMMAIndexType >
 Type for containers of indices. More...
 
using ContainerWeightType = vector< CoMMAWeightType >
 Type for containers of weights. More...
 
- Public Types inherited from Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
using ContainerIndexType = vector< CoMMAIndexType >
 Type for containers of indices. More...
 
using ContainerWeightType = vector< CoMMAWeightType >
 Type for containers of weights. More...
 
using ContainerIndexConstIt = typename ContainerIndexType::const_iterator
 Type for constant iterators of containers of indices. More...
 
using ContainerWeightConstIt = typename ContainerWeightType::const_iterator
 Type for constant iterators of containers of weights. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Subgraph (const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes, const ContainerIndexType &mapping_l_to_g, const bool &is_isotropic)
 Constructor of the class. More...
 
virtual ~Subgraph ()=default
 Destructor of the class. More...
 
void insert_node (const ContainerIndexType &v_neigh, const CoMMAIndexType &i_fc, const CoMMAWeightType &volume, const ContainerWeightType &weight)
 Insert a node in the subgraph and add it to the mapping the. More...
 
void remove_node (const CoMMAIndexType &elemento)
 Remove a node from the CRS representation and automatically adjust the mapping. More...
 
- Public Member Functions inherited from Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Graph (const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)
 Constructor of the class. More...
 
virtual ~Graph ()=default
 Destructor of the class. More...
 
void DFS (const CoMMAIndexType &i_fc)
 Depth First Search (DFS) recursive function. More...
 
void BFS (const CoMMAIndexType &root)
 Breadth First Search (BFS) function. More...
 
CoMMAIntType get_nb_of_neighbours (CoMMAIndexType i_c) const
 Retrieve the number of neighbours. More...
 
ContainerIndexType get_neighbours (const CoMMAIndexType &i_c) const
 Based on the CRS representation retrieves the neighbours of the cell given as an input. More...
 
ContainerIndexConstIt neighbours_cbegin (const CoMMAIndexType &i_c) const
 Get constant pointer to the first neighbour of cell i_c. More...
 
ContainerIndexConstIt neighbours_cend (const CoMMAIndexType &i_c) const
 Get constant pointer to the element following the last neighbour of cell i_c. More...
 
ContainerWeightType get_weights (const CoMMAIndexType &i_c) const
 Based on the area of the faces composing the cell given as an input, we retrieve the faces connecting the given cell with the neighbourhood that can be described also as the weight of the graph. More...
 
ContainerWeightConstIt weights_cbegin (const CoMMAIndexType &i_c) const
 Get constant pointer to the first neighbour of cell i_c. More...
 
ContainerWeightConstIt weights_cend (const CoMMAIndexType &i_c) const
 Get constant pointer to the element following the last neighbour of cell i_c. More...
 
bool check_connectivity ()
 Check the connectivity of the graph. More...
 
CoMMAIntType compute_min_fc_compactness_inside_a_cc (const unordered_set< CoMMAIndexType > &s_fc) const
 Compute the minimum compactness of fine cells inside a coarse cell. More...
 
unordered_map< CoMMAIndexType, CoMMAIntType > compute_fc_compactness_inside_a_cc (const unordered_set< CoMMAIndexType > &s_fc) const
 Compute the dictionary of compactness of fine cells inside a coarse cell. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

bool _is_isotropic
 Whether it originates from an isotropic cell. More...
 
CoMMAIntType _cardinality
 Cardinality of the given subgraph, alias the number of nodes contained. More...
 
CoMMAIntType _compactness
 Compactness of the given subgraph. The compactness is the minimum number of internal neighbours. More...
 
ContainerIndexType _mapping_l_to_g
 Mapping from the local number of node to the global. Being a subgraph this variable connect the local index of the node with the global one. More...
 
- Public Attributes inherited from Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIndexType _number_of_cells
 Number of nodes in the Graph (it corresponds to the number of cells in the subgraph or the dual graph. More...
 
vector< bool > _visited
 Helper vector for the DFS. More...
 
ContainerIndexType _m_CRS_Row_Ptr
 Vector of row pointer of CRS representation. More...
 
ContainerIndexType _m_CRS_Col_Ind
 Vector of column index of CRS representation. More...
 
ContainerWeightType _m_CRS_Values
 Vector of area weight of CRS representation. More...
 
ContainerWeightType _volumes
 Vector of volumes. More...
 
-

Detailed Description

-
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

A class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the implementation of the CSR representation of the coarse cells.

-
Template Parameters
- - - - -
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
-
-
-

Member Typedef Documentation

- -

◆ BaseClass

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::BaseClass = Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
-
- -

Parent class.

- -
-
- -

◆ ContainerIndexType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerIndexType = vector<CoMMAIndexType>
-
- -

Type for containers of indices.

- -
-
- -

◆ ContainerWeightType

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
using Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerWeightType = vector<CoMMAWeightType>
-
- -

Type for containers of weights.

- -
-
-

Constructor & Destructor Documentation

- -

◆ Subgraph()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Subgraph (const CoMMAIndexType & nb_c,
const ContainerIndexTypem_crs_row_ptr,
const ContainerIndexTypem_crs_col_ind,
const ContainerWeightTypem_crs_values,
const ContainerWeightTypevolumes,
const ContainerIndexTypemapping_l_to_g,
const bool & is_isotropic 
)
-
-inline
-
- -

Constructor of the class.

-
Parameters
- - - - - - - - -
[in]nb_cCardinality of the CC, that is the number of fine cells composing the CC
[in]m_crs_row_ptrThe row pointer of the CRS representation
[in]m_crs_col_indThe column index of the CRS representation
[in]m_crs_valuesThe weight of the CRS representation (in CoMMA case will be the area of the faces that in the graph representation are the edges between two nodes represented by the cell centers.
[in]volumesThe volumes of the cells
[in]mapping_l_to_gMapping between the local (to the CC) numbering to global numbering
[in]is_isotropicWhether the cell is isotropic
-
-
- -
-
- -

◆ ~Subgraph()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - -
virtual Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Subgraph ()
-
-virtualdefault
-
- -

Destructor of the class.

- -
-
-

Member Function Documentation

- -

◆ insert_node()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::insert_node (const ContainerIndexTypev_neigh,
const CoMMAIndexType & i_fc,
const CoMMAWeightType & volume,
const ContainerWeightTypeweight 
)
-
-inline
-
- -

Insert a node in the subgraph and add it to the mapping the.

-
Parameters
- - - - - -
[in]v_neighVector of the neighbours to be added. The neighbours must be given in the global indexing system.
[in]i_fcGlobal index of the node
[in]volumeVolume of the cell
[in]weightVector of the area of the faces of the given cells to be added.
-
-
- -
-
- -

◆ remove_node()

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - - -
- - - - - - - - -
void Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::remove_node (const CoMMAIndexType & elemento)
-
-inline
-
- -

Remove a node from the CRS representation and automatically adjust the mapping.

-
Parameters
- - -
[in]elementoGlobal index of the node to be deleted.
-
-
- -
-
-

Member Data Documentation

- -

◆ _cardinality

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
CoMMAIntType Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_cardinality
-
- -

Cardinality of the given subgraph, alias the number of nodes contained.

- -
-
- -

◆ _compactness

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
CoMMAIntType Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_compactness
-
- -

Compactness of the given subgraph. The compactness is the minimum number of internal neighbours.

- -
-
- -

◆ _is_isotropic

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
bool Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_is_isotropic
-
- -

Whether it originates from an isotropic cell.

- -
-
- -

◆ _mapping_l_to_g

- -
-
-
-template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
- - - - -
ContainerIndexType Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_mapping_l_to_g
-
- -

Mapping from the local number of node to the global. Being a subgraph this variable connect the local index of the node with the global one.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/class_subgraph.js b/class_subgraph.js deleted file mode 100644 index 040cc7c..0000000 --- a/class_subgraph.js +++ /dev/null @@ -1,14 +0,0 @@ -var class_subgraph = -[ - [ "BaseClass", "class_subgraph.html#ace661b2b2465558589b6beabbfbe3d8c", null ], - [ "ContainerIndexType", "class_subgraph.html#abb8937d3bdb846254d3f63f0eb378dee", null ], - [ "ContainerWeightType", "class_subgraph.html#ab70bf7df2dc00ac790e2854f8a2eef6a", null ], - [ "Subgraph", "class_subgraph.html#ad7ef3fa10ed764d28f653451e52c4897", null ], - [ "~Subgraph", "class_subgraph.html#abe3ffa3088420c172fb65840429ea479", null ], - [ "insert_node", "class_subgraph.html#acf5fbea7405e13ce3701069fd4fb6dc1", null ], - [ "remove_node", "class_subgraph.html#afe1f74daa81f7af211cf683f2c8c85f5", null ], - [ "_cardinality", "class_subgraph.html#a7058ddca6eb8fb76a393dcbb55621072", null ], - [ "_compactness", "class_subgraph.html#a542bd9e63de495030a058b1abe3c76b9", null ], - [ "_is_isotropic", "class_subgraph.html#a227bc4f69731cee95b7d931cc8cb401a", null ], - [ "_mapping_l_to_g", "class_subgraph.html#ac0630065e5ee2ecaf565b5199d28ea24", null ] -]; \ No newline at end of file diff --git a/class_subgraph.png b/class_subgraph.png deleted file mode 100644 index 4ae77d2..0000000 Binary files a/class_subgraph.png and /dev/null differ diff --git a/class_tree-members.html b/class_tree-members.html deleted file mode 100644 index c89f12a..0000000 --- a/class_tree-members.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -CoMMA: Member List - - - - - - - - - - - - - -
-
- - - - - - - -
-
CoMMA 1.3.1 -
-
A geometric agglomerator for unstructured meshes
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
-
-
- -

This is the complete list of members for Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

- - - - - - - - - - - - -
_rootTree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
delete_node(shared_ptr< NodeType > &searched_node, const CoMMAIndexType &value)Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
deleteNode(const CoMMAIndexType &value)Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
insertSon(const CoMMAIndexType &father_index, const CoMMAIndexType &index, const CoMMAWeightType &volume, const CoMMAIntType &root)Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
NodeType typedefTree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
print()Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
print_nodes(shared_ptr< NodeType > &node)Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
search(shared_ptr< NodeType > &node, const CoMMAIndexType &value)Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
transverse(shared_ptr< NodeType > &node)Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Tree(shared_ptr< NodeType > &root)Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Tree()Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
-
- - - - diff --git a/class_tree.js b/class_tree.js deleted file mode 100644 index 51684fc..0000000 --- a/class_tree.js +++ /dev/null @@ -1,14 +0,0 @@ -var class_tree = -[ - [ "NodeType", "class_tree.html#acc2d326e5727bc506094e726337210c9", null ], - [ "Tree", "class_tree.html#ac75043a79cf9985ace5f340c311492a7", null ], - [ "~Tree", "class_tree.html#adebe85a87b76ce79b6d45bc05ff6b46a", null ], - [ "delete_node", "class_tree.html#a67a96cf01ba50b94071ba0e98c73cf93", null ], - [ "deleteNode", "class_tree.html#a51e33e50623d498fdf8eb9fb619328c3", null ], - [ "insertSon", "class_tree.html#ad8f18cbe37893507874177af06ab7df5", null ], - [ "print", "class_tree.html#a4d71a038b6d33dde44de8d1eddd634da", null ], - [ "print_nodes", "class_tree.html#a8f223fd2ef5bec1e944b4815c268839d", null ], - [ "search", "class_tree.html#a0c351d4a8573a2f786638e96a06f10b7", null ], - [ "transverse", "class_tree.html#a2ea9eda153ab0589b22d324e25ac8a8c", null ], - [ "_root", "class_tree.html#a76e1e482851604865ddcf4952b037846", null ] -]; \ No newline at end of file diff --git a/classcomma_1_1_agglomerator-members.html b/classcomma_1_1_agglomerator-members.html new file mode 100644 index 0000000..c303a6b --- /dev/null +++ b/classcomma_1_1_agglomerator-members.html @@ -0,0 +1,124 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
+
+
+ +

This is the complete list of members for comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

+ + + + + + + + + + + + + + + + +
_cc_graphcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_compute_ARcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_dimensioncomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_graphcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_goal_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_nb_of_cellscomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_max_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_neighbourhoodcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_seeds_poolcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_threshold_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
Agglomerator(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_fc_2_cc() constcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Agglomerator()=defaultcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
+
+ + + + diff --git a/class_agglomerator.html b/classcomma_1_1_agglomerator.html similarity index 52% rename from class_agglomerator.html rename to classcomma_1_1_agglomerator.html index f73d5e2..4c7f48c 100644 --- a/class_agglomerator.html +++ b/classcomma_1_1_agglomerator.html @@ -5,7 +5,7 @@ -CoMMA: Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference +CoMMA: comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference @@ -65,7 +65,7 @@ -
Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Referenceabstract
+List of all members +
comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Referenceabstract

A class responsible to do the interface between the different kinds of agglomerator. - More...

+ More...

#include <Agglomerator.h>

-Inheritance diagram for Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
+Inheritance diagram for comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
- - -Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + + +comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
- - - - - - - - - - - - + + + + + + + + + + + +

Public Member Functions

 Agglomerator (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)
 The constructor of the interface. More...
 
virtual ~Agglomerator ()=default
 The destructor of the class. More...
 
vector< CoMMAIndexType > get_fc_2_cc () const
 Accessor to retrieve the fine cells to coarse cells from the coarse cell graphs class. More...
 
virtual void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0
 Pure virtual function which implementation is specified in the related child classes and that defines the agglomeration of one level. More...
 
 Agglomerator (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)
 The constructor of the interface. More...
 
virtual ~Agglomerator ()=default
 The destructor of the class. More...
 
std::vector< CoMMAIndexType > get_fc_2_cc () const
 Accessor to retrieve the fine cells to coarse cells from the coarse cell graphs class. More...
 
virtual void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0
 Pure virtual function which implementation is specified in the related child classes and that defines the agglomeration of one level. More...
 
- - + - + (Recall that in 2D the volume is the surface) More...
+

Public Attributes

function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
 Function which computes the aspect-ratio from a diameter and a volume
+
std::function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
 Function which computes the aspect-ratio from a diameter and a volume
In 3D: $ AR = \frac{diam_{CC}}{\sqrt{vol_{CC}}} $
In 2D: $ AR = \frac{diam_{CC}}{\sqrt[3]{vol_{CC}}} $
- (Recall that in 2D the volume is the surface) More...
 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Protected Attributes

CoMMAIntType _dimension
 Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D) More...
 
CoMMAIntType _min_neighbourhood = 3
 Minimum number of neighbourhood we extend to search the neighbourhood in the greedy algorithm. Set as default to 3. More...
 
CoMMAIntType _min_card = 0
 Minimum cardinality (default = 0, meaning, equal to the dimension) More...
 
CoMMAIntType _max_card = 0
 Maximum cardinality (default = 0, meaning, 5 or 10 for, resp., 2- and 3D. More...
 
CoMMAIntType _goal_card = 0
 Goal cardinality (default = 0, meaning, 4 or 8 for, resp., 2- and 3D. More...
 
CoMMAIntType _threshold_card = 0
 Threshold cardinality (default = 0, meaning, equal to the dimension) More...
 
vector< CoMMAIndexType > _l_nb_of_cells
 List of number of cells per coarse cell created. More...
 
shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _fc_graph
 Dual_Graph object determining Fine cells graph and hence the connectivity. More...
 
shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _cc_graph
 pointer to Coarse_Cell_Container element More...
 
shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _seeds_pool
 Seeds_Pool object giving the order in which the fine cells should be considered when agglomerating. More...
 
CoMMAIntType _dimension
 Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D) More...
 
CoMMAIntType _min_neighbourhood = 3
 Minimum number of neighbourhood we extend to search the neighbourhood in the greedy algorithm. Set as default to 3. More...
 
CoMMAIntType _min_card = 0
 Minimum cardinality (default = 0, meaning, equal to the dimension) More...
 
CoMMAIntType _max_card = 0
 Maximum cardinality (default = 0, meaning, 5 or 10 for, resp., 2- and 3D. More...
 
CoMMAIntType _goal_card = 0
 Goal cardinality (default = 0, meaning, 4 or 8 for, resp., 2- and 3D. More...
 
CoMMAIntType _threshold_card = 0
 Threshold cardinality (default = 0, meaning, equal to the dimension) More...
 
std::vector< CoMMAIndexType > _l_nb_of_cells
 List of number of cells per coarse cell created. More...
 
std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _fc_graph
 Dual_Graph object determining Fine cells graph and hence the connectivity. More...
 
std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _cc_graph
 pointer to Coarse_Cell_Container element More...
 
std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _seeds_pool
 Seeds_Pool object giving the order in which the fine cells should be considered when agglomerating. More...
 

Detailed Description

template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

A class responsible to do the interface between the different kinds of agglomerator.

+class comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

A class responsible to do the interface between the different kinds of agglomerator.

Template Parameters
@@ -186,8 +186,8 @@

Constructor & Destructor Documentation

- -

◆ Agglomerator()

+ +

◆ Agglomerator()

@@ -198,21 +198,21 @@

CoMMAIndexTypethe CoMMA index type for the global index of the mesh
- + - + - + - + @@ -237,9 +237,9 @@

Parameters

Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Agglomerator comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Agglomerator (shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > >  graph,
shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > >  cc_graph,
shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > >  seeds_pool,
- + - +
[in]graphDual_Graph object that determines the connectivity of the matrix
[in]graphDual_Graph object that determines the connectivity of the matrix
[in]cc_graphContainer for the coarse cells
[in]seeds_poolSeeds_Pool object giving the order in which the fine cells should be considered when agglomerating
[in]seeds_poolSeeds_Pool object giving the order in which the fine cells should be considered when agglomerating
[in]dimensionDimension of the problem
@@ -247,8 +247,8 @@

-

◆ ~Agglomerator()

+ +

◆ ~Agglomerator()

@@ -259,7 +259,7 @@

- + @@ -277,8 +277,8 @@

Member Function Documentation

- -

◆ agglomerate_one_level()

+ +

◆ agglomerate_one_level()

@@ -289,7 +289,7 @@

virtual Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Agglomerator virtual comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Agglomerator ( )
- + @@ -309,7 +309,7 @@

- + @@ -343,12 +343,12 @@

Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

+

Implemented in comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -

◆ get_fc_2_cc()

+ +

◆ get_fc_2_cc()

@@ -359,7 +359,7 @@

virtual void Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::agglomerate_one_level virtual void comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::agglomerate_one_level ( const CoMMAIntType  goal_card, const vector< CoMMAWeightType > & const std::vector< CoMMAWeightType > &  priority_weights,
- + @@ -377,8 +377,8 @@

Member Data Documentation

- -

◆ _cc_graph

+ +

◆ _cc_graph

@@ -389,7 +389,7 @@

vector< CoMMAIndexType > Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_fc_2_cc std::vector< CoMMAIndexType > comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_fc_2_cc ( ) const
- +
shared_ptr< Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> > Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_cc_graphstd::shared_ptr< Coarse_Cell_Container<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> > comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_cc_graph
@@ -399,12 +399,12 @@

-

pointer to Coarse_Cell_Container element

+

pointer to Coarse_Cell_Container element

- -

◆ _compute_AR

+ +

◆ _compute_AR

@@ -412,7 +412,7 @@

- function<CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_compute_AR + std::function<CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_compute_AR

@@ -424,8 +424,8 @@

-

◆ _dimension

+ +

◆ _dimension

@@ -436,7 +436,7 @@

- +
CoMMAIntType Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_dimensionCoMMAIntType comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_dimension
@@ -450,8 +450,8 @@

-

◆ _fc_graph

+ +

◆ _fc_graph

- -

◆ _goal_card

+ +

◆ _goal_card

@@ -488,7 +488,7 @@

- +
CoMMAIntType Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_goal_card = 0CoMMAIntType comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_goal_card = 0
@@ -502,8 +502,8 @@

-

◆ _l_nb_of_cells

+ +

◆ _l_nb_of_cells

@@ -514,7 +514,7 @@

- +
vector<CoMMAIndexType> Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_l_nb_of_cellsstd::vector<CoMMAIndexType> comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_l_nb_of_cells
@@ -528,8 +528,8 @@

-

◆ _max_card

+ +

◆ _max_card

@@ -540,7 +540,7 @@

- +
CoMMAIntType Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_max_card = 0CoMMAIntType comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_max_card = 0
@@ -554,8 +554,8 @@

-

◆ _min_card

+ +

◆ _min_card

@@ -566,7 +566,7 @@

- +
CoMMAIntType Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_min_card = 0CoMMAIntType comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_min_card = 0
@@ -580,8 +580,8 @@

-

◆ _min_neighbourhood

+ +

◆ _min_neighbourhood

@@ -592,7 +592,7 @@

- +
CoMMAIntType Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_min_neighbourhood = 3CoMMAIntType comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_min_neighbourhood = 3
@@ -606,8 +606,8 @@

-

◆ _seeds_pool

+ +

◆ _seeds_pool

- -

◆ _threshold_card

+ +

◆ _threshold_card

diff --git a/classcomma_1_1_agglomerator.js b/classcomma_1_1_agglomerator.js new file mode 100644 index 0000000..dcb65c8 --- /dev/null +++ b/classcomma_1_1_agglomerator.js @@ -0,0 +1,18 @@ +var classcomma_1_1_agglomerator = +[ + [ "Agglomerator", "classcomma_1_1_agglomerator.html#a476edf422e78d865666af88b5757ed7c", null ], + [ "~Agglomerator", "classcomma_1_1_agglomerator.html#a38fbd9dc2f6718a7c909bd524cd4a2f4", null ], + [ "agglomerate_one_level", "classcomma_1_1_agglomerator.html#ad318f38cc60db419207fa1def39e2269", null ], + [ "get_fc_2_cc", "classcomma_1_1_agglomerator.html#ad2b5d75df795ac89897ab01d6be0f4e5", null ], + [ "_cc_graph", "classcomma_1_1_agglomerator.html#a8451ab2bd5cb83611182ff63ee6df949", null ], + [ "_compute_AR", "classcomma_1_1_agglomerator.html#ac8cfb2dbc276a34680c0f1fee2b3c390", null ], + [ "_dimension", "classcomma_1_1_agglomerator.html#abfae2aa7f2f81094f283990406492cc3", null ], + [ "_fc_graph", "classcomma_1_1_agglomerator.html#a851078a996985840835428c7bef3c942", null ], + [ "_goal_card", "classcomma_1_1_agglomerator.html#acffaa9cdc55cd1affe6d3e2924f46f81", null ], + [ "_l_nb_of_cells", "classcomma_1_1_agglomerator.html#a26017de7f4165439358cf9ad65c608ba", null ], + [ "_max_card", "classcomma_1_1_agglomerator.html#ac9361db0f6352efc61cde4882c8e7f42", null ], + [ "_min_card", "classcomma_1_1_agglomerator.html#a6587a8cd2ccb77bde337efe69f232980", null ], + [ "_min_neighbourhood", "classcomma_1_1_agglomerator.html#aad1aaacca4a000d6ee819f9d36385f99", null ], + [ "_seeds_pool", "classcomma_1_1_agglomerator.html#acd76d69424ca63f9e726eccb31f26773", null ], + [ "_threshold_card", "classcomma_1_1_agglomerator.html#a8d135285ab3126712b031a51cfa871b2", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_agglomerator.png b/classcomma_1_1_agglomerator.png new file mode 100644 index 0000000..0c946ad Binary files /dev/null and b/classcomma_1_1_agglomerator.png differ diff --git a/classcomma_1_1_agglomerator___anisotropic-members.html b/classcomma_1_1_agglomerator___anisotropic-members.html new file mode 100644 index 0000000..d3bf8d3 --- /dev/null +++ b/classcomma_1_1_agglomerator___anisotropic-members.html @@ -0,0 +1,138 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
+
+
+ +

This is the complete list of members for comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_aniso_neighbourscomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_cc_graphcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_compute_ARcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_dimensioncomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_graphcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_goal_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_nb_of_cellscomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_max_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_neighbourhoodcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_nb_linescomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_odd_line_lengthcomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_seeds_poolcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_should_agglomeratecomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_threshold_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_v_linescomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps) overridecomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
Agglomerator(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Anisotropic(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, const CoMMAWeightType threshold_anisotropy, const std::vector< CoMMAIndexType > &agglomerationLines_Idx, const std::vector< CoMMAIndexType > &agglomerationLines, const std::vector< CoMMAWeightType > &priority_weights, const bool build_lines, const bool odd_line_length, CoMMAIntType dimension=3)comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
AnisotropicLine typedefcomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
AnisotropicLinePtr typedefcomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
build_anisotropic_lines(const std::vector< CoMMAWeightType > &priority_weights, const CoMMAWeightType threshold_anisotropy)comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlineprotected
CoMMAPairType typedefcomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMASetOfPairType typedefcomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
export_anisotropic_lines(CoMMAIntType level, std::vector< CoMMAIndexType > &aniso_lines_idx, std::vector< CoMMAIndexType > &aniso_lines) constcomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_fc_2_cc() constcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
update_seeds_pool()comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Agglomerator()=defaultcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Agglomerator_Anisotropic() override=defaultcomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
+
+ + + + diff --git a/classcomma_1_1_agglomerator___anisotropic.html b/classcomma_1_1_agglomerator___anisotropic.html new file mode 100644 index 0000000..7ef6b75 --- /dev/null +++ b/classcomma_1_1_agglomerator___anisotropic.html @@ -0,0 +1,784 @@ + + + + + + + +CoMMA: comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
+
+
+ +

Agglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Anisotropic agglomeration. + More...

+ +

#include <Agglomerator.h>

+
+Inheritance diagram for comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
+
+
+ + +comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
+ + + + + + + + + + + + + + +

+Public Types

using AnisotropicLine = std::deque< CoMMAIndexType >
 Container for an anisotropic line. More...
 
using AnisotropicLinePtr = std::shared_ptr< AnisotropicLine >
 (Shared) Pointer to an anisotropic line More...
 
using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
 Type of pair. More...
 
using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
 Type of set of pairs. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Agglomerator_Anisotropic (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, const CoMMAWeightType threshold_anisotropy, const std::vector< CoMMAIndexType > &agglomerationLines_Idx, const std::vector< CoMMAIndexType > &agglomerationLines, const std::vector< CoMMAWeightType > &priority_weights, const bool build_lines, const bool odd_line_length, CoMMAIntType dimension=3)
 Constructor. More...
 
 ~Agglomerator_Anisotropic () override=default
 Destructor. More...
 
void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
 Specialization of the pure virtual function to the class Agglomerator_Anisotropic. We add the override key as a guard to possible mistakes: https://stackoverflow.com/questions/46446652/is-there-any-point-in-using-override-when-overriding-a-pure-virtual-function. More...
 
void update_seeds_pool ()
 Update the seeds pool with the neighbours of the anisotropic cells agglomerated so far. More...
 
void export_anisotropic_lines (CoMMAIntType level, std::vector< CoMMAIndexType > &aniso_lines_idx, std::vector< CoMMAIndexType > &aniso_lines) const
 Function that prepares the anisotropic lines for output. More...
 
- Public Member Functions inherited from comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)
 The constructor of the interface. More...
 
virtual ~Agglomerator ()=default
 The destructor of the class. More...
 
std::vector< CoMMAIndexType > get_fc_2_cc () const
 Accessor to retrieve the fine cells to coarse cells from the coarse cell graphs class. More...
 
virtual void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0
 Pure virtual function which implementation is specified in the related child classes and that defines the agglomeration of one level. More...
 
+ + + + + + + + + + + + + + +

+Public Attributes

std::vector< CoMMAIndexType > _nb_lines
 Vector of number of Anisotropic agglomeration lines per level. More...
 
std::vector< std::vector< AnisotropicLinePtr > > _v_lines
 _v_lines : Agglomeration lines structure: More...
 
bool _should_agglomerate
 Whether agglomeration is possible: for instance, if anisotropy requested but no anisotropic cells found, there is no actual need. More...
 
- Public Attributes inherited from comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
std::function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
 Function which computes the aspect-ratio from a diameter and a volume
+ In 3D: $ AR = \frac{diam_{CC}}{\sqrt{vol_{CC}}} $
+ In 2D: $ AR = \frac{diam_{CC}}{\sqrt[3]{vol_{CC}}} $
+ (Recall that in 2D the volume is the surface) More...
 
+ + + + +

+Protected Member Functions

bool build_anisotropic_lines (const std::vector< CoMMAWeightType > &priority_weights, const CoMMAWeightType threshold_anisotropy)
 Build the anisotropic lines at the first level (only called at the first level of agglomeration). Two main steps are performed: More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

std::deque< CoMMAIndexType > _aniso_neighbours
 Neighbours of the anisotropic cells agglomerated. They are used to update the seeds pool. More...
 
bool _odd_line_length
 Whether anisotropic lines with odd length are allowed. More...
 
- Protected Attributes inherited from comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIntType _dimension
 Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D) More...
 
CoMMAIntType _min_neighbourhood = 3
 Minimum number of neighbourhood we extend to search the neighbourhood in the greedy algorithm. Set as default to 3. More...
 
CoMMAIntType _min_card = 0
 Minimum cardinality (default = 0, meaning, equal to the dimension) More...
 
CoMMAIntType _max_card = 0
 Maximum cardinality (default = 0, meaning, 5 or 10 for, resp., 2- and 3D. More...
 
CoMMAIntType _goal_card = 0
 Goal cardinality (default = 0, meaning, 4 or 8 for, resp., 2- and 3D. More...
 
CoMMAIntType _threshold_card = 0
 Threshold cardinality (default = 0, meaning, equal to the dimension) More...
 
std::vector< CoMMAIndexType > _l_nb_of_cells
 List of number of cells per coarse cell created. More...
 
std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _fc_graph
 Dual_Graph object determining Fine cells graph and hence the connectivity. More...
 
std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _cc_graph
 pointer to Coarse_Cell_Container element More...
 
std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _seeds_pool
 Seeds_Pool object giving the order in which the fine cells should be considered when agglomerating. More...
 
+

Detailed Description

+
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
+class comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Agglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Anisotropic agglomeration.

+
Template Parameters
+ + + + +
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
+
+
+

Member Typedef Documentation

+ +

◆ AnisotropicLine

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + +
using comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::AnisotropicLine = std::deque<CoMMAIndexType>
+
+ +

Container for an anisotropic line.

+ +
+
+ +

◆ AnisotropicLinePtr

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + +
using comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::AnisotropicLinePtr = std::shared_ptr<AnisotropicLine>
+
+ +

(Shared) Pointer to an anisotropic line

+ +
+
+ +

◆ CoMMAPairType

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + +
using comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>
+
+ +

Type of pair.

+ +
+
+ +

◆ CoMMASetOfPairType

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + +
using comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
+
+ +

Type of set of pairs.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Agglomerator_Anisotropic()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Agglomerator_Anisotropic (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph,
std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph,
std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool,
const CoMMAWeightType threshold_anisotropy,
const std::vector< CoMMAIndexType > & agglomerationLines_Idx,
const std::vector< CoMMAIndexType > & agglomerationLines,
const std::vector< CoMMAWeightType > & priority_weights,
const bool build_lines,
const bool odd_line_length,
CoMMAIntType dimension = 3 
)
+
+inline
+
+ +

Constructor.

+
Parameters
+ + + + + + + + + + + +
[in]graphDual_Graph object that determines the connectivity of the matrix
[in]cc_graphContainer for the coarse cells
[in]seeds_poolSeeds_Pool object giving the order in which the fine cells should be considered when agglomerating
[in]agglomerationLines_IdxConnectivity for the agglomeration lines: each element points to a particular element in the vector agglomerationLines
[in]agglomerationLinesVector storing all the elements of the anisotropic lines
[in]threshold_anisotropyValue of the aspect-ratio above which a cell is considered as anisotropic
[in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
[in]build_linesWhether lines joining the anisotropic cells should be built
[in]odd_line_lengthWhether anisotropic lines with odd length are allowed
[in]dimensionDimension of the problem
+
+
+ +
+
+ +

◆ ~Agglomerator_Anisotropic()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + +
comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Agglomerator_Anisotropic ()
+
+overridedefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ agglomerate_one_level()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::agglomerate_one_level (const CoMMAIntType goal_card,
const CoMMAIntType min_card,
const CoMMAIntType max_card,
const std::vector< CoMMAWeightType > & priority_weights,
bool correction_steps 
)
+
+inlineoverridevirtual
+
+ +

Specialization of the pure virtual function to the class Agglomerator_Anisotropic. We add the override key as a guard to possible mistakes: https://stackoverflow.com/questions/46446652/is-there-any-point-in-using-override-when-overriding-a-pure-virtual-function.

+
Parameters
+ + + + + + +
[in]goal_cardgoal cardinality of the coarse cell
[in]min_cardminimum cardinality of the coarse cell
[in]max_cardmaximum cardinality of the coarse cell
[in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
[in]correction_stepsit defines if corrections for the isotropic algorithm are activated or not, for anisotropic algorithm not taken into account.
+
+
+
Note
The input arguments are not used since the structure of the anisotropic agglomerator is fixed: cells belonging to the same anisotropic lines are agglomerated pairwise (by 3 on some rare occasions).
+ +

Implements comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

+ +
+
+ +

◆ build_anisotropic_lines()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::build_anisotropic_lines (const std::vector< CoMMAWeightType > & priority_weights,
const CoMMAWeightType threshold_anisotropy 
)
+
+inlineprotected
+
+ +

Build the anisotropic lines at the first level (only called at the first level of agglomeration). Two main steps are performed:

+
    +
  1. Tag anisotropic cells (via the dual graph)
  2. +
  3. Build anisotropic lines
  4. +
+
Parameters
+ + + +
[in]priority_weightsWeights used to set the order telling where to start
[in]threshold_anisotropyValue of the aspect-ratio above which a cell is
+
+
+
Returns
whether at least one line was built
+
Todo:
Not properly efficient. We risk to do twice the operations (we overwrite the seed). This is not proper
+ +
+
+ +

◆ export_anisotropic_lines()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::export_anisotropic_lines (CoMMAIntType level,
std::vector< CoMMAIndexType > & aniso_lines_idx,
std::vector< CoMMAIndexType > & aniso_lines 
) const
+
+inline
+
+ +

Function that prepares the anisotropic lines for output.

+
Parameters
+ + + + +
[in]levelof the agglomeration process into the Multigrid algorithm
[out]aniso_lines_idxConnectivity for the agglomeration lines: each element points to a particular element in the vector aniso_lines
[out]aniso_linesVector storing all the elements of the anisotropic lines
+
+
+ +
+
+ +

◆ update_seeds_pool()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + +
void comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update_seeds_pool ()
+
+inline
+
+ +

Update the seeds pool with the neighbours of the anisotropic cells agglomerated so far.

+ +
+
+

Member Data Documentation

+ +

◆ _aniso_neighbours

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + +
std::deque<CoMMAIndexType> comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_aniso_neighbours
+
+protected
+
+ +

Neighbours of the anisotropic cells agglomerated. They are used to update the seeds pool.

+ +
+
+ +

◆ _nb_lines

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + +
std::vector<CoMMAIndexType> comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_nb_lines
+
+ +

Vector of number of Anisotropic agglomeration lines per level.

+ +
+
+ +

◆ _odd_line_length

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + +
bool comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_odd_line_length
+
+protected
+
+ +

Whether anisotropic lines with odd length are allowed.

+ +
+
+ +

◆ _should_agglomerate

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + +
bool comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_should_agglomerate
+
+ +

Whether agglomeration is possible: for instance, if anisotropy requested but no anisotropic cells found, there is no actual need.

+ +
+
+ +

◆ _v_lines

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + +
std::vector<std::vector<AnisotropicLinePtr> > comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_v_lines
+
+ +

_v_lines : Agglomeration lines structure:

+
    +
  • vector : level
    +
  • +
  • forward list : identifier of the line
    +
  • +
  • deque : line cells
    +
  • +
  • e.g., _v_lines[0] --> agglomeration lines at the finest level
  • +
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classcomma_1_1_agglomerator___anisotropic.js b/classcomma_1_1_agglomerator___anisotropic.js new file mode 100644 index 0000000..d4a55d9 --- /dev/null +++ b/classcomma_1_1_agglomerator___anisotropic.js @@ -0,0 +1,18 @@ +var classcomma_1_1_agglomerator___anisotropic = +[ + [ "AnisotropicLine", "classcomma_1_1_agglomerator___anisotropic.html#a9479673f4208b7edd7c0b8884a06c4b7", null ], + [ "AnisotropicLinePtr", "classcomma_1_1_agglomerator___anisotropic.html#a9de6a86962a319a3cd058000fade94e0", null ], + [ "CoMMAPairType", "classcomma_1_1_agglomerator___anisotropic.html#a221bef52906b0fe45f9957ef52ac85d0", null ], + [ "CoMMASetOfPairType", "classcomma_1_1_agglomerator___anisotropic.html#a9f4297614846f54366d4561a6428fa4d", null ], + [ "Agglomerator_Anisotropic", "classcomma_1_1_agglomerator___anisotropic.html#a5c939c5706f8c9c47675e3df657568fb", null ], + [ "~Agglomerator_Anisotropic", "classcomma_1_1_agglomerator___anisotropic.html#aa9bfcf6f6403c97bff9c9bba8673a377", null ], + [ "agglomerate_one_level", "classcomma_1_1_agglomerator___anisotropic.html#a679ba0b3f517db87b18a0707d71a6432", null ], + [ "build_anisotropic_lines", "classcomma_1_1_agglomerator___anisotropic.html#a06284c8df3ba73d75790c1b703774b11", null ], + [ "export_anisotropic_lines", "classcomma_1_1_agglomerator___anisotropic.html#a117343c20ddb4b72d4c9084a89c3303a", null ], + [ "update_seeds_pool", "classcomma_1_1_agglomerator___anisotropic.html#a3ed52576f0b6698a69f388f295a2e1c5", null ], + [ "_aniso_neighbours", "classcomma_1_1_agglomerator___anisotropic.html#ac26aae66c211f11a2cbc0d56f3a0a3a4", null ], + [ "_nb_lines", "classcomma_1_1_agglomerator___anisotropic.html#af3090efb008f7fd601afcad457be5294", null ], + [ "_odd_line_length", "classcomma_1_1_agglomerator___anisotropic.html#a231b51e38cfd45989b02fb7ea383e6a9", null ], + [ "_should_agglomerate", "classcomma_1_1_agglomerator___anisotropic.html#a6f8e9378cb1709de43dedd5a1c3c6d5d", null ], + [ "_v_lines", "classcomma_1_1_agglomerator___anisotropic.html#aace7d0d96f2efb496df20b4f221d7872", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_agglomerator___anisotropic.png b/classcomma_1_1_agglomerator___anisotropic.png new file mode 100644 index 0000000..8fae785 Binary files /dev/null and b/classcomma_1_1_agglomerator___anisotropic.png differ diff --git a/classcomma_1_1_agglomerator___biconnected-members.html b/classcomma_1_1_agglomerator___biconnected-members.html new file mode 100644 index 0000000..19588a0 --- /dev/null +++ b/classcomma_1_1_agglomerator___biconnected-members.html @@ -0,0 +1,138 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
+
+
+ +

This is the complete list of members for comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_cc_graphcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_compute_ARcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_dimensioncomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_graphcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_itercomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_goal_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_nb_of_cellscomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_max_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_neighbourhoodcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_neigh_crtorcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_seeds_poolcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_threshold_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps) overridecomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
Agglomerator(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Biconnected(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Isotropic(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
choose_optimal_cc_and_update_seeds_pool(const CoMMAIndexType seed, const std::vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness) overridecomma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
compute_best_fc_to_add(const CoMMAIntType fc_iter, const std::shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const std::unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const std::unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) constcomma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
compute_next_cc_features(const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const std::unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) constcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
estimate_boundary_face(const std::vector< CoMMAWeightType > &int_faces) constcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_fc_2_cc() constcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
NeighbourhoodCreatorBaseType typedefcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodCreatorExtType typedefcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodCreatorPFType typedefcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
set_agglomeration_parameter(CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Agglomerator()=defaultcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Agglomerator_Biconnected() override=defaultcomma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
~Agglomerator_Isotropic() override=defaultcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
+
+ + + + diff --git a/classcomma_1_1_agglomerator___biconnected.html b/classcomma_1_1_agglomerator___biconnected.html new file mode 100644 index 0000000..71a5221 --- /dev/null +++ b/classcomma_1_1_agglomerator___biconnected.html @@ -0,0 +1,526 @@ + + + + + + + +CoMMA: comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
+
+
+ +

Child class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the agglomeration. We call it biconnected case, but it is the greedy algorithm in reality. + More...

+ +

#include <Agglomerator.h>

+
+Inheritance diagram for comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
+
+
+ + +comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Agglomerator_Biconnected (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
 Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Isotropic. More...
 
 ~Agglomerator_Biconnected () override=default
 Destructor. More...
 
std::unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed, const std::vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness) override
 Specialization of the pure virtual function in the parent class, to be used in couple with the agglomerate_one_level of the Agglomerator_Isotropic. More...
 
virtual void compute_best_fc_to_add (const CoMMAIntType fc_iter, const std::shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const std::unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const std::unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) const
 Computes the best fine cell to add to the coarse cell. The choice depends on: the number of shared faces (tries to maximize it), the neighbourhood order (tries to minimize it), and the aspect-ratio of the coarse cell (tries to minimize it). More...
 
- Public Member Functions inherited from comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator_Isotropic (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
 Constructor. The constructor takes as arguments the same arguments of the father and in this way activates also the constructor of the base class. More...
 
 ~Agglomerator_Isotropic () override=default
 Destructor. More...
 
void set_agglomeration_parameter (CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)
 The task of the function is to set the parameters of determine the cardinality limits with respect to the parameters passed. More...
 
void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
 Specialization of the pure virtual function to the class Agglomerator_Isotropic. We add the override key as a guard to possible mistakes: https://stackoverflow.com/questions/46446652/is-there-any-point-in-using-override-when-overriding-a-pure-virtual-function
+ The function calls function choose_optimal_cc_and_update_seeds_pool of the derived class. For further information about the structure, have a look at: http://www.cplusplus.com/forum/general/31851/
+ The pseudo-code considers the while function and the agglomeration process is not completed until all the cells are not agglomerated. Hence, while there are still non agglomerate fine cells, repeat the following steps: More...
 
CoMMAWeightType estimate_boundary_face (const std::vector< CoMMAWeightType > &int_faces) const
 Approximate the value of a boundary face using the known internal faces. It uses a (geometric) average, so the result is correct only if the cell is a regular polygon. More...
 
void compute_next_cc_features (const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const std::unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) const
 Computes features of the CC obtained by adding a given fine cell. The features are Aspect-Ratio and number of face shared with other cells already agglomerated (Current coarse cell means without i_fc) More...
 
virtual std::unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed, const std::vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness)=0
 Pure virtual function that must be implemented in child classes to define the optimal coarse cell. More...
 
- Public Member Functions inherited from comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)
 The constructor of the interface. More...
 
virtual ~Agglomerator ()=default
 The destructor of the class. More...
 
std::vector< CoMMAIndexType > get_fc_2_cc () const
 Accessor to retrieve the fine cells to coarse cells from the coarse cell graphs class. More...
 
virtual void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0
 Pure virtual function which implementation is specified in the related child classes and that defines the agglomeration of one level. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
using NeighbourhoodCreatorBaseType = NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodCreator type (base class) More...
 
using NeighbourhoodCreatorExtType = NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodExtendedCreator type (derived class) More...
 
using NeighbourhoodCreatorPFType = NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodPureFrontCreator type (derived class) More...
 
- Public Attributes inherited from comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIntType _fc_iter
 Number of iterations allowed for the algorithm choosing which fine cell to add next. More...
 
std::shared_ptr< NeighbourhoodCreatorBaseType_neigh_crtor
 Creator responsible for neighborhood objects. More...
 
- Public Attributes inherited from comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
std::function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
 Function which computes the aspect-ratio from a diameter and a volume
+ In 3D: $ AR = \frac{diam_{CC}}{\sqrt{vol_{CC}}} $
+ In 2D: $ AR = \frac{diam_{CC}}{\sqrt[3]{vol_{CC}}} $
+ (Recall that in 2D the volume is the surface) More...
 
- Protected Attributes inherited from comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIntType _dimension
 Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D) More...
 
CoMMAIntType _min_neighbourhood = 3
 Minimum number of neighbourhood we extend to search the neighbourhood in the greedy algorithm. Set as default to 3. More...
 
CoMMAIntType _min_card = 0
 Minimum cardinality (default = 0, meaning, equal to the dimension) More...
 
CoMMAIntType _max_card = 0
 Maximum cardinality (default = 0, meaning, 5 or 10 for, resp., 2- and 3D. More...
 
CoMMAIntType _goal_card = 0
 Goal cardinality (default = 0, meaning, 4 or 8 for, resp., 2- and 3D. More...
 
CoMMAIntType _threshold_card = 0
 Threshold cardinality (default = 0, meaning, equal to the dimension) More...
 
std::vector< CoMMAIndexType > _l_nb_of_cells
 List of number of cells per coarse cell created. More...
 
std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _fc_graph
 Dual_Graph object determining Fine cells graph and hence the connectivity. More...
 
std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _cc_graph
 pointer to Coarse_Cell_Container element More...
 
std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _seeds_pool
 Seeds_Pool object giving the order in which the fine cells should be considered when agglomerating. More...
 
+

Detailed Description

+
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
+class comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Child class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the agglomeration. We call it biconnected case, but it is the greedy algorithm in reality.

+
Template Parameters
+ + + + +
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
+
+
+

Constructor & Destructor Documentation

+ +

◆ Agglomerator_Biconnected()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Agglomerator_Biconnected (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph,
std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph,
std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool,
CoMMAIntType neighbourhood_type,
CoMMAIntType fc_iter,
CoMMAIntType dimension = 3 
)
+
+inline
+
+ +

Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Isotropic.

+
Parameters
+ + + + + + + +
[in]graphDual_Graph object that determines the connectivity of the matrix
[in]cc_graphContainer for the coarse cells
[in]seeds_poolSeeds_Pool object giving the order in which the fine cells should be considered when agglomerating
[in]neighbourhood_typeType of neighbourhood to use when growing a coarse cell. See CoMMANeighbourhoodT for more details.
[in]fc_iterNumber of iterations allowed for the algorithm choosing which fine cell to add next. The cost grows exponentially, hence use small values.
[in]dimensionDimension of the problem
+
+
+ +
+
+ +

◆ ~Agglomerator_Biconnected()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + +
comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Agglomerator_Biconnected ()
+
+overridedefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ choose_optimal_cc_and_update_seeds_pool()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::unordered_set< CoMMAIndexType > comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed,
const std::vector< CoMMAWeightType > & priority_weights,
CoMMAIntType & compactness 
)
+
+inlineoverridevirtual
+
+ +

Specialization of the pure virtual function in the parent class, to be used in couple with the agglomerate_one_level of the Agglomerator_Isotropic.

+
Parameters
+ + + + +
[in]seedCell from which the agglomeration of the CC starts
[in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
[out]compactnessCompactness of the final CC, that is, the minimum number of neighbours of a fine cell inside a coarse cell
+
+
+
Returns
the (unordered) set of the fine cells composing the coarse cell
+ +

Implements comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

+ +
+
+ +

◆ compute_best_fc_to_add()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::compute_best_fc_to_add (const CoMMAIntType fc_iter,
const std::shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood,
const std::unordered_map< CoMMAIndexType, CoMMAIntType > & d_n_of_seed,
const bool & is_order_primary,
const CoMMAWeightType & diam_cc,
const CoMMAWeightType & vol_cc,
const std::unordered_set< CoMMAIndexType > & s_of_fc_for_current_cc,
CoMMAIndexType & argmin_ar,
CoMMAIntType & max_faces_in_common,
CoMMAWeightType & min_ar_diam,
CoMMAWeightType & min_ar_vol 
) const
+
+inlinevirtual
+
+ +

Computes the best fine cell to add to the coarse cell. The choice depends on: the number of shared faces (tries to maximize it), the neighbourhood order (tries to minimize it), and the aspect-ratio of the coarse cell (tries to minimize it).

+
Parameters
+ + + + + + + + + + + + +
[in]fc_iter(Unused) Number of iteration for the fine cell research algorithm
[in]neighbourhoodNeighborhood object
[in]d_n_of_seedDictionary containing the cells to consider for the agglomeration with their neighbourhood order wrt to the original seed
[in]is_order_primaryIf true, the neighbourhood order prevails on other criteria
[in]diam_cc(Approximation of the) Diameter of the current coarse cell
[in]vol_ccVolume of the current coarse cell
[in]s_of_fc_for_current_ccIndices of the fine cells already agglomerated in the coarse cell
[out]argmin_arIndex wrt to neighbours vector of the chosen fine cell
[out]max_faces_in_commonNumber of faces shared between the chosen fine cell and the coarse cell
[out]min_ar_diam(Approximation of the) Diameter of the coarse cell after the addition of the chosen fine cell
[out]min_ar_volVolume of the coarse cell after the addition of the chosen fine cell
+
+
+ +

Reimplemented in comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classcomma_1_1_agglomerator___biconnected.js b/classcomma_1_1_agglomerator___biconnected.js new file mode 100644 index 0000000..acd174e --- /dev/null +++ b/classcomma_1_1_agglomerator___biconnected.js @@ -0,0 +1,7 @@ +var classcomma_1_1_agglomerator___biconnected = +[ + [ "Agglomerator_Biconnected", "classcomma_1_1_agglomerator___biconnected.html#a4553e29aeae7a83000d10e48564e6cca", null ], + [ "~Agglomerator_Biconnected", "classcomma_1_1_agglomerator___biconnected.html#a1e429e7e1e8cca0447b7322a4636ca1b", null ], + [ "choose_optimal_cc_and_update_seeds_pool", "classcomma_1_1_agglomerator___biconnected.html#a3bb82fadd4a4ddd13581102df1491d08", null ], + [ "compute_best_fc_to_add", "classcomma_1_1_agglomerator___biconnected.html#aae1d6469c6921e306a3fa054d076bf0f", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_agglomerator___biconnected.png b/classcomma_1_1_agglomerator___biconnected.png new file mode 100644 index 0000000..9c05142 Binary files /dev/null and b/classcomma_1_1_agglomerator___biconnected.png differ diff --git a/classcomma_1_1_agglomerator___isotropic-members.html b/classcomma_1_1_agglomerator___isotropic-members.html new file mode 100644 index 0000000..58af72d --- /dev/null +++ b/classcomma_1_1_agglomerator___isotropic-members.html @@ -0,0 +1,135 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
+
+
+ +

This is the complete list of members for comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
_cc_graphcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_compute_ARcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_dimensioncomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_graphcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_itercomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_goal_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_nb_of_cellscomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_max_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_neighbourhoodcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_neigh_crtorcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_seeds_poolcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_threshold_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps) overridecomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
Agglomerator(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Isotropic(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
choose_optimal_cc_and_update_seeds_pool(const CoMMAIndexType seed, const std::vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness)=0comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
compute_next_cc_features(const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const std::unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) constcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
estimate_boundary_face(const std::vector< CoMMAWeightType > &int_faces) constcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_fc_2_cc() constcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
NeighbourhoodCreatorBaseType typedefcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodCreatorExtType typedefcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodCreatorPFType typedefcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
set_agglomeration_parameter(CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Agglomerator()=defaultcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Agglomerator_Isotropic() override=defaultcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
+
+ + + + diff --git a/classcomma_1_1_agglomerator___isotropic.html b/classcomma_1_1_agglomerator___isotropic.html new file mode 100644 index 0000000..0d9c8b1 --- /dev/null +++ b/classcomma_1_1_agglomerator___isotropic.html @@ -0,0 +1,758 @@ + + + + + + + +CoMMA: comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Referenceabstract
+
+
+ +

Agglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Isotropic agglomeration. + More...

+ +

#include <Agglomerator.h>

+
+Inheritance diagram for comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
+
+
+ + +comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
+ + + + + + + + + + + +

+Public Types

using NeighbourhoodCreatorBaseType = NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodCreator type (base class) More...
 
using NeighbourhoodCreatorExtType = NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodExtendedCreator type (derived class) More...
 
using NeighbourhoodCreatorPFType = NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodPureFrontCreator type (derived class) More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Agglomerator_Isotropic (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
 Constructor. The constructor takes as arguments the same arguments of the father and in this way activates also the constructor of the base class. More...
 
 ~Agglomerator_Isotropic () override=default
 Destructor. More...
 
void set_agglomeration_parameter (CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)
 The task of the function is to set the parameters of determine the cardinality limits with respect to the parameters passed. More...
 
void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
 Specialization of the pure virtual function to the class Agglomerator_Isotropic. We add the override key as a guard to possible mistakes: https://stackoverflow.com/questions/46446652/is-there-any-point-in-using-override-when-overriding-a-pure-virtual-function
+ The function calls function choose_optimal_cc_and_update_seeds_pool of the derived class. For further information about the structure, have a look at: http://www.cplusplus.com/forum/general/31851/
+ The pseudo-code considers the while function and the agglomeration process is not completed until all the cells are not agglomerated. Hence, while there are still non agglomerate fine cells, repeat the following steps: More...
 
CoMMAWeightType estimate_boundary_face (const std::vector< CoMMAWeightType > &int_faces) const
 Approximate the value of a boundary face using the known internal faces. It uses a (geometric) average, so the result is correct only if the cell is a regular polygon. More...
 
void compute_next_cc_features (const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const std::unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) const
 Computes features of the CC obtained by adding a given fine cell. The features are Aspect-Ratio and number of face shared with other cells already agglomerated (Current coarse cell means without i_fc) More...
 
virtual std::unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed, const std::vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness)=0
 Pure virtual function that must be implemented in child classes to define the optimal coarse cell. More...
 
- Public Member Functions inherited from comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)
 The constructor of the interface. More...
 
virtual ~Agglomerator ()=default
 The destructor of the class. More...
 
std::vector< CoMMAIndexType > get_fc_2_cc () const
 Accessor to retrieve the fine cells to coarse cells from the coarse cell graphs class. More...
 
virtual void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0
 Pure virtual function which implementation is specified in the related child classes and that defines the agglomeration of one level. More...
 
+ + + + + + + + + + + +

+Public Attributes

CoMMAIntType _fc_iter
 Number of iterations allowed for the algorithm choosing which fine cell to add next. More...
 
std::shared_ptr< NeighbourhoodCreatorBaseType_neigh_crtor
 Creator responsible for neighborhood objects. More...
 
- Public Attributes inherited from comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
std::function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
 Function which computes the aspect-ratio from a diameter and a volume
+ In 3D: $ AR = \frac{diam_{CC}}{\sqrt{vol_{CC}}} $
+ In 2D: $ AR = \frac{diam_{CC}}{\sqrt[3]{vol_{CC}}} $
+ (Recall that in 2D the volume is the surface) More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIntType _dimension
 Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D) More...
 
CoMMAIntType _min_neighbourhood = 3
 Minimum number of neighbourhood we extend to search the neighbourhood in the greedy algorithm. Set as default to 3. More...
 
CoMMAIntType _min_card = 0
 Minimum cardinality (default = 0, meaning, equal to the dimension) More...
 
CoMMAIntType _max_card = 0
 Maximum cardinality (default = 0, meaning, 5 or 10 for, resp., 2- and 3D. More...
 
CoMMAIntType _goal_card = 0
 Goal cardinality (default = 0, meaning, 4 or 8 for, resp., 2- and 3D. More...
 
CoMMAIntType _threshold_card = 0
 Threshold cardinality (default = 0, meaning, equal to the dimension) More...
 
std::vector< CoMMAIndexType > _l_nb_of_cells
 List of number of cells per coarse cell created. More...
 
std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _fc_graph
 Dual_Graph object determining Fine cells graph and hence the connectivity. More...
 
std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _cc_graph
 pointer to Coarse_Cell_Container element More...
 
std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _seeds_pool
 Seeds_Pool object giving the order in which the fine cells should be considered when agglomerating. More...
 
+

Detailed Description

+
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
+class comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Agglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Isotropic agglomeration.

+
Template Parameters
+ + + + +
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
+
+
+

Member Typedef Documentation

+ +

◆ NeighbourhoodCreatorBaseType

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + +
using comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodCreatorBaseType = NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
+
+ +

NeighbourhoodCreator type (base class)

+ +
+
+ +

◆ NeighbourhoodCreatorExtType

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + +
using comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodCreatorExtType = NeighbourhoodExtendedCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
+
+ +

NeighbourhoodExtendedCreator type (derived class)

+ +
+
+ +

◆ NeighbourhoodCreatorPFType

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + +
using comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodCreatorPFType = NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
+
+ +

NeighbourhoodPureFrontCreator type (derived class)

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Agglomerator_Isotropic()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Agglomerator_Isotropic (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph,
std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph,
std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool,
CoMMAIntType neighbourhood_type,
CoMMAIntType fc_iter,
CoMMAIntType dimension = 3 
)
+
+inline
+
+ +

Constructor. The constructor takes as arguments the same arguments of the father and in this way activates also the constructor of the base class.

+
Parameters
+ + + + + + + +
[in]graphDual_Graph object that determines the connectivity of the matrix
[in]cc_graphContainer for the coarse cells
[in]seeds_poolSeeds_Pool object giving the order in which the fine cells should be considered when agglomerating
[in]neighbourhood_typeType of neighbourhood to use when growing a coarse cell. See CoMMANeighbourhoodT for more details.
[in]fc_iterNumber of iterations allowed for the algorithm choosing which fine cell to add next. The cost grows exponentially, hence use small values.
[in]dimensionDimension of the problem
+
+
+ +
+
+ +

◆ ~Agglomerator_Isotropic()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + +
comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Agglomerator_Isotropic ()
+
+overridedefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ agglomerate_one_level()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::agglomerate_one_level (const CoMMAIntType goal_card,
const CoMMAIntType min_card,
const CoMMAIntType max_card,
const std::vector< CoMMAWeightType > & priority_weights,
bool correction_steps 
)
+
+inlineoverridevirtual
+
+ +

Specialization of the pure virtual function to the class Agglomerator_Isotropic. We add the override key as a guard to possible mistakes: https://stackoverflow.com/questions/46446652/is-there-any-point-in-using-override-when-overriding-a-pure-virtual-function
+ The function calls function choose_optimal_cc_and_update_seeds_pool of the derived class. For further information about the structure, have a look at: http://www.cplusplus.com/forum/general/31851/
+ The pseudo-code considers the while function and the agglomeration process is not completed until all the cells are not agglomerated. Hence, while there are still non agglomerate fine cells, repeat the following steps:

+
    +
  1. Choose a new seed
  2. +
  3. Check with a specific algorithm the neighbouring cells to agglomerate to the seed
  4. +
  5. Create a new coarse cell (using the apposite method in cc_graph)
    Parameters
    + + + + + + +
    [in]goal_cardgoal cardinality of the coarse cell
    [in]min_cardminimum cardinality of the coarse cell
    [in]max_cardmaximum cardinality of the coarse cell
    [in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
    [in]correction_stepsit defines if corrections for the isotropic algorithm are activated or not, for anisotropic algorithm not taken into account.
    +
    +
    +
  6. +
+ +

Implements comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

+ +
+
+ +

◆ choose_optimal_cc_and_update_seeds_pool()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::unordered_set< CoMMAIndexType > comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed,
const std::vector< CoMMAWeightType > & priority_weights,
CoMMAIntType & compactness 
)
+
+pure virtual
+
+ +

Pure virtual function that must be implemented in child classes to define the optimal coarse cell.

+
Parameters
+ + + + +
[in]seedCell from which the agglomeration of the CC starts
[in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
[out]compactnessCompactness of the final CC, that is, the minimum number of neighbours of a fine cell inside a coarse cell
+
+
+
Returns
the (unordered) set of the fine cells composing the coarse cell
+ +

Implemented in comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

+ +
+
+ +

◆ compute_next_cc_features()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::compute_next_cc_features (const CoMMAIndexType i_fc,
const CoMMAWeightType cc_diam,
const CoMMAWeightType cc_vol,
const std::unordered_set< CoMMAIndexType > & fc_of_cc,
CoMMAIntType & shared_faces,
CoMMAWeightType & aspect_ratio,
CoMMAWeightType & new_diam,
CoMMAWeightType & new_vol 
) const
+
+inline
+
+ +

Computes features of the CC obtained by adding a given fine cell. The features are Aspect-Ratio and number of face shared with other cells already agglomerated (Current coarse cell means without i_fc)

+
Parameters
+ + + + + + + + + +
[in]i_fcIndex of the fine cell to add to the coarse cell
[in]cc_diam(Approximation of the) Diameter of the current coarse cell
[in]cc_volVolume of the current coarse cell
[in]fc_of_ccIndex of the fine cells already agglomerated in the coarse cell
[out]shared_facesNumber of faces shared by the fine cell with the current coarse cell
[out]aspect_ratioAspect-Ratio of the (final) coarse cell
[out]new_diam(Approximation of the) Diameter of the (final) coarse cell
[out]new_volVolume of the (final) coarse cell
+
+
+ +
+
+ +

◆ estimate_boundary_face()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + +
CoMMAWeightType comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::estimate_boundary_face (const std::vector< CoMMAWeightType > & int_faces) const
+
+inline
+
+ +

Approximate the value of a boundary face using the known internal faces. It uses a (geometric) average, so the result is correct only if the cell is a regular polygon.

+
Parameters
+ + +
int_facesVector of the surfaces of the internal faces
+
+
+
Returns
An approximation of the surface of a boundary face
+ +
+
+ +

◆ set_agglomeration_parameter()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::set_agglomeration_parameter (CoMMAIntType goal_card = 0,
CoMMAIntType min_card = 0,
CoMMAIntType max_card = 0 
)
+
+inline
+
+ +

The task of the function is to set the parameters of determine the cardinality limits with respect to the parameters passed.

+
Parameters
+ + + + +
[in]goal_cardgoal cardinality of the coarse cell (set as default to 0 indicating in our case the maximum value)
[in]min_cardminimum cardinality of the coarse cell(set as default +to 0 indicating in our case the maximum value)
[in]max_cardmaximum cardinality of the coarse cell(set as default +to 0 indicating in our case the maximum value)
+
+
+ +
+
+

Member Data Documentation

+ +

◆ _fc_iter

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + +
CoMMAIntType comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_fc_iter
+
+ +

Number of iterations allowed for the algorithm choosing which fine cell to add next.

+ +
+
+ +

◆ _neigh_crtor

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + +
std::shared_ptr<NeighbourhoodCreatorBaseType> comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_neigh_crtor
+
+ +

Creator responsible for neighborhood objects.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classcomma_1_1_agglomerator___isotropic.js b/classcomma_1_1_agglomerator___isotropic.js new file mode 100644 index 0000000..89a92e3 --- /dev/null +++ b/classcomma_1_1_agglomerator___isotropic.js @@ -0,0 +1,15 @@ +var classcomma_1_1_agglomerator___isotropic = +[ + [ "NeighbourhoodCreatorBaseType", "classcomma_1_1_agglomerator___isotropic.html#a88a36f50abb4794a7bfe1ce8caef5736", null ], + [ "NeighbourhoodCreatorExtType", "classcomma_1_1_agglomerator___isotropic.html#a73cb23502dc4cf7ae54bccfaa2f42e4a", null ], + [ "NeighbourhoodCreatorPFType", "classcomma_1_1_agglomerator___isotropic.html#ae94e68908b4b05b376d7429d6e6c85b7", null ], + [ "Agglomerator_Isotropic", "classcomma_1_1_agglomerator___isotropic.html#a8d0b6d4158f367ac301e93bbe29d0970", null ], + [ "~Agglomerator_Isotropic", "classcomma_1_1_agglomerator___isotropic.html#aa254625482275446b207051f544fd92f", null ], + [ "agglomerate_one_level", "classcomma_1_1_agglomerator___isotropic.html#a7690b334b4f4d143d5edef7e015226c5", null ], + [ "choose_optimal_cc_and_update_seeds_pool", "classcomma_1_1_agglomerator___isotropic.html#a471fd42799365932adaf4a0123834700", null ], + [ "compute_next_cc_features", "classcomma_1_1_agglomerator___isotropic.html#a8eeb2f4079e010af97f6018ea48d70da", null ], + [ "estimate_boundary_face", "classcomma_1_1_agglomerator___isotropic.html#a4b6bec13ab0d5a563d0c7f2095186141", null ], + [ "set_agglomeration_parameter", "classcomma_1_1_agglomerator___isotropic.html#a674697dbdd54e42b6f8a37e60e5874b1", null ], + [ "_fc_iter", "classcomma_1_1_agglomerator___isotropic.html#a5d71e7a65e072879cdf53c3ebd29b655", null ], + [ "_neigh_crtor", "classcomma_1_1_agglomerator___isotropic.html#a5c6f7d604d05f97dcf8c61ace4e49aef", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_agglomerator___isotropic.png b/classcomma_1_1_agglomerator___isotropic.png new file mode 100644 index 0000000..55f77de Binary files /dev/null and b/classcomma_1_1_agglomerator___isotropic.png differ diff --git a/classcomma_1_1_agglomerator___iterative-members.html b/classcomma_1_1_agglomerator___iterative-members.html new file mode 100644 index 0000000..9890e6a --- /dev/null +++ b/classcomma_1_1_agglomerator___iterative-members.html @@ -0,0 +1,140 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
+
+
+ +

This is the complete list of members for comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_cc_graphcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_compute_ARcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_dimensioncomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_graphcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_fc_itercomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_goal_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_l_nb_of_cellscomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_max_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_min_neighbourhoodcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_neigh_crtorcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
_seeds_poolcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
_threshold_cardcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps) overridecomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
Agglomerator(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Biconnected(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Isotropic(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
Agglomerator_Iterative(std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
choose_optimal_cc_and_update_seeds_pool(const CoMMAIndexType seed, const std::vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness) overridecomma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
compute_best_fc_to_add(const CoMMAIntType fc_iter, const std::shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const std::unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const std::unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) const overridecomma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
compute_next_cc_features(const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const std::unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) constcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
estimate_boundary_face(const std::vector< CoMMAWeightType > &int_faces) constcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
get_fc_2_cc() constcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
NeighbourhoodCreatorBaseType typedefcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodCreatorExtType typedefcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
NeighbourhoodCreatorPFType typedefcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
set_agglomeration_parameter(CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
~Agglomerator()=defaultcomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
~Agglomerator_Biconnected() override=defaultcomma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
~Agglomerator_Isotropic() override=defaultcomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
~Agglomerator_Iterative() override=defaultcomma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
+
+ + + + diff --git a/classcomma_1_1_agglomerator___iterative.html b/classcomma_1_1_agglomerator___iterative.html new file mode 100644 index 0000000..3f344e8 --- /dev/null +++ b/classcomma_1_1_agglomerator___iterative.html @@ -0,0 +1,479 @@ + + + + + + + +CoMMA: comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
+
+
+ +

Child class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the search of fine cells. + More...

+ +

#include <Agglomerator.h>

+
+Inheritance diagram for comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
+
+
+ + +comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Agglomerator_Iterative (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
 Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Biconnected. More...
 
 ~Agglomerator_Iterative () override=default
 Destructor. More...
 
void compute_best_fc_to_add (const CoMMAIntType fc_iter, const std::shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const std::unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const std::unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) const override
 Specialization of the parent function. This is an iterative version. Computes the best fine cell to add to the coarse cell. The choice depends on: the number of shared faces (tries to maximize it), the neighbourhood order (tries to minimize it), and the aspect-ratio of the coarse cell (tries to minimize it). More...
 
- Public Member Functions inherited from comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator_Biconnected (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
 Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Isotropic. More...
 
 ~Agglomerator_Biconnected () override=default
 Destructor. More...
 
std::unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed, const std::vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness) override
 Specialization of the pure virtual function in the parent class, to be used in couple with the agglomerate_one_level of the Agglomerator_Isotropic. More...
 
virtual void compute_best_fc_to_add (const CoMMAIntType fc_iter, const std::shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood, const std::unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const bool &is_order_primary, const CoMMAWeightType &diam_cc, const CoMMAWeightType &vol_cc, const std::unordered_set< CoMMAIndexType > &s_of_fc_for_current_cc, CoMMAIndexType &argmin_ar, CoMMAIntType &max_faces_in_common, CoMMAWeightType &min_ar_diam, CoMMAWeightType &min_ar_vol) const
 Computes the best fine cell to add to the coarse cell. The choice depends on: the number of shared faces (tries to maximize it), the neighbourhood order (tries to minimize it), and the aspect-ratio of the coarse cell (tries to minimize it). More...
 
- Public Member Functions inherited from comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator_Isotropic (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType neighbourhood_type, CoMMAIntType fc_iter, CoMMAIntType dimension=3)
 Constructor. The constructor takes as arguments the same arguments of the father and in this way activates also the constructor of the base class. More...
 
 ~Agglomerator_Isotropic () override=default
 Destructor. More...
 
void set_agglomeration_parameter (CoMMAIntType goal_card=0, CoMMAIntType min_card=0, CoMMAIntType max_card=0)
 The task of the function is to set the parameters of determine the cardinality limits with respect to the parameters passed. More...
 
void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps) override
 Specialization of the pure virtual function to the class Agglomerator_Isotropic. We add the override key as a guard to possible mistakes: https://stackoverflow.com/questions/46446652/is-there-any-point-in-using-override-when-overriding-a-pure-virtual-function
+ The function calls function choose_optimal_cc_and_update_seeds_pool of the derived class. For further information about the structure, have a look at: http://www.cplusplus.com/forum/general/31851/
+ The pseudo-code considers the while function and the agglomeration process is not completed until all the cells are not agglomerated. Hence, while there are still non agglomerate fine cells, repeat the following steps: More...
 
CoMMAWeightType estimate_boundary_face (const std::vector< CoMMAWeightType > &int_faces) const
 Approximate the value of a boundary face using the known internal faces. It uses a (geometric) average, so the result is correct only if the cell is a regular polygon. More...
 
void compute_next_cc_features (const CoMMAIndexType i_fc, const CoMMAWeightType cc_diam, const CoMMAWeightType cc_vol, const std::unordered_set< CoMMAIndexType > &fc_of_cc, CoMMAIntType &shared_faces, CoMMAWeightType &aspect_ratio, CoMMAWeightType &new_diam, CoMMAWeightType &new_vol) const
 Computes features of the CC obtained by adding a given fine cell. The features are Aspect-Ratio and number of face shared with other cells already agglomerated (Current coarse cell means without i_fc) More...
 
virtual std::unordered_set< CoMMAIndexType > choose_optimal_cc_and_update_seeds_pool (const CoMMAIndexType seed, const std::vector< CoMMAWeightType > &priority_weights, CoMMAIntType &compactness)=0
 Pure virtual function that must be implemented in child classes to define the optimal coarse cell. More...
 
- Public Member Functions inherited from comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 Agglomerator (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph, std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph, std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool, CoMMAIntType dimension=3)
 The constructor of the interface. More...
 
virtual ~Agglomerator ()=default
 The destructor of the class. More...
 
std::vector< CoMMAIndexType > get_fc_2_cc () const
 Accessor to retrieve the fine cells to coarse cells from the coarse cell graphs class. More...
 
virtual void agglomerate_one_level (const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0
 Pure virtual function which implementation is specified in the related child classes and that defines the agglomeration of one level. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
using NeighbourhoodCreatorBaseType = NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodCreator type (base class) More...
 
using NeighbourhoodCreatorExtType = NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodExtendedCreator type (derived class) More...
 
using NeighbourhoodCreatorPFType = NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
 NeighbourhoodPureFrontCreator type (derived class) More...
 
- Public Attributes inherited from comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIntType _fc_iter
 Number of iterations allowed for the algorithm choosing which fine cell to add next. More...
 
std::shared_ptr< NeighbourhoodCreatorBaseType_neigh_crtor
 Creator responsible for neighborhood objects. More...
 
- Public Attributes inherited from comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
std::function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
 Function which computes the aspect-ratio from a diameter and a volume
+ In 3D: $ AR = \frac{diam_{CC}}{\sqrt{vol_{CC}}} $
+ In 2D: $ AR = \frac{diam_{CC}}{\sqrt[3]{vol_{CC}}} $
+ (Recall that in 2D the volume is the surface) More...
 
- Protected Attributes inherited from comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
CoMMAIntType _dimension
 Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D) More...
 
CoMMAIntType _min_neighbourhood = 3
 Minimum number of neighbourhood we extend to search the neighbourhood in the greedy algorithm. Set as default to 3. More...
 
CoMMAIntType _min_card = 0
 Minimum cardinality (default = 0, meaning, equal to the dimension) More...
 
CoMMAIntType _max_card = 0
 Maximum cardinality (default = 0, meaning, 5 or 10 for, resp., 2- and 3D. More...
 
CoMMAIntType _goal_card = 0
 Goal cardinality (default = 0, meaning, 4 or 8 for, resp., 2- and 3D. More...
 
CoMMAIntType _threshold_card = 0
 Threshold cardinality (default = 0, meaning, equal to the dimension) More...
 
std::vector< CoMMAIndexType > _l_nb_of_cells
 List of number of cells per coarse cell created. More...
 
std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _fc_graph
 Dual_Graph object determining Fine cells graph and hence the connectivity. More...
 
std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _cc_graph
 pointer to Coarse_Cell_Container element More...
 
std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _seeds_pool
 Seeds_Pool object giving the order in which the fine cells should be considered when agglomerating. More...
 
+

Detailed Description

+
template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
+class comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Child class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the search of fine cells.

+
Template Parameters
+ + + + +
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
CoMMAIntTypethe CoMMA type for integers
+
+
+

Constructor & Destructor Documentation

+ +

◆ Agglomerator_Iterative()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Agglomerator_Iterative (std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > graph,
std::shared_ptr< Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > cc_graph,
std::shared_ptr< Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > seeds_pool,
CoMMAIntType neighbourhood_type,
CoMMAIntType fc_iter,
CoMMAIntType dimension = 3 
)
+
+inline
+
+ +

Constructor of the class. No specific implementation, it instantiates the base class Agglomerator_Biconnected.

+
Parameters
+ + + + + + + +
[in]graphDual_Graph object that determines the connectivity of the matrix
[in]cc_graphContainer for the coarse cells
[in]seeds_poolSeeds_Pool object giving the order in which the fine cells should be considered when agglomerating
[in]neighbourhood_typeType of neighbourhood to use when growing a coarse cell. See CoMMANeighbourhoodT for more details.
[in]fc_iterNumber of iterations allowed for the algorithm choosing which fine cell to add next. The cost grows exponentially, hence use small values.
[in]dimensionDimension of the problem
+
+
+ +
+
+ +

◆ ~Agglomerator_Iterative()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + +
comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Agglomerator_Iterative ()
+
+overridedefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ compute_best_fc_to_add()

+ +
+
+
+template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::compute_best_fc_to_add (const CoMMAIntType fc_iter,
const std::shared_ptr< Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > neighbourhood,
const std::unordered_map< CoMMAIndexType, CoMMAIntType > & d_n_of_seed,
const bool & is_order_primary,
const CoMMAWeightType & diam_cc,
const CoMMAWeightType & vol_cc,
const std::unordered_set< CoMMAIndexType > & s_of_fc_for_current_cc,
CoMMAIndexType & argmin_ar,
CoMMAIntType & max_faces_in_common,
CoMMAWeightType & min_ar_diam,
CoMMAWeightType & min_ar_vol 
) const
+
+inlineoverridevirtual
+
+ +

Specialization of the parent function. This is an iterative version. Computes the best fine cell to add to the coarse cell. The choice depends on: the number of shared faces (tries to maximize it), the neighbourhood order (tries to minimize it), and the aspect-ratio of the coarse cell (tries to minimize it).

+
Parameters
+ + + + + + + + + + + + +
[in]fc_iterNumber of iteration for the fine-cell research algorithm
[in]neighbourhoodNeighborhood object
[in]d_n_of_seedDictionary containing the cells to consider for the agglomeration with their neighbourhood order wrt to the original seed
[in]is_order_primaryIf true, the neighbourhood order prevails on other criteria
[in]diam_cc(Approximation of the) Diameter of the current coarse cell
[in]vol_ccVolume of the current coarse cell
[in]s_of_fc_for_current_ccIndices of the fine cells already agglomerated in the coarse cell
[out]argmin_arIndex wrt to neighbours vector of the chosen fine cell
[out]max_faces_in_commonNumber of faces shared between the chosen fine cell and the coarse cell
[out]min_ar_diam(Approximation of the) Diameter of the coarse cell after the addition of the chosen fine cell
[out]min_ar_volVolume of the coarse cell after the addition of the chosen fine cell
+
+
+ +

Reimplemented from comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classcomma_1_1_agglomerator___iterative.js b/classcomma_1_1_agglomerator___iterative.js new file mode 100644 index 0000000..c2988be --- /dev/null +++ b/classcomma_1_1_agglomerator___iterative.js @@ -0,0 +1,6 @@ +var classcomma_1_1_agglomerator___iterative = +[ + [ "Agglomerator_Iterative", "classcomma_1_1_agglomerator___iterative.html#ab6fe2d081288e81892bb0c251fcb2f47", null ], + [ "~Agglomerator_Iterative", "classcomma_1_1_agglomerator___iterative.html#a5e67fbff68bf868258ebdf1637a83ab6", null ], + [ "compute_best_fc_to_add", "classcomma_1_1_agglomerator___iterative.html#adb49da3aaabcb93c3ece598600cb21b9", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_agglomerator___iterative.png b/classcomma_1_1_agglomerator___iterative.png new file mode 100644 index 0000000..455f08e Binary files /dev/null and b/classcomma_1_1_agglomerator___iterative.png differ diff --git a/classcomma_1_1_bimap-members.html b/classcomma_1_1_bimap-members.html new file mode 100644 index 0000000..d504b5b --- /dev/null +++ b/classcomma_1_1_bimap-members.html @@ -0,0 +1,122 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
comma::Bimap< A, B > Member List
+
+
+ +

This is the complete list of members for comma::Bimap< A, B >, including all inherited members.

+ + + + + + + + + + + + + + +
_mapAcomma::Bimap< A, B >protected
_mapBcomma::Bimap< A, B >protected
Bimap()=defaultcomma::Bimap< A, B >
empty()comma::Bimap< A, B >inline
erase_B(const A &a)comma::Bimap< A, B >inline
get_A(const B &b)comma::Bimap< A, B >inline
get_B(const A &a)comma::Bimap< A, B >inline
insert(const A &a, const B &b)comma::Bimap< A, B >inline
lung()comma::Bimap< A, B >inline
print()comma::Bimap< A, B >inline
update_nodeA(const B &b_old, const B &b_new)comma::Bimap< A, B >inline
update_nodeB(const A &a_old, const A &a_new)comma::Bimap< A, B >inline
~Bimap()=defaultcomma::Bimap< A, B >
+
+ + + + diff --git a/class_bimap.html b/classcomma_1_1_bimap.html similarity index 58% rename from class_bimap.html rename to classcomma_1_1_bimap.html index ea475bc..54e7f5b 100644 --- a/class_bimap.html +++ b/classcomma_1_1_bimap.html @@ -5,7 +5,7 @@ -CoMMA: Bimap< A, B > Class Template Reference +CoMMA: comma::Bimap< A, B > Class Template Reference @@ -65,7 +65,7 @@

@@ -94,68 +94,68 @@ -
Bimap< A, B > Class Template Reference
+List of all members
+
comma::Bimap< A, B > Class Template Reference
-

An easy and straight forward implementation of a Bimap. - More...

+

An easy and straight forward implementation of a Bimap. + More...

#include <Bimap.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 Bimap ()
 Constructor. More...
 
 ~Bimap ()
 Destructor. More...
 
void insert (const A &a, const B &b)
 Insertion function in the Bimap. More...
 
void print ()
 Function to print the map. More...
 
void update_nodeB (const A &a_old, const A &a_new)
 Update of the key of the map B and hence the value of the node A. More...
 
void update_nodeA (const B &b_old, const B &b_new)
 Update of the key of the map A and hence the value of the node B. More...
 
get_B (const A &a)
 Getter of the B value starting from a A value. More...
 
get_A (const B &b)
 Getter of the A value starting from a B value. More...
 
void erase_B (const A &a)
 Eraser of the value starting from a A value. More...
 
bool empty ()
 Check if the Bimap is empty. More...
 
size_t lung ()
 Returns the size of the container. More...
 
 Bimap ()=default
 Constructor. More...
 
 ~Bimap ()=default
 Destructor. More...
 
void insert (const A &a, const B &b)
 Insertion function in the Bimap. More...
 
void print ()
 Function to print the map. More...
 
void update_nodeB (const A &a_old, const A &a_new)
 Update of the key of the map B and hence the value of the node A. More...
 
void update_nodeA (const B &b_old, const B &b_new)
 Update of the key of the map A and hence the value of the node B. More...
 
get_B (const A &a)
 Getter of the B value starting from a A value. More...
 
get_A (const B &b)
 Getter of the A value starting from a B value. More...
 
void erase_B (const A &a)
 Eraser of the value starting from a A value. More...
 
bool empty ()
 Check if the Bimap is empty. More...
 
size_t lung ()
 Returns the size of the container. More...
 
- - - - - - + + + + + +

Protected Attributes

map< B, const A * > _mapA
 Left map
- More...
 
map< A, const B * > _mapB
 Right map. More...
 
std::map< B, const A * > _mapA
 Left map
+ More...
 
std::map< A, const B * > _mapB
 Right map. More...
 

Detailed Description

template<typename A, typename B>
-class Bimap< A, B >

An easy and straight forward implementation of a Bimap.

+class comma::Bimap< A, B >

An easy and straight forward implementation of a Bimap.

Constructor & Destructor Documentation

- -

◆ Bimap()

+ +

◆ Bimap()

@@ -183,8 +183,8 @@

-

◆ ~Bimap()

+ +

◆ ~Bimap()

@@ -213,8 +213,8 @@

Member Function Documentation

- -

◆ empty()

+ +

◆ empty()

@@ -225,7 +225,7 @@

- + @@ -238,13 +238,13 @@

-

Check if the Bimap is empty.

-
Returns
a boolan
+

Check if the Bimap is empty.

+
Returns
a boolean
- -

◆ erase_B()

+ +

◆ erase_B()

@@ -255,7 +255,7 @@

bool Bimap< A, B >::empty bool comma::Bimap< A, B >::empty ( )
- + @@ -279,8 +279,8 @@

-

◆ get_A()

+ +

◆ get_A()

@@ -291,7 +291,7 @@

void Bimap< A, B >::erase_B void comma::Bimap< A, B >::erase_B ( const A &  a)
- + @@ -316,8 +316,8 @@

-

◆ get_B()

+ +

◆ get_B()

@@ -328,7 +328,7 @@

A Bimap< A, B >::get_A A comma::Bimap< A, B >::get_A ( const B &  b)
- + @@ -353,8 +353,8 @@

-

◆ insert()

+ +

◆ insert()

@@ -365,7 +365,7 @@

B Bimap< A, B >::get_B B comma::Bimap< A, B >::get_B ( const A &  a)
- + @@ -389,7 +389,7 @@

-

Insertion function in the Bimap.

+

Insertion function in the Bimap.

Parameters

void Bimap< A, B >::insert void comma::Bimap< A, B >::insert ( const A &  a,
@@ -400,8 +400,8 @@

-

◆ lung()

+ +

◆ lung()

@@ -412,7 +412,7 @@

[in]aelement A to add
- + @@ -430,8 +430,8 @@

-

◆ print()

+ +

◆ print()

@@ -442,7 +442,7 @@

size_t Bimap< A, B >::lung size_t comma::Bimap< A, B >::lung ( )
- + @@ -459,8 +459,8 @@

-

◆ update_nodeA()

+ +

◆ update_nodeA()

@@ -471,7 +471,7 @@

void Bimap< A, B >::print void comma::Bimap< A, B >::print ( )
- + @@ -506,8 +506,8 @@

-

◆ update_nodeB()

+ +

◆ update_nodeB()

@@ -518,7 +518,7 @@

void Bimap< A, B >::update_nodeA void comma::Bimap< A, B >::update_nodeA ( const B &  b_old,
- + @@ -554,8 +554,8 @@

Member Data Documentation

- -

◆ _mapA

+ +

◆ _mapA

@@ -566,7 +566,7 @@

void Bimap< A, B >::update_nodeB void comma::Bimap< A, B >::update_nodeB ( const A &  a_old,
- +
map<B, const A *> Bimap< A, B >::_mapAstd::map<B, const A *> comma::Bimap< A, B >::_mapA
@@ -581,8 +581,8 @@

-

◆ _mapB

+ +

◆ _mapB

diff --git a/classcomma_1_1_bimap.js b/classcomma_1_1_bimap.js new file mode 100644 index 0000000..ebc2af8 --- /dev/null +++ b/classcomma_1_1_bimap.js @@ -0,0 +1,16 @@ +var classcomma_1_1_bimap = +[ + [ "Bimap", "classcomma_1_1_bimap.html#a668d1a44f819088e9a97555428949af0", null ], + [ "~Bimap", "classcomma_1_1_bimap.html#a4a12f2d28cbd33146b138ebae62aaf35", null ], + [ "empty", "classcomma_1_1_bimap.html#a88364e304b1a847ff219e815af01be73", null ], + [ "erase_B", "classcomma_1_1_bimap.html#a8b79b0b9ba226a25bb66a326a57d1dc6", null ], + [ "get_A", "classcomma_1_1_bimap.html#aafc73798f8c673da69051f7c79cd73c2", null ], + [ "get_B", "classcomma_1_1_bimap.html#a49bae8e54fe5ccd52d61d20c5aa543c0", null ], + [ "insert", "classcomma_1_1_bimap.html#a67acd42aeed25123ae23c2373dbf065b", null ], + [ "lung", "classcomma_1_1_bimap.html#af7226a5d51d99236f8b9451650356267", null ], + [ "print", "classcomma_1_1_bimap.html#af449cd0dc1fbb4f4b523cdbd1bc768ce", null ], + [ "update_nodeA", "classcomma_1_1_bimap.html#a1651c9075b5bd0895e3d3deda3dca566", null ], + [ "update_nodeB", "classcomma_1_1_bimap.html#aca11af6d19701ce17ce0dc05f25af6ec", null ], + [ "_mapA", "classcomma_1_1_bimap.html#ad7078e25a5c856ca2921c4dc34f7cd16", null ], + [ "_mapB", "classcomma_1_1_bimap.html#aa15dba38c92794eedf5978c84a9b19e5", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_coarse___cell-members.html b/classcomma_1_1_coarse___cell-members.html new file mode 100644 index 0000000..c749226 --- /dev/null +++ b/classcomma_1_1_coarse___cell-members.html @@ -0,0 +1,121 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CoMMA 1.3.1 +
+
A geometric agglomerator for unstructured meshes
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
+
+ +
+ + + + diff --git a/class_coarse___cell.html b/classcomma_1_1_coarse___cell.html similarity index 54% rename from class_coarse___cell.html rename to classcomma_1_1_coarse___cell.html index 175f3b4..164ca3e 100644 --- a/class_coarse___cell.html +++ b/classcomma_1_1_coarse___cell.html @@ -5,7 +5,7 @@ -CoMMA: Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference +CoMMA: comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference @@ -65,7 +65,7 @@

-
Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
+List of all members
+
comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference

Class describing a coarse cell. - More...

+ More...

#include <Coarse_Cell.h>

-Inheritance diagram for Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
+Inheritance diagram for comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
- - -Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + + +comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
- - - + + +

Public Types

using DualGraphPtr = shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > >
 Type for a shared pointer to a Dual_Graph object. More...
 
using DualGraphPtr = std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > >
 Type for a shared pointer to a Dual_Graph object. More...
 
- - - - - - - - - - - - - - - + + + + + + + + + + + + + + +

Public Member Functions

 Coarse_Cell (DualGraphPtr fc_graph, CoMMAIndexType i_cc, const unordered_set< CoMMAIndexType > &s_fc, CoMMAIntType compactness, bool is_isotropic=true)
 Constructor of the class. More...
 
virtual ~Coarse_Cell ()=default
 Destructor of the class. More...
 
bool is_connected ()
 Method that return a boolean determining if the coarse cell is defined by a connected sub-graph or not. More...
 
virtual void insert_cell (const CoMMAIndexType i_fc, const optional< CoMMAIntType > new_compactness=nullopt)
 Insert a FC in the CC (and update sub-graph if necessary) More...
 
virtual void insert_cells (const unordered_set< CoMMAIndexType > &fcs, const optional< CoMMAIntType > new_compactness=nullopt)
 Insert several FC in the CC (and update sub-graph if necessary) More...
 
 Coarse_Cell (DualGraphPtr fc_graph, CoMMAIndexType i_cc, const std::unordered_set< CoMMAIndexType > &s_fc, CoMMAIntType compactness, bool is_isotropic=true)
 Constructor of the class. More...
 
virtual ~Coarse_Cell ()=default
 Destructor of the class. More...
 
bool is_connected ()
 Method that return a boolean determining if the coarse cell is defined by a connected sub-graph or not. More...
 
virtual void insert_cell (const CoMMAIndexType i_fc, const std::optional< CoMMAIntType > new_compactness)
 Insert a FC in the CC (and update sub-graph if necessary) More...
 
virtual void insert_cells (const std::unordered_set< CoMMAIndexType > &fcs, const std::optional< CoMMAIntType > new_compactness)
 Insert several FC in the CC (and update sub-graph if necessary) More...
 
- - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +

Public Attributes

CoMMAIndexType _idx
 Index of the coarse cell (It seems to be unused, but useful to have) More...
 
DualGraphPtr _fc_graph
 The global dual graph. More...
 
CoMMAIntType _compactness
 Compactness degree of the CC. More...
 
CoMMAIntType _cardinality
 Number of FC in the CC. More...
 
bool _is_isotropic
 Whether the cell isotropic or anisotropic. More...
 
unordered_set< CoMMAIndexType > _s_fc
 Set of fine cells composing the Coarse cell. More...
 
CoMMAIndexType _idx
 Index of the coarse cell (It seems to be unused, but useful to have) More...
 
DualGraphPtr _fc_graph
 The global dual graph. More...
 
CoMMAIntType _compactness
 Compactness degree of the CC. More...
 
CoMMAIntType _cardinality
 Number of FC in the CC. More...
 
bool _is_isotropic
 Whether the cell isotropic or anisotropic. More...
 
std::unordered_set< CoMMAIndexType > _s_fc
 Set of fine cells composing the Coarse cell. More...
 

Detailed Description

template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
-class Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Class describing a coarse cell.

+class comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

Class describing a coarse cell.

Template Parameters
@@ -171,8 +171,8 @@

Member Typedef Documentation

- -

◆ DualGraphPtr

+ +

◆ DualGraphPtr

@@ -180,18 +180,18 @@

- +
CoMMAIndexTypethe CoMMA index type for the global index of the mesh
using Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::DualGraphPtr = shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> >using comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::DualGraphPtr = std::shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> >
-

Type for a shared pointer to a Dual_Graph object.

+

Type for a shared pointer to a Dual_Graph object.

Constructor & Destructor Documentation

- -

◆ Coarse_Cell()

+ +

◆ Coarse_Cell()

@@ -202,9 +202,9 @@

- + - + @@ -216,7 +216,7 @@

- + @@ -247,7 +247,7 @@

Parameters

Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Coarse_Cell comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Coarse_Cell (DualGraphPtr DualGraphPtr  fc_graph,
const unordered_set< CoMMAIndexType > & const std::unordered_set< CoMMAIndexType > &  s_fc,
- + @@ -258,8 +258,8 @@

-

◆ ~Coarse_Cell()

+ +

◆ ~Coarse_Cell()

@@ -270,7 +270,7 @@

[in]fc_graphDual_Graph object from where are taken the set of fine cells to create the coarse cell.
[in]fc_graphDual_Graph object from where are taken the set of fine cells to create the coarse cell.
[in]i_ccIndex of the coarse cell
[in]s_fcUnordered set of fine cells constituting the coarse cell
[in]compactnessCompactness degree of the CC
- + @@ -288,8 +288,8 @@

Member Function Documentation

- -

◆ insert_cell()

+ +

◆ insert_cell()

@@ -300,7 +300,7 @@

virtual Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Coarse_Cell virtual comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Coarse_Cell ( )
- + @@ -308,8 +308,8 @@

- - + + @@ -333,12 +333,12 @@

Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

+

Reimplemented in comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -

◆ insert_cells()

+ +

◆ insert_cells()

@@ -349,16 +349,16 @@

virtual void Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::insert_cell virtual void comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::insert_cell ( const CoMMAIndexType  i_fc, const optional< CoMMAIntType > new_compactness = nullopt const std::optional< CoMMAIntType > new_compactness 
- + - + - - + + @@ -382,12 +382,12 @@

Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

+

Reimplemented in comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

- -

◆ is_connected()

+ +

◆ is_connected()

@@ -398,7 +398,7 @@

virtual void Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::insert_cells virtual void comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::insert_cells (const unordered_set< CoMMAIndexType > & const std::unordered_set< CoMMAIndexType > &  fcs,
const optional< CoMMAIntType > new_compactness = nullopt const std::optional< CoMMAIntType > new_compactness 
- + @@ -417,8 +417,8 @@

Member Data Documentation

- -

◆ _cardinality

+ +

◆ _cardinality

@@ -426,7 +426,7 @@

- +
bool Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::is_connected bool comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::is_connected ( )
CoMMAIntType Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_cardinalityCoMMAIntType comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_cardinality

@@ -435,8 +435,8 @@

-

◆ _compactness

+ +

◆ _compactness

@@ -444,7 +444,7 @@

- CoMMAIntType Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_compactness + CoMMAIntType comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_compactness

@@ -453,8 +453,8 @@

-

◆ _fc_graph

+ +

◆ _fc_graph

@@ -462,7 +462,7 @@

- DualGraphPtr Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_fc_graph + DualGraphPtr comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_fc_graph

@@ -471,8 +471,8 @@

-

◆ _idx

+ +

◆ _idx

@@ -480,7 +480,7 @@

- CoMMAIndexType Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_idx + CoMMAIndexType comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_idx

@@ -489,8 +489,8 @@

-

◆ _is_isotropic

+ +

◆ _is_isotropic

@@ -498,7 +498,7 @@

- bool Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_is_isotropic + bool comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_is_isotropic

@@ -507,8 +507,8 @@

-

◆ _s_fc

+ +

◆ _s_fc

@@ -516,7 +516,7 @@

- unordered_set<CoMMAIndexType> Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_s_fc + std::unordered_set<CoMMAIndexType> comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_s_fc

@@ -526,14 +526,14 @@

Coarse_Cell.h +
  • include/CoMMA/Coarse_Cell.h
  • diff --git a/classcomma_1_1_coarse___cell.js b/classcomma_1_1_coarse___cell.js new file mode 100644 index 0000000..6349f86 --- /dev/null +++ b/classcomma_1_1_coarse___cell.js @@ -0,0 +1,15 @@ +var classcomma_1_1_coarse___cell = +[ + [ "DualGraphPtr", "classcomma_1_1_coarse___cell.html#a35ecf0c52bb9edbc441d78a43279ca30", null ], + [ "Coarse_Cell", "classcomma_1_1_coarse___cell.html#a8037db1d61c0f3d8f3cdd21dcf8dd301", null ], + [ "~Coarse_Cell", "classcomma_1_1_coarse___cell.html#ac53b192d8a56d61153d33524b3b1663d", null ], + [ "insert_cell", "classcomma_1_1_coarse___cell.html#a80ad5b778411821842cfed3f7c8c19da", null ], + [ "insert_cells", "classcomma_1_1_coarse___cell.html#ad02809c84ac2972857fb912a389444ca", null ], + [ "is_connected", "classcomma_1_1_coarse___cell.html#ac4034b8340779db758fdbe338ced45e4", null ], + [ "_cardinality", "classcomma_1_1_coarse___cell.html#a31f56dd630378c3ce67d5e155a50fb5a", null ], + [ "_compactness", "classcomma_1_1_coarse___cell.html#ab872db2f751d586c971943e25d9f0c65", null ], + [ "_fc_graph", "classcomma_1_1_coarse___cell.html#a910e720ead09571ffcae75f604e6b310", null ], + [ "_idx", "classcomma_1_1_coarse___cell.html#a13151d1da32d3567c38227842ba1d19f", null ], + [ "_is_isotropic", "classcomma_1_1_coarse___cell.html#a39e720f43721fb92283e90641c884549", null ], + [ "_s_fc", "classcomma_1_1_coarse___cell.html#a90d3d1c06f292560c3d4c47c19c7931d", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_coarse___cell.png b/classcomma_1_1_coarse___cell.png new file mode 100644 index 0000000..922ae02 Binary files /dev/null and b/classcomma_1_1_coarse___cell.png differ diff --git a/classcomma_1_1_coarse___cell___container-members.html b/classcomma_1_1_coarse___cell___container-members.html new file mode 100644 index 0000000..071d455 --- /dev/null +++ b/classcomma_1_1_coarse___cell___container-members.html @@ -0,0 +1,132 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    +
    + +

    This is the complete list of members for comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + +
    _cc_countercomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _ccscomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _delayed_cccomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _fc_2_cccomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _fc_graphcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _is_fc_agglomeratedcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _nb_of_agglomerated_fccomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _sing_card_threshcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _singular_cccomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    cc_create_all_delayed_cc()comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Coarse_Cell_Container(DualGraphPtr &fc_graph, const CoMMAIntType singular_card_thresh)comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    CoarseCellPtr typedefcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoarseCellType typedefcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    correct(const CoMMAIntType max_card)comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    create_cc(const std::unordered_set< CoMMAIndexType > &s_fc, const CoMMAIntType compactness, bool is_anisotropic=false, bool is_creation_delayed=false)comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    DualGraphPtr typedefcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    get_nb_of_cc() constcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_neighs_cc(const CoMMAIndexType &i_fc, const CoMMAIndexType &i_cc) constcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_number_of_fc_agglomerated() constcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_shared_faces(const CoMMAIndexType fc, const CoarseCellPtr cc) constcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    select_best_cc_to_agglomerate(const CoMMAIndexType fc, const std::set< CoMMAIndexType > &neighs, const CoMMAIntType max_card, std::optional< CoMMAIntType > &new_compactness) constcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    select_best_cc_to_agglomerate_whole(const std::unordered_set< CoMMAIndexType > &fcs, const std::set< CoMMAIndexType > &neighs, const CoMMAIntType max_card, std::optional< CoMMAIntType > &new_compactness) constcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    ~Coarse_Cell_Container()=defaultcomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    +
    + + + + diff --git a/class_coarse___cell___container.html b/classcomma_1_1_coarse___cell___container.html similarity index 53% rename from class_coarse___cell___container.html rename to classcomma_1_1_coarse___cell___container.html index fe4bfb9..250961b 100644 --- a/class_coarse___cell___container.html +++ b/classcomma_1_1_coarse___cell___container.html @@ -5,7 +5,7 @@ -CoMMA: Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference +CoMMA: comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference @@ -65,7 +65,7 @@

    -
    Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +List of all members
    +
    comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference

    Class implementing a custom container where the coarse cells are stored. - More...

    + More...

    #include <Coarse_Cell_Container.h>

    - - - - - - - - - + + + + + + + + +

    Public Types

    using CoarseCellType = Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Type for a Coarse_Cell object. More...
     
    using CoarseCellPtr = shared_ptr< CoarseCellType >
     Type for a shared pointer to a Dual_Graph object. More...
     
    using DualGraphPtr = typename CoarseCellType::DualGraphPtr
     Type for a shared pointer to a Dual_Graph object. More...
     
    using CoarseCellType = Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Type for a Coarse_Cell object. More...
     
    using CoarseCellPtr = std::shared_ptr< CoarseCellType >
     Type for a shared pointer to a Dual_Graph object. More...
     
    using DualGraphPtr = typename CoarseCellType::DualGraphPtr
     Type for a shared pointer to a Dual_Graph object. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Member Functions

     Coarse_Cell_Container (DualGraphPtr &fc_graph, const CoMMAIntType singular_card_thresh)
     Create a Coarse_Cell_Container. More...
     
     ~Coarse_Cell_Container ()=default
     Destructor. More...
     
    CoMMAIndexType get_number_of_fc_agglomerated () const
     Helper to get the member variable that defines the number of agglomerated fine cells. More...
     
    CoMMAIndexType get_nb_of_cc () const
     Helper to get the number of coarse cells. More...
     
    set< CoMMAIndexType > get_neighs_cc (const CoMMAIndexType &i_fc, const CoMMAIndexType &i_cc) const
     Retrieve the indexes of the neighbouring coarse cells to a given fine cell in a coarse cell (excluding the given coarse cell in which the fine cell is) More...
     
    void correct (const CoMMAIntType max_card)
     Implementation of the correction. In this version it implements the correction of singular cells (if one cell is alone after the agglomeration step is agglomerated to a neighbouring cell) More...
     
    optional< CoMMAIndexType > select_best_cc_to_agglomerate_whole (const unordered_set< CoMMAIndexType > &fcs, const set< CoMMAIndexType > &neighs, const CoMMAIntType max_card, optional< CoMMAIntType > &new_compactness) const
     Choose among the neighbouring coarse cells, the one to which a singular coarse cell should be assigned to. This function is similar to select_best_cc_to_agglomerate but considers only the compactness and the cardinality. More...
     
    optional< CoMMAIndexType > select_best_cc_to_agglomerate (const CoMMAIndexType fc, const set< CoMMAIndexType > &neighs, const CoMMAIntType max_card, optional< CoMMAIntType > &new_compactness) const
     Choose among the neighbouring coarse cells, the one to which a fine cell should be assigned to. We prefer the coarse cell which shares the most faces with the fine cell. Otherwise, we look at the cardinality and choose the coarse cell with the smallest one. More...
     
    CoMMAIntType get_shared_faces (const CoMMAIndexType fc, const CoarseCellPtr cc) const
     Compute the number of faces shared between a fine cell and a coarse one. More...
     
    CoMMAIndexType create_cc (const unordered_set< CoMMAIndexType > &s_fc, const CoMMAIntType compactness, bool is_anisotropic=false, bool is_creation_delayed=false)
     It creates a coarse cell based on the set of fine cells given as input. More...
     
    void cc_create_all_delayed_cc ()
     Creates all the delayed coarse cell. It works only when the delayed cell flag is activated in the agglomerator. More...
     
     Coarse_Cell_Container (DualGraphPtr &fc_graph, const CoMMAIntType singular_card_thresh)
     Create a Coarse_Cell_Container. More...
     
     ~Coarse_Cell_Container ()=default
     Destructor. More...
     
    CoMMAIndexType get_number_of_fc_agglomerated () const
     Helper to get the member variable that defines the number of agglomerated fine cells. More...
     
    CoMMAIndexType get_nb_of_cc () const
     Helper to get the number of coarse cells. More...
     
    std::set< CoMMAIndexType > get_neighs_cc (const CoMMAIndexType &i_fc, const CoMMAIndexType &i_cc) const
     Retrieve the indexes of the neighbouring coarse cells to a given fine cell in a coarse cell (excluding the given coarse cell in which the fine cell is) More...
     
    void correct (const CoMMAIntType max_card)
     Implementation of the correction. In this version it implements the correction of singular cells (if one cell is alone after the agglomeration step is agglomerated to a neighbouring cell) More...
     
    std::optional< CoMMAIndexType > select_best_cc_to_agglomerate_whole (const std::unordered_set< CoMMAIndexType > &fcs, const std::set< CoMMAIndexType > &neighs, const CoMMAIntType max_card, std::optional< CoMMAIntType > &new_compactness) const
     Choose among the neighbouring coarse cells, the one to which a singular coarse cell should be assigned to. This function is similar to select_best_cc_to_agglomerate but considers only the compactness and the cardinality. More...
     
    std::optional< CoMMAIndexType > select_best_cc_to_agglomerate (const CoMMAIndexType fc, const std::set< CoMMAIndexType > &neighs, const CoMMAIntType max_card, std::optional< CoMMAIntType > &new_compactness) const
     Choose among the neighbouring coarse cells, the one to which a fine cell should be assigned to. We prefer the coarse cell which shares the most faces with the fine cell. Otherwise, we look at the cardinality and choose the coarse cell with the smallest one. More...
     
    CoMMAIntType get_shared_faces (const CoMMAIndexType fc, const CoarseCellPtr cc) const
     Compute the number of faces shared between a fine cell and a coarse one. More...
     
    CoMMAIndexType create_cc (const std::unordered_set< CoMMAIndexType > &s_fc, const CoMMAIntType compactness, bool is_anisotropic=false, bool is_creation_delayed=false)
     It creates a coarse cell based on the set of fine cells given as input. More...
     
    void cc_create_all_delayed_cc ()
     Creates all the delayed coarse cell. It works only when the delayed cell flag is activated in the agglomerator. More...
     
    - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +

    Public Attributes

    map< CoMMAIndexType, CoarseCellPtr_ccs
     Map containing the CC and their ID. More...
     
    DualGraphPtr _fc_graph
     Dual graph representation. More...
     
    CoMMAIndexType _cc_counter
     Number of coarse cells. More...
     
    vector< optional< CoMMAIndexType > > _fc_2_cc
     Output vector identifying to which coarse cell the fine cell belongs. More...
     
    vector< bool > _is_fc_agglomerated
     Vector of boolean telling whether a fine cell has been agglomerated. More...
     
    CoMMAIntType _sing_card_thresh
     Minimum cardinality for receiver CC when correcting. More...
     
    std::map< CoMMAIndexType, CoarseCellPtr_ccs
     Map containing the CC and their ID. More...
     
    DualGraphPtr _fc_graph
     Dual graph representation. More...
     
    CoMMAIndexType _cc_counter
     Number of coarse cells. More...
     
    std::vector< std::optional< CoMMAIndexType > > _fc_2_cc
     Output vector identifying to which coarse cell the fine cell belongs. More...
     
    std::vector< bool > _is_fc_agglomerated
     Vector of boolean telling whether a fine cell has been agglomerated. More...
     
    CoMMAIntType _sing_card_thresh
     Minimum cardinality for receiver CC when correcting. More...
     
    - - - - - - - - - + + + + + + + + +

    Protected Attributes

    CoMMAIndexType _nb_of_agglomerated_fc = 0
     Number of agglomerated fine cells. More...
     
    vector< pair< unordered_set< CoMMAIndexType >, CoMMAIntType > > _delayed_cc
     Vector of the set of fine cells composing the too small coarse cells that will be built at the end of the agglomeration process and their compactness degree. More...
     
    deque< CoMMAIndexType > _singular_cc
     Set of singular coarse cells, that is, composed of only one fine cell. More...
     
    CoMMAIndexType _nb_of_agglomerated_fc = 0
     Number of agglomerated fine cells. More...
     
    std::vector< std::pair< std::unordered_set< CoMMAIndexType >, CoMMAIntType > > _delayed_cc
     Vector of the set of fine cells composing the too small coarse cells that will be built at the end of the agglomeration process and their compactness degree. More...
     
    std::deque< CoMMAIndexType > _singular_cc
     Set of singular coarse cells, that is, composed of only one fine cell. More...
     

    Detailed Description

    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    -class Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Class implementing a custom container where the coarse cells are stored.

    +class comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Class implementing a custom container where the coarse cells are stored.

    Template Parameters
    @@ -199,8 +199,8 @@

    Member Typedef Documentation

    - -

    ◆ CoarseCellPtr

    + +

    ◆ CoarseCellPtr

    @@ -208,17 +208,17 @@

    - +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    using Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoarseCellPtr = shared_ptr<CoarseCellType>using comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoarseCellPtr = std::shared_ptr<CoarseCellType>
    -

    Type for a shared pointer to a Dual_Graph object.

    +

    Type for a shared pointer to a Dual_Graph object.

    - -

    ◆ CoarseCellType

    + +

    ◆ CoarseCellType

    @@ -226,17 +226,17 @@

    - using Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoarseCellType = Coarse_Cell<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> + using comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoarseCellType = Coarse_Cell<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>

    -

    Type for a Coarse_Cell object.

    +

    Type for a Coarse_Cell object.

    - -

    ◆ DualGraphPtr

    + +

    ◆ DualGraphPtr

    @@ -244,18 +244,18 @@

    - using Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::DualGraphPtr = typename CoarseCellType::DualGraphPtr + using comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::DualGraphPtr = typename CoarseCellType::DualGraphPtr

    -

    Type for a shared pointer to a Dual_Graph object.

    +

    Type for a shared pointer to a Dual_Graph object.

    Constructor & Destructor Documentation

    - -

    ◆ Coarse_Cell_Container()

    + +

    ◆ Coarse_Cell_Container()

    @@ -266,9 +266,9 @@

    - + - + @@ -290,10 +290,10 @@

    -

    Create a Coarse_Cell_Container.

    +

    Create a Coarse_Cell_Container.

    Parameters

    Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Coarse_Cell_Container comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Coarse_Cell_Container (DualGraphPtrDualGraphPtr fc_graph,
    - +
    [in]fc_graphInput element Dual_Graph to work on the seeds choice and the seeds pool
    [in]fc_graphInput element Dual_Graph to work on the seeds choice and the seeds pool
    [in]singular_card_threshThreshold value below which a coarse cell is considered singular
    @@ -301,8 +301,8 @@

    -

    ◆ ~Coarse_Cell_Container()

    + +

    ◆ ~Coarse_Cell_Container()

    @@ -313,7 +313,7 @@

    - + @@ -331,8 +331,8 @@

    Member Function Documentation

    - -

    ◆ cc_create_all_delayed_cc()

    + +

    ◆ cc_create_all_delayed_cc()

    @@ -343,7 +343,7 @@

    Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Coarse_Cell_Container comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Coarse_Cell_Container ( )
    - + @@ -360,8 +360,8 @@

    -

    ◆ correct()

    + +

    ◆ correct()

    @@ -372,7 +372,7 @@

    void Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::cc_create_all_delayed_cc void comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::cc_create_all_delayed_cc ( )
    - + @@ -396,8 +396,8 @@

    -

    ◆ create_cc()

    + +

    ◆ create_cc()

    @@ -408,9 +408,9 @@

    void Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::correct void comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::correct ( const CoMMAIntType  max_card)
    - + - + @@ -458,8 +458,8 @@

    -

    ◆ get_nb_of_cc()

    + +

    ◆ get_nb_of_cc()

    @@ -470,7 +470,7 @@

    CoMMAIndexType Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::create_cc CoMMAIndexType comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::create_cc (const unordered_set< CoMMAIndexType > & const std::unordered_set< CoMMAIndexType > &  s_fc,
    - + @@ -488,8 +488,8 @@

    -

    ◆ get_neighs_cc()

    + +

    ◆ get_neighs_cc()

    @@ -500,7 +500,7 @@

    CoMMAIndexType Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_nb_of_cc CoMMAIndexType comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_nb_of_cc ( ) const
    - + @@ -536,8 +536,8 @@

    -

    ◆ get_number_of_fc_agglomerated()

    + +

    ◆ get_number_of_fc_agglomerated()

    @@ -548,7 +548,7 @@

    set< CoMMAIndexType > Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_neighs_cc std::set< CoMMAIndexType > comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_neighs_cc ( const CoMMAIndexType &  i_fc,
    - + @@ -566,8 +566,8 @@

    -

    ◆ get_shared_faces()

    + +

    ◆ get_shared_faces()

    @@ -578,7 +578,7 @@

    CoMMAIndexType Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_number_of_fc_agglomerated CoMMAIndexType comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_number_of_fc_agglomerated ( ) const
    - + @@ -586,7 +586,7 @@

    - + @@ -614,8 +614,8 @@

    -

    ◆ select_best_cc_to_agglomerate()

    + +

    ◆ select_best_cc_to_agglomerate()

    @@ -626,7 +626,7 @@

    CoMMAIntType Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_shared_faces CoMMAIntType comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_shared_faces ( const CoMMAIndexType  fc, const CoarseCellPtr const CoarseCellPtr  cc 
    - + @@ -634,7 +634,7 @@

    - + @@ -646,7 +646,7 @@

    - + @@ -677,8 +677,8 @@

    -

    ◆ select_best_cc_to_agglomerate_whole()

    + +

    ◆ select_best_cc_to_agglomerate_whole()

    @@ -689,15 +689,15 @@

    optional< CoMMAIndexType > Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::select_best_cc_to_agglomerate std::optional< CoMMAIndexType > comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::select_best_cc_to_agglomerate ( const CoMMAIndexType  fc, const set< CoMMAIndexType > & const std::set< CoMMAIndexType > &  neighs,
    optional< CoMMAIntType > & std::optional< CoMMAIntType > &  new_compactness 
    - + - + - + @@ -709,7 +709,7 @@

    - + @@ -725,7 +725,7 @@

    -

    Choose among the neighbouring coarse cells, the one to which a singular coarse cell should be assigned to. This function is similar to select_best_cc_to_agglomerate but considers only the compactness and the cardinality.

    +

    Choose among the neighbouring coarse cells, the one to which a singular coarse cell should be assigned to. This function is similar to select_best_cc_to_agglomerate but considers only the compactness and the cardinality.

    Parameters

    optional< CoMMAIndexType > Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::select_best_cc_to_agglomerate_whole std::optional< CoMMAIndexType > comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::select_best_cc_to_agglomerate_whole (const unordered_set< CoMMAIndexType > & const std::unordered_set< CoMMAIndexType > &  fcs,
    const set< CoMMAIndexType > & const std::set< CoMMAIndexType > &  neighs,
    optional< CoMMAIntType > & std::optional< CoMMAIntType > &  new_compactness 
    @@ -741,8 +741,8 @@

    Member Data Documentation

    - -

    ◆ _cc_counter

    + +

    ◆ _cc_counter

    @@ -750,7 +750,7 @@

    - +
    [in]fcsSet of indices of the fine cells composing the coarse cell to be agglomerated
    CoMMAIndexType Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_cc_counterCoMMAIndexType comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_cc_counter

    @@ -759,8 +759,8 @@

    -

    ◆ _ccs

    + +

    ◆ _ccs

    @@ -768,7 +768,7 @@

    - map<CoMMAIndexType, CoarseCellPtr> Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_ccs + std::map<CoMMAIndexType, CoarseCellPtr> comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_ccs

    @@ -777,8 +777,8 @@

    -

    ◆ _delayed_cc

    + +

    ◆ _delayed_cc

    @@ -789,7 +789,7 @@

    - +
    vector<pair<unordered_set<CoMMAIndexType>, CoMMAIntType> > Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_delayed_ccstd::vector<std::pair<std::unordered_set<CoMMAIndexType>, CoMMAIntType> > comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_delayed_cc
    @@ -803,8 +803,8 @@

    -

    ◆ _fc_2_cc

    + +

    ◆ _fc_2_cc

    @@ -812,7 +812,7 @@

    - vector<optional<CoMMAIndexType> > Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_fc_2_cc + std::vector<std::optional<CoMMAIndexType> > comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_fc_2_cc

    @@ -821,8 +821,8 @@

    -

    ◆ _fc_graph

    + +

    ◆ _fc_graph

    @@ -830,7 +830,7 @@

    - DualGraphPtr Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_fc_graph + DualGraphPtr comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_fc_graph

    @@ -839,8 +839,8 @@

    -

    ◆ _is_fc_agglomerated

    + +

    ◆ _is_fc_agglomerated

    @@ -848,7 +848,7 @@

    - vector<bool> Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_is_fc_agglomerated + std::vector<bool> comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_is_fc_agglomerated

    @@ -857,8 +857,8 @@

    -

    ◆ _nb_of_agglomerated_fc

    + +

    ◆ _nb_of_agglomerated_fc

    @@ -869,7 +869,7 @@

    - +
    CoMMAIndexType Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_nb_of_agglomerated_fc = 0CoMMAIndexType comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_nb_of_agglomerated_fc = 0
    @@ -883,8 +883,8 @@

    -

    ◆ _sing_card_thresh

    + +

    ◆ _sing_card_thresh

    @@ -892,7 +892,7 @@

    - CoMMAIntType Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_sing_card_thresh + CoMMAIntType comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_sing_card_thresh

    @@ -901,8 +901,8 @@

    -

    ◆ _singular_cc

    + +

    ◆ _singular_cc

    diff --git a/classcomma_1_1_coarse___cell___container.js b/classcomma_1_1_coarse___cell___container.js new file mode 100644 index 0000000..7dafdd3 --- /dev/null +++ b/classcomma_1_1_coarse___cell___container.js @@ -0,0 +1,26 @@ +var classcomma_1_1_coarse___cell___container = +[ + [ "CoarseCellPtr", "classcomma_1_1_coarse___cell___container.html#a4670588ea6b7292b0ef8760f589eece4", null ], + [ "CoarseCellType", "classcomma_1_1_coarse___cell___container.html#a909799f8910487259a0ebee59186b286", null ], + [ "DualGraphPtr", "classcomma_1_1_coarse___cell___container.html#a5051b74d460fe27476950f53a5fd2229", null ], + [ "Coarse_Cell_Container", "classcomma_1_1_coarse___cell___container.html#aca19a5b3b66ea0d481b315ff012a7725", null ], + [ "~Coarse_Cell_Container", "classcomma_1_1_coarse___cell___container.html#ac64a40e0897db7510ba5e5b874891268", null ], + [ "cc_create_all_delayed_cc", "classcomma_1_1_coarse___cell___container.html#aff375cbd38f430300abad77480031841", null ], + [ "correct", "classcomma_1_1_coarse___cell___container.html#af30a16e10cd4cbcfa2837a36a5a80599", null ], + [ "create_cc", "classcomma_1_1_coarse___cell___container.html#a745d1b842ec7a43dbe303cbef43a0b80", null ], + [ "get_nb_of_cc", "classcomma_1_1_coarse___cell___container.html#a7e57abc220fb85877b92ad7a7be0b540", null ], + [ "get_neighs_cc", "classcomma_1_1_coarse___cell___container.html#adfc1c9ae9a17a20cc98d26e1d94753ce", null ], + [ "get_number_of_fc_agglomerated", "classcomma_1_1_coarse___cell___container.html#a74b86f5bf928b038c490f27c1e26bd64", null ], + [ "get_shared_faces", "classcomma_1_1_coarse___cell___container.html#a93ab43e7ab6288a9e7d6fa00e7d53c3d", null ], + [ "select_best_cc_to_agglomerate", "classcomma_1_1_coarse___cell___container.html#a7211f3bedde3f2f93044cbacd3e47c19", null ], + [ "select_best_cc_to_agglomerate_whole", "classcomma_1_1_coarse___cell___container.html#a06433ef8fe9388f3e640f3d8bfdf7c27", null ], + [ "_cc_counter", "classcomma_1_1_coarse___cell___container.html#a5cd32093348aa15c437952de4fb50c20", null ], + [ "_ccs", "classcomma_1_1_coarse___cell___container.html#a00994ecc5f6dae2f9ab6bb376e50931a", null ], + [ "_delayed_cc", "classcomma_1_1_coarse___cell___container.html#a3524485e16d28d4eda3cac529a882ae6", null ], + [ "_fc_2_cc", "classcomma_1_1_coarse___cell___container.html#a4552eff1fb2fb15974b835d765b61e4b", null ], + [ "_fc_graph", "classcomma_1_1_coarse___cell___container.html#a86e1e85dcd0d95bfd49a267960d4ea58", null ], + [ "_is_fc_agglomerated", "classcomma_1_1_coarse___cell___container.html#a7d4a556613699b7ab500717238bd7cf9", null ], + [ "_nb_of_agglomerated_fc", "classcomma_1_1_coarse___cell___container.html#a16e9f6a6002a7a3580b7f1d017a15b99", null ], + [ "_sing_card_thresh", "classcomma_1_1_coarse___cell___container.html#a337440485655e84a57e8a7e9d1d3ca8f", null ], + [ "_singular_cc", "classcomma_1_1_coarse___cell___container.html#a08300d61da9f6559f580b29003e1f689", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_coarse___cell___subgraph-members.html b/classcomma_1_1_coarse___cell___subgraph-members.html new file mode 100644 index 0000000..4bee7b8 --- /dev/null +++ b/classcomma_1_1_coarse___cell___subgraph-members.html @@ -0,0 +1,120 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    +
    + +

    This is the complete list of members for comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    + + + + + + + + + + + + +
    _cc_graphcomma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _is_connectedcomma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _is_connectivity_up_to_datecomma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    BaseClass typedefcomma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    Coarse_Cell_Subgraph(DualGraphPtr fc_graph, CoMMAIndexType i_cc, const std::unordered_set< CoMMAIndexType > &s_fc, CoMMAIntType compactness, bool is_isotropic=true)comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    DualGraphPtr typedefcomma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    insert_cell(const CoMMAIndexType i_fc, const std::optional< CoMMAIntType > new_compactness) overridecomma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    insert_cells(const std::unordered_set< CoMMAIndexType > &fcs, const std::optional< CoMMAIntType > new_compactness) overridecomma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    SubGraphPtr typedefcomma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    SubGraphType typedefcomma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    update_connectivity()comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    +
    + + + + diff --git a/classcomma_1_1_coarse___cell___subgraph.html b/classcomma_1_1_coarse___cell___subgraph.html new file mode 100644 index 0000000..cb5300a --- /dev/null +++ b/classcomma_1_1_coarse___cell___subgraph.html @@ -0,0 +1,508 @@ + + + + + + + +CoMMA: comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +
    +
    + +

    Class describing a coarse cell with a full description, that is, it also holds a subgraph describing how the fine cells are connected inside the coarse one. + More...

    + +

    #include <Coarse_Cell.h>

    +
    +Inheritance diagram for comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + + + + +

    +Public Types

    using BaseClass = Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Type for the base Coarse_Cell class. More...
     
    using SubGraphType = Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Type for a Subgraph object. More...
     
    using SubGraphPtr = std::shared_ptr< SubGraphType >
     Type for a shared pointer to a Subgraph object. More...
     
    using DualGraphPtr = std::shared_ptr< Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > >
     Type for a shared pointer to a Dual_Graph object. More...
     
    + + + + + + + + + + + + + +

    +Public Member Functions

     Coarse_Cell_Subgraph (DualGraphPtr fc_graph, CoMMAIndexType i_cc, const std::unordered_set< CoMMAIndexType > &s_fc, CoMMAIntType compactness, bool is_isotropic=true)
     Constructor of the class. More...
     
    void insert_cell (const CoMMAIndexType i_fc, const std::optional< CoMMAIntType > new_compactness) override
     Insert a FC in the CC (and update sub-graph if necessary) More...
     
    void insert_cells (const std::unordered_set< CoMMAIndexType > &fcs, const std::optional< CoMMAIntType > new_compactness) override
     Insert several FC in the CC (and update sub-graph if necessary) More...
     
    void update_connectivity ()
     Analyse subgraph and update the connectivity. More...
     
    + + + + + + + + + + +

    +Public Attributes

    SubGraphPtr _cc_graph
     Shared pointer of the subgraph structure (CSR representation) More...
     
    bool _is_connected
     Whether the cell connected. More...
     
    bool _is_connectivity_up_to_date
     Whether the connectivity has been checked. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +class comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Class describing a coarse cell with a full description, that is, it also holds a subgraph describing how the fine cells are connected inside the coarse one.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ BaseClass

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::BaseClass = Coarse_Cell<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Type for the base Coarse_Cell class.

    + +
    +
    + +

    ◆ DualGraphPtr

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::DualGraphPtr = std::shared_ptr<Dual_Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> >
    +
    + +

    Type for a shared pointer to a Dual_Graph object.

    + +
    +
    + +

    ◆ SubGraphPtr

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::SubGraphPtr = std::shared_ptr<SubGraphType>
    +
    + +

    Type for a shared pointer to a Subgraph object.

    + +
    +
    + +

    ◆ SubGraphType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::SubGraphType = Subgraph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Type for a Subgraph object.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Coarse_Cell_Subgraph()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Coarse_Cell_Subgraph (DualGraphPtr fc_graph,
    CoMMAIndexType i_cc,
    const std::unordered_set< CoMMAIndexType > & s_fc,
    CoMMAIntType compactness,
    bool is_isotropic = true 
    )
    +
    +inline
    +
    + +

    Constructor of the class.

    +
    Parameters
    + + + + + + +
    [in]fc_graphDual_Graph object from where are taken the set of fine cells to create the coarse cell.
    [in]i_ccIndex of the coarse cell
    [in]s_fcUnordered set of fine cells constituting the coarse cell
    [in]compactnessCompactness degree of the CC
    [in]is_isotropic(default = true) boolean describing if the cell is coming from an isotropic agglomeration process or an anisotropic agglomeration process.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ insert_cell()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::insert_cell (const CoMMAIndexType i_fc,
    const std::optional< CoMMAIntType > new_compactness 
    )
    +
    +inlineoverridevirtual
    +
    + +

    Insert a FC in the CC (and update sub-graph if necessary)

    +
    Parameters
    + + + +
    [in]i_fcIndex of the fine cell to add
    [in]new_compactnessOptional, default void, giving the compactness of the CC after the addition
    +
    +
    + +

    Reimplemented from comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ insert_cells()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::insert_cells (const std::unordered_set< CoMMAIndexType > & fcs,
    const std::optional< CoMMAIntType > new_compactness 
    )
    +
    +inlineoverridevirtual
    +
    + +

    Insert several FC in the CC (and update sub-graph if necessary)

    +
    Parameters
    + + + +
    [in]fcsSet of indices of the fine cells to add
    [in]new_compactnessOptional, default void, giving the compactness of the CC after the addition
    +
    +
    + +

    Reimplemented from comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ update_connectivity()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    void comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update_connectivity ()
    +
    +inline
    +
    + +

    Analyse subgraph and update the connectivity.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ _cc_graph

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    SubGraphPtr comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_cc_graph
    +
    + +

    Shared pointer of the subgraph structure (CSR representation)

    + +
    +
    + +

    ◆ _is_connected

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    bool comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_is_connected
    +
    + +

    Whether the cell connected.

    + +
    +
    + +

    ◆ _is_connectivity_up_to_date

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    bool comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_is_connectivity_up_to_date
    +
    + +

    Whether the connectivity has been checked.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/classcomma_1_1_coarse___cell___subgraph.js b/classcomma_1_1_coarse___cell___subgraph.js new file mode 100644 index 0000000..ff53b50 --- /dev/null +++ b/classcomma_1_1_coarse___cell___subgraph.js @@ -0,0 +1,14 @@ +var classcomma_1_1_coarse___cell___subgraph = +[ + [ "BaseClass", "classcomma_1_1_coarse___cell___subgraph.html#a05670da5aee0809bd88770c7ef9ee00a", null ], + [ "DualGraphPtr", "classcomma_1_1_coarse___cell___subgraph.html#a35ecf0c52bb9edbc441d78a43279ca30", null ], + [ "SubGraphPtr", "classcomma_1_1_coarse___cell___subgraph.html#ad5a7874698d85e8a75d1738a6257ab26", null ], + [ "SubGraphType", "classcomma_1_1_coarse___cell___subgraph.html#ab140e803b551ea792a8f004aceb54aed", null ], + [ "Coarse_Cell_Subgraph", "classcomma_1_1_coarse___cell___subgraph.html#adb533b705811bed203bea788a1ae7e07", null ], + [ "insert_cell", "classcomma_1_1_coarse___cell___subgraph.html#a1f699fd8684fc8a66ca34f8635857b43", null ], + [ "insert_cells", "classcomma_1_1_coarse___cell___subgraph.html#a91979299073d846773d1222dc794175b", null ], + [ "update_connectivity", "classcomma_1_1_coarse___cell___subgraph.html#a2961e12f53d52fb01a1be0243ea45126", null ], + [ "_cc_graph", "classcomma_1_1_coarse___cell___subgraph.html#a13e2b439ea8381b74bf91b1e1222fde2", null ], + [ "_is_connected", "classcomma_1_1_coarse___cell___subgraph.html#aa143ca9ef420d4794ddad99596f8e74f", null ], + [ "_is_connectivity_up_to_date", "classcomma_1_1_coarse___cell___subgraph.html#a6b0355c909f3fa0124da54545c504977", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_coarse___cell___subgraph.png b/classcomma_1_1_coarse___cell___subgraph.png new file mode 100644 index 0000000..3115573 Binary files /dev/null and b/classcomma_1_1_coarse___cell___subgraph.png differ diff --git a/classcomma_1_1_dual___graph-members.html b/classcomma_1_1_dual___graph-members.html new file mode 100644 index 0000000..3ef221b --- /dev/null +++ b/classcomma_1_1_dual___graph-members.html @@ -0,0 +1,148 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    +
    + +

    This is the complete list of members for comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    _centerscomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _compute_ARcomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _m_CRS_Col_Indcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _m_CRS_Row_Ptrcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _m_CRS_Valuescomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _n_bnd_facescomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _number_of_cellscomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _s_anisotropic_compliant_cellscomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _visitedcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _volumescomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    BaseClass typedefcomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    BFS(const CoMMAIndexType &root)comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    check_connectivity()comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    CoMMAPairType typedefcomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMASetOfPairType typedefcomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    compute_fc_compactness_inside_a_cc(const std::unordered_set< CoMMAIndexType > &s_fc) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    compute_min_fc_compactness_inside_a_cc(const std::unordered_set< CoMMAIndexType > &s_fc) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    compute_neighbourhood_of_cc(const std::unordered_set< CoMMAIndexType > &s_seeds, CoMMAIntType &nb_of_order_of_neighbourhood, std::unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const CoMMAIntType max_card, const std::vector< bool > &is_fc_agglomerated_tmp) constcomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    ContainerIndexConstIt typedefcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ContainerIndexType typedefcomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ContainerWeightConstIt typedefcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ContainerWeightType typedefcomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    DFS(const CoMMAIndexType &i_fc)comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Dual_Graph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes, const std::vector< std::vector< CoMMAWeightType > > &centers, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType dimension, const ContainerIndexType &anisotropic_compliant_fc)comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_n_boundary_faces(const CoMMAIndexType idx_c) constcomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_nb_cells() constcomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_nb_of_neighbours(CoMMAIndexType i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_neighbourhood_of_cc(const std::unordered_set< CoMMAIndexType > &s_seeds, const std::vector< bool > &is_fc_agglomerated_tmp) constcomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_neighbours(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_weights(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Graph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    is_on_boundary(const CoMMAIndexType idx_c) constcomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    neighbours_cbegin(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    neighbours_cend(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    tag_anisotropic_cells(ContainerWeightType &max_weights, std::vector< bool > &is_anisotropic, std::deque< CoMMAIndexType > &aniso_seeds_pool, const CoMMAWeightType threshold_anisotropy, const ContainerWeightType &priority_weights, const CoMMAIndexType preserving)comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    weights_cbegin(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    weights_cend(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    ~Dual_Graph() override=defaultcomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ~Graph()=defaultcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
    +
    + + + + diff --git a/classcomma_1_1_dual___graph.html b/classcomma_1_1_dual___graph.html new file mode 100644 index 0000000..689d89f --- /dev/null +++ b/classcomma_1_1_dual___graph.html @@ -0,0 +1,868 @@ + + + + + + + +CoMMA: comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +
    +
    + +

    A class implementing the CRS global graph representation of the global mesh. + More...

    + +

    #include <Dual_Graph.h>

    +
    +Inheritance diagram for comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using BaseClass = Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Parent class. More...
     
    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    using ContainerIndexType = std::vector< CoMMAIndexType >
     Type for containers of indices. More...
     
    using ContainerWeightType = std::vector< CoMMAWeightType >
     Type for containers of weights. More...
     
    - Public Types inherited from comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    using ContainerIndexType = std::vector< CoMMAIndexType >
     Type for containers of indices. More...
     
    using ContainerWeightType = std::vector< CoMMAWeightType >
     Type for containers of weights. More...
     
    using ContainerIndexConstIt = typename ContainerIndexType::const_iterator
     Type for constant iterators of containers of indices. More...
     
    using ContainerWeightConstIt = typename ContainerWeightType::const_iterator
     Type for constant iterators of containers of weights. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Dual_Graph (const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes, const std::vector< std::vector< CoMMAWeightType > > &centers, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType dimension, const ContainerIndexType &anisotropic_compliant_fc)
     Constructor of the class. More...
     
     ~Dual_Graph () override=default
     Destructor of the class. More...
     
    CoMMAIntType get_n_boundary_faces (const CoMMAIndexType idx_c) const
     Return how many boundary faces a certain cell has. More...
     
    bool is_on_boundary (const CoMMAIndexType idx_c) const
     Whether a cell is on the boundary. More...
     
    void tag_anisotropic_cells (ContainerWeightType &max_weights, std::vector< bool > &is_anisotropic, std::deque< CoMMAIndexType > &aniso_seeds_pool, const CoMMAWeightType threshold_anisotropy, const ContainerWeightType &priority_weights, const CoMMAIndexType preserving)
     Tag cells as anisotropic if their aspect-ratio is over a given threshold and order them according to given priority. More...
     
    CoMMAIntType get_nb_cells () const
     Getter that returns the number of cells. More...
     
    std::unordered_set< CoMMAIndexType > get_neighbourhood_of_cc (const std::unordered_set< CoMMAIndexType > &s_seeds, const std::vector< bool > &is_fc_agglomerated_tmp) const
     Get the fine cells neighbours of a coarse cell. More...
     
    void compute_neighbourhood_of_cc (const std::unordered_set< CoMMAIndexType > &s_seeds, CoMMAIntType &nb_of_order_of_neighbourhood, std::unordered_map< CoMMAIndexType, CoMMAIntType > &d_n_of_seed, const CoMMAIntType max_card, const std::vector< bool > &is_fc_agglomerated_tmp) const
     Compute the dictionary of compactness of fine cells inside a coarse cell. More...
     
    - Public Member Functions inherited from comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Graph (const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)
     Constructor of the class. More...
     
    virtual ~Graph ()=default
     Destructor of the class. More...
     
    void DFS (const CoMMAIndexType &i_fc)
     Depth First Search (DFS) recursive function. More...
     
    void BFS (const CoMMAIndexType &root)
     Breadth First Search (BFS) function. More...
     
    CoMMAIntType get_nb_of_neighbours (CoMMAIndexType i_c) const
     Retrieve the number of neighbours. More...
     
    ContainerIndexType get_neighbours (const CoMMAIndexType &i_c) const
     Based on the CRS representation retrieves the neighbours of the cell given as an input. More...
     
    ContainerIndexConstIt neighbours_cbegin (const CoMMAIndexType &i_c) const
     Get constant pointer to the first neighbour of cell i_c. More...
     
    ContainerIndexConstIt neighbours_cend (const CoMMAIndexType &i_c) const
     Get constant pointer to the element following the last neighbour of cell i_c. More...
     
    ContainerWeightType get_weights (const CoMMAIndexType &i_c) const
     Based on the area of the faces composing the cell given as an input, we retrieve the faces connecting the given cell with the neighbourhood that can be described also as the weight of the graph. More...
     
    ContainerWeightConstIt weights_cbegin (const CoMMAIndexType &i_c) const
     Get constant pointer to the first neighbour of cell i_c. More...
     
    ContainerWeightConstIt weights_cend (const CoMMAIndexType &i_c) const
     Get constant pointer to the element following the last neighbour of cell i_c. More...
     
    bool check_connectivity ()
     Check the connectivity of the graph. More...
     
    CoMMAIntType compute_min_fc_compactness_inside_a_cc (const std::unordered_set< CoMMAIndexType > &s_fc) const
     Compute the minimum compactness of fine cells inside a coarse cell. More...
     
    std::unordered_map< CoMMAIndexType, CoMMAIntType > compute_fc_compactness_inside_a_cc (const std::unordered_set< CoMMAIndexType > &s_fc) const
     Compute the dictionary of compactness of fine cells inside a coarse cell. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    const std::vector< CoMMAIntType > & _n_bnd_faces
     Vector telling how many boundary faces each cell has. More...
     
    const std::unordered_set< CoMMAIndexType > _s_anisotropic_compliant_cells
     Elements that are checked if they are anisotropic. If an element satisfies the condition for being anisotropic (typically, AR > threshold) but it not in this set, it will not considered as anisotropic. We use a set to ensure uniqueness. More...
     
    const std::vector< std::vector< CoMMAWeightType > > & _centers
     Vector of cell centers. More...
     
    std::function< CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> _compute_AR
     Function which computes the aspect-ratio from the minimum and maximum faces
    + In 3D: $ AR = sqrt(\frac{max_{surf}}{min_{surf}}) $
    + In 2D: $ AR = \frac{max_{surf}}{min_{surf}} $
    + (Recall that in 2D a face is actually an edge) More...
     
    - Public Attributes inherited from comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAIndexType _number_of_cells
     Number of nodes in the Graph (it corresponds to the number of cells in the subgraph or the dual graph. More...
     
    std::vector< bool > _visited
     Helper vector for the DFS. More...
     
    ContainerIndexType _m_CRS_Row_Ptr
     Vector of row pointer of CRS representation. More...
     
    ContainerIndexType _m_CRS_Col_Ind
     Vector of column index of CRS representation. More...
     
    ContainerWeightType _m_CRS_Values
     Vector of area weight of CRS representation. More...
     
    ContainerWeightType _volumes
     Vector of volumes. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +class comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    A class implementing the CRS global graph representation of the global mesh.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ BaseClass

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::BaseClass = Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Parent class.

    + +
    +
    + +

    ◆ CoMMAPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>
    +
    + +

    Type of pair.

    + +
    +
    + +

    ◆ CoMMASetOfPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
    +
    + +

    Type of set of pairs.

    + +
    +
    + +

    ◆ ContainerIndexType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerIndexType = std::vector<CoMMAIndexType>
    +
    + +

    Type for containers of indices.

    + +
    +
    + +

    ◆ ContainerWeightType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerWeightType = std::vector<CoMMAWeightType>
    +
    + +

    Type for containers of weights.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Dual_Graph()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Dual_Graph (const CoMMAIndexType & nb_c,
    const ContainerIndexTypem_crs_row_ptr,
    const ContainerIndexTypem_crs_col_ind,
    const ContainerWeightTypem_crs_values,
    const ContainerWeightTypevolumes,
    const std::vector< std::vector< CoMMAWeightType > > & centers,
    const std::vector< CoMMAIntType > & n_bnd_faces,
    const CoMMAIntType dimension,
    const ContainerIndexTypeanisotropic_compliant_fc 
    )
    +
    +inline
    +
    + +

    Constructor of the class.

    +
    Parameters
    + + + + + + + + + + +
    [in]nb_cNumber of cells
    [in]m_crs_row_ptrThe row pointer of the CRS representation
    [in]m_crs_col_indThe column index of the CRS representation
    [in]m_crs_valuesThe weight of the CRS representation (in CoMMA case will be the area of the faces that in the graph representation are the edges between two nodes represented by the cell centers.
    [in]volumesThe volumes of the cells
    [in]centersCell centers
    [in]n_bnd_facesVector telling how many boundary faces each cell has
    [in]dimensionDimensionality of the problem, 2- or 3D
    [in]anisotropic_compliant_fcSet of compliant fc cells (in the most of the case all)
    +
    +
    + +
    +
    + +

    ◆ ~Dual_Graph()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Dual_Graph ()
    +
    +overridedefault
    +
    + +

    Destructor of the class.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ compute_neighbourhood_of_cc()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::compute_neighbourhood_of_cc (const std::unordered_set< CoMMAIndexType > & s_seeds,
    CoMMAIntType & nb_of_order_of_neighbourhood,
    std::unordered_map< CoMMAIndexType, CoMMAIntType > & d_n_of_seed,
    const CoMMAIntType max_card,
    const std::vector< bool > & is_fc_agglomerated_tmp 
    ) const
    +
    +inline
    +
    + +

    Compute the dictionary of compactness of fine cells inside a coarse cell.

    +
    Parameters
    + + + + + + +
    [in]s_seedsSet of seeds for which the neighbourhood must be computed. Generally they are the fine cells composing the coarse cell for which we are trying to compute the neighbourhood.
    [in]nb_of_order_of_neighbourhoodorder Of the neighbourhood at which we want to extend the dictionary
    [out]d_n_of_seedDictionary of the neighbourhood given as an output. The key of the associative structure is the index of the fine cell, the value is the order of the distance.
    [in]max_cardMaximum cardinality
    [in]is_fc_agglomerated_tmpVector reporting the already agglomerated cell, useful in the algorithm
    +
    +
    + +
    +
    + +

    ◆ get_n_boundary_faces()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    CoMMAIntType comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_n_boundary_faces (const CoMMAIndexType idx_c) const
    +
    +inline
    +
    + +

    Return how many boundary faces a certain cell has.

    +
    Parameters
    + + +
    [in]idx_cIndex of the cell
    +
    +
    +
    Returns
    the number of boundary faces
    + +
    +
    + +

    ◆ get_nb_cells()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    CoMMAIntType comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_nb_cells () const
    +
    +inline
    +
    + +

    Getter that returns the number of cells.

    +
    Returns
    number of cells
    + +
    +
    + +

    ◆ get_neighbourhood_of_cc()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::unordered_set< CoMMAIndexType > comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_neighbourhood_of_cc (const std::unordered_set< CoMMAIndexType > & s_seeds,
    const std::vector< bool > & is_fc_agglomerated_tmp 
    ) const
    +
    +inline
    +
    + +

    Get the fine cells neighbours of a coarse cell.

    +
    Parameters
    + + + +
    [in]s_seedsSet of seeds for which the neighbourhood should be computed. Generally they are the fine cells composing the coarse cell for which we are trying to compute the neighbourhood.
    [in]is_fc_agglomerated_tmpVector reporting the already agglomerated cell, useful in the algorithm
    +
    +
    +
    Returns
    The set of neighbours
    + +
    +
    + +

    ◆ is_on_boundary()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    bool comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::is_on_boundary (const CoMMAIndexType idx_c) const
    +
    +inline
    +
    + +

    Whether a cell is on the boundary.

    +
    Parameters
    + + +
    [in]idx_cIndex of the cell
    +
    +
    +
    Returns
    Whether a cell is on the boundary
    + +
    +
    + +

    ◆ tag_anisotropic_cells()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::tag_anisotropic_cells (ContainerWeightTypemax_weights,
    std::vector< bool > & is_anisotropic,
    std::deque< CoMMAIndexType > & aniso_seeds_pool,
    const CoMMAWeightType threshold_anisotropy,
    const ContainerWeightTypepriority_weights,
    const CoMMAIndexType preserving 
    )
    +
    +inline
    +
    + +

    Tag cells as anisotropic if their aspect-ratio is over a given threshold and order them according to given priority.

    +
    Parameters
    + + + + + + + +
    [out]max_weightsArray of the maximum weight: the biggest area of the faces composing the given fine cell
    [out]is_anisotropicVector of length equal to the total number of cell telling whether a cell is anisotropic
    [out]aniso_seeds_poolContainer containing the anisotropic cells in the order they should be considered when computing the lines
    [in]threshold_anisotropyValue of the aspect ratio above which a cell is considered anisotropic. If negative, all compliant cells are considered as anisotropic
    [in]priority_weightsWeights used to set the order telling where to start agglomerating. The higher the weight, the higher the priority
    [in]preservingif 0 does not hit only the BL prism to preserve the boundary layer otherwise 2 for 2D or 3 for the 3D to preserve the BL only in the anisotropic agglomeration
    +
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ _centers

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    const std::vector<std::vector<CoMMAWeightType> >& comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_centers
    +
    + +

    Vector of cell centers.

    + +
    +
    + +

    ◆ _compute_AR

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    std::function<CoMMAWeightType(const CoMMAWeightType, const CoMMAWeightType)> comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_compute_AR
    +
    + +

    Function which computes the aspect-ratio from the minimum and maximum faces
    + In 3D: $ AR = sqrt(\frac{max_{surf}}{min_{surf}}) $
    + In 2D: $ AR = \frac{max_{surf}}{min_{surf}} $
    + (Recall that in 2D a face is actually an edge)

    + +
    +
    + +

    ◆ _n_bnd_faces

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    const std::vector<CoMMAIntType>& comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_n_bnd_faces
    +
    + +

    Vector telling how many boundary faces each cell has.

    + +
    +
    + +

    ◆ _s_anisotropic_compliant_cells

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    const std::unordered_set<CoMMAIndexType> comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_s_anisotropic_compliant_cells
    +
    + +

    Elements that are checked if they are anisotropic. If an element satisfies the condition for being anisotropic (typically, AR > threshold) but it not in this set, it will not considered as anisotropic. We use a set to ensure uniqueness.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/classcomma_1_1_dual___graph.js b/classcomma_1_1_dual___graph.js new file mode 100644 index 0000000..61356ab --- /dev/null +++ b/classcomma_1_1_dual___graph.js @@ -0,0 +1,20 @@ +var classcomma_1_1_dual___graph = +[ + [ "BaseClass", "classcomma_1_1_dual___graph.html#ab65d0e9268c98fd72916f2eb16ce4ab4", null ], + [ "CoMMAPairType", "classcomma_1_1_dual___graph.html#a9e4ca69b6d5fa9725246dfc96d85c112", null ], + [ "CoMMASetOfPairType", "classcomma_1_1_dual___graph.html#ac83b5f3409ccd78654bc747f43e2d6d6", null ], + [ "ContainerIndexType", "classcomma_1_1_dual___graph.html#ac24e8e9de0c15af027fe8d1ccd8304d4", null ], + [ "ContainerWeightType", "classcomma_1_1_dual___graph.html#ab61394e58e9019e8d55320e3a2885115", null ], + [ "Dual_Graph", "classcomma_1_1_dual___graph.html#a62db97821210fa0ffa99d3396eecdaae", null ], + [ "~Dual_Graph", "classcomma_1_1_dual___graph.html#ad2ece10214db2a38f54b4c2e4ab4451f", null ], + [ "compute_neighbourhood_of_cc", "classcomma_1_1_dual___graph.html#a20485b4e0bddf0fd2e6fe38b5aa7582b", null ], + [ "get_n_boundary_faces", "classcomma_1_1_dual___graph.html#a020ecb0b3f410b468bbb8e57878bf9aa", null ], + [ "get_nb_cells", "classcomma_1_1_dual___graph.html#a03162eab93fc7ace92992ebea53db274", null ], + [ "get_neighbourhood_of_cc", "classcomma_1_1_dual___graph.html#a7e3f45ecd852a941dc39064f7454efb3", null ], + [ "is_on_boundary", "classcomma_1_1_dual___graph.html#a243466aae3bc5b1a7c1f259dc398ce67", null ], + [ "tag_anisotropic_cells", "classcomma_1_1_dual___graph.html#ae54c9474438da03527cc8eab80362cf3", null ], + [ "_centers", "classcomma_1_1_dual___graph.html#a49d4b45fcbf985e001a9137f38d8fd0d", null ], + [ "_compute_AR", "classcomma_1_1_dual___graph.html#adbc7f2b85fe3771b78a1d485575ed4a3", null ], + [ "_n_bnd_faces", "classcomma_1_1_dual___graph.html#aa791a6c06faf85eeab349adbb7010b7e", null ], + [ "_s_anisotropic_compliant_cells", "classcomma_1_1_dual___graph.html#af16576287d20ef656d4d7fa3479f0bed", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_dual___graph.png b/classcomma_1_1_dual___graph.png new file mode 100644 index 0000000..1ad10fb Binary files /dev/null and b/classcomma_1_1_dual___graph.png differ diff --git a/classcomma_1_1_graph-members.html b/classcomma_1_1_graph-members.html new file mode 100644 index 0000000..ebf7a58 --- /dev/null +++ b/classcomma_1_1_graph-members.html @@ -0,0 +1,133 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    +
    + +

    This is the complete list of members for comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    _m_CRS_Col_Indcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _m_CRS_Row_Ptrcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _m_CRS_Valuescomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _number_of_cellscomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _visitedcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _volumescomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    BFS(const CoMMAIndexType &root)comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    check_connectivity()comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    compute_fc_compactness_inside_a_cc(const std::unordered_set< CoMMAIndexType > &s_fc) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    compute_min_fc_compactness_inside_a_cc(const std::unordered_set< CoMMAIndexType > &s_fc) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    ContainerIndexConstIt typedefcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ContainerIndexType typedefcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ContainerWeightConstIt typedefcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ContainerWeightType typedefcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    DFS(const CoMMAIndexType &i_fc)comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_nb_of_neighbours(CoMMAIndexType i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_neighbours(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_weights(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Graph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    neighbours_cbegin(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    neighbours_cend(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    weights_cbegin(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    weights_cend(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    ~Graph()=defaultcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
    +
    + + + + diff --git a/class_graph.html b/classcomma_1_1_graph.html similarity index 51% rename from class_graph.html rename to classcomma_1_1_graph.html index ae7bb66..89bfe8b 100644 --- a/class_graph.html +++ b/classcomma_1_1_graph.html @@ -5,7 +5,7 @@ -CoMMA: Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference +CoMMA: comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference @@ -65,7 +65,7 @@

    -
    Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +List of all members
    +
    comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference

    -

    An interface class responsible of storing the cell centered dual graph and of acting on it (it is an interface for the global Dual_Graph and the Subgraph) - More...

    +

    An interface class responsible of storing the cell centered dual graph and of acting on it (it is an interface for the global Dual_Graph and the Subgraph) + More...

    #include <Dual_Graph.h>

    -Inheritance diagram for Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +Inheritance diagram for comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    - - -Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + + +comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    - - - - - - - - - - - - + + + + + + + + + + + +

    Public Types

    using ContainerIndexType = vector< CoMMAIndexType >
     Type for containers of indices. More...
     
    using ContainerWeightType = vector< CoMMAWeightType >
     Type for containers of weights. More...
     
    using ContainerIndexConstIt = typename ContainerIndexType::const_iterator
     Type for constant iterators of containers of indices. More...
     
    using ContainerWeightConstIt = typename ContainerWeightType::const_iterator
     Type for constant iterators of containers of weights. More...
     
    using ContainerIndexType = std::vector< CoMMAIndexType >
     Type for containers of indices. More...
     
    using ContainerWeightType = std::vector< CoMMAWeightType >
     Type for containers of weights. More...
     
    using ContainerIndexConstIt = typename ContainerIndexType::const_iterator
     Type for constant iterators of containers of indices. More...
     
    using ContainerWeightConstIt = typename ContainerWeightType::const_iterator
     Type for constant iterators of containers of weights. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Member Functions

     Graph (const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)
     Constructor of the class. More...
     
    virtual ~Graph ()=default
     Destructor of the class. More...
     
    void DFS (const CoMMAIndexType &i_fc)
     Depth First Search (DFS) recursive function. More...
     
    void BFS (const CoMMAIndexType &root)
     Breadth First Search (BFS) function. More...
     
    CoMMAIntType get_nb_of_neighbours (CoMMAIndexType i_c) const
     Retrieve the number of neighbours. More...
     
    ContainerIndexType get_neighbours (const CoMMAIndexType &i_c) const
     Based on the CRS representation retrieves the neighbours of the cell given as an input. More...
     
    ContainerIndexConstIt neighbours_cbegin (const CoMMAIndexType &i_c) const
     Get constant pointer to the first neighbour of cell i_c. More...
     
    ContainerIndexConstIt neighbours_cend (const CoMMAIndexType &i_c) const
     Get constant pointer to the element following the last neighbour of cell i_c. More...
     
    ContainerWeightType get_weights (const CoMMAIndexType &i_c) const
     Based on the area of the faces composing the cell given as an input, we retrieve the faces connecting the given cell with the neighbourhood that can be described also as the weight of the graph. More...
     
    ContainerWeightConstIt weights_cbegin (const CoMMAIndexType &i_c) const
     Get constant pointer to the first neighbour of cell i_c. More...
     
    ContainerWeightConstIt weights_cend (const CoMMAIndexType &i_c) const
     Get constant pointer to the element following the last neighbour of cell i_c. More...
     
    bool check_connectivity ()
     Check the connectivity of the graph. More...
     
    CoMMAIntType compute_min_fc_compactness_inside_a_cc (const unordered_set< CoMMAIndexType > &s_fc) const
     Compute the minimum compactness of fine cells inside a coarse cell. More...
     
    unordered_map< CoMMAIndexType, CoMMAIntType > compute_fc_compactness_inside_a_cc (const unordered_set< CoMMAIndexType > &s_fc) const
     Compute the dictionary of compactness of fine cells inside a coarse cell. More...
     
     Graph (const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)
     Constructor of the class. More...
     
    virtual ~Graph ()=default
     Destructor of the class. More...
     
    void DFS (const CoMMAIndexType &i_fc)
     Depth First Search (DFS) recursive function. More...
     
    void BFS (const CoMMAIndexType &root)
     Breadth First Search (BFS) function. More...
     
    CoMMAIntType get_nb_of_neighbours (CoMMAIndexType i_c) const
     Retrieve the number of neighbours. More...
     
    ContainerIndexType get_neighbours (const CoMMAIndexType &i_c) const
     Based on the CRS representation retrieves the neighbours of the cell given as an input. More...
     
    ContainerIndexConstIt neighbours_cbegin (const CoMMAIndexType &i_c) const
     Get constant pointer to the first neighbour of cell i_c. More...
     
    ContainerIndexConstIt neighbours_cend (const CoMMAIndexType &i_c) const
     Get constant pointer to the element following the last neighbour of cell i_c. More...
     
    ContainerWeightType get_weights (const CoMMAIndexType &i_c) const
     Based on the area of the faces composing the cell given as an input, we retrieve the faces connecting the given cell with the neighbourhood that can be described also as the weight of the graph. More...
     
    ContainerWeightConstIt weights_cbegin (const CoMMAIndexType &i_c) const
     Get constant pointer to the first neighbour of cell i_c. More...
     
    ContainerWeightConstIt weights_cend (const CoMMAIndexType &i_c) const
     Get constant pointer to the element following the last neighbour of cell i_c. More...
     
    bool check_connectivity ()
     Check the connectivity of the graph. More...
     
    CoMMAIntType compute_min_fc_compactness_inside_a_cc (const std::unordered_set< CoMMAIndexType > &s_fc) const
     Compute the minimum compactness of fine cells inside a coarse cell. More...
     
    std::unordered_map< CoMMAIndexType, CoMMAIntType > compute_fc_compactness_inside_a_cc (const std::unordered_set< CoMMAIndexType > &s_fc) const
     Compute the dictionary of compactness of fine cells inside a coarse cell. More...
     
    - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +

    Public Attributes

    CoMMAIndexType _number_of_cells
     Number of nodes in the Graph (it corresponds to the number of cells in the subgraph or the dual graph. More...
     
    vector< bool > _visited
     Helper vector for the DFS. More...
     
    ContainerIndexType _m_CRS_Row_Ptr
     Vector of row pointer of CRS representation. More...
     
    ContainerIndexType _m_CRS_Col_Ind
     Vector of column index of CRS representation. More...
     
    ContainerWeightType _m_CRS_Values
     Vector of area weight of CRS representation. More...
     
    ContainerWeightType _volumes
     Vector of volumes. More...
     
    CoMMAIndexType _number_of_cells
     Number of nodes in the Graph (it corresponds to the number of cells in the subgraph or the dual graph. More...
     
    std::vector< bool > _visited
     Helper vector for the DFS. More...
     
    ContainerIndexType _m_CRS_Row_Ptr
     Vector of row pointer of CRS representation. More...
     
    ContainerIndexType _m_CRS_Col_Ind
     Vector of column index of CRS representation. More...
     
    ContainerWeightType _m_CRS_Values
     Vector of area weight of CRS representation. More...
     
    ContainerWeightType _volumes
     Vector of volumes. More...
     

    Detailed Description

    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    -class Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    An interface class responsible of storing the cell centered dual graph and of acting on it (it is an interface for the global Dual_Graph and the Subgraph)

    +class comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    An interface class responsible of storing the cell centered dual graph and of acting on it (it is an interface for the global Dual_Graph and the Subgraph)

    Template Parameters
    @@ -208,8 +208,8 @@

    Member Typedef Documentation

    - -

    ◆ ContainerIndexConstIt

    + +

    ◆ ContainerIndexConstIt

    @@ -217,7 +217,7 @@

    - +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    using Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerIndexConstIt = typename ContainerIndexType::const_iteratorusing comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerIndexConstIt = typename ContainerIndexType::const_iterator
    @@ -226,8 +226,8 @@

    -

    ◆ ContainerIndexType

    + +

    ◆ ContainerIndexType

    @@ -235,7 +235,7 @@

    - using Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerIndexType = vector<CoMMAIndexType> + using comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerIndexType = std::vector<CoMMAIndexType>

    @@ -244,8 +244,8 @@

    -

    ◆ ContainerWeightConstIt

    + +

    ◆ ContainerWeightConstIt

    @@ -253,7 +253,7 @@

    - using Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerWeightConstIt = typename ContainerWeightType::const_iterator + using comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerWeightConstIt = typename ContainerWeightType::const_iterator

    @@ -262,8 +262,8 @@

    -

    ◆ ContainerWeightType

    + +

    ◆ ContainerWeightType

    @@ -271,7 +271,7 @@

    - using Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerWeightType = vector<CoMMAWeightType> + using comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerWeightType = std::vector<CoMMAWeightType>

    @@ -281,8 +281,8 @@

    Constructor & Destructor Documentation

    - -

    ◆ Graph()

    + +

    ◆ Graph()

    @@ -293,7 +293,7 @@

    - + @@ -301,25 +301,25 @@

    - + - + - + - + @@ -349,8 +349,8 @@

    -

    ◆ ~Graph()

    + +

    ◆ ~Graph()

    @@ -361,7 +361,7 @@

    Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Graph comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Graph ( const CoMMAIndexType &  nb_c, const ContainerIndexTypeconst ContainerIndexType m_crs_row_ptr,
    const ContainerIndexTypeconst ContainerIndexType m_crs_col_ind,
    const ContainerWeightTypeconst ContainerWeightType m_crs_values,
    const ContainerWeightTypeconst ContainerWeightType volumes 
    - + @@ -379,8 +379,8 @@

    Member Function Documentation

    - -

    ◆ BFS()

    + +

    ◆ BFS()

    @@ -391,7 +391,7 @@

    virtual Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Graph virtual comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Graph ( )
    - + @@ -415,8 +415,8 @@

    -

    ◆ check_connectivity()

    + +

    ◆ check_connectivity()

    @@ -427,7 +427,7 @@

    void Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::BFS void comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::BFS ( const CoMMAIndexType &  root)
    - + @@ -445,8 +445,8 @@

    -

    ◆ compute_fc_compactness_inside_a_cc()

    + +

    ◆ compute_fc_compactness_inside_a_cc()

    @@ -457,9 +457,9 @@

    bool Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::check_connectivity bool comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::check_connectivity ( )
    - + - + @@ -482,8 +482,8 @@

    -

    ◆ compute_min_fc_compactness_inside_a_cc()

    + +

    ◆ compute_min_fc_compactness_inside_a_cc()

    @@ -494,9 +494,9 @@

    unordered_map< CoMMAIndexType, CoMMAIntType > Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::compute_fc_compactness_inside_a_cc std::unordered_map< CoMMAIndexType, CoMMAIntType > comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::compute_fc_compactness_inside_a_cc (const unordered_set< CoMMAIndexType > & const std::unordered_set< CoMMAIndexType > &  s_fc) const
    - + - + @@ -519,8 +519,8 @@

    -

    ◆ DFS()

    + +

    ◆ DFS()

    @@ -531,7 +531,7 @@

    CoMMAIntType Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::compute_min_fc_compactness_inside_a_cc CoMMAIntType comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::compute_min_fc_compactness_inside_a_cc (const unordered_set< CoMMAIndexType > & const std::unordered_set< CoMMAIndexType > &  s_fc) const
    - + @@ -555,8 +555,8 @@

    -

    ◆ get_nb_of_neighbours()

    + +

    ◆ get_nb_of_neighbours()

    @@ -567,7 +567,7 @@

    void Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::DFS void comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::DFS ( const CoMMAIndexType &  i_fc)
    - + @@ -592,8 +592,8 @@

    -

    ◆ get_neighbours()

    + +

    ◆ get_neighbours()

    @@ -604,7 +604,7 @@

    CoMMAIntType Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_nb_of_neighbours CoMMAIntType comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_nb_of_neighbours ( CoMMAIndexType  i_c)
    - + @@ -629,8 +629,8 @@

    -

    ◆ get_weights()

    + +

    ◆ get_weights()

    @@ -641,7 +641,7 @@

    ContainerIndexType Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_neighbours ContainerIndexType comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_neighbours ( const CoMMAIndexType &  i_c)
    - + @@ -666,8 +666,8 @@

    -

    ◆ neighbours_cbegin()

    + +

    ◆ neighbours_cbegin()

    @@ -678,7 +678,7 @@

    ContainerWeightType Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_weights ContainerWeightType comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_weights ( const CoMMAIndexType &  i_c)
    - + @@ -703,8 +703,8 @@

    -

    ◆ neighbours_cend()

    + +

    ◆ neighbours_cend()

    @@ -715,7 +715,7 @@

    ContainerIndexConstIt Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::neighbours_cbegin ContainerIndexConstIt comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::neighbours_cbegin ( const CoMMAIndexType &  i_c)
    - + @@ -740,8 +740,8 @@

    -

    ◆ weights_cbegin()

    + +

    ◆ weights_cbegin()

    @@ -752,7 +752,7 @@

    ContainerIndexConstIt Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::neighbours_cend ContainerIndexConstIt comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::neighbours_cend ( const CoMMAIndexType &  i_c)
    - + @@ -777,8 +777,8 @@

    -

    ◆ weights_cend()

    + +

    ◆ weights_cend()

    @@ -789,7 +789,7 @@

    ContainerWeightConstIt Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::weights_cbegin ContainerWeightConstIt comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::weights_cbegin ( const CoMMAIndexType &  i_c)
    - + @@ -815,8 +815,8 @@

    Member Data Documentation

    - -

    ◆ _m_CRS_Col_Ind

    + +

    ◆ _m_CRS_Col_Ind

    @@ -824,7 +824,7 @@

    - +
    ContainerWeightConstIt Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::weights_cend ContainerWeightConstIt comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::weights_cend ( const CoMMAIndexType &  i_c)
    ContainerIndexType Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_m_CRS_Col_IndContainerIndexType comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_m_CRS_Col_Ind

    @@ -833,8 +833,8 @@

    -

    ◆ _m_CRS_Row_Ptr

    + +

    ◆ _m_CRS_Row_Ptr

    @@ -842,7 +842,7 @@

    - ContainerIndexType Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_m_CRS_Row_Ptr + ContainerIndexType comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_m_CRS_Row_Ptr

    @@ -851,8 +851,8 @@

    -

    ◆ _m_CRS_Values

    + +

    ◆ _m_CRS_Values

    @@ -860,7 +860,7 @@

    - ContainerWeightType Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_m_CRS_Values + ContainerWeightType comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_m_CRS_Values

    @@ -869,8 +869,8 @@

    -

    ◆ _number_of_cells

    + +

    ◆ _number_of_cells

    @@ -878,17 +878,17 @@

    - CoMMAIndexType Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_number_of_cells + CoMMAIndexType comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_number_of_cells

    -

    Number of nodes in the Graph (it corresponds to the number of cells in the subgraph or the dual graph.

    +

    Number of nodes in the Graph (it corresponds to the number of cells in the subgraph or the dual graph.

    - -

    ◆ _visited

    + +

    ◆ _visited

    @@ -896,7 +896,7 @@

    - vector<bool> Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_visited + std::vector<bool> comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_visited

    @@ -905,8 +905,8 @@

    -

    ◆ _volumes

    + +

    ◆ _volumes

    @@ -914,7 +914,7 @@

    - ContainerWeightType Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_volumes + ContainerWeightType comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_volumes

    @@ -924,14 +924,14 @@

    Dual_Graph.h +
  • include/CoMMA/Dual_Graph.h
  • diff --git a/classcomma_1_1_graph.js b/classcomma_1_1_graph.js new file mode 100644 index 0000000..e7eafda --- /dev/null +++ b/classcomma_1_1_graph.js @@ -0,0 +1,27 @@ +var classcomma_1_1_graph = +[ + [ "ContainerIndexConstIt", "classcomma_1_1_graph.html#a698f1f4f188f408a34625c656038636e", null ], + [ "ContainerIndexType", "classcomma_1_1_graph.html#ac24e8e9de0c15af027fe8d1ccd8304d4", null ], + [ "ContainerWeightConstIt", "classcomma_1_1_graph.html#a33a60fc9c014fc5adb267d64e8f4b2bb", null ], + [ "ContainerWeightType", "classcomma_1_1_graph.html#ab61394e58e9019e8d55320e3a2885115", null ], + [ "Graph", "classcomma_1_1_graph.html#a22e0c39a18c9f9bc87cc71c0255b43c0", null ], + [ "~Graph", "classcomma_1_1_graph.html#ad7d4773cefcbc9627b0779e28824e1f8", null ], + [ "BFS", "classcomma_1_1_graph.html#aeea451f73bc04c2b88a24a4709f28c21", null ], + [ "check_connectivity", "classcomma_1_1_graph.html#a72c40bec394188475ac30b159388f29f", null ], + [ "compute_fc_compactness_inside_a_cc", "classcomma_1_1_graph.html#a5ca107f24d5ba40ea695a23699eb1661", null ], + [ "compute_min_fc_compactness_inside_a_cc", "classcomma_1_1_graph.html#a4a4d55d139f5812150abfa01e197f5e5", null ], + [ "DFS", "classcomma_1_1_graph.html#a138b207a27e58bcb238d0a80444ba75b", null ], + [ "get_nb_of_neighbours", "classcomma_1_1_graph.html#a565588a181fda3b2ebab502ff00c3546", null ], + [ "get_neighbours", "classcomma_1_1_graph.html#a26a90ddbfdfa7fd05dd068e3b8eb4c9f", null ], + [ "get_weights", "classcomma_1_1_graph.html#aec4547e40dba5830f05b5fe96cd2355c", null ], + [ "neighbours_cbegin", "classcomma_1_1_graph.html#ae53c16fecb13a6319a63b681ac470f94", null ], + [ "neighbours_cend", "classcomma_1_1_graph.html#a49889cfff4e34758c1716d0d43c292d4", null ], + [ "weights_cbegin", "classcomma_1_1_graph.html#a036c1da6e0297d153c0a1dea0aeee8b9", null ], + [ "weights_cend", "classcomma_1_1_graph.html#a9974d87bd1fc67902f8c5fc400a3ad71", null ], + [ "_m_CRS_Col_Ind", "classcomma_1_1_graph.html#aa8d637d0718dbf470f51d8a7a07f3baa", null ], + [ "_m_CRS_Row_Ptr", "classcomma_1_1_graph.html#a708321a816653163524e7f261bbe4cbe", null ], + [ "_m_CRS_Values", "classcomma_1_1_graph.html#a07cb0d55e652d04e3e7c83c02efa757e", null ], + [ "_number_of_cells", "classcomma_1_1_graph.html#ad04e5b90c7fc132406dae34bb8f9fa49", null ], + [ "_visited", "classcomma_1_1_graph.html#aec53729d369659cd15a85198a8d0595f", null ], + [ "_volumes", "classcomma_1_1_graph.html#ad7ed39610dc52059d435b5c94f099f7b", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_graph.png b/classcomma_1_1_graph.png new file mode 100644 index 0000000..20b9550 Binary files /dev/null and b/classcomma_1_1_graph.png differ diff --git a/classcomma_1_1_neighbourhood-members.html b/classcomma_1_1_neighbourhood-members.html new file mode 100644 index 0000000..e51161a --- /dev/null +++ b/classcomma_1_1_neighbourhood-members.html @@ -0,0 +1,123 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    +
    + +

    This is the complete list of members for comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    + + + + + + + + + + + + + + + +
    _candidatescomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _s_fccomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _s_neighbours_of_seedcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _weightscomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    CandidatesContainerType typedefcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAPairFindFirstBasedType typedefcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAPairType typedefcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMASetOfPairType typedefcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    extract_and_update_candidates(const CoMMASetOfPairType &candidates_w_weights)comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlineprotected
    get_candidates() constcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Neighbourhood(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Neighbourhood(const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=defaultcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    update(const CoMMAIndexType new_fc, const std::vector< CoMMAIndexType > &new_neighbours)=0comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
    ~Neighbourhood()=defaultcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
    +
    + + + + diff --git a/classcomma_1_1_neighbourhood.html b/classcomma_1_1_neighbourhood.html new file mode 100644 index 0000000..ca92c9f --- /dev/null +++ b/classcomma_1_1_neighbourhood.html @@ -0,0 +1,592 @@ + + + + + + + +CoMMA: comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Referenceabstract
    +
    +
    + +

    Class representing the neighbourhood of a given cell in the graph. Mind that no information about the element being already agglomerated or not is known here. + More...

    + +

    #include <Neighbourhood.h>

    +
    +Inheritance diagram for comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + + + + +

    +Public Types

    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    using CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor< CoMMAPairType >
     Functor used if find-like function relying only on first element of the pair. More...
     
    using CandidatesContainerType = std::deque< CoMMAIndexType >
     Type for container of candidates. More...
     
    + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Neighbourhood (const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)
     Constructor. More...
     
     Neighbourhood (const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
     Copy constructor. More...
     
    virtual ~Neighbourhood ()=default
     Destructor. More...
     
    virtual void update (const CoMMAIndexType new_fc, const std::vector< CoMMAIndexType > &new_neighbours)=0
     Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are added as candidates. More...
     
    const CandidatesContainerTypeget_candidates () const
     Get candidates that should be consider in the next step of the agglomeration. More...
     
    + + + + +

    +Protected Member Functions

    void extract_and_update_candidates (const CoMMASetOfPairType &candidates_w_weights)
     Extract the indices from a list of index-weight pairs and add them at the back of the candidates list. More...
     
    + + + + + + + + + + + + + +

    +Protected Attributes

    const std::unordered_set< CoMMAIndexType > _s_neighbours_of_seed
     Set of the neighbours of seed given as an input in the constructor. Here, we can find all the neighbours of order up to a user-defined value of the initial seed. Hence, it holds the cells allowed to be agglomerated. More...
     
    const std::vector< CoMMAWeightType > & _weights
     Priority weights. More...
     
    std::unordered_set< CoMMAIndexType > _s_fc
     Set of the fine cells composing the coarse cell. More...
     
    CandidatesContainerType _candidates
     Candidates that should be considered when choosing the next fine cell to add to the coarse one. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +class comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Class representing the neighbourhood of a given cell in the graph. Mind that no information about the element being already agglomerated or not is known here.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ CandidatesContainerType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CandidatesContainerType = std::deque<CoMMAIndexType>
    +
    + +

    Type for container of candidates.

    + +
    +
    + +

    ◆ CoMMAPairFindFirstBasedType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor<CoMMAPairType>
    +
    + +

    Functor used if find-like function relying only on first element of the pair.

    + +
    +
    + +

    ◆ CoMMAPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>
    +
    + +

    Type of pair.

    + +
    +
    + +

    ◆ CoMMASetOfPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
    +
    + +

    Type of set of pairs.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Neighbourhood() [1/2]

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Neighbourhood (const std::unordered_set< CoMMAIndexType > & s_neighbours_of_seed,
    const std::vector< CoMMAWeightType > & weights 
    )
    +
    +inline
    +
    + +

    Constructor.

    +
    Parameters
    + + + +
    [in]s_neighbours_of_seedSet of the neighbours of the given cell chosen as seed
    [in]weightsWeights used to set up the order of the neighbours to visit
    +
    +
    + +
    +
    + +

    ◆ Neighbourhood() [2/2]

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Neighbourhood (const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > & other)
    +
    +default
    +
    + +

    Copy constructor.

    + +
    +
    + +

    ◆ ~Neighbourhood()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    virtual comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Neighbourhood ()
    +
    +virtualdefault
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ extract_and_update_candidates()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    void comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::extract_and_update_candidates (const CoMMASetOfPairTypecandidates_w_weights)
    +
    +inlineprotected
    +
    + +

    Extract the indices from a list of index-weight pairs and add them at the back of the candidates list.

    + +
    +
    + +

    ◆ get_candidates()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    const CandidatesContainerType & comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_candidates () const
    +
    +inline
    +
    + +

    Get candidates that should be consider in the next step of the agglomeration.

    +
    Returns
    The candidates
    + +
    +
    + +

    ◆ update()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual void comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update (const CoMMAIndexType new_fc,
    const std::vector< CoMMAIndexType > & new_neighbours 
    )
    +
    +pure virtual
    +
    + +

    Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are added as candidates.

    +
    Parameters
    + + + +
    [in]new_fcIndex of the new fine cell to be added to the set of fine cells
    [in]new_neighboursVector of the new neighbours to be analysed
    +
    +
    + +

    Implemented in comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ _candidates

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + +
    CandidatesContainerType comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_candidates
    +
    +protected
    +
    + +

    Candidates that should be considered when choosing the next fine cell to add to the coarse one.

    + +
    +
    + +

    ◆ _s_fc

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + +
    std::unordered_set<CoMMAIndexType> comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_s_fc
    +
    +protected
    +
    + +

    Set of the fine cells composing the coarse cell.

    + +
    +
    + +

    ◆ _s_neighbours_of_seed

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + +
    const std::unordered_set<CoMMAIndexType> comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_s_neighbours_of_seed
    +
    +protected
    +
    + +

    Set of the neighbours of seed given as an input in the constructor. Here, we can find all the neighbours of order up to a user-defined value of the initial seed. Hence, it holds the cells allowed to be agglomerated.

    + +
    +
    + +

    ◆ _weights

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + +
    const std::vector<CoMMAWeightType>& comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_weights
    +
    +protected
    +
    + +

    Priority weights.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/classcomma_1_1_neighbourhood.js b/classcomma_1_1_neighbourhood.js new file mode 100644 index 0000000..85d8a16 --- /dev/null +++ b/classcomma_1_1_neighbourhood.js @@ -0,0 +1,17 @@ +var classcomma_1_1_neighbourhood = +[ + [ "CandidatesContainerType", "classcomma_1_1_neighbourhood.html#a777595766a1b44ada43638ab5844f98d", null ], + [ "CoMMAPairFindFirstBasedType", "classcomma_1_1_neighbourhood.html#a1bcc96dd1f011b683f94d6492de5c94b", null ], + [ "CoMMAPairType", "classcomma_1_1_neighbourhood.html#ae017bf1bdbf97533b6078628196daa0a", null ], + [ "CoMMASetOfPairType", "classcomma_1_1_neighbourhood.html#a848ff0040340a5b904dfb9c8306e1439", null ], + [ "Neighbourhood", "classcomma_1_1_neighbourhood.html#a23faf6843893fc19a84c4b3b2ded6044", null ], + [ "Neighbourhood", "classcomma_1_1_neighbourhood.html#a86faebda628571c81ff0771703a80a1a", null ], + [ "~Neighbourhood", "classcomma_1_1_neighbourhood.html#ae54c6b0bf42c2ec21c56308a1cddf05b", null ], + [ "extract_and_update_candidates", "classcomma_1_1_neighbourhood.html#abf5efa9c654e7bacae24f74d3c3b8dc1", null ], + [ "get_candidates", "classcomma_1_1_neighbourhood.html#a63d4c3d2726a60aa88c69012f0b17167", null ], + [ "update", "classcomma_1_1_neighbourhood.html#a2a993a6864f21796dafeb06778cb461d", null ], + [ "_candidates", "classcomma_1_1_neighbourhood.html#a6ddd9f0975543a8c8843b415645abc69", null ], + [ "_s_fc", "classcomma_1_1_neighbourhood.html#aab45271f5bea1f6519cab6c069df7bac", null ], + [ "_s_neighbours_of_seed", "classcomma_1_1_neighbourhood.html#a357ce64ac4e6d2e9ff5e9e7e75157886", null ], + [ "_weights", "classcomma_1_1_neighbourhood.html#a0c2d7202d396da52d62d4b7463c5d947", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_neighbourhood.png b/classcomma_1_1_neighbourhood.png new file mode 100644 index 0000000..1e26c73 Binary files /dev/null and b/classcomma_1_1_neighbourhood.png differ diff --git a/classcomma_1_1_neighbourhood___extended-members.html b/classcomma_1_1_neighbourhood___extended-members.html new file mode 100644 index 0000000..81f0016 --- /dev/null +++ b/classcomma_1_1_neighbourhood___extended-members.html @@ -0,0 +1,127 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    +
    + +

    This is the complete list of members for comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + +
    _candidatescomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _s_fccomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _s_neighbours_of_seedcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _weightscomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    CandidatesContainerType typedefcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAPairFindFirstBasedType typedefcomma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAPairType typedefcomma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMASetOfPairType typedefcomma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    extract_and_update_candidates(const CoMMASetOfPairType &candidates_w_weights)comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlineprotected
    get_candidates() constcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Neighbourhood(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Neighbourhood(const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=defaultcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    Neighbourhood_Extended(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Neighbourhood_Extended(const Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=defaultcomma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    NeighbourhoodBaseType typedefcomma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    update(const CoMMAIndexType new_fc, const std::vector< CoMMAIndexType > &new_neighbours) overridecomma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    ~Neighbourhood()=defaultcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
    ~Neighbourhood_Extended() override=defaultcomma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    +
    + + + + diff --git a/classcomma_1_1_neighbourhood___extended.html b/classcomma_1_1_neighbourhood___extended.html new file mode 100644 index 0000000..4d4c791 --- /dev/null +++ b/classcomma_1_1_neighbourhood___extended.html @@ -0,0 +1,449 @@ + + + + + + + +CoMMA: comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +
    +
    + +

    Class representing the neighbourhood of a given cell in the graph. In this derived class the neighbourhood is extended, meaning that all the neighbours seen so far are candidates. + More...

    + +

    #include <Neighbourhood.h>

    +
    +Inheritance diagram for comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Base class. More...
     
    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    using CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor< CoMMAPairType >
     Functor used if find-like function relying only on first element of the pair. More...
     
    - Public Types inherited from comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    using CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor< CoMMAPairType >
     Functor used if find-like function relying only on first element of the pair. More...
     
    using CandidatesContainerType = std::deque< CoMMAIndexType >
     Type for container of candidates. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Neighbourhood_Extended (const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)
     Constructor. More...
     
     Neighbourhood_Extended (const Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
     Copy constructor. More...
     
     ~Neighbourhood_Extended () override=default
     Destructor. More...
     
    void update (const CoMMAIndexType new_fc, const std::vector< CoMMAIndexType > &new_neighbours) override
     Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are added as candidates. More...
     
    - Public Member Functions inherited from comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Neighbourhood (const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)
     Constructor. More...
     
     Neighbourhood (const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
     Copy constructor. More...
     
    virtual ~Neighbourhood ()=default
     Destructor. More...
     
    virtual void update (const CoMMAIndexType new_fc, const std::vector< CoMMAIndexType > &new_neighbours)=0
     Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are added as candidates. More...
     
    const CandidatesContainerTypeget_candidates () const
     Get candidates that should be consider in the next step of the agglomeration. More...
     
    + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Protected Member Functions inherited from comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    void extract_and_update_candidates (const CoMMASetOfPairType &candidates_w_weights)
     Extract the indices from a list of index-weight pairs and add them at the back of the candidates list. More...
     
    - Protected Attributes inherited from comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    const std::unordered_set< CoMMAIndexType > _s_neighbours_of_seed
     Set of the neighbours of seed given as an input in the constructor. Here, we can find all the neighbours of order up to a user-defined value of the initial seed. Hence, it holds the cells allowed to be agglomerated. More...
     
    const std::vector< CoMMAWeightType > & _weights
     Priority weights. More...
     
    std::unordered_set< CoMMAIndexType > _s_fc
     Set of the fine cells composing the coarse cell. More...
     
    CandidatesContainerType _candidates
     Candidates that should be considered when choosing the next fine cell to add to the coarse one. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +class comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Class representing the neighbourhood of a given cell in the graph. In this derived class the neighbourhood is extended, meaning that all the neighbours seen so far are candidates.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ CoMMAPairFindFirstBasedType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor<CoMMAPairType>
    +
    + +

    Functor used if find-like function relying only on first element of the pair.

    + +
    +
    + +

    ◆ CoMMAPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>
    +
    + +

    Type of pair.

    + +
    +
    + +

    ◆ CoMMASetOfPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
    +
    + +

    Type of set of pairs.

    + +
    +
    + +

    ◆ NeighbourhoodBaseType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodBaseType = Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Base class.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Neighbourhood_Extended() [1/2]

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Neighbourhood_Extended (const std::unordered_set< CoMMAIndexType > & s_neighbours_of_seed,
    const std::vector< CoMMAWeightType > & weights 
    )
    +
    +inline
    +
    + +

    Constructor.

    +
    Parameters
    + + + +
    [in]s_neighbours_of_seedSet of the neighbours of the given cell chosen as seed
    [in]weightsWeights used to set up the order of the neighbours to visit
    +
    +
    + +
    +
    + +

    ◆ Neighbourhood_Extended() [2/2]

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Neighbourhood_Extended (const Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > & other)
    +
    +default
    +
    + +

    Copy constructor.

    + +
    +
    + +

    ◆ ~Neighbourhood_Extended()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Neighbourhood_Extended ()
    +
    +overridedefault
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ update()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update (const CoMMAIndexType new_fc,
    const std::vector< CoMMAIndexType > & new_neighbours 
    )
    +
    +inlineoverridevirtual
    +
    + +

    Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are added as candidates.

    +
    Parameters
    + + + +
    [in]new_fcIndex of the new fine cell to be added to the set of fine cells
    [in]new_neighboursVector of the new neighbours to be analysed
    +
    +
    + +

    Implements comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/classcomma_1_1_neighbourhood___extended.js b/classcomma_1_1_neighbourhood___extended.js new file mode 100644 index 0000000..e7d45a4 --- /dev/null +++ b/classcomma_1_1_neighbourhood___extended.js @@ -0,0 +1,11 @@ +var classcomma_1_1_neighbourhood___extended = +[ + [ "CoMMAPairFindFirstBasedType", "classcomma_1_1_neighbourhood___extended.html#a1bcc96dd1f011b683f94d6492de5c94b", null ], + [ "CoMMAPairType", "classcomma_1_1_neighbourhood___extended.html#ae017bf1bdbf97533b6078628196daa0a", null ], + [ "CoMMASetOfPairType", "classcomma_1_1_neighbourhood___extended.html#a848ff0040340a5b904dfb9c8306e1439", null ], + [ "NeighbourhoodBaseType", "classcomma_1_1_neighbourhood___extended.html#a7186ba352d92837fca975e90fd1b5013", null ], + [ "Neighbourhood_Extended", "classcomma_1_1_neighbourhood___extended.html#abcf357a7a3031045502ba7a3a9959c0c", null ], + [ "Neighbourhood_Extended", "classcomma_1_1_neighbourhood___extended.html#aead86237e93abd8199965599ac2df567", null ], + [ "~Neighbourhood_Extended", "classcomma_1_1_neighbourhood___extended.html#ada067e494ee4d1ed5533aa26384806f9", null ], + [ "update", "classcomma_1_1_neighbourhood___extended.html#a452c8c35e83e2b4a28cb4e60362bcfed", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_neighbourhood___extended.png b/classcomma_1_1_neighbourhood___extended.png new file mode 100644 index 0000000..245974d Binary files /dev/null and b/classcomma_1_1_neighbourhood___extended.png differ diff --git a/classcomma_1_1_neighbourhood___pure___front-members.html b/classcomma_1_1_neighbourhood___pure___front-members.html new file mode 100644 index 0000000..0cf6e67 --- /dev/null +++ b/classcomma_1_1_neighbourhood___pure___front-members.html @@ -0,0 +1,130 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    +
    + +

    This is the complete list of members for comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + +
    _candidatescomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _dimensioncomma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _q_neighs_w_weightscomma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _s_fccomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _s_neighbours_of_seedcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _weightscomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    CandidatesContainerType typedefcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAPairFindFirstBasedType typedefcomma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAPairType typedefcomma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMASetOfPairType typedefcomma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    extract_and_update_candidates(const CoMMASetOfPairType &candidates_w_weights)comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlineprotected
    get_candidates() constcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_neighbours_by_level(const CoMMAIntType lvl) constcomma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Neighbourhood(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Neighbourhood(const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=defaultcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    Neighbourhood_Pure_Front(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights, CoMMAIntType dimension)comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Neighbourhood_Pure_Front(const Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=defaultcomma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    NeighbourhoodBaseType typedefcomma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    update(const CoMMAIndexType new_fc, const std::vector< CoMMAIndexType > &new_neighbours) overridecomma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    ~Neighbourhood()=defaultcomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
    ~Neighbourhood_Pure_Front() override=defaultcomma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    +
    + + + + diff --git a/classcomma_1_1_neighbourhood___pure___front.html b/classcomma_1_1_neighbourhood___pure___front.html new file mode 100644 index 0000000..423313d --- /dev/null +++ b/classcomma_1_1_neighbourhood___pure___front.html @@ -0,0 +1,559 @@ + + + + + + + +CoMMA: comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +
    +
    + +

    Class representing the neighbourhood of a given cell in the graph. In this derived class, the neighbourhood is 'pure front-advancing', meaning that the next candidates are only the direct neighbours of the last added cell. + More...

    + +

    #include <Neighbourhood.h>

    +
    +Inheritance diagram for comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Base class. More...
     
    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    using CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor< CoMMAPairType >
     Functor used if find-like function relying only on first element of the pair. More...
     
    - Public Types inherited from comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    using CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor< CoMMAPairType >
     Functor used if find-like function relying only on first element of the pair. More...
     
    using CandidatesContainerType = std::deque< CoMMAIndexType >
     Type for container of candidates. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Neighbourhood_Pure_Front (const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights, CoMMAIntType dimension)
     Constructor. More...
     
     Neighbourhood_Pure_Front (const Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
     Copy constructor. More...
     
     ~Neighbourhood_Pure_Front () override=default
     Destructor. More...
     
    void update (const CoMMAIndexType new_fc, const std::vector< CoMMAIndexType > &new_neighbours) override
     Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are considered as candidates. More...
     
    const CoMMASetOfPairTypeget_neighbours_by_level (const CoMMAIntType lvl) const
     Get the neighbours from a previous stage. More...
     
    - Public Member Functions inherited from comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Neighbourhood (const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)
     Constructor. More...
     
     Neighbourhood (const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default
     Copy constructor. More...
     
    virtual ~Neighbourhood ()=default
     Destructor. More...
     
    virtual void update (const CoMMAIndexType new_fc, const std::vector< CoMMAIndexType > &new_neighbours)=0
     Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are added as candidates. More...
     
    const CandidatesContainerTypeget_candidates () const
     Get candidates that should be consider in the next step of the agglomeration. More...
     
    + + + + + + + + + + + + + + + + + + + + +

    +Protected Attributes

    std::deque< CoMMASetOfPairType_q_neighs_w_weights
     History of the first-order-neighbourhoods of the fine cells recently agglomerated. More...
     
    CoMMAIntType _dimension
     Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D) More...
     
    - Protected Attributes inherited from comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    const std::unordered_set< CoMMAIndexType > _s_neighbours_of_seed
     Set of the neighbours of seed given as an input in the constructor. Here, we can find all the neighbours of order up to a user-defined value of the initial seed. Hence, it holds the cells allowed to be agglomerated. More...
     
    const std::vector< CoMMAWeightType > & _weights
     Priority weights. More...
     
    std::unordered_set< CoMMAIndexType > _s_fc
     Set of the fine cells composing the coarse cell. More...
     
    CandidatesContainerType _candidates
     Candidates that should be considered when choosing the next fine cell to add to the coarse one. More...
     
    + + + + + +

    +Additional Inherited Members

    - Protected Member Functions inherited from comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    void extract_and_update_candidates (const CoMMASetOfPairType &candidates_w_weights)
     Extract the indices from a list of index-weight pairs and add them at the back of the candidates list. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +class comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Class representing the neighbourhood of a given cell in the graph. In this derived class, the neighbourhood is 'pure front-advancing', meaning that the next candidates are only the direct neighbours of the last added cell.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ CoMMAPairFindFirstBasedType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairFindFirstBasedType = PairFindFirstBasedFunctor<CoMMAPairType>
    +
    + +

    Functor used if find-like function relying only on first element of the pair.

    + +
    +
    + +

    ◆ CoMMAPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>
    +
    + +

    Type of pair.

    + +
    +
    + +

    ◆ CoMMASetOfPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
    +
    + +

    Type of set of pairs.

    + +
    +
    + +

    ◆ NeighbourhoodBaseType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodBaseType = Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Base class.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Neighbourhood_Pure_Front() [1/2]

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Neighbourhood_Pure_Front (const std::unordered_set< CoMMAIndexType > & s_neighbours_of_seed,
    const std::vector< CoMMAWeightType > & weights,
    CoMMAIntType dimension 
    )
    +
    +inline
    +
    + +

    Constructor.

    +
    Parameters
    + + + + +
    [in]s_neighbours_of_seedSet of the neighbours of the given cell chosen as seed
    [in]weightsWeights used to set up the order of the neighbours to visit
    [in]dimensionDimension of the problem
    +
    +
    + +
    +
    + +

    ◆ Neighbourhood_Pure_Front() [2/2]

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Neighbourhood_Pure_Front (const Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > & other)
    +
    +default
    +
    + +

    Copy constructor.

    + +
    +
    + +

    ◆ ~Neighbourhood_Pure_Front()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Neighbourhood_Pure_Front ()
    +
    +overridedefault
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ get_neighbours_by_level()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    const CoMMASetOfPairType & comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_neighbours_by_level (const CoMMAIntType lvl) const
    +
    +inline
    +
    + +

    Get the neighbours from a previous stage.

    +
    Parameters
    + + +
    [in]lvlStage identifier. 0 = current neighbours, 1 = previous neighbours, 2 = second-to-last neighbours, etc...
    +
    +
    +
    Returns
    A constant reference to a set of pairs of neighbours and weights
    + +
    +
    + +

    ◆ update()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update (const CoMMAIndexType new_fc,
    const std::vector< CoMMAIndexType > & new_neighbours 
    )
    +
    +inlineoverridevirtual
    +
    + +

    Method that updates the neighbourhood. Given the new_fc, if is in the neighbours, it is deleted. Then, the new neighbours are considered as candidates.

    +
    Parameters
    + + + +
    [in]new_fcIndex of the new fine cell to be added to the set of fine cells
    [in]new_neighboursVector of the new neighbours to be analysed
    +
    +
    + +

    Implements comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ _dimension

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + +
    CoMMAIntType comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_dimension
    +
    +protected
    +
    + +

    Dimensionality of the problem (_dimension = 2 -> 2D, _dimension = 3 -> 3D)

    + +
    +
    + +

    ◆ _q_neighs_w_weights

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + +
    std::deque<CoMMASetOfPairType> comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_q_neighs_w_weights
    +
    +protected
    +
    + +

    History of the first-order-neighbourhoods of the fine cells recently agglomerated.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/classcomma_1_1_neighbourhood___pure___front.js b/classcomma_1_1_neighbourhood___pure___front.js new file mode 100644 index 0000000..f96095f --- /dev/null +++ b/classcomma_1_1_neighbourhood___pure___front.js @@ -0,0 +1,14 @@ +var classcomma_1_1_neighbourhood___pure___front = +[ + [ "CoMMAPairFindFirstBasedType", "classcomma_1_1_neighbourhood___pure___front.html#a1bcc96dd1f011b683f94d6492de5c94b", null ], + [ "CoMMAPairType", "classcomma_1_1_neighbourhood___pure___front.html#ae017bf1bdbf97533b6078628196daa0a", null ], + [ "CoMMASetOfPairType", "classcomma_1_1_neighbourhood___pure___front.html#a848ff0040340a5b904dfb9c8306e1439", null ], + [ "NeighbourhoodBaseType", "classcomma_1_1_neighbourhood___pure___front.html#a913459e984b1617005be9d6674e3bea9", null ], + [ "Neighbourhood_Pure_Front", "classcomma_1_1_neighbourhood___pure___front.html#af8021c4955de4919701b4fc10218c1e7", null ], + [ "Neighbourhood_Pure_Front", "classcomma_1_1_neighbourhood___pure___front.html#a5ec25c24172a6b37f0c669ed78347e65", null ], + [ "~Neighbourhood_Pure_Front", "classcomma_1_1_neighbourhood___pure___front.html#a2ed8fac1690468f67afe039ac052a5d2", null ], + [ "get_neighbours_by_level", "classcomma_1_1_neighbourhood___pure___front.html#a8e347e275fb8cb02e86844219742fd9e", null ], + [ "update", "classcomma_1_1_neighbourhood___pure___front.html#ae1b96c3d2b2421520cdef03e16a7d102", null ], + [ "_dimension", "classcomma_1_1_neighbourhood___pure___front.html#abb29cb2a39fe869e98626c420b08531f", null ], + [ "_q_neighs_w_weights", "classcomma_1_1_neighbourhood___pure___front.html#ab4f56f2ddccb9f209a1192f931062456", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_neighbourhood___pure___front.png b/classcomma_1_1_neighbourhood___pure___front.png new file mode 100644 index 0000000..73f7a3d Binary files /dev/null and b/classcomma_1_1_neighbourhood___pure___front.png differ diff --git a/class_neighbourhood_pure_front_creator-members.html b/classcomma_1_1_neighbourhood_creator-members.html similarity index 61% rename from class_neighbourhood_pure_front_creator-members.html rename to classcomma_1_1_neighbourhood_creator-members.html index d27d38c..e6ffb06 100644 --- a/class_neighbourhood_pure_front_creator-members.html +++ b/classcomma_1_1_neighbourhood_creator-members.html @@ -65,7 +65,7 @@

    @@ -91,17 +91,17 @@
    -
    NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    -

    This is the complete list of members for NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    +

    This is the complete list of members for comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    - - - - - + + + + +
    clone(shared_ptr< NeighbourhoodBaseType > other) const overrideNeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    create(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const overrideNeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    CreatorBaseType typedefNeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    NeighbourhoodBaseType typedefNeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    NeighbourhoodDerivedType typedefNeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    clone(std::shared_ptr< NeighbourhoodBaseType > other) const =0comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
    create(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const =0comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
    NeighbourhoodBaseType typedefcomma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    NeighbourhoodCreator()=defaultcomma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ~NeighbourhoodCreator()=defaultcomma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
    diff --git a/classcomma_1_1_neighbourhood_creator.html b/classcomma_1_1_neighbourhood_creator.html new file mode 100644 index 0000000..c7d772e --- /dev/null +++ b/classcomma_1_1_neighbourhood_creator.html @@ -0,0 +1,337 @@ + + + + + + + +CoMMA: comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Referenceabstract
    +
    +
    + +

    Pure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy. + More...

    + +

    #include <Neighbourhood.h>

    +
    +Inheritance diagram for comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + +

    +Public Types

    using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Shortcut for the Neighborhood object type. More...
     
    + + + + + + + + + + + + + +

    +Public Member Functions

     NeighbourhoodCreator ()=default
     Constructor. More...
     
    virtual ~NeighbourhoodCreator ()=default
     Destructor. More...
     
    virtual std::shared_ptr< NeighbourhoodBaseTypecreate (const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const =0
     Create a new Neighbourhood object from scratch using the given arguments. More...
     
    virtual std::shared_ptr< NeighbourhoodBaseTypeclone (std::shared_ptr< NeighbourhoodBaseType > other) const =0
     Create a new Neighbourhood object by copy. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +class comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Pure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ NeighbourhoodBaseType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodBaseType = Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Shortcut for the Neighborhood object type.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ NeighbourhoodCreator()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodCreator ()
    +
    +default
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ ~NeighbourhoodCreator()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    virtual comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~NeighbourhoodCreator ()
    +
    +virtualdefault
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ clone()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    virtual std::shared_ptr< NeighbourhoodBaseType > comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::clone (std::shared_ptr< NeighbourhoodBaseTypeother) const
    +
    +pure virtual
    +
    + +

    Create a new Neighbourhood object by copy.

    +
    Parameters
    + + +
    [in]otherShared pointer to an existing Neighbourhood object
    +
    +
    +
    Returns
    a shared pointer to a new Neighborhood object
    + +

    Implemented in comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ create()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    virtual std::shared_ptr< NeighbourhoodBaseType > comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::create (const std::unordered_set< CoMMAIndexType > & s_neighbours_of_seed,
    const std::vector< CoMMAWeightType > & priority_weights,
    const CoMMAIntType dimension 
    ) const
    +
    +pure virtual
    +
    + +

    Create a new Neighbourhood object from scratch using the given arguments.

    +
    Parameters
    + + + + +
    [in]s_neighbours_of_seedSet of the neighbours of the given cell chosen as seed
    [in]priority_weightsWeights used to set up the order of the neighbours to visit
    [in]dimensionDimension of the problem
    +
    +
    +
    Returns
    a shared pointer to a new Neighborhood object
    + +

    Implemented in comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/classcomma_1_1_neighbourhood_creator.js b/classcomma_1_1_neighbourhood_creator.js new file mode 100644 index 0000000..3e2a234 --- /dev/null +++ b/classcomma_1_1_neighbourhood_creator.js @@ -0,0 +1,8 @@ +var classcomma_1_1_neighbourhood_creator = +[ + [ "NeighbourhoodBaseType", "classcomma_1_1_neighbourhood_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e", null ], + [ "NeighbourhoodCreator", "classcomma_1_1_neighbourhood_creator.html#af4f957b393cc21b8d4e091063e8a4e8c", null ], + [ "~NeighbourhoodCreator", "classcomma_1_1_neighbourhood_creator.html#a8e26c2ebfc2006e05c528dd70293e274", null ], + [ "clone", "classcomma_1_1_neighbourhood_creator.html#a5744afc0bb83cb634548bbee1399e935", null ], + [ "create", "classcomma_1_1_neighbourhood_creator.html#afe62a60eabce766b4aea2b02eeed61e5", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_neighbourhood_creator.png b/classcomma_1_1_neighbourhood_creator.png new file mode 100644 index 0000000..dc74254 Binary files /dev/null and b/classcomma_1_1_neighbourhood_creator.png differ diff --git a/classcomma_1_1_neighbourhood_extended_creator-members.html b/classcomma_1_1_neighbourhood_extended_creator-members.html new file mode 100644 index 0000000..a4626e7 --- /dev/null +++ b/classcomma_1_1_neighbourhood_extended_creator-members.html @@ -0,0 +1,118 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    + +
    + + + + diff --git a/classcomma_1_1_neighbourhood_extended_creator.html b/classcomma_1_1_neighbourhood_extended_creator.html new file mode 100644 index 0000000..1d73789 --- /dev/null +++ b/classcomma_1_1_neighbourhood_extended_creator.html @@ -0,0 +1,395 @@ + + + + + + + +CoMMA: comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +
    +
    + +

    Creator of Neighbourhood_Extended objects. It can create from scratch or by copy. + More...

    + +

    #include <Neighbourhood.h>

    +
    +Inheritance diagram for comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + + + + + +

    +Public Types

    using CreatorBaseType = NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Base class. More...
     
    using NeighbourhoodDerivedType = Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Shortcut for the Neighborhood object derived type (Extended, in this case) More...
     
    using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Shortcut for the Neighborhood object type. More...
     
    - Public Types inherited from comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Shortcut for the Neighborhood object type. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     NeighbourhoodExtendedCreator ()
     Constructor. More...
     
     ~NeighbourhoodExtendedCreator () override=default
     Destructor. More...
     
    std::shared_ptr< NeighbourhoodBaseTypecreate (const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const override
     Create a new Neighbourhood object from scratch using the given arguments. More...
     
    std::shared_ptr< NeighbourhoodBaseTypeclone (std::shared_ptr< NeighbourhoodBaseType > other) const override
     Create a new Neighbourhood object by copy. More...
     
    - Public Member Functions inherited from comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     NeighbourhoodCreator ()=default
     Constructor. More...
     
    virtual ~NeighbourhoodCreator ()=default
     Destructor. More...
     
    virtual std::shared_ptr< NeighbourhoodBaseTypecreate (const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const =0
     Create a new Neighbourhood object from scratch using the given arguments. More...
     
    virtual std::shared_ptr< NeighbourhoodBaseTypeclone (std::shared_ptr< NeighbourhoodBaseType > other) const =0
     Create a new Neighbourhood object by copy. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +class comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Creator of Neighbourhood_Extended objects. It can create from scratch or by copy.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ CreatorBaseType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CreatorBaseType = NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Base class.

    + +
    +
    + +

    ◆ NeighbourhoodBaseType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodBaseType = Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Shortcut for the Neighborhood object type.

    + +
    +
    + +

    ◆ NeighbourhoodDerivedType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodDerivedType = Neighbourhood_Extended<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Shortcut for the Neighborhood object derived type (Extended, in this case)

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ NeighbourhoodExtendedCreator()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodExtendedCreator ()
    +
    +inline
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ ~NeighbourhoodExtendedCreator()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~NeighbourhoodExtendedCreator ()
    +
    +overridedefault
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ clone()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    std::shared_ptr< NeighbourhoodBaseType > comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::clone (std::shared_ptr< NeighbourhoodBaseTypeother) const
    +
    +inlineoverridevirtual
    +
    + +

    Create a new Neighbourhood object by copy.

    +
    Parameters
    + + +
    [in]otherShared pointer to an existing Neighbourhood object
    +
    +
    +
    Returns
    a shared pointer (base type) to a new Neighborhood (derived type) object
    + +

    Implements comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ create()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::shared_ptr< NeighbourhoodBaseType > comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::create (const std::unordered_set< CoMMAIndexType > & s_neighbours_of_seed,
    const std::vector< CoMMAWeightType > & priority_weights,
    const CoMMAIntType dimension 
    ) const
    +
    +inlineoverridevirtual
    +
    + +

    Create a new Neighbourhood object from scratch using the given arguments.

    +
    Parameters
    + + + + +
    [in]s_neighbours_of_seedSet of the neighbours of the given cell chosen as seed
    [in]priority_weightsWeights used to set up the order of the neighbours to visit
    [in]dimensionDimension of the problem
    +
    +
    +
    Returns
    a shared pointer (base type) to a new Neighborhood (derived type) object
    + +

    Implements comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/classcomma_1_1_neighbourhood_extended_creator.js b/classcomma_1_1_neighbourhood_extended_creator.js new file mode 100644 index 0000000..c2c379c --- /dev/null +++ b/classcomma_1_1_neighbourhood_extended_creator.js @@ -0,0 +1,10 @@ +var classcomma_1_1_neighbourhood_extended_creator = +[ + [ "CreatorBaseType", "classcomma_1_1_neighbourhood_extended_creator.html#ae2cbcfa4423cf20e5045a9530c5f9c80", null ], + [ "NeighbourhoodBaseType", "classcomma_1_1_neighbourhood_extended_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e", null ], + [ "NeighbourhoodDerivedType", "classcomma_1_1_neighbourhood_extended_creator.html#a63b796c170a94ef0e6be980bff923465", null ], + [ "NeighbourhoodExtendedCreator", "classcomma_1_1_neighbourhood_extended_creator.html#ad6d5ab836d929ef895fa2820cc160324", null ], + [ "~NeighbourhoodExtendedCreator", "classcomma_1_1_neighbourhood_extended_creator.html#a2412e4b615346b2dfa34ab3aba147ef4", null ], + [ "clone", "classcomma_1_1_neighbourhood_extended_creator.html#adb1ed78173e7523fc25c3a7e81d1c9a3", null ], + [ "create", "classcomma_1_1_neighbourhood_extended_creator.html#a7e890e6fff3c54d74e5e2cf9aa73332b", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_neighbourhood_extended_creator.png b/classcomma_1_1_neighbourhood_extended_creator.png new file mode 100644 index 0000000..dfa79b2 Binary files /dev/null and b/classcomma_1_1_neighbourhood_extended_creator.png differ diff --git a/classcomma_1_1_neighbourhood_pure_front_creator-members.html b/classcomma_1_1_neighbourhood_pure_front_creator-members.html new file mode 100644 index 0000000..c7e5f4f --- /dev/null +++ b/classcomma_1_1_neighbourhood_pure_front_creator-members.html @@ -0,0 +1,118 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    + +
    + + + + diff --git a/classcomma_1_1_neighbourhood_pure_front_creator.html b/classcomma_1_1_neighbourhood_pure_front_creator.html new file mode 100644 index 0000000..74f219b --- /dev/null +++ b/classcomma_1_1_neighbourhood_pure_front_creator.html @@ -0,0 +1,395 @@ + + + + + + + +CoMMA: comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +
    +
    + +

    Creator of Neighbourhood_Extended objects. It can create from scratch or by copy. + More...

    + +

    #include <Neighbourhood.h>

    +
    +Inheritance diagram for comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + + + + + +

    +Public Types

    using CreatorBaseType = NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Base class. More...
     
    using NeighbourhoodDerivedType = Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Shortcut for the Neighborhood object derived type (Pure_Front, in this case) More...
     
    using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Shortcut for the Neighborhood object type. More...
     
    - Public Types inherited from comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    using NeighbourhoodBaseType = Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Shortcut for the Neighborhood object type. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     NeighbourhoodPureFrontCreator ()
     Constructor. More...
     
     ~NeighbourhoodPureFrontCreator () override=default
     Destructor. More...
     
    std::shared_ptr< NeighbourhoodBaseTypecreate (const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const override
     Create a new Neighbourhood object from scratch using the given arguments. More...
     
    std::shared_ptr< NeighbourhoodBaseTypeclone (std::shared_ptr< NeighbourhoodBaseType > other) const override
     Create a new Neighbourhood object by copy. More...
     
    - Public Member Functions inherited from comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     NeighbourhoodCreator ()=default
     Constructor. More...
     
    virtual ~NeighbourhoodCreator ()=default
     Destructor. More...
     
    virtual std::shared_ptr< NeighbourhoodBaseTypecreate (const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const =0
     Create a new Neighbourhood object from scratch using the given arguments. More...
     
    virtual std::shared_ptr< NeighbourhoodBaseTypeclone (std::shared_ptr< NeighbourhoodBaseType > other) const =0
     Create a new Neighbourhood object by copy. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +class comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Creator of Neighbourhood_Extended objects. It can create from scratch or by copy.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ CreatorBaseType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CreatorBaseType = NeighbourhoodCreator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Base class.

    + +
    +
    + +

    ◆ NeighbourhoodBaseType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodBaseType = Neighbourhood<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Shortcut for the Neighborhood object type.

    + +
    +
    + +

    ◆ NeighbourhoodDerivedType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodDerivedType = Neighbourhood_Pure_Front<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Shortcut for the Neighborhood object derived type (Pure_Front, in this case)

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ NeighbourhoodPureFrontCreator()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NeighbourhoodPureFrontCreator ()
    +
    +inline
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ ~NeighbourhoodPureFrontCreator()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~NeighbourhoodPureFrontCreator ()
    +
    +overridedefault
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ clone()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    std::shared_ptr< NeighbourhoodBaseType > comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::clone (std::shared_ptr< NeighbourhoodBaseTypeother) const
    +
    +inlineoverridevirtual
    +
    + +

    Create a new Neighbourhood object by copy.

    +
    Parameters
    + + +
    [in]otherShared pointer to an existing Neighbourhood object
    +
    +
    +
    Returns
    a shared pointer (base type) to a new Neighborhood (derived type) object
    + +

    Implements comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ create()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::shared_ptr< NeighbourhoodBaseType > comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::create (const std::unordered_set< CoMMAIndexType > & s_neighbours_of_seed,
    const std::vector< CoMMAWeightType > & priority_weights,
    const CoMMAIntType dimension 
    ) const
    +
    +inlineoverridevirtual
    +
    + +

    Create a new Neighbourhood object from scratch using the given arguments.

    +
    Parameters
    + + + + +
    [in]s_neighbours_of_seedSet of the neighbours of the given cell chosen as seed
    [in]priority_weightsWeights used to set up the order of the neighbours to visit
    [in]dimensionDimension of the problem
    +
    +
    +
    Returns
    a shared pointer (base type) to a new Neighborhood (derived type) object
    + +

    Implements comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/classcomma_1_1_neighbourhood_pure_front_creator.js b/classcomma_1_1_neighbourhood_pure_front_creator.js new file mode 100644 index 0000000..3ffb89f --- /dev/null +++ b/classcomma_1_1_neighbourhood_pure_front_creator.js @@ -0,0 +1,10 @@ +var classcomma_1_1_neighbourhood_pure_front_creator = +[ + [ "CreatorBaseType", "classcomma_1_1_neighbourhood_pure_front_creator.html#a5c84dd3fbf5c5b5e113261da07379ffb", null ], + [ "NeighbourhoodBaseType", "classcomma_1_1_neighbourhood_pure_front_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e", null ], + [ "NeighbourhoodDerivedType", "classcomma_1_1_neighbourhood_pure_front_creator.html#a8594b34dfb4913c08cb825415cb7755e", null ], + [ "NeighbourhoodPureFrontCreator", "classcomma_1_1_neighbourhood_pure_front_creator.html#a550fb5859f1d0b86326ad4892e0fcfb7", null ], + [ "~NeighbourhoodPureFrontCreator", "classcomma_1_1_neighbourhood_pure_front_creator.html#a762a03d248377977aa1c60eacd4479a8", null ], + [ "clone", "classcomma_1_1_neighbourhood_pure_front_creator.html#a73b13c01032e09c04690d4320174d222", null ], + [ "create", "classcomma_1_1_neighbourhood_pure_front_creator.html#aaac38025ac8e92eecd2b32d85c3e3d0e", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_neighbourhood_pure_front_creator.png b/classcomma_1_1_neighbourhood_pure_front_creator.png new file mode 100644 index 0000000..bc854b2 Binary files /dev/null and b/classcomma_1_1_neighbourhood_pure_front_creator.png differ diff --git a/class_node-members.html b/classcomma_1_1_node-members.html similarity index 59% rename from class_node-members.html rename to classcomma_1_1_node-members.html index bb7bd6a..4e59404 100644 --- a/class_node-members.html +++ b/classcomma_1_1_node-members.html @@ -65,7 +65,7 @@

    @@ -91,20 +91,20 @@
    -
    Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    diff --git a/class_node.html b/classcomma_1_1_node.html similarity index 55% rename from class_node.html rename to classcomma_1_1_node.html index 4062b17..0b74e7a 100644 --- a/class_node.html +++ b/classcomma_1_1_node.html @@ -5,7 +5,7 @@ -CoMMA: Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference +CoMMA: comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference @@ -65,7 +65,7 @@

    @@ -94,48 +94,48 @@ -
    Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +List of all members
    +
    comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    -

    Node data structure that represent a node of the tree. - More...

    +

    Node data structure that represent a node of the tree. + More...

    #include <Tree.h>

    - - + +

    Public Member Functions

     Node (CoMMAIndexType index, CoMMAWeightType volume)
     
     Node (CoMMAIndexType index, CoMMAWeightType volume)
     
    - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +

    Public Attributes

    CoMMAIndexType _index
     Index of the cell. More...
     
    CoMMAWeightType _volume
     Volume. More...
     
    CoMMAIntType _sonc = 0
     Number of son. More...
     
    shared_ptr< Node_father
     Shared pointer to the father node. More...
     
    shared_ptr< Node_left_idx
     Shared pointer to the left element. More...
     
    shared_ptr< Node_right_idx
     Shared pointer to the right element. More...
     
    shared_ptr< Node_left_son_idx
     Shared pointer to the left element. More...
     
    CoMMAIndexType _index
     Index of the cell. More...
     
    CoMMAWeightType _volume
     Volume. More...
     
    CoMMAIntType _sonc = 0
     Number of son. More...
     
    std::shared_ptr< Node_father
     Shared pointer to the father node. More...
     
    std::shared_ptr< Node_left_idx
     Shared pointer to the left element. More...
     
    std::shared_ptr< Node_right_idx
     Shared pointer to the right element. More...
     
    std::shared_ptr< Node_left_son_idx
     Shared pointer to the left element. More...
     

    Detailed Description

    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    -class Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Node data structure that represent a node of the tree.

    +class comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Node data structure that represent a node of the tree.

    Template Parameters
    @@ -145,8 +145,8 @@

    Constructor & Destructor Documentation

    - -

    ◆ Node()

    + +

    ◆ Node()

    @@ -157,7 +157,7 @@

    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    - + @@ -184,8 +184,8 @@

    Member Data Documentation

    - -

    ◆ _father

    + +

    ◆ _father

    @@ -193,7 +193,7 @@

    - +
    Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Node comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Node ( CoMMAIndexType  index,
    shared_ptr<Node> Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_fatherstd::shared_ptr<Node> comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_father
    @@ -202,8 +202,8 @@

    -

    ◆ _index

    + +

    ◆ _index

    @@ -211,7 +211,7 @@

    - CoMMAIndexType Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_index + CoMMAIndexType comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_index

    @@ -220,8 +220,8 @@

    -

    ◆ _left_idx

    + +

    ◆ _left_idx

    @@ -229,7 +229,7 @@

    - shared_ptr<Node> Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_left_idx + std::shared_ptr<Node> comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_left_idx

    @@ -238,8 +238,8 @@

    -

    ◆ _left_son_idx

    + +

    ◆ _left_son_idx

    @@ -247,7 +247,7 @@

    - shared_ptr<Node> Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_left_son_idx + std::shared_ptr<Node> comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_left_son_idx

    @@ -256,8 +256,8 @@

    -

    ◆ _right_idx

    + +

    ◆ _right_idx

    @@ -265,7 +265,7 @@

    - shared_ptr<Node> Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_right_idx + std::shared_ptr<Node> comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_right_idx

    @@ -274,8 +274,8 @@

    -

    ◆ _sonc

    + +

    ◆ _sonc

    @@ -283,7 +283,7 @@

    - CoMMAIntType Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_sonc = 0 + CoMMAIntType comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_sonc = 0

    @@ -292,8 +292,8 @@

    -

    ◆ _volume

    + +

    ◆ _volume

    @@ -301,7 +301,7 @@

    - CoMMAWeightType Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_volume + CoMMAWeightType comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_volume

    @@ -311,14 +311,14 @@

    Tree.h +
  • include/CoMMA/deprecated/Tree.h
  • diff --git a/classcomma_1_1_node.js b/classcomma_1_1_node.js new file mode 100644 index 0000000..7f7659e --- /dev/null +++ b/classcomma_1_1_node.js @@ -0,0 +1,11 @@ +var classcomma_1_1_node = +[ + [ "Node", "classcomma_1_1_node.html#ab982f0768228f971628980b0d5ca47e1", null ], + [ "_father", "classcomma_1_1_node.html#a1392428dc13cfdbeca98c01003402b3f", null ], + [ "_index", "classcomma_1_1_node.html#abb78e37b6c11686abeaf744f0e29ec2a", null ], + [ "_left_idx", "classcomma_1_1_node.html#aa27241e12cb061d59c589bd3364bea47", null ], + [ "_left_son_idx", "classcomma_1_1_node.html#a0bf32c66dc95f86917b1a5bcd59a0eb8", null ], + [ "_right_idx", "classcomma_1_1_node.html#a00784e85c969362df47c971dfcd3a8f5", null ], + [ "_sonc", "classcomma_1_1_node.html#aa73c0969d0ff731040bc3c684913c86c", null ], + [ "_volume", "classcomma_1_1_node.html#a1ab325d368510e673507beae3116e78e", null ] +]; \ No newline at end of file diff --git a/class_queue-members.html b/classcomma_1_1_pair_find_first_based_functor-members.html similarity index 68% rename from class_queue-members.html rename to classcomma_1_1_pair_find_first_based_functor-members.html index e466449..5a12091 100644 --- a/class_queue-members.html +++ b/classcomma_1_1_pair_find_first_based_functor-members.html @@ -65,7 +65,7 @@

    @@ -91,18 +91,16 @@
    -
    Queue< T > Member List
    +
    comma::PairFindFirstBasedFunctor< PairT > Member List
    -

    This is the complete list of members for Queue< T >, including all inherited members.

    +

    This is the complete list of members for comma::PairFindFirstBasedFunctor< PairT >, including all inherited members.

    - - - - - - + + + +
    empty() constQueue< T >inline
    pop()Queue< T >inline
    push(T const &elem)Queue< T >inline
    Queue()Queue< T >inline
    top() constQueue< T >inline
    ~Queue()Queue< T >inline
    operator()(const PairT &pr) constcomma::PairFindFirstBasedFunctor< PairT >inline
    PairFindFirstBasedFunctor()comma::PairFindFirstBasedFunctor< PairT >inline
    PairFindFirstBasedFunctor(const typename PairT::first_type &target)comma::PairFindFirstBasedFunctor< PairT >inline
    ~PairFindFirstBasedFunctor()=defaultcomma::PairFindFirstBasedFunctor< PairT >
    diff --git a/class_pair_find_first_based_functor.html b/classcomma_1_1_pair_find_first_based_functor.html similarity index 62% rename from class_pair_find_first_based_functor.html rename to classcomma_1_1_pair_find_first_based_functor.html index f873293..f3387e6 100644 --- a/class_pair_find_first_based_functor.html +++ b/classcomma_1_1_pair_find_first_based_functor.html @@ -5,7 +5,7 @@ -CoMMA: PairFindFirstBasedFunctor< PairT > Class Template Reference +CoMMA: comma::PairFindFirstBasedFunctor< PairT > Class Template Reference @@ -65,7 +65,7 @@

    @@ -93,34 +93,34 @@
    -
    PairFindFirstBasedFunctor< PairT > Class Template Reference
    +List of all members
    +
    comma::PairFindFirstBasedFunctor< PairT > Class Template Reference

    Functor implementing an operator telling if a given value if the first one of pair. - More...

    + More...

    #include <Util.h>

    - - - - - - - - - - - - + + + + + + + + + + + +

    Public Member Functions

     PairFindFirstBasedFunctor ()
     Constructor. More...
     
     PairFindFirstBasedFunctor (const typename PairT::first_type &target)
     Constructor. More...
     
     ~PairFindFirstBasedFunctor ()
     Destructor. More...
     
    bool operator() (const PairT &p) const
     Operator telling if the first value of the given pair is equal to the reference one. More...
     
     PairFindFirstBasedFunctor ()
     Constructor. More...
     
     PairFindFirstBasedFunctor (const typename PairT::first_type &target)
     Constructor. More...
     
     ~PairFindFirstBasedFunctor ()=default
     Destructor. More...
     
    bool operator() (const PairT &pr) const
     Operator telling if the first value of the given pair is equal to the reference one. More...
     

    Detailed Description

    template<typename PairT>
    -class PairFindFirstBasedFunctor< PairT >

    Functor implementing an operator telling if a given value if the first one of pair.

    +class comma::PairFindFirstBasedFunctor< PairT >

    Functor implementing an operator telling if a given value if the first one of pair.

    Template Parameters
    @@ -128,8 +128,8 @@

    Constructor & Destructor Documentation

    - -

    ◆ PairFindFirstBasedFunctor() [1/2]

    + +

    ◆ PairFindFirstBasedFunctor() [1/2]

    @@ -140,7 +140,7 @@

    PairTType for pairs
    - + @@ -157,8 +157,8 @@

    -

    ◆ PairFindFirstBasedFunctor() [2/2]

    + +

    ◆ PairFindFirstBasedFunctor() [2/2]

    @@ -169,7 +169,7 @@

    PairFindFirstBasedFunctor< PairT >::PairFindFirstBasedFunctor comma::PairFindFirstBasedFunctor< PairT >::PairFindFirstBasedFunctor ( )
    - + @@ -193,8 +193,8 @@

    -

    ◆ ~PairFindFirstBasedFunctor()

    + +

    ◆ ~PairFindFirstBasedFunctor()

    @@ -205,7 +205,7 @@

    PairFindFirstBasedFunctor< PairT >::PairFindFirstBasedFunctor comma::PairFindFirstBasedFunctor< PairT >::PairFindFirstBasedFunctor ( const typename PairT::first_type &  target)
    - + @@ -213,7 +213,7 @@

    -inline +default

    PairFindFirstBasedFunctor< PairT >::~PairFindFirstBasedFunctor comma::PairFindFirstBasedFunctor< PairT >::~PairFindFirstBasedFunctor ( )

    @@ -261,14 +261,14 @@

    Util.h +
  • include/CoMMA/Util.h
  • diff --git a/classcomma_1_1_pair_find_first_based_functor.js b/classcomma_1_1_pair_find_first_based_functor.js new file mode 100644 index 0000000..cb15af2 --- /dev/null +++ b/classcomma_1_1_pair_find_first_based_functor.js @@ -0,0 +1,7 @@ +var classcomma_1_1_pair_find_first_based_functor = +[ + [ "PairFindFirstBasedFunctor", "classcomma_1_1_pair_find_first_based_functor.html#a806e13eb6b28c4455f796aa9a46d24bd", null ], + [ "PairFindFirstBasedFunctor", "classcomma_1_1_pair_find_first_based_functor.html#ac8129162752fe2eea0bce8e956e6d02f", null ], + [ "~PairFindFirstBasedFunctor", "classcomma_1_1_pair_find_first_based_functor.html#a6ee63654dfa0f1c4676f198b318a9bed", null ], + [ "operator()", "classcomma_1_1_pair_find_first_based_functor.html#a162183a1f3a7017792fab396ef5a2e7b", null ] +]; \ No newline at end of file diff --git a/struct_s_p_full_initializator-members.html b/classcomma_1_1_priority___pair-members.html similarity index 60% rename from struct_s_p_full_initializator-members.html rename to classcomma_1_1_priority___pair-members.html index c819d76..f858ed0 100644 --- a/struct_s_p_full_initializator-members.html +++ b/classcomma_1_1_priority___pair-members.html @@ -65,7 +65,7 @@
    @@ -91,17 +91,19 @@
    -
    SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    comma::Priority_Pair< A, B > Member List
    diff --git a/class_priority___pair.html b/classcomma_1_1_priority___pair.html similarity index 66% rename from class_priority___pair.html rename to classcomma_1_1_priority___pair.html index 72ea68a..69f5c64 100644 --- a/class_priority___pair.html +++ b/classcomma_1_1_priority___pair.html @@ -5,7 +5,7 @@ -CoMMA: Priority_Pair< A, B > Class Template Reference +CoMMA: comma::Priority_Pair< A, B > Class Template Reference @@ -65,7 +65,7 @@
    @@ -94,46 +94,46 @@ -
    Priority_Pair< A, B > Class Template Reference
    +List of all members
    +
    comma::Priority_Pair< A, B > Class Template Reference

    Wrapper around the STL pair with custom 'less than' operator: as in the standard case, first we compare the first elements, then the second ones; however it relies on the 'greater than' on the first elements, e.g., (4,X) < (3,Y), whereas standard rules apply to second elements, e.g., (4,3) < (4,4). - More...

    + More...

    #include <Priority_Pair.h>

    - - - - - - - - - - - - - - - + + + + + + + + + + + + + + +

    Public Member Functions

     Priority_Pair ()
     Constructor. More...
     
     Priority_Pair (const A &a, const B &b)
     Constructor. More...
     
     ~Priority_Pair ()
     Destructor. More...
     
    first () const
     Accessor to the first element. More...
     
    second () const
     Accessor to the first element. More...
     
     Priority_Pair ()=default
     Constructor. More...
     
     Priority_Pair (const A &a, const B &b)
     Constructor. More...
     
     ~Priority_Pair ()=default
     Destructor. More...
     
    first () const
     Accessor to the first element. More...
     
    second () const
     Accessor to the first element. More...
     
    - - + + - - + +

    Friends

    bool operator< (const Priority_Pair &a, const Priority_Pair &b)
     Operator 'less than'. It actually relies on the 'greater than' operator for the first elements and 'less than' for the second ones. More...
    bool operator< (const Priority_Pair &a, const Priority_Pair &b)
     Operator 'less than'. It actually relies on the 'greater than' operator for the first elements and 'less than' for the second ones. More...
     
    bool operator== (const Priority_Pair &a, const Priority_Pair &b)
     Operator 'equal'. More...
    bool operator== (const Priority_Pair &a, const Priority_Pair &b)
     Operator 'equal'. More...
     

    Detailed Description

    template<typename A, typename B>
    -class Priority_Pair< A, B >

    Wrapper around the STL pair with custom 'less than' operator: as in the standard case, first we compare the first elements, then the second ones; however it relies on the 'greater than' on the first elements, e.g., (4,X) < (3,Y), whereas standard rules apply to second elements, e.g., (4,3) < (4,4).

    +class comma::Priority_Pair< A, B >

    Wrapper around the STL pair with custom 'less than' operator: as in the standard case, first we compare the first elements, then the second ones; however it relies on the 'greater than' on the first elements, e.g., (4,X) < (3,Y), whereas standard rules apply to second elements, e.g., (4,3) < (4,4).

    Template Parameters
    @@ -142,8 +142,8 @@

    Constructor & Destructor Documentation

    - -

    ◆ Priority_Pair() [1/2]

    + +

    ◆ Priority_Pair() [1/2]

    @@ -154,7 +154,7 @@

    AType of the first element of the pair
    - + @@ -162,7 +162,7 @@

    -inline +default

    Priority_Pair< A, B >::Priority_Pair comma::Priority_Pair< A, B >::Priority_Pair ( )
    @@ -171,8 +171,8 @@

    -

    ◆ Priority_Pair() [2/2]

    + +

    ◆ Priority_Pair() [2/2]

    @@ -248,8 +248,8 @@

    Member Function Documentation

    - -

    ◆ first()

    + +

    ◆ first()

    @@ -260,7 +260,7 @@

    - + @@ -278,8 +278,8 @@

    -

    ◆ second()

    + +

    ◆ second()

    @@ -290,7 +290,7 @@

    A Priority_Pair< A, B >::first A comma::Priority_Pair< A, B >::first ( ) const
    - + @@ -323,13 +323,13 @@

    bool operator<

    - + - + @@ -371,13 +371,13 @@

    bool operator==

    - + - + @@ -406,14 +406,14 @@

    Priority_Pair.h +
  • include/CoMMA/deprecated/Priority_Pair.h
  • diff --git a/classcomma_1_1_priority___pair.js b/classcomma_1_1_priority___pair.js new file mode 100644 index 0000000..27c886d --- /dev/null +++ b/classcomma_1_1_priority___pair.js @@ -0,0 +1,10 @@ +var classcomma_1_1_priority___pair = +[ + [ "Priority_Pair", "classcomma_1_1_priority___pair.html#a433fe6eac4e503827959000d52d4fe2b", null ], + [ "Priority_Pair", "classcomma_1_1_priority___pair.html#a02001027693bee639c39e28aae3cf260", null ], + [ "~Priority_Pair", "classcomma_1_1_priority___pair.html#a00bcb87b3275b43aaa493fd50dfa19f5", null ], + [ "first", "classcomma_1_1_priority___pair.html#a992d3e38d40c9741a9ffc7efa4172c04", null ], + [ "second", "classcomma_1_1_priority___pair.html#a68586e6c5930aee091998935b657028e", null ], + [ "operator<", "classcomma_1_1_priority___pair.html#a6445c73468c4c111a2c73330395ae9c3", null ], + [ "operator==", "classcomma_1_1_priority___pair.html#a310cd15c31749fbad8133e67993f0481", null ] +]; \ No newline at end of file diff --git a/struct_s_p_initializator-members.html b/classcomma_1_1_queue-members.html similarity index 66% rename from struct_s_p_initializator-members.html rename to classcomma_1_1_queue-members.html index 8e7a0ff..e814a97 100644 --- a/struct_s_p_initializator-members.html +++ b/classcomma_1_1_queue-members.html @@ -65,7 +65,7 @@
    @@ -91,16 +91,18 @@
    -
    SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    comma::Queue< T > Member List
    -

    This is the complete list of members for SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    +

    This is the complete list of members for comma::Queue< T >, including all inherited members.

    B Priority_Pair< A, B >::second B comma::Priority_Pair< A, B >::second ( ) const(const Priority_Pair< A, B > & const Priority_Pair< A, B > &  a,
    const Priority_Pair< A, B > & const Priority_Pair< A, B > &  b 
    (const Priority_Pair< A, B > & const Priority_Pair< A, B > &  a,
    const Priority_Pair< A, B > & const Priority_Pair< A, B > &  b 
    - - - - + + + + + +
    CoMMAPairType typedefSPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAQueueType typedefSPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMASetOfPairType typedefSPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    operator()(const vector< CoMMAWeightType > &priority_weights, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &q)=0SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
    empty() constcomma::Queue< T >inline
    pop()comma::Queue< T >inline
    push(T const &elem)comma::Queue< T >inline
    Queue()=defaultcomma::Queue< T >
    top() constcomma::Queue< T >inline
    ~Queue()=defaultcomma::Queue< T >

    diff --git a/class_queue.html b/classcomma_1_1_queue.html similarity index 62% rename from class_queue.html rename to classcomma_1_1_queue.html index e7e5346..4ea0af0 100644 --- a/class_queue.html +++ b/classcomma_1_1_queue.html @@ -5,7 +5,7 @@ -CoMMA: Queue< T > Class Template Reference +CoMMA: comma::Queue< T > Class Template Reference @@ -65,7 +65,7 @@
    @@ -93,40 +93,40 @@
    -
    Queue< T > Class Template Reference
    +List of all members
    +
    comma::Queue< T > Class Template Reference

    A template class implementing a custom queue data structure. - More...

    + More...

    #include <Queue.h>

    - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +

    Public Member Functions

     Queue ()
     Constructor. More...
     
     ~Queue ()
     Destructor. More...
     
    void push (T const &elem)
     Push an element on the top of the queue. More...
     
    pop ()
     pop an element from the bottom of the queue More...
     
    top () const
     Scope to the element on the bottom of the queue. More...
     
    bool empty () const
     Whether the queue is empty. More...
     
     Queue ()=default
     Constructor. More...
     
     ~Queue ()=default
     Destructor. More...
     
    void push (T const &elem)
     Push an element on the top of the queue. More...
     
    pop ()
     pop an element from the bottom of the queue More...
     
    top () const
     Scope to the element on the bottom of the queue. More...
     
    bool empty () const
     Whether the queue is empty. More...
     

    Detailed Description

    template<typename T>
    -class Queue< T >

    A template class implementing a custom queue data structure.

    +class comma::Queue< T >

    A template class implementing a custom queue data structure.

    Template Parameters
    @@ -134,8 +134,8 @@

    Constructor & Destructor Documentation

    - -

    ◆ Queue()

    + +

    ◆ Queue()

    @@ -146,7 +146,7 @@

    TType of the elements
    - + @@ -154,7 +154,7 @@

    -inline +default

    Queue< T >::Queue comma::Queue< T >::Queue ( )
    @@ -163,8 +163,8 @@

    -

    ◆ ~Queue()

    + +

    ◆ ~Queue()

    @@ -193,8 +193,8 @@

    Member Function Documentation

    - -

    ◆ empty()

    + +

    ◆ empty()

    @@ -205,7 +205,7 @@

    - + @@ -223,8 +223,8 @@

    -

    ◆ pop()

    + +

    ◆ pop()

    @@ -235,7 +235,7 @@

    bool Queue< T >::empty bool comma::Queue< T >::empty ( ) const
    - + @@ -253,8 +253,8 @@

    -

    ◆ push()

    + +

    ◆ push()

    @@ -265,7 +265,7 @@

    T Queue< T >::pop T comma::Queue< T >::pop ( )
    - + @@ -289,8 +289,8 @@

    -

    ◆ top()

    + +

    ◆ top()

    @@ -301,7 +301,7 @@

    void Queue< T >::push void comma::Queue< T >::push ( T const &  elem)
    - + @@ -320,14 +320,14 @@

    Queue.h +
  • include/CoMMA/deprecated/Queue.h
  • diff --git a/classcomma_1_1_queue.js b/classcomma_1_1_queue.js new file mode 100644 index 0000000..c18b20b --- /dev/null +++ b/classcomma_1_1_queue.js @@ -0,0 +1,9 @@ +var classcomma_1_1_queue = +[ + [ "Queue", "classcomma_1_1_queue.html#aa75e16d9b3abc36850da8c426c169219", null ], + [ "~Queue", "classcomma_1_1_queue.html#a995428caef81f88244df2c05972252bf", null ], + [ "empty", "classcomma_1_1_queue.html#aa5746b4e600f2c85ec6f9f427974d302", null ], + [ "pop", "classcomma_1_1_queue.html#a5aee19993ac8929694ea6f0ef7951d8d", null ], + [ "push", "classcomma_1_1_queue.html#af1aa48fd67cce65d729cd13806496eb3", null ], + [ "top", "classcomma_1_1_queue.html#a2f3e001cc9477b9ed8015bd2118702bf", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_seeds___pool-members.html b/classcomma_1_1_seeds___pool-members.html new file mode 100644 index 0000000..841ad8f --- /dev/null +++ b/classcomma_1_1_seeds___pool-members.html @@ -0,0 +1,129 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    +

    T Queue< T >::top T comma::Queue< T >::top ( ) const
    + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +

    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    +
    + +

    This is the complete list of members for comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + +
    _cur_top_queuecomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _initializatorcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _l_of_seedscomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _n_bnd_facescomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _priority_weightscomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    build_queue(const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType target)comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    choose_new_seed(const std::vector< bool > &is_agglomerated)=0comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
    CoMMAPairType typedefcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAQueueType typedefcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMASetOfPairType typedefcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    get_highest_n_bnd_yet_to_agglomerate(const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) constcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    initialize()comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    is_empty(CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) constcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    need_initialization(const std::vector< bool > &is_agglomerated)=0comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
    order_new_seeds_and_update(const std::unordered_set< CoMMAIndexType > &new_seeds)=0comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
    Seeds_Pool(const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    set_top_queue(const CoMMAIntType q_lvl)comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    spoil_queue(const std::vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    update(const std::deque< CoMMAIndexType > &new_seeds)=0comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
    ~Seeds_Pool()=defaultcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
    +
    + + + + diff --git a/classcomma_1_1_seeds___pool.html b/classcomma_1_1_seeds___pool.html new file mode 100644 index 0000000..5f6a1cf --- /dev/null +++ b/classcomma_1_1_seeds___pool.html @@ -0,0 +1,877 @@ + + + + + + + +CoMMA: comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Referenceabstract
    +
    +
    + +

    Class representing the pool of all the seeds for creating a coarse cell. + More...

    + +

    #include <Seeds_Pool.h>

    +
    +Inheritance diagram for comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + +

    +Public Types

    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMAQueueType = std::deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Seeds_Pool (const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
     Constructor. More...
     
    virtual ~Seeds_Pool ()=default
     Destructor. More...
     
    std::optional< CoMMAIndexType > spoil_queue (const std::vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)
     Spoil a queue looking for an not-yet-agglomerated seed. More...
     
    virtual std::optional< CoMMAIndexType > choose_new_seed (const std::vector< bool > &is_agglomerated)=0
     Choose a new seed in the pool. More...
     
    virtual void update (const std::deque< CoMMAIndexType > &new_seeds)=0
     Add the provided seeds to a seeds pool queue according to the number of boundary faces. More...
     
    virtual void order_new_seeds_and_update (const std::unordered_set< CoMMAIndexType > &new_seeds)=0
     Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue. More...
     
    void build_queue (const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType target)
     Build the weight-ordered queue of seed for a given target level. A set of (index, weight) pair with special comparator is used to enforced order, then the indices are extracted. More...
     
    std::optional< CoMMAIntType > get_highest_n_bnd_yet_to_agglomerate (const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) const
     Compute the highest number of boundary faces of cells which are not agglomerated yet. More...
     
    bool is_empty (CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) const
     Given the default levels we define if the list of the targeted level is empty. More...
     
    virtual bool need_initialization (const std::vector< bool > &is_agglomerated)=0
     Whether the seeds pool need to be initialized. More...
     
    void initialize ()
     Initialize the seeds pool via a call to its initializator. More...
     
    void set_top_queue (const CoMMAIntType q_lvl)
     Setter for the top queue member. More...
     
    + + + + +

    +Public Attributes

    const std::vector< CoMMAIntType > & _n_bnd_faces
     Vector of number of faces on boundary per cell. More...
     
    + + + + + + + + + + + + + +

    +Protected Attributes

    std::vector< CoMMAQueueType_l_of_seeds
     List of deque of seeds. For each identifier we have the available seeds. We want the seed to be chosen preferably in the corner, then ridges, valleys and then interiors, see CoMMACellT. More...
     
    const std::vector< CoMMAWeightType > & _priority_weights
     Weights used to set the order of the seed to choose. More...
     
    std::optional< CoMMAIntType > _cur_top_queue
     Optional possibly containing the level (0,1,2,3, see Seeds_Pool::_l_of_seeds) of the queue currently being spoiled. More...
     
    std::shared_ptr< SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _initializator
     Pointer to a SPInitializator. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +class comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Class representing the pool of all the seeds for creating a coarse cell.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ CoMMAPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>
    +
    + +

    Type of pair.

    + +
    +
    + +

    ◆ CoMMAQueueType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAQueueType = std::deque<CoMMAIndexType>
    +
    + +

    Type of queue which holds seeds.

    + +
    +
    + +

    ◆ CoMMASetOfPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
    +
    + +

    Type of set of pairs.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Seeds_Pool()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Seeds_Pool (const std::vector< CoMMAIntType > & n_bnd_faces,
    const std::vector< CoMMAWeightType > & priority_weights,
    const bool one_point_init 
    )
    +
    +inline
    +
    + +

    Constructor.

    +
    Parameters
    + + + + +
    [in]n_bnd_facesVector telling how many boundary faces each cell has
    [in]priority_weightsWeights used to set the order of the seed to choose
    [in]one_point_initWhether the initialization should be done for the highest boundary level or just for one point
    +
    +
    + +
    +
    + +

    ◆ ~Seeds_Pool()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    virtual comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Seeds_Pool ()
    +
    +virtualdefault
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ build_queue()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::build_queue (const std::vector< bool > & is_fc_agglomerated,
    const CoMMAIntType target 
    )
    +
    +inline
    +
    + +

    Build the weight-ordered queue of seed for a given target level. A set of (index, weight) pair with special comparator is used to enforced order, then the indices are extracted.

    +
    Parameters
    + + + +
    [in]is_fc_agglomeratedVector of boolean telling whether a face has been agglomerated
    [in]targetLevel of the queue to build. It corresponds to the number of boundary faces
    +
    +
    + +
    +
    + +

    ◆ choose_new_seed()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    virtual std::optional< CoMMAIndexType > comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::choose_new_seed (const std::vector< bool > & is_agglomerated)
    +
    +pure virtual
    +
    + +

    Choose a new seed in the pool.

    +
    Parameters
    + + +
    [in]is_agglomeratedVector of booleans telling whether fine cells are agglomerated
    +
    +
    +
    Returns
    New seed
    + +

    Implemented in comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ get_highest_n_bnd_yet_to_agglomerate()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::optional< CoMMAIntType > comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::get_highest_n_bnd_yet_to_agglomerate (const std::vector< bool > & is_fc_agglomerated,
    const CoMMAIntType expected_max = CoMMACellT::CORNER 
    ) const
    +
    +inline
    +
    + +

    Compute the highest number of boundary faces of cells which are not agglomerated yet.

    +
    Parameters
    + + + +
    [in]is_fc_agglomeratedVector of boolean telling whether a face has been agglomerated
    [in]expected_maxExpected value. If found, function returns immediately. Defaulted to CoMMACellT::CORNER
    +
    +
    +
    Returns
    An optional which contains the number of boundary faces if there is at least one cell left to agglomerate
    + +
    +
    + +

    ◆ initialize()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    void comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::initialize ()
    +
    +inline
    +
    + +

    Initialize the seeds pool via a call to its initializator.

    + +
    +
    + +

    ◆ is_empty()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    bool comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::is_empty (CoMMAIntType i_level = CoMMACellT::N_CELL_TYPES) const
    +
    +inline
    +
    + +

    Given the default levels we define if the list of the targeted level is empty.

    +
    Parameters
    + + +
    [in]i_levellevel of the defined list
    +
    +
    + +
    +
    + +

    ◆ need_initialization()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    virtual bool comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::need_initialization (const std::vector< bool > & is_agglomerated)
    +
    +pure virtual
    +
    + +

    Whether the seeds pool need to be initialized.

    +
    Parameters
    + + +
    [in]is_agglomeratedVector of booleans telling whether fine cells are agglomerated
    +
    +
    +
    Returns
    A bool
    + +

    Implemented in comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ order_new_seeds_and_update()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    virtual void comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::order_new_seeds_and_update (const std::unordered_set< CoMMAIndexType > & new_seeds)
    +
    +pure virtual
    +
    + +

    Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue.

    +
    Parameters
    + + +
    [in]new_seedsVector of seeds to add
    +
    +
    + +

    Implemented in comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ set_top_queue()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    void comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::set_top_queue (const CoMMAIntType q_lvl)
    +
    +inline
    +
    + +

    Setter for the top queue member.

    +
    Parameters
    + + +
    [in]q_lvlLevel of the new top queue
    +
    +
    + +
    +
    + +

    ◆ spoil_queue()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::optional< CoMMAIndexType > comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::spoil_queue (const std::vector< bool > & is_fc_agglomerated,
    CoMMAQueueTypequeue 
    )
    +
    +inline
    +
    + +

    Spoil a queue looking for an not-yet-agglomerated seed.

    +
    Parameters
    + + + +
    [in]is_fc_agglomeratedVector of boolean telling whether a face has been agglomerated
    [out]queueThe queue to spoil
    +
    +
    +
    Returns
    An optional which contains the new seed if found
    + +
    +
    + +

    ◆ update()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    virtual void comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update (const std::deque< CoMMAIndexType > & new_seeds)
    +
    +pure virtual
    +
    + +

    Add the provided seeds to a seeds pool queue according to the number of boundary faces.

    +
    Parameters
    + + +
    [in]new_seedsSeeds to add
    +
    +
    +
    Warning
    new_seeds is supposed to be already ordered by the priority weight, therefore no check will be performed
    + +

    Implemented in comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ _cur_top_queue

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + +
    std::optional<CoMMAIntType> comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_cur_top_queue
    +
    +protected
    +
    + +

    Optional possibly containing the level (0,1,2,3, see Seeds_Pool::_l_of_seeds) of the queue currently being spoiled.

    + +
    +
    + +

    ◆ _initializator

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + +
    std::shared_ptr< SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType> > comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_initializator
    +
    +protected
    +
    + +

    Pointer to a SPInitializator.

    + +
    +
    + +

    ◆ _l_of_seeds

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + +
    std::vector<CoMMAQueueType> comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_l_of_seeds
    +
    +protected
    +
    + +

    List of deque of seeds. For each identifier we have the available seeds. We want the seed to be chosen preferably in the corner, then ridges, valleys and then interiors, see CoMMACellT.

    + +
    +
    + +

    ◆ _n_bnd_faces

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    const std::vector<CoMMAIntType>& comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_n_bnd_faces
    +
    + +

    Vector of number of faces on boundary per cell.

    + +
    +
    + +

    ◆ _priority_weights

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + +
    const std::vector<CoMMAWeightType>& comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_priority_weights
    +
    +protected
    +
    + +

    Weights used to set the order of the seed to choose.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/classcomma_1_1_seeds___pool.js b/classcomma_1_1_seeds___pool.js new file mode 100644 index 0000000..00b5db4 --- /dev/null +++ b/classcomma_1_1_seeds___pool.js @@ -0,0 +1,23 @@ +var classcomma_1_1_seeds___pool = +[ + [ "CoMMAPairType", "classcomma_1_1_seeds___pool.html#a70eb9e8d60f84565604934f31b6c52a3", null ], + [ "CoMMAQueueType", "classcomma_1_1_seeds___pool.html#abd24f8571c5608afb54cb4f52558635e", null ], + [ "CoMMASetOfPairType", "classcomma_1_1_seeds___pool.html#a9da3ca5fd578388aa227af993bb305cf", null ], + [ "Seeds_Pool", "classcomma_1_1_seeds___pool.html#a1493c48d699131945ffbd173104c900c", null ], + [ "~Seeds_Pool", "classcomma_1_1_seeds___pool.html#a7179db66333b68d1229bb8056dedf97d", null ], + [ "build_queue", "classcomma_1_1_seeds___pool.html#af927ed91e46d30b8571a964b72f206dc", null ], + [ "choose_new_seed", "classcomma_1_1_seeds___pool.html#a14a19c8ef86507a6b3f0ff73d3b0a86c", null ], + [ "get_highest_n_bnd_yet_to_agglomerate", "classcomma_1_1_seeds___pool.html#a0e128dabb2ee75e11ea2bbcb4b3920e8", null ], + [ "initialize", "classcomma_1_1_seeds___pool.html#a820ecd76d0ab974a69701c9a9df3114e", null ], + [ "is_empty", "classcomma_1_1_seeds___pool.html#a5b81870765d59728538feb0960bbcc5a", null ], + [ "need_initialization", "classcomma_1_1_seeds___pool.html#a01f69492190dc641f35e38c748bc84d9", null ], + [ "order_new_seeds_and_update", "classcomma_1_1_seeds___pool.html#aeb9e0c8f04da45e06e215bd6d262929c", null ], + [ "set_top_queue", "classcomma_1_1_seeds___pool.html#ab973d98317537bd99b53956103e69ba8", null ], + [ "spoil_queue", "classcomma_1_1_seeds___pool.html#ab8e4795e11961d437344ff026bdabf2f", null ], + [ "update", "classcomma_1_1_seeds___pool.html#a822572a26fb4a9f1efef060d3ecada9f", null ], + [ "_cur_top_queue", "classcomma_1_1_seeds___pool.html#ab12ee6a6886337d0a11eff12c9dcda9c", null ], + [ "_initializator", "classcomma_1_1_seeds___pool.html#ac1d8be5640d4c3de04958b4aa9e0e75f", null ], + [ "_l_of_seeds", "classcomma_1_1_seeds___pool.html#a0d840ac2abaa80ac8d2e5ff80ca9984d", null ], + [ "_n_bnd_faces", "classcomma_1_1_seeds___pool.html#af94325238592b000a2549eccf7905f58", null ], + [ "_priority_weights", "classcomma_1_1_seeds___pool.html#a12a6662e2f8e508e852c76f36df1ff17", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_seeds___pool.png b/classcomma_1_1_seeds___pool.png new file mode 100644 index 0000000..f6b0367 Binary files /dev/null and b/classcomma_1_1_seeds___pool.png differ diff --git a/classcomma_1_1_seeds___pool___boundary___priority-members.html b/classcomma_1_1_seeds___pool___boundary___priority-members.html new file mode 100644 index 0000000..f488707 --- /dev/null +++ b/classcomma_1_1_seeds___pool___boundary___priority-members.html @@ -0,0 +1,132 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    +
    + +

    This is the complete list of members for comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + +
    _cur_top_queuecomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _initializatorcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _l_of_seedscomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _n_bnd_facescomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _priority_weightscomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    build_queue(const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType target)comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    choose_new_seed(const std::vector< bool > &is_agglomerated) overridecomma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    CoMMAPairType typedefcomma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAQueueType typedefcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMASetOfPairType typedefcomma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    get_highest_n_bnd_yet_to_agglomerate(const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) constcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    initialize()comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    is_empty(CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) constcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    need_initialization(const std::vector< bool > &is_agglomerated) overridecomma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    order_new_seeds_and_update(const std::unordered_set< CoMMAIndexType > &new_seeds) overridecomma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    Seeds_Pool(const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Seeds_Pool_Boundary_Priority(const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    SeedsPoolBaseType typedefcomma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    set_top_queue(const CoMMAIntType q_lvl)comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    spoil_queue(const std::vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    update(const std::deque< CoMMAIndexType > &new_seeds) overridecomma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    ~Seeds_Pool()=defaultcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
    ~Seeds_Pool_Boundary_Priority() override=defaultcomma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    +
    + + + + diff --git a/classcomma_1_1_seeds___pool___boundary___priority.html b/classcomma_1_1_seeds___pool___boundary___priority.html new file mode 100644 index 0000000..986d446 --- /dev/null +++ b/classcomma_1_1_seeds___pool___boundary___priority.html @@ -0,0 +1,535 @@ + + + + + + + +CoMMA: comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +
    +
    + +

    Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are on the border. + More...

    + +

    #include <Seeds_Pool.h>

    +
    +Inheritance diagram for comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using SeedsPoolBaseType = Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Base class. More...
     
    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    - Public Types inherited from comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMAQueueType = std::deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Seeds_Pool_Boundary_Priority (const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
     Constructor. More...
     
     ~Seeds_Pool_Boundary_Priority () override=default
     Destructor. More...
     
    std::optional< CoMMAIndexType > choose_new_seed (const std::vector< bool > &is_agglomerated) override
     Choose a new seed in the pool. More...
     
    void update (const std::deque< CoMMAIndexType > &new_seeds) override
     Add the provided seeds to a seeds pool queue according to the number of boundary faces. It updates the current top queue if necessary. More...
     
    void order_new_seeds_and_update (const std::unordered_set< CoMMAIndexType > &new_seeds) override
     Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue. More...
     
    bool need_initialization (const std::vector< bool > &is_agglomerated) override
     Whether the seeds pool need to be initialized. It updates the top queue if necessary. More...
     
    - Public Member Functions inherited from comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Seeds_Pool (const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
     Constructor. More...
     
    virtual ~Seeds_Pool ()=default
     Destructor. More...
     
    std::optional< CoMMAIndexType > spoil_queue (const std::vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)
     Spoil a queue looking for an not-yet-agglomerated seed. More...
     
    virtual std::optional< CoMMAIndexType > choose_new_seed (const std::vector< bool > &is_agglomerated)=0
     Choose a new seed in the pool. More...
     
    virtual void update (const std::deque< CoMMAIndexType > &new_seeds)=0
     Add the provided seeds to a seeds pool queue according to the number of boundary faces. More...
     
    virtual void order_new_seeds_and_update (const std::unordered_set< CoMMAIndexType > &new_seeds)=0
     Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue. More...
     
    void build_queue (const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType target)
     Build the weight-ordered queue of seed for a given target level. A set of (index, weight) pair with special comparator is used to enforced order, then the indices are extracted. More...
     
    std::optional< CoMMAIntType > get_highest_n_bnd_yet_to_agglomerate (const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) const
     Compute the highest number of boundary faces of cells which are not agglomerated yet. More...
     
    bool is_empty (CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) const
     Given the default levels we define if the list of the targeted level is empty. More...
     
    virtual bool need_initialization (const std::vector< bool > &is_agglomerated)=0
     Whether the seeds pool need to be initialized. More...
     
    void initialize ()
     Initialize the seeds pool via a call to its initializator. More...
     
    void set_top_queue (const CoMMAIntType q_lvl)
     Setter for the top queue member. More...
     
    + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Public Attributes inherited from comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    const std::vector< CoMMAIntType > & _n_bnd_faces
     Vector of number of faces on boundary per cell. More...
     
    - Protected Attributes inherited from comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    std::vector< CoMMAQueueType_l_of_seeds
     List of deque of seeds. For each identifier we have the available seeds. We want the seed to be chosen preferably in the corner, then ridges, valleys and then interiors, see CoMMACellT. More...
     
    const std::vector< CoMMAWeightType > & _priority_weights
     Weights used to set the order of the seed to choose. More...
     
    std::optional< CoMMAIntType > _cur_top_queue
     Optional possibly containing the level (0,1,2,3, see Seeds_Pool::_l_of_seeds) of the queue currently being spoiled. More...
     
    std::shared_ptr< SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _initializator
     Pointer to a SPInitializator. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +class comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are on the border.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ CoMMAPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>
    +
    + +

    Type of pair.

    + +
    +
    + +

    ◆ CoMMASetOfPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
    +
    + +

    Type of set of pairs.

    + +
    +
    + +

    ◆ SeedsPoolBaseType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::SeedsPoolBaseType = Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Base class.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Seeds_Pool_Boundary_Priority()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Seeds_Pool_Boundary_Priority (const std::vector< CoMMAIntType > & n_bnd_faces,
    const std::vector< CoMMAWeightType > & priority_weights,
    const bool one_point_init 
    )
    +
    +inline
    +
    + +

    Constructor.

    +
    Parameters
    + + + + +
    [in]n_bnd_facesVector telling how many boundary faces each cell has
    [in]priority_weightsWeights used to set the order of the seed to choose
    [in]one_point_initWhether the initialization should be done for the highest boundary level or just for one point
    +
    +
    + +
    +
    + +

    ◆ ~Seeds_Pool_Boundary_Priority()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Seeds_Pool_Boundary_Priority ()
    +
    +overridedefault
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ choose_new_seed()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    std::optional< CoMMAIndexType > comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::choose_new_seed (const std::vector< bool > & is_agglomerated)
    +
    +inlineoverridevirtual
    +
    + +

    Choose a new seed in the pool.

    +
    Parameters
    + + +
    [in]is_agglomeratedVector of booleans telling whether fine cells are agglomerated
    +
    +
    +
    Returns
    New seed
    + +

    Implements comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ need_initialization()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    bool comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::need_initialization (const std::vector< bool > & is_agglomerated)
    +
    +inlineoverridevirtual
    +
    + +

    Whether the seeds pool need to be initialized. It updates the top queue if necessary.

    +
    Parameters
    + + +
    [in]is_agglomeratedVector of booleans telling whether fine cells are agglomerated
    +
    +
    +
    Returns
    A bool
    + +

    Implements comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ order_new_seeds_and_update()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    void comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::order_new_seeds_and_update (const std::unordered_set< CoMMAIndexType > & new_seeds)
    +
    +inlineoverridevirtual
    +
    + +

    Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue.

    +
    Parameters
    + + +
    [in]new_seedsVector of seeds to add
    +
    +
    + +

    Implements comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ update()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    void comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update (const std::deque< CoMMAIndexType > & new_seeds)
    +
    +inlineoverridevirtual
    +
    + +

    Add the provided seeds to a seeds pool queue according to the number of boundary faces. It updates the current top queue if necessary.

    +
    Parameters
    + + +
    [in]new_seedsSeeds to add
    +
    +
    +
    Warning
    new_seeds is supposed to be already ordered by the priority weight, therefore no check will be performed
    + +

    Implements comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/classcomma_1_1_seeds___pool___boundary___priority.js b/classcomma_1_1_seeds___pool___boundary___priority.js new file mode 100644 index 0000000..3c61793 --- /dev/null +++ b/classcomma_1_1_seeds___pool___boundary___priority.js @@ -0,0 +1,12 @@ +var classcomma_1_1_seeds___pool___boundary___priority = +[ + [ "CoMMAPairType", "classcomma_1_1_seeds___pool___boundary___priority.html#a70eb9e8d60f84565604934f31b6c52a3", null ], + [ "CoMMASetOfPairType", "classcomma_1_1_seeds___pool___boundary___priority.html#a9da3ca5fd578388aa227af993bb305cf", null ], + [ "SeedsPoolBaseType", "classcomma_1_1_seeds___pool___boundary___priority.html#a1d1c45f7e5b7803108d17ba4bdef0261", null ], + [ "Seeds_Pool_Boundary_Priority", "classcomma_1_1_seeds___pool___boundary___priority.html#a849b5e49938159a291940d3e5fbb13f2", null ], + [ "~Seeds_Pool_Boundary_Priority", "classcomma_1_1_seeds___pool___boundary___priority.html#a9b8cb88165b0e4d5cdbd35430122e126", null ], + [ "choose_new_seed", "classcomma_1_1_seeds___pool___boundary___priority.html#ae970ce201db03dfd873895b9b9e24c5e", null ], + [ "need_initialization", "classcomma_1_1_seeds___pool___boundary___priority.html#a3e80d6c43797e17da8a2bb3dd33a2f87", null ], + [ "order_new_seeds_and_update", "classcomma_1_1_seeds___pool___boundary___priority.html#a12bb14f9c2daa73a9842c0554919be54", null ], + [ "update", "classcomma_1_1_seeds___pool___boundary___priority.html#adff771d42e189fd9f51ec5ca70c5ad0d", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_seeds___pool___boundary___priority.png b/classcomma_1_1_seeds___pool___boundary___priority.png new file mode 100644 index 0000000..2536361 Binary files /dev/null and b/classcomma_1_1_seeds___pool___boundary___priority.png differ diff --git a/classcomma_1_1_seeds___pool___neighbourhood___priority-members.html b/classcomma_1_1_seeds___pool___neighbourhood___priority-members.html new file mode 100644 index 0000000..d2568e4 --- /dev/null +++ b/classcomma_1_1_seeds___pool___neighbourhood___priority-members.html @@ -0,0 +1,132 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    +
    + +

    This is the complete list of members for comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + +
    _cur_top_queuecomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _initializatorcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _l_of_seedscomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    _n_bnd_facescomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _priority_weightscomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >protected
    build_queue(const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType target)comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    choose_new_seed(const std::vector< bool > &is_agglomerated) overridecomma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    CoMMAPairType typedefcomma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAQueueType typedefcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMASetOfPairType typedefcomma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    get_highest_n_bnd_yet_to_agglomerate(const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) constcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    initialize()comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    is_empty(CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) constcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    need_initialization(const std::vector< bool > &is_agglomerated) overridecomma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    order_new_seeds_and_update(const std::unordered_set< CoMMAIndexType > &new_seeds) overridecomma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    Seeds_Pool(const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Seeds_Pool_Neighbourhood_Priority(const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    SeedsPoolBaseType typedefcomma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    set_top_queue(const CoMMAIntType q_lvl)comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    spoil_queue(const std::vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    update(const std::deque< CoMMAIndexType > &new_seeds) overridecomma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    ~Seeds_Pool()=defaultcomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
    ~Seeds_Pool_Neighbourhood_Priority() override=defaultcomma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    +
    + + + + diff --git a/classcomma_1_1_seeds___pool___neighbourhood___priority.html b/classcomma_1_1_seeds___pool___neighbourhood___priority.html new file mode 100644 index 0000000..0b47e70 --- /dev/null +++ b/classcomma_1_1_seeds___pool___neighbourhood___priority.html @@ -0,0 +1,535 @@ + + + + + + + +CoMMA: comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +
    +
    + +

    Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are neighbours of already existing coarse cells. + More...

    + +

    #include <Seeds_Pool.h>

    +
    +Inheritance diagram for comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using SeedsPoolBaseType = Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Base class. More...
     
    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    - Public Types inherited from comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMAQueueType = std::deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Seeds_Pool_Neighbourhood_Priority (const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
     Constructor. More...
     
     ~Seeds_Pool_Neighbourhood_Priority () override=default
     Destructor. More...
     
    std::optional< CoMMAIndexType > choose_new_seed (const std::vector< bool > &is_agglomerated) override
     Choose a new seed in the pool. More...
     
    void update (const std::deque< CoMMAIndexType > &new_seeds) override
     Add the provided seeds to a seeds pool queue according to the number of boundary faces. More...
     
    void order_new_seeds_and_update (const std::unordered_set< CoMMAIndexType > &new_seeds) override
     Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue. More...
     
    bool need_initialization (const std::vector< bool > &is_agglomerated) override
     Whether the seeds pool need to be initialized. More...
     
    - Public Member Functions inherited from comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Seeds_Pool (const std::vector< CoMMAIntType > &n_bnd_faces, const std::vector< CoMMAWeightType > &priority_weights, const bool one_point_init)
     Constructor. More...
     
    virtual ~Seeds_Pool ()=default
     Destructor. More...
     
    std::optional< CoMMAIndexType > spoil_queue (const std::vector< bool > &is_fc_agglomerated, CoMMAQueueType &queue)
     Spoil a queue looking for an not-yet-agglomerated seed. More...
     
    virtual std::optional< CoMMAIndexType > choose_new_seed (const std::vector< bool > &is_agglomerated)=0
     Choose a new seed in the pool. More...
     
    virtual void update (const std::deque< CoMMAIndexType > &new_seeds)=0
     Add the provided seeds to a seeds pool queue according to the number of boundary faces. More...
     
    virtual void order_new_seeds_and_update (const std::unordered_set< CoMMAIndexType > &new_seeds)=0
     Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue. More...
     
    void build_queue (const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType target)
     Build the weight-ordered queue of seed for a given target level. A set of (index, weight) pair with special comparator is used to enforced order, then the indices are extracted. More...
     
    std::optional< CoMMAIntType > get_highest_n_bnd_yet_to_agglomerate (const std::vector< bool > &is_fc_agglomerated, const CoMMAIntType expected_max=CoMMACellT::CORNER) const
     Compute the highest number of boundary faces of cells which are not agglomerated yet. More...
     
    bool is_empty (CoMMAIntType i_level=CoMMACellT::N_CELL_TYPES) const
     Given the default levels we define if the list of the targeted level is empty. More...
     
    virtual bool need_initialization (const std::vector< bool > &is_agglomerated)=0
     Whether the seeds pool need to be initialized. More...
     
    void initialize ()
     Initialize the seeds pool via a call to its initializator. More...
     
    void set_top_queue (const CoMMAIntType q_lvl)
     Setter for the top queue member. More...
     
    + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Public Attributes inherited from comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    const std::vector< CoMMAIntType > & _n_bnd_faces
     Vector of number of faces on boundary per cell. More...
     
    - Protected Attributes inherited from comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    std::vector< CoMMAQueueType_l_of_seeds
     List of deque of seeds. For each identifier we have the available seeds. We want the seed to be chosen preferably in the corner, then ridges, valleys and then interiors, see CoMMACellT. More...
     
    const std::vector< CoMMAWeightType > & _priority_weights
     Weights used to set the order of the seed to choose. More...
     
    std::optional< CoMMAIntType > _cur_top_queue
     Optional possibly containing the level (0,1,2,3, see Seeds_Pool::_l_of_seeds) of the queue currently being spoiled. More...
     
    std::shared_ptr< SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > > _initializator
     Pointer to a SPInitializator. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +class comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are neighbours of already existing coarse cells.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ CoMMAPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>
    +
    + +

    Type of pair.

    + +
    +
    + +

    ◆ CoMMASetOfPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
    +
    + +

    Type of set of pairs.

    + +
    +
    + +

    ◆ SeedsPoolBaseType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::SeedsPoolBaseType = Seeds_Pool<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Base class.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Seeds_Pool_Neighbourhood_Priority()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Seeds_Pool_Neighbourhood_Priority (const std::vector< CoMMAIntType > & n_bnd_faces,
    const std::vector< CoMMAWeightType > & priority_weights,
    const bool one_point_init 
    )
    +
    +inline
    +
    + +

    Constructor.

    +
    Parameters
    + + + + +
    [in]n_bnd_facesVector telling how many boundary faces each cell has
    [in]priority_weightsWeights used to set the order of the seed to choose
    [in]one_point_initWhether the initialization should be done for the highest boundary level or just for one point
    +
    +
    + +
    +
    + +

    ◆ ~Seeds_Pool_Neighbourhood_Priority()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Seeds_Pool_Neighbourhood_Priority ()
    +
    +overridedefault
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ choose_new_seed()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    std::optional< CoMMAIndexType > comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::choose_new_seed (const std::vector< bool > & is_agglomerated)
    +
    +inlineoverridevirtual
    +
    + +

    Choose a new seed in the pool.

    +
    Parameters
    + + +
    [in]is_agglomeratedVector of booleans telling whether fine cells are agglomerated
    +
    +
    +
    Returns
    New seed
    + +

    Implements comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ need_initialization()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    bool comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::need_initialization (const std::vector< bool > & is_agglomerated)
    +
    +inlineoverridevirtual
    +
    + +

    Whether the seeds pool need to be initialized.

    +
    Parameters
    + + +
    [in]is_agglomeratedvector of boolean with fine cells
    +
    +
    +
    Returns
    A bool
    + +

    Implements comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ order_new_seeds_and_update()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    void comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::order_new_seeds_and_update (const std::unordered_set< CoMMAIndexType > & new_seeds)
    +
    +inlineoverridevirtual
    +
    + +

    Add the provided seeds to a seeds pool queue according to the number of boundary faces. The seeds will be ordered considering their priority weights before being added to the queue.

    +
    Parameters
    + + +
    [in]new_seedsVector of seeds to add
    +
    +
    + +

    Implements comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    + +

    ◆ update()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    void comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::update (const std::deque< CoMMAIndexType > & new_seeds)
    +
    +inlineoverridevirtual
    +
    + +

    Add the provided seeds to a seeds pool queue according to the number of boundary faces.

    +
    Parameters
    + + +
    [in]new_seedsSeeds to add
    +
    +
    +
    Warning
    new_seeds is supposed to be already ordered by the priority weight, therefore no check will be performed
    + +

    Implements comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/classcomma_1_1_seeds___pool___neighbourhood___priority.js b/classcomma_1_1_seeds___pool___neighbourhood___priority.js new file mode 100644 index 0000000..f2893b1 --- /dev/null +++ b/classcomma_1_1_seeds___pool___neighbourhood___priority.js @@ -0,0 +1,12 @@ +var classcomma_1_1_seeds___pool___neighbourhood___priority = +[ + [ "CoMMAPairType", "classcomma_1_1_seeds___pool___neighbourhood___priority.html#a70eb9e8d60f84565604934f31b6c52a3", null ], + [ "CoMMASetOfPairType", "classcomma_1_1_seeds___pool___neighbourhood___priority.html#a9da3ca5fd578388aa227af993bb305cf", null ], + [ "SeedsPoolBaseType", "classcomma_1_1_seeds___pool___neighbourhood___priority.html#a66ebace9a08086690b4ea3a1965f2cd9", null ], + [ "Seeds_Pool_Neighbourhood_Priority", "classcomma_1_1_seeds___pool___neighbourhood___priority.html#a4ca303915819a28c8688b3391ade65ba", null ], + [ "~Seeds_Pool_Neighbourhood_Priority", "classcomma_1_1_seeds___pool___neighbourhood___priority.html#a5f8c325ed9efd6476c36b9a979273fb1", null ], + [ "choose_new_seed", "classcomma_1_1_seeds___pool___neighbourhood___priority.html#a02b84ea9c154e7475a6952f63595565e", null ], + [ "need_initialization", "classcomma_1_1_seeds___pool___neighbourhood___priority.html#a341847d4bc85427d4ee8c406c7005fa7", null ], + [ "order_new_seeds_and_update", "classcomma_1_1_seeds___pool___neighbourhood___priority.html#a8fddbf0ca066c36daf377289806f19b8", null ], + [ "update", "classcomma_1_1_seeds___pool___neighbourhood___priority.html#af2883cfa457dc93928f31d35f7e62a3c", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_seeds___pool___neighbourhood___priority.png b/classcomma_1_1_seeds___pool___neighbourhood___priority.png new file mode 100644 index 0000000..9fcbbdf Binary files /dev/null and b/classcomma_1_1_seeds___pool___neighbourhood___priority.png differ diff --git a/classcomma_1_1_subgraph-members.html b/classcomma_1_1_subgraph-members.html new file mode 100644 index 0000000..87174d4 --- /dev/null +++ b/classcomma_1_1_subgraph-members.html @@ -0,0 +1,142 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    +
    + +

    This is the complete list of members for comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    _cardinalitycomma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _compactnesscomma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _is_isotropiccomma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _m_CRS_Col_Indcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _m_CRS_Row_Ptrcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _m_CRS_Valuescomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _mapping_l_to_gcomma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _number_of_cellscomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _visitedcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    _volumescomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    BaseClass typedefcomma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    BFS(const CoMMAIndexType &root)comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    check_connectivity()comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    compute_fc_compactness_inside_a_cc(const std::unordered_set< CoMMAIndexType > &s_fc) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    compute_min_fc_compactness_inside_a_cc(const std::unordered_set< CoMMAIndexType > &s_fc) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    ContainerIndexConstIt typedefcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ContainerIndexType typedefcomma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ContainerWeightConstIt typedefcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ContainerWeightType typedefcomma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    DFS(const CoMMAIndexType &i_fc)comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_nb_of_neighbours(CoMMAIndexType i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_neighbours(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    get_weights(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Graph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    insert_node(const ContainerIndexType &v_neigh, const CoMMAIndexType &i_fc, const CoMMAWeightType &volume, const ContainerWeightType &weight)comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    neighbours_cbegin(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    neighbours_cend(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    remove_node(const CoMMAIndexType &elemento)comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Subgraph(const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes, const ContainerIndexType &mapping_l_to_g, const bool &is_isotropic)comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    weights_cbegin(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    weights_cend(const CoMMAIndexType &i_c) constcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    ~Graph()=defaultcomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
    ~Subgraph() override=defaultcomma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    +
    + + + + diff --git a/classcomma_1_1_subgraph.html b/classcomma_1_1_subgraph.html new file mode 100644 index 0000000..e1b8e50 --- /dev/null +++ b/classcomma_1_1_subgraph.html @@ -0,0 +1,596 @@ + + + + + + + +CoMMA: comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +
    +
    + +

    A class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the implementation of the CSR representation of the coarse cells. + More...

    + +

    #include <Dual_Graph.h>

    +
    +Inheritance diagram for comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using BaseClass = Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Parent class. More...
     
    using ContainerIndexType = std::vector< CoMMAIndexType >
     Type for containers of indices. More...
     
    using ContainerWeightType = std::vector< CoMMAWeightType >
     Type for containers of weights. More...
     
    - Public Types inherited from comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    using ContainerIndexType = std::vector< CoMMAIndexType >
     Type for containers of indices. More...
     
    using ContainerWeightType = std::vector< CoMMAWeightType >
     Type for containers of weights. More...
     
    using ContainerIndexConstIt = typename ContainerIndexType::const_iterator
     Type for constant iterators of containers of indices. More...
     
    using ContainerWeightConstIt = typename ContainerWeightType::const_iterator
     Type for constant iterators of containers of weights. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Subgraph (const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes, const ContainerIndexType &mapping_l_to_g, const bool &is_isotropic)
     Constructor of the class. More...
     
     ~Subgraph () override=default
     Destructor of the class. More...
     
    void insert_node (const ContainerIndexType &v_neigh, const CoMMAIndexType &i_fc, const CoMMAWeightType &volume, const ContainerWeightType &weight)
     Insert a node in the subgraph and add it to the mapping the. More...
     
    void remove_node (const CoMMAIndexType &elemento)
     Remove a node from the CRS representation and automatically adjust the mapping. More...
     
    - Public Member Functions inherited from comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Graph (const CoMMAIndexType &nb_c, const ContainerIndexType &m_crs_row_ptr, const ContainerIndexType &m_crs_col_ind, const ContainerWeightType &m_crs_values, const ContainerWeightType &volumes)
     Constructor of the class. More...
     
    virtual ~Graph ()=default
     Destructor of the class. More...
     
    void DFS (const CoMMAIndexType &i_fc)
     Depth First Search (DFS) recursive function. More...
     
    void BFS (const CoMMAIndexType &root)
     Breadth First Search (BFS) function. More...
     
    CoMMAIntType get_nb_of_neighbours (CoMMAIndexType i_c) const
     Retrieve the number of neighbours. More...
     
    ContainerIndexType get_neighbours (const CoMMAIndexType &i_c) const
     Based on the CRS representation retrieves the neighbours of the cell given as an input. More...
     
    ContainerIndexConstIt neighbours_cbegin (const CoMMAIndexType &i_c) const
     Get constant pointer to the first neighbour of cell i_c. More...
     
    ContainerIndexConstIt neighbours_cend (const CoMMAIndexType &i_c) const
     Get constant pointer to the element following the last neighbour of cell i_c. More...
     
    ContainerWeightType get_weights (const CoMMAIndexType &i_c) const
     Based on the area of the faces composing the cell given as an input, we retrieve the faces connecting the given cell with the neighbourhood that can be described also as the weight of the graph. More...
     
    ContainerWeightConstIt weights_cbegin (const CoMMAIndexType &i_c) const
     Get constant pointer to the first neighbour of cell i_c. More...
     
    ContainerWeightConstIt weights_cend (const CoMMAIndexType &i_c) const
     Get constant pointer to the element following the last neighbour of cell i_c. More...
     
    bool check_connectivity ()
     Check the connectivity of the graph. More...
     
    CoMMAIntType compute_min_fc_compactness_inside_a_cc (const std::unordered_set< CoMMAIndexType > &s_fc) const
     Compute the minimum compactness of fine cells inside a coarse cell. More...
     
    std::unordered_map< CoMMAIndexType, CoMMAIntType > compute_fc_compactness_inside_a_cc (const std::unordered_set< CoMMAIndexType > &s_fc) const
     Compute the dictionary of compactness of fine cells inside a coarse cell. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    bool _is_isotropic
     Whether it originates from an isotropic cell. More...
     
    CoMMAIntType _cardinality
     Cardinality of the given subgraph, alias the number of nodes contained. More...
     
    CoMMAIntType _compactness
     Compactness of the given subgraph. The compactness is the minimum number of internal neighbours. More...
     
    ContainerIndexType _mapping_l_to_g
     Mapping from the local number of node to the global. Being a subgraph this variable connect the local index of the node with the global one. More...
     
    - Public Attributes inherited from comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAIndexType _number_of_cells
     Number of nodes in the Graph (it corresponds to the number of cells in the subgraph or the dual graph. More...
     
    std::vector< bool > _visited
     Helper vector for the DFS. More...
     
    ContainerIndexType _m_CRS_Row_Ptr
     Vector of row pointer of CRS representation. More...
     
    ContainerIndexType _m_CRS_Col_Ind
     Vector of column index of CRS representation. More...
     
    ContainerWeightType _m_CRS_Values
     Vector of area weight of CRS representation. More...
     
    ContainerWeightType _volumes
     Vector of volumes. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +class comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    A class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the implementation of the CSR representation of the coarse cells.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ BaseClass

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::BaseClass = Graph<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Parent class.

    + +
    +
    + +

    ◆ ContainerIndexType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerIndexType = std::vector<CoMMAIndexType>
    +
    + +

    Type for containers of indices.

    + +
    +
    + +

    ◆ ContainerWeightType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::ContainerWeightType = std::vector<CoMMAWeightType>
    +
    + +

    Type for containers of weights.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Subgraph()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::Subgraph (const CoMMAIndexType & nb_c,
    const ContainerIndexTypem_crs_row_ptr,
    const ContainerIndexTypem_crs_col_ind,
    const ContainerWeightTypem_crs_values,
    const ContainerWeightTypevolumes,
    const ContainerIndexTypemapping_l_to_g,
    const bool & is_isotropic 
    )
    +
    +inline
    +
    + +

    Constructor of the class.

    +
    Parameters
    + + + + + + + + +
    [in]nb_cCardinality of the CC, that is the number of fine cells composing the CC
    [in]m_crs_row_ptrThe row pointer of the CRS representation
    [in]m_crs_col_indThe column index of the CRS representation
    [in]m_crs_valuesThe weight of the CRS representation (in CoMMA case will be the area of the faces that in the graph representation are the edges between two nodes represented by the cell centers.
    [in]volumesThe volumes of the cells
    [in]mapping_l_to_gMapping between the local (to the CC) numbering to global numbering
    [in]is_isotropicWhether the cell is isotropic
    +
    +
    + +
    +
    + +

    ◆ ~Subgraph()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~Subgraph ()
    +
    +overridedefault
    +
    + +

    Destructor of the class.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ insert_node()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::insert_node (const ContainerIndexTypev_neigh,
    const CoMMAIndexType & i_fc,
    const CoMMAWeightType & volume,
    const ContainerWeightTypeweight 
    )
    +
    +inline
    +
    + +

    Insert a node in the subgraph and add it to the mapping the.

    +
    Parameters
    + + + + + +
    [in]v_neighVector of the neighbours to be added. The neighbours must be given in the global indexing system.
    [in]i_fcGlobal index of the node
    [in]volumeVolume of the cell
    [in]weightVector of the area of the faces of the given cells to be added.
    +
    +
    + +
    +
    + +

    ◆ remove_node()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + +
    void comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::remove_node (const CoMMAIndexType & elemento)
    +
    +inline
    +
    + +

    Remove a node from the CRS representation and automatically adjust the mapping.

    +
    Parameters
    + + +
    [in]elementoGlobal index of the node to be deleted.
    +
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ _cardinality

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    CoMMAIntType comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_cardinality
    +
    + +

    Cardinality of the given subgraph, alias the number of nodes contained.

    + +
    +
    + +

    ◆ _compactness

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    CoMMAIntType comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_compactness
    +
    + +

    Compactness of the given subgraph. The compactness is the minimum number of internal neighbours.

    + +
    +
    + +

    ◆ _is_isotropic

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    bool comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_is_isotropic
    +
    + +

    Whether it originates from an isotropic cell.

    + +
    +
    + +

    ◆ _mapping_l_to_g

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    ContainerIndexType comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_mapping_l_to_g
    +
    + +

    Mapping from the local number of node to the global. Being a subgraph this variable connect the local index of the node with the global one.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/classcomma_1_1_subgraph.js b/classcomma_1_1_subgraph.js new file mode 100644 index 0000000..6cb065c --- /dev/null +++ b/classcomma_1_1_subgraph.js @@ -0,0 +1,14 @@ +var classcomma_1_1_subgraph = +[ + [ "BaseClass", "classcomma_1_1_subgraph.html#a769d2fcd1f0d69a5b2741bdec90d409d", null ], + [ "ContainerIndexType", "classcomma_1_1_subgraph.html#ac24e8e9de0c15af027fe8d1ccd8304d4", null ], + [ "ContainerWeightType", "classcomma_1_1_subgraph.html#ab61394e58e9019e8d55320e3a2885115", null ], + [ "Subgraph", "classcomma_1_1_subgraph.html#a7abbe5057d801b3c44c0f3cd16dbfc56", null ], + [ "~Subgraph", "classcomma_1_1_subgraph.html#a3cfdb160481138be28f9a51340d99cea", null ], + [ "insert_node", "classcomma_1_1_subgraph.html#a427eb4209f44547612b694d4ae7f1875", null ], + [ "remove_node", "classcomma_1_1_subgraph.html#aba2014ec2b66bcc8cf270892bd395e1e", null ], + [ "_cardinality", "classcomma_1_1_subgraph.html#a9af08fe78c28ad4dc06e6128b2aa07bb", null ], + [ "_compactness", "classcomma_1_1_subgraph.html#a297656c72928fe5c7f9892a70595f973", null ], + [ "_is_isotropic", "classcomma_1_1_subgraph.html#a230d6568fd758a52709f60c1601662c8", null ], + [ "_mapping_l_to_g", "classcomma_1_1_subgraph.html#a4ed3e10de29d6b5ffefd442abb5bd164", null ] +]; \ No newline at end of file diff --git a/classcomma_1_1_subgraph.png b/classcomma_1_1_subgraph.png new file mode 100644 index 0000000..be439e6 Binary files /dev/null and b/classcomma_1_1_subgraph.png differ diff --git a/classcomma_1_1_tree-members.html b/classcomma_1_1_tree-members.html new file mode 100644 index 0000000..52960b7 --- /dev/null +++ b/classcomma_1_1_tree-members.html @@ -0,0 +1,120 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    +
    + +

    This is the complete list of members for comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    + + + + + + + + + + + + +
    _rootcomma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    delete_node(std::shared_ptr< NodeType > &searched_node, const CoMMAIndexType &value)comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    deleteNode(const CoMMAIndexType &value)comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    insertSon(const CoMMAIndexType &father_index, const CoMMAIndexType &index, const CoMMAWeightType &volume, const CoMMAIntType &root)comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    NodeType typedefcomma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    print()comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    print_nodes(std::shared_ptr< NodeType > &node)comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    search(std::shared_ptr< NodeType > &node, const CoMMAIndexType &value)comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    transverse(std::shared_ptr< NodeType > &node)comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    Tree(std::shared_ptr< NodeType > &root)comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlineexplicit
    ~Tree()=defaultcomma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    +
    + + + + diff --git a/class_tree.html b/classcomma_1_1_tree.html similarity index 54% rename from class_tree.html rename to classcomma_1_1_tree.html index e883897..d786a55 100644 --- a/class_tree.html +++ b/classcomma_1_1_tree.html @@ -5,7 +5,7 @@ -CoMMA: Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference +CoMMA: comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference @@ -65,7 +65,7 @@
    -
    Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    +List of all members
    +
    comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Class Template Reference
    -

    Tree structure that represent a coarse cell, the fine cell and the neighbours to them. - More...

    +

    Tree structure that represent a coarse cell, the fine cell and the neighbours to them. + More...

    #include <Tree.h>

    - - - + + +

    Public Types

    using NodeType = Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Type of node for the current tree. More...
     
    using NodeType = Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Type of node for the current tree. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Member Functions

     Tree (shared_ptr< NodeType > &root)
     Constructor. More...
     
     ~Tree ()
     Destructor. More...
     
    void insertSon (const CoMMAIndexType &father_index, const CoMMAIndexType &index, const CoMMAWeightType &volume, const CoMMAIntType &root)
     Insert a node as child of a given node. More...
     
    shared_ptr< NodeTypesearch (shared_ptr< NodeType > &node, const CoMMAIndexType &value)
     Look for a node. More...
     
    shared_ptr< NodeTypetransverse (shared_ptr< NodeType > &node)
     Traverse the tree. More...
     
    void deleteNode (const CoMMAIndexType &value)
     Delete a node. More...
     
    void delete_node (shared_ptr< NodeType > &searched_node, const CoMMAIndexType &value)
     Delete a node. More...
     
    void print ()
     Print the tree. More...
     
    void print_nodes (shared_ptr< NodeType > &node)
     Print the branches starting from a given node. More...
     
     Tree (std::shared_ptr< NodeType > &root)
     Constructor. More...
     
     ~Tree ()=default
     Destructor. More...
     
    void insertSon (const CoMMAIndexType &father_index, const CoMMAIndexType &index, const CoMMAWeightType &volume, const CoMMAIntType &root)
     Insert a node as child of a given node. More...
     
    std::shared_ptr< NodeTypesearch (std::shared_ptr< NodeType > &node, const CoMMAIndexType &value)
     Look for a node. More...
     
    std::shared_ptr< NodeTypetransverse (std::shared_ptr< NodeType > &node)
     Traverse the tree. More...
     
    void deleteNode (const CoMMAIndexType &value)
     Delete a node. More...
     
    void delete_node (std::shared_ptr< NodeType > &searched_node, const CoMMAIndexType &value)
     Delete a node. More...
     
    void print ()
     Print the tree. More...
     
    void print_nodes (std::shared_ptr< NodeType > &node)
     Print the branches starting from a given node. More...
     
    - - - + + +

    Public Attributes

    shared_ptr< NodeType_root
     The Node at the root of the tree. More...
     
    std::shared_ptr< NodeType_root
     The Node at the root of the tree. More...
     

    Detailed Description

    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    -class Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Tree structure that represent a coarse cell, the fine cell and the neighbours to them.

    +class comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Tree structure that represent a coarse cell, the fine cell and the neighbours to them.

    Template Parameters
    @@ -159,8 +159,8 @@

    Member Typedef Documentation

    - -

    ◆ NodeType

    + +

    ◆ NodeType

    @@ -168,7 +168,7 @@

    - +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    using Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NodeType = Node<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>using comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::NodeType = Node<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    @@ -178,8 +178,8 @@

    Constructor & Destructor Documentation

    - -

    ◆ Tree()

    + +

    ◆ Tree()

    - -

    ◆ ~Tree()

    + +

    ◆ ~Tree()

    @@ -244,8 +244,8 @@

    Member Function Documentation

    - -

    ◆ delete_node()

    + +

    ◆ delete_node()

    @@ -256,9 +256,9 @@

    - + - + @@ -291,8 +291,8 @@

    -

    ◆ deleteNode()

    + +

    ◆ deleteNode()

    @@ -303,7 +303,7 @@

    void Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::delete_node void comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::delete_node (shared_ptr< NodeType > & std::shared_ptr< NodeType > &  searched_node,
    - + @@ -327,8 +327,8 @@

    -

    ◆ insertSon()

    + +

    ◆ insertSon()

    @@ -339,7 +339,7 @@

    void Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::deleteNode void comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::deleteNode ( const CoMMAIndexType &  value)
    - + @@ -388,8 +388,8 @@

    -

    ◆ print()

    + +

    ◆ print()

    @@ -400,7 +400,7 @@

    void Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::insertSon void comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::insertSon ( const CoMMAIndexType &  father_index,
    - + @@ -417,8 +417,8 @@

    -

    ◆ print_nodes()

    + +

    ◆ print_nodes()

    @@ -429,9 +429,9 @@

    void Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::print void comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::print ( )
    - + - + @@ -453,8 +453,8 @@

    -

    ◆ search()

    + +

    ◆ search()

    @@ -465,9 +465,9 @@

    void Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::print_nodes void comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::print_nodes (shared_ptr< NodeType > & std::shared_ptr< NodeType > &  node)
    - + - + @@ -501,8 +501,8 @@

    -

    ◆ transverse()

    + +

    ◆ transverse()

    @@ -513,9 +513,9 @@

    shared_ptr< NodeType > Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::search std::shared_ptr< NodeType > comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::search (shared_ptr< NodeType > & std::shared_ptr< NodeType > &  node,
    - + - + @@ -539,8 +539,8 @@

    Member Data Documentation

    - -

    ◆ _root

    + +

    ◆ _root

    @@ -548,24 +548,24 @@

    - +
    shared_ptr< NodeType > Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::transverse std::shared_ptr< NodeType > comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::transverse (shared_ptr< NodeType > & std::shared_ptr< NodeType > &  node)
    shared_ptr<NodeType> Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_rootstd::shared_ptr<NodeType> comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::_root

    -

    The Node at the root of the tree.

    +

    The Node at the root of the tree.


    The documentation for this class was generated from the following file:
      -
    • CoMMA_lib/deprecated/Tree.h
    • +
    • include/CoMMA/deprecated/Tree.h
    diff --git a/classcomma_1_1_tree.js b/classcomma_1_1_tree.js new file mode 100644 index 0000000..ff0bbe7 --- /dev/null +++ b/classcomma_1_1_tree.js @@ -0,0 +1,14 @@ +var classcomma_1_1_tree = +[ + [ "NodeType", "classcomma_1_1_tree.html#aff9812ac9e33103d2651b0f8a9ba601a", null ], + [ "Tree", "classcomma_1_1_tree.html#afa76cefe052c105cbdf5a89e6171e001", null ], + [ "~Tree", "classcomma_1_1_tree.html#aeea0d5dc507464848dbb6ee591f512d1", null ], + [ "delete_node", "classcomma_1_1_tree.html#adde017be7b486d827e7ab1fb6355cfdc", null ], + [ "deleteNode", "classcomma_1_1_tree.html#a22632aa17b0500f1bfe9428bbd612c33", null ], + [ "insertSon", "classcomma_1_1_tree.html#a38103210c800f4ea07328f7ba5b80326", null ], + [ "print", "classcomma_1_1_tree.html#ab4df4521ca99f1feff41aa55b06464b1", null ], + [ "print_nodes", "classcomma_1_1_tree.html#a099bf175c326e84cee7d90a42e5ece2e", null ], + [ "search", "classcomma_1_1_tree.html#acbf7f4e37693578e32f675680b0859ca", null ], + [ "transverse", "classcomma_1_1_tree.html#aa8d121b22ac52df459f125da7b1c939b", null ], + [ "_root", "classcomma_1_1_tree.html#a1807654696d35f467175dfae12ef3f8c", null ] +]; \ No newline at end of file diff --git a/classes.html b/classes.html index f92cf1e..fedb0c3 100644 --- a/classes.html +++ b/classes.html @@ -98,34 +98,34 @@
    diff --git a/deprecated_2_r_e_a_d_m_e_8md.html b/deprecated_2_r_e_a_d_m_e_8md.html index d0e60a2..90eeaa2 100644 --- a/deprecated_2_r_e_a_d_m_e_8md.html +++ b/deprecated_2_r_e_a_d_m_e_8md.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/deprecated/README.md File Reference +CoMMA: include/CoMMA/deprecated/README.md File Reference @@ -91,7 +91,7 @@
    -
    CoMMA_lib/deprecated/README.md File Reference
    +
    include/CoMMA/deprecated/README.md File Reference
    diff --git a/dir_b4d066f17bf8846320f45d1123837ca0.html b/dir_375345a2a898c11a64ab4059403f7be4.html similarity index 92% rename from dir_b4d066f17bf8846320f45d1123837ca0.html rename to dir_375345a2a898c11a64ab4059403f7be4.html index 1943c10..cc1ef48 100644 --- a/dir_b4d066f17bf8846320f45d1123837ca0.html +++ b/dir_375345a2a898c11a64ab4059403f7be4.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/deprecated Directory Reference +CoMMA: include/CoMMA/deprecated Directory Reference @@ -65,7 +65,7 @@
    @@ -113,7 +113,7 @@ diff --git a/dir_b4d066f17bf8846320f45d1123837ca0.js b/dir_375345a2a898c11a64ab4059403f7be4.js similarity index 87% rename from dir_b4d066f17bf8846320f45d1123837ca0.js rename to dir_375345a2a898c11a64ab4059403f7be4.js index 7d6e371..c2c38cf 100644 --- a/dir_b4d066f17bf8846320f45d1123837ca0.js +++ b/dir_375345a2a898c11a64ab4059403f7be4.js @@ -1,4 +1,4 @@ -var dir_b4d066f17bf8846320f45d1123837ca0 = +var dir_375345a2a898c11a64ab4059403f7be4 = [ [ "Bimap.h", "_bimap_8h.html", "_bimap_8h" ], [ "Priority_Pair.h", "_priority___pair_8h.html", "_priority___pair_8h" ], diff --git a/dir_f7d8b6c0f4428b0df38184f730f938dc.html b/dir_8f906a4a6ae3a71fbba10fd081503c31.html similarity index 89% rename from dir_f7d8b6c0f4428b0df38184f730f938dc.html rename to dir_8f906a4a6ae3a71fbba10fd081503c31.html index d31d622..3e442b8 100644 --- a/dir_f7d8b6c0f4428b0df38184f730f938dc.html +++ b/dir_8f906a4a6ae3a71fbba10fd081503c31.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib Directory Reference +CoMMA: include/CoMMA Directory Reference @@ -65,7 +65,7 @@
    @@ -91,13 +91,13 @@
    -
    CoMMA_lib Directory Reference
    +
    CoMMA Directory Reference
    - +

    Directories

    directory  deprecated
    directory  deprecated
     
    - - - + @@ -128,7 +126,7 @@ diff --git a/dir_f7d8b6c0f4428b0df38184f730f938dc.js b/dir_8f906a4a6ae3a71fbba10fd081503c31.js similarity index 66% rename from dir_f7d8b6c0f4428b0df38184f730f938dc.js rename to dir_8f906a4a6ae3a71fbba10fd081503c31.js index c6ac176..30f1f2c 100644 --- a/dir_f7d8b6c0f4428b0df38184f730f938dc.js +++ b/dir_8f906a4a6ae3a71fbba10fd081503c31.js @@ -1,12 +1,11 @@ -var dir_f7d8b6c0f4428b0df38184f730f938dc = +var dir_8f906a4a6ae3a71fbba10fd081503c31 = [ - [ "deprecated", "dir_b4d066f17bf8846320f45d1123837ca0.html", "dir_b4d066f17bf8846320f45d1123837ca0" ], + [ "deprecated", "dir_375345a2a898c11a64ab4059403f7be4.html", "dir_375345a2a898c11a64ab4059403f7be4" ], [ "Agglomerator.h", "_agglomerator_8h.html", "_agglomerator_8h" ], [ "Coarse_Cell.h", "_coarse___cell_8h.html", "_coarse___cell_8h" ], [ "Coarse_Cell_Container.h", "_coarse___cell___container_8h.html", "_coarse___cell___container_8h" ], - [ "CoMMA.cpp", "_co_m_m_a_8cpp.html", "_co_m_m_a_8cpp" ], [ "CoMMA.h", "_co_m_m_a_8h.html", "_co_m_m_a_8h" ], - [ "CoMMATypes.h", "_co_m_m_a_types_8h.html", "_co_m_m_a_types_8h" ], + [ "CoMMADefs.h", "_co_m_m_a_defs_8h.html", "_co_m_m_a_defs_8h" ], [ "Dual_Graph.h", "_dual___graph_8h.html", "_dual___graph_8h" ], [ "Neighbourhood.h", "_neighbourhood_8h.html", "_neighbourhood_8h" ], [ "Seeds_Pool.h", "_seeds___pool_8h.html", "_seeds___pool_8h" ], diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..2ceb783 --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,113 @@ + + + + + + + +CoMMA: include Directory Reference + + + + + + + + + + + + + +
    +
    +

    @@ -108,11 +108,9 @@

     
    file  Coarse_Cell_Container.h [code]
     
    file  CoMMA.cpp
     
    file  CoMMA.h [code]
     
    file  CoMMATypes.h [code]
    file  CoMMADefs.h [code]
     
    file  Dual_Graph.h [code]
     
    + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + + +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    include Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  CoMMA
     
    +
    +
    + + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.js b/dir_d44c64559bbebec7f509842c48db8b23.js new file mode 100644 index 0000000..54b88ae --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.js @@ -0,0 +1,4 @@ +var dir_d44c64559bbebec7f509842c48db8b23 = +[ + [ "CoMMA", "dir_8f906a4a6ae3a71fbba10fd081503c31.html", "dir_8f906a4a6ae3a71fbba10fd081503c31" ] +]; \ No newline at end of file diff --git a/files.html b/files.html index 4081beb..d011b61 100644 --- a/files.html +++ b/files.html @@ -95,24 +95,24 @@
    Here is a list of all files with brief descriptions:
    diff --git a/files_dup.js b/files_dup.js index fea2794..f1749d9 100644 --- a/files_dup.js +++ b/files_dup.js @@ -1,4 +1,4 @@ var files_dup = [ - [ "CoMMA_lib", "dir_f7d8b6c0f4428b0df38184f730f938dc.html", "dir_f7d8b6c0f4428b0df38184f730f938dc" ] + [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ] ]; \ No newline at end of file diff --git a/functions.html b/functions.html index b08b9ba..310404c 100644 --- a/functions.html +++ b/functions.html @@ -94,67 +94,67 @@
    Here is a list of all class members with links to the classes they belong to:

    - _ -

    diff --git a/functions_a.html b/functions_a.html index 8a508e1..7424134 100644 --- a/functions_a.html +++ b/functions_a.html @@ -94,14 +94,14 @@
    Here is a list of all class members with links to the classes they belong to:

    - a -

    diff --git a/functions_b.html b/functions_b.html index 2abd32b..fd3c3c3 100644 --- a/functions_b.html +++ b/functions_b.html @@ -94,11 +94,11 @@
    Here is a list of all class members with links to the classes they belong to:

    - b -

    diff --git a/functions_c.html b/functions_c.html index 5fcefab..ce356b6 100644 --- a/functions_c.html +++ b/functions_c.html @@ -94,34 +94,34 @@
    Here is a list of all class members with links to the classes they belong to:

    - c -

    diff --git a/functions_d.html b/functions_d.html index f1c922c..19fa556 100644 --- a/functions_d.html +++ b/functions_d.html @@ -94,11 +94,11 @@
    Here is a list of all class members with links to the classes they belong to:

    - d -

    diff --git a/functions_e.html b/functions_e.html index 2d1555c..8531db4 100644 --- a/functions_e.html +++ b/functions_e.html @@ -94,11 +94,11 @@
    Here is a list of all class members with links to the classes they belong to:

    - e -

    diff --git a/functions_f.html b/functions_f.html index 17a33d6..b59ca1e 100644 --- a/functions_f.html +++ b/functions_f.html @@ -94,7 +94,7 @@
    Here is a list of all class members with links to the classes they belong to:

    - f -

    diff --git a/functions_func.html b/functions_func.html index eee5b82..be7a128 100644 --- a/functions_func.html +++ b/functions_func.html @@ -94,196 +94,213 @@  

    - a -

    - b -

    - c -

    - d -

    - e -

    - f -

    - g -

    - i -

    - l -

    - n -

    - o -

    - p -

    - q -

    - r -

    - s -

    - t -

    - u -

    - w -

    - ~ -

    diff --git a/functions_g.html b/functions_g.html index 6a312a7..958b5be 100644 --- a/functions_g.html +++ b/functions_g.html @@ -94,23 +94,23 @@
    Here is a list of all class members with links to the classes they belong to:

    - g -

    diff --git a/functions_i.html b/functions_i.html index 28fb2b2..1614249 100644 --- a/functions_i.html +++ b/functions_i.html @@ -94,15 +94,15 @@
    Here is a list of all class members with links to the classes they belong to:

    - i -

    diff --git a/functions_l.html b/functions_l.html index 7cd4519..c44df1b 100644 --- a/functions_l.html +++ b/functions_l.html @@ -94,7 +94,7 @@
    Here is a list of all class members with links to the classes they belong to:

    - l -

    diff --git a/functions_n.html b/functions_n.html index 7105c1b..98eb77d 100644 --- a/functions_n.html +++ b/functions_n.html @@ -94,19 +94,22 @@
    Here is a list of all class members with links to the classes they belong to:

    - n -

    diff --git a/functions_o.html b/functions_o.html index e808c73..ab64f67 100644 --- a/functions_o.html +++ b/functions_o.html @@ -94,10 +94,10 @@
    Here is a list of all class members with links to the classes they belong to:

    - o -

    diff --git a/functions_p.html b/functions_p.html index 468edf5..ae749ba 100644 --- a/functions_p.html +++ b/functions_p.html @@ -94,12 +94,12 @@
    Here is a list of all class members with links to the classes they belong to:

    - p -

    diff --git a/functions_q.html b/functions_q.html index 91a0705..4b960bb 100644 --- a/functions_q.html +++ b/functions_q.html @@ -94,7 +94,7 @@
    Here is a list of all class members with links to the classes they belong to:

    - q -

    diff --git a/functions_r.html b/functions_r.html index f820f80..f93ea60 100644 --- a/functions_r.html +++ b/functions_r.html @@ -94,7 +94,7 @@
    Here is a list of all class members with links to the classes they belong to:

    - r -

    diff --git a/functions_rela.html b/functions_rela.html index 65b4fd0..4359113 100644 --- a/functions_rela.html +++ b/functions_rela.html @@ -92,8 +92,8 @@
     
    diff --git a/functions_s.html b/functions_s.html index e1745ce..9731335 100644 --- a/functions_s.html +++ b/functions_s.html @@ -94,20 +94,23 @@
    Here is a list of all class members with links to the classes they belong to:

    - s -

    diff --git a/functions_t.html b/functions_t.html index 795880a..bb7db2b 100644 --- a/functions_t.html +++ b/functions_t.html @@ -94,10 +94,10 @@
    Here is a list of all class members with links to the classes they belong to:

    - t -

    diff --git a/functions_type.html b/functions_type.html index 946a2e6..b32e99d 100644 --- a/functions_type.html +++ b/functions_type.html @@ -94,51 +94,51 @@  

    - a -

    - b -

    - c -

    - d -

    - n -

    - s -

    diff --git a/functions_u.html b/functions_u.html index 0875cdc..fc083f4 100644 --- a/functions_u.html +++ b/functions_u.html @@ -94,11 +94,11 @@
    Here is a list of all class members with links to the classes they belong to:

    - u -

    diff --git a/functions_vars.html b/functions_vars.html index 79d2c1c..7a9a18f 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -94,67 +94,67 @@  

    - _ -

    diff --git a/functions_w.html b/functions_w.html index 201c004..0df97a7 100644 --- a/functions_w.html +++ b/functions_w.html @@ -94,8 +94,8 @@
    Here is a list of all class members with links to the classes they belong to:

    - w -

    diff --git a/functions_~.html b/functions_~.html index 4537be8..f750d3a 100644 --- a/functions_~.html +++ b/functions_~.html @@ -94,22 +94,33 @@
    Here is a list of all class members with links to the classes they belong to:

    - ~ -

    diff --git a/globals.html b/globals.html index 9fdd1ab..5e74e84 100644 --- a/globals.html +++ b/globals.html @@ -91,93 +91,8 @@
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - a -

      -
    • agglomerate_one_level() : CoMMA.h
    • -
    - - -

    - b -

    - - -

    - c -

    diff --git a/hierarchy.html b/hierarchy.html index 9e39f69..9fda690 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -96,38 +96,38 @@
    This inheritance list is sorted roughly, but not completely, alphabetically:
    [detail level 1234]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     CAgglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >A class responsible to do the interface between the different kinds of agglomerator
     CAgglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Agglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Anisotropic agglomeration
     CAgglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Agglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Isotropic agglomeration
     CAgglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Child class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the agglomeration. We call it biconnected case, but it is the greedy algorithm in reality
     CAgglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Child class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the search of fine cells
     CBimap< A, B >An easy and straight forward implementation of a Bimap
     CCoarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class describing a coarse cell
     CCoarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class describing a coarse cell with a full description, that is, it also holds a subgraph describing how the fine cells are connected inside the coarse one
     CCoarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class implementing a custom container where the coarse cells are stored
     CCustomPairGreaterFunctor< PairT >Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones
     CCustomPairLessFunctor< PairT >Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones
     CGraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >An interface class responsible of storing the cell centered dual graph and of acting on it (it is an interface for the global Dual_Graph and the Subgraph)
     CDual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >A class implementing the CRS global graph representation of the global mesh
     CSubgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >A class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the implementation of the CSR representation of the coarse cells
     CNeighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class representing the neighbourhood of a given cell in the graph. Mind that no information about the element being already agglomerated or not is known here
     CNeighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class representing the neighbourhood of a given cell in the graph. In this derived class the neighbourhood is extended, meaning that all the neighbours seen so far are candidates
     CNeighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class representing the neighbourhood of a given cell in the graph. In this derived class, the neighbourhood is 'pure front-advancing', meaning that the next candidates are only the direct neighbours of the last added cell
     CNeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Pure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy
     CNeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Creator of Neighbourhood_Extended objects. It can create from scratch or by copy
     CNeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Creator of Neighbourhood_Extended objects. It can create from scratch or by copy
     CNode< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Node data structure that represent a node of the tree
     CPairFindFirstBasedFunctor< PairT >Functor implementing an operator telling if a given value if the first one of pair
     CPairSecondBasedLessFunctor< PairT >Functor for pairs implementing a less operator based only on the second element of the pair
     CPriority_Pair< A, B >Wrapper around the STL pair with custom 'less than' operator: as in the standard case, first we compare the first elements, then the second ones; however it relies on the 'greater than' on the first elements, e.g., (4,X) < (3,Y), whereas standard rules apply to second elements, e.g., (4,3) < (4,4)
     CQueue< T >A template class implementing a custom queue data structure
     CSeeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class representing the pool of all the seeds for creating a coarse cell
     CSeeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are on the border
     CSeeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are neighbours of already existing coarse cells
     CSPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Functor performing the initialization of a seeds pool
     CSPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Functor performing the full initialization of a seeds pool
     CSPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Functor performing the one-point initialization of a seeds pool
     CTree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Tree structure that represent a coarse cell, the fine cell and the neighbours to them
     Ccomma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >A class responsible to do the interface between the different kinds of agglomerator
     Ccomma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Agglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Anisotropic agglomeration
     Ccomma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Agglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Isotropic agglomeration
     Ccomma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Child class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the agglomeration. We call it biconnected case, but it is the greedy algorithm in reality
     Ccomma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Child class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the search of fine cells
     Ccomma::Bimap< A, B >An easy and straight forward implementation of a Bimap
     Ccomma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class describing a coarse cell
     Ccomma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class describing a coarse cell with a full description, that is, it also holds a subgraph describing how the fine cells are connected inside the coarse one
     Ccomma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class implementing a custom container where the coarse cells are stored
     Ccomma::CustomPairGreaterFunctor< PairT >Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones
     Ccomma::CustomPairLessFunctor< PairT >Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones
     Ccomma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >An interface class responsible of storing the cell centered dual graph and of acting on it (it is an interface for the global Dual_Graph and the Subgraph)
     Ccomma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >A class implementing the CRS global graph representation of the global mesh
     Ccomma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >A class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the implementation of the CSR representation of the coarse cells
     Ccomma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class representing the neighbourhood of a given cell in the graph. Mind that no information about the element being already agglomerated or not is known here
     Ccomma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class representing the neighbourhood of a given cell in the graph. In this derived class the neighbourhood is extended, meaning that all the neighbours seen so far are candidates
     Ccomma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class representing the neighbourhood of a given cell in the graph. In this derived class, the neighbourhood is 'pure front-advancing', meaning that the next candidates are only the direct neighbours of the last added cell
     Ccomma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Pure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy
     Ccomma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Creator of Neighbourhood_Extended objects. It can create from scratch or by copy
     Ccomma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Creator of Neighbourhood_Extended objects. It can create from scratch or by copy
     Ccomma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Node data structure that represent a node of the tree
     Ccomma::PairFindFirstBasedFunctor< PairT >Functor implementing an operator telling if a given value if the first one of pair
     Ccomma::PairSecondBasedLessFunctor< PairT >Functor for pairs implementing a less operator based only on the second element of the pair
     Ccomma::Priority_Pair< A, B >Wrapper around the STL pair with custom 'less than' operator: as in the standard case, first we compare the first elements, then the second ones; however it relies on the 'greater than' on the first elements, e.g., (4,X) < (3,Y), whereas standard rules apply to second elements, e.g., (4,3) < (4,4)
     Ccomma::Queue< T >A template class implementing a custom queue data structure
     Ccomma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class representing the pool of all the seeds for creating a coarse cell
     Ccomma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are on the border
     Ccomma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Class representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are neighbours of already existing coarse cells
     Ccomma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Functor performing the initialization of a seeds pool
     Ccomma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Functor performing the full initialization of a seeds pool
     Ccomma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Functor performing the one-point initialization of a seeds pool
     Ccomma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >Tree structure that represent a coarse cell, the fine cell and the neighbours to them
    diff --git a/hierarchy.js b/hierarchy.js index 3d2704c..721e3f0 100644 --- a/hierarchy.js +++ b/hierarchy.js @@ -1,44 +1,44 @@ var hierarchy = [ - [ "Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_agglomerator.html", [ - [ "Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_agglomerator___anisotropic.html", null ], - [ "Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_agglomerator___isotropic.html", [ - [ "Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_agglomerator___biconnected.html", [ - [ "Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_agglomerator___iterative.html", null ] + [ "comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_agglomerator.html", [ + [ "comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_agglomerator___anisotropic.html", null ], + [ "comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_agglomerator___isotropic.html", [ + [ "comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_agglomerator___biconnected.html", [ + [ "comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_agglomerator___iterative.html", null ] ] ] ] ] ] ], - [ "Bimap< A, B >", "class_bimap.html", null ], - [ "Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_coarse___cell.html", [ - [ "Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_coarse___cell___subgraph.html", null ] + [ "comma::Bimap< A, B >", "classcomma_1_1_bimap.html", null ], + [ "comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_coarse___cell.html", [ + [ "comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_coarse___cell___subgraph.html", null ] ] ], - [ "Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_coarse___cell___container.html", null ], - [ "CustomPairGreaterFunctor< PairT >", "struct_custom_pair_greater_functor.html", null ], - [ "CustomPairLessFunctor< PairT >", "struct_custom_pair_less_functor.html", null ], - [ "Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_graph.html", [ - [ "Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_dual___graph.html", null ], - [ "Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_subgraph.html", null ] + [ "comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_coarse___cell___container.html", null ], + [ "comma::CustomPairGreaterFunctor< PairT >", "structcomma_1_1_custom_pair_greater_functor.html", null ], + [ "comma::CustomPairLessFunctor< PairT >", "structcomma_1_1_custom_pair_less_functor.html", null ], + [ "comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_graph.html", [ + [ "comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_dual___graph.html", null ], + [ "comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_subgraph.html", null ] ] ], - [ "Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_neighbourhood.html", [ - [ "Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_neighbourhood___extended.html", null ], - [ "Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_neighbourhood___pure___front.html", null ] + [ "comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_neighbourhood.html", [ + [ "comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_neighbourhood___extended.html", null ], + [ "comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_neighbourhood___pure___front.html", null ] ] ], - [ "NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_neighbourhood_creator.html", [ - [ "NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_neighbourhood_extended_creator.html", null ], - [ "NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_neighbourhood_pure_front_creator.html", null ] + [ "comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_neighbourhood_creator.html", [ + [ "comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_neighbourhood_extended_creator.html", null ], + [ "comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_neighbourhood_pure_front_creator.html", null ] ] ], - [ "Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_node.html", null ], - [ "PairFindFirstBasedFunctor< PairT >", "class_pair_find_first_based_functor.html", null ], - [ "PairSecondBasedLessFunctor< PairT >", "struct_pair_second_based_less_functor.html", null ], - [ "Priority_Pair< A, B >", "class_priority___pair.html", null ], - [ "Queue< T >", "class_queue.html", null ], - [ "Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_seeds___pool.html", [ - [ "Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_seeds___pool___boundary___priority.html", null ], - [ "Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_seeds___pool___neighbourhood___priority.html", null ] + [ "comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_node.html", null ], + [ "comma::PairFindFirstBasedFunctor< PairT >", "classcomma_1_1_pair_find_first_based_functor.html", null ], + [ "comma::PairSecondBasedLessFunctor< PairT >", "structcomma_1_1_pair_second_based_less_functor.html", null ], + [ "comma::Priority_Pair< A, B >", "classcomma_1_1_priority___pair.html", null ], + [ "comma::Queue< T >", "classcomma_1_1_queue.html", null ], + [ "comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_seeds___pool.html", [ + [ "comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_seeds___pool___boundary___priority.html", null ], + [ "comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_seeds___pool___neighbourhood___priority.html", null ] ] ], - [ "SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "struct_s_p_initializator.html", [ - [ "SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "struct_s_p_full_initializator.html", null ], - [ "SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "struct_s_p_one_point_initializator.html", null ] + [ "comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "structcomma_1_1_s_p_initializator.html", [ + [ "comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "structcomma_1_1_s_p_full_initializator.html", null ], + [ "comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "structcomma_1_1_s_p_one_point_initializator.html", null ] ] ], - [ "Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "class_tree.html", null ] + [ "comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >", "classcomma_1_1_tree.html", null ] ]; \ No newline at end of file diff --git a/index.html b/index.html index a70026f..cd7d60d 100644 --- a/index.html +++ b/index.html @@ -94,21 +94,21 @@
    Welcome to CoMMA
    -

    CoMMA (COarse Mesh Multigrid Agglomerator) is a suite of graph algorithms meant to operate on the graph representation of an unstructured computational mesh.

    +

    CoMMA (COarse Mesh Multigrid Agglomerator) is a suite of graph algorithms meant to operate on the graph representation of an unstructured computational mesh.

    The final objective is to give a map between the fine cells and coarse cells in the object representing the coarse cell graph.

    The main features of CoMMA are:

      -
    • Sequential by zone (i.e. no coupling with graph partitioner);
    • +
    • Sequential by zone (i.e., no coupling with graph partitioner);
    • Fine faces conservation for coarse levels;
    • -
    • Optimization of the shape of the coarse cells w.r.t their aspect ratio;
    • +
    • Optimization of the shape of the coarse cells w.r.t. their aspect ratio;
    • Connectivity of coarse cells;
    • Detection and treatment of anisotropic regions;
    • Isotropic agglomeration with structured-like treatment of structured-like regions.

    CoMMA is a header-only library. A python module can be generated using pybind11.

    -

    The interface to CoMMA is very simple and consists in only one function agglomerate_one_level.

    +

    The interface to CoMMA is very simple and consists in only one function agglomerate_one_level.

    Other info

    -

    Copyright: Copyright © 2023 ONERA

    +

    Copyright: Copyright © 2024 ONERA

    Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani

    Contributors: Karim Anemiche

    Licence: This project is released under the Mozilla Public License 2.0

    diff --git a/md__co_m_m_a_lib_deprecated__r_e_a_d_m_e.html b/md__co_m_m_a_lib_deprecated__r_e_a_d_m_e.html deleted file mode 100644 index cda77d6..0000000 --- a/md__co_m_m_a_lib_deprecated__r_e_a_d_m_e.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -CoMMA: Deprecated files - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    CoMMA 1.3.1 -
    -
    A geometric agglomerator for unstructured meshes
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Deprecated files
    -
    -
    -

    Here are stored several classes and functions that were once used in CoMMA but, for various reasons, are now deprecated.

    -
    -
    -
    - - - - diff --git a/globals_type.html b/md_include__co_m_m_a_deprecated__r_e_a_d_m_e.html similarity index 82% rename from globals_type.html rename to md_include__co_m_m_a_deprecated__r_e_a_d_m_e.html index c67122b..e9a3a09 100644 --- a/globals_type.html +++ b/md_include__co_m_m_a_deprecated__r_e_a_d_m_e.html @@ -5,7 +5,7 @@ -CoMMA: File Members +CoMMA: Deprecated files @@ -65,7 +65,7 @@
    @@ -90,14 +90,19 @@
    +
    +
    Deprecated files
    +
      -
    • CoMMAIndexT : CoMMATypes.h
    • -
    • CoMMAIntT : CoMMATypes.h
    • -
    • CoMMASignedIndexT : CoMMA.cpp
    • -
    • CoMMAWeightT : CoMMATypes.h
    • +

      Here are stored several classes and functions that were once used in CoMMA but, for various reasons, are now deprecated.

        +
      • Bimap: custom bimap
      • +
      • Priority_Pair: wrapper around the STL pair with custom 'less than' operator
      • +
      • Queue: custom queue
      • +
      • Node and Tree: custom node and tree data structures
      • +
      • Helpers
      -
      +
    +
    @@ -92,9 +92,9 @@
     
    diff --git a/globals_eval.html b/namespacemembers_eval.html similarity index 66% rename from globals_eval.html rename to namespacemembers_eval.html index 2fd2d33..be9b71a 100644 --- a/globals_eval.html +++ b/namespacemembers_eval.html @@ -5,7 +5,7 @@ -CoMMA: File Members +CoMMA: Namespace Members @@ -65,7 +65,7 @@
    @@ -92,18 +92,18 @@
     
    diff --git a/globals_func.html b/namespacemembers_func.html similarity index 75% rename from globals_func.html rename to namespacemembers_func.html index 83c70bf..bd7c4ef 100644 --- a/globals_func.html +++ b/namespacemembers_func.html @@ -5,7 +5,7 @@ -CoMMA: File Members +CoMMA: Namespace Members @@ -65,7 +65,7 @@
    @@ -92,16 +92,15 @@
     
      -
    • agglomerate_one_level() : CoMMA.h
    • -
    • compute_neighbourhood_based_wall_distance() : Util.h
    • -
    • d_keys_to_set() : Util.h
    • -
    • dot_deviate() : Util.h
    • -
    • dot_product() : Util.h
    • -
    • fill_value() : templateHelpers.h
    • -
    • get_direction() : Util.h
    • -
    • PYBIND11_MODULE() : CoMMA.cpp
    • -
    • squared_euclidean_distance() : Util.h
    • -
    • vector_of_first_elements() : Util.h
    • +
    • agglomerate_one_level() : comma
    • +
    • compute_neighbourhood_based_wall_distance() : comma
    • +
    • d_keys_to_set() : comma
    • +
    • dot_deviate() : comma
    • +
    • dot_product() : comma
    • +
    • fill_value() : comma
    • +
    • get_direction() : comma
    • +
    • squared_euclidean_distance() : comma
    • +
    • vector_of_first_elements() : comma
    diff --git a/globals_vars.html b/namespacemembers_vars.html similarity index 90% rename from globals_vars.html rename to namespacemembers_vars.html index 77a1d9a..384562c 100644 --- a/globals_vars.html +++ b/namespacemembers_vars.html @@ -5,7 +5,7 @@ -CoMMA: File Members +CoMMA: Namespace Members @@ -65,7 +65,7 @@
    @@ -92,8 +92,8 @@
     
    diff --git a/namespaces.html b/namespaces.html new file mode 100644 index 0000000..ff4e31c --- /dev/null +++ b/namespaces.html @@ -0,0 +1,143 @@ + + + + + + + +CoMMA: Namespace List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Namespace List
    +
    +
    +
    Here is a list of all namespaces with brief descriptions:
    +
    [detail level 12]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     Ncomma
     CAgglomeratorA class responsible to do the interface between the different kinds of agglomerator
     CAgglomerator_AnisotropicAgglomerator_Anisotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Anisotropic agglomeration
     CAgglomerator_BiconnectedChild class of Agglomerator_Isotropic where is implemented a specific biconnected algorithm for the agglomeration. We call it biconnected case, but it is the greedy algorithm in reality
     CAgglomerator_IsotropicAgglomerator_Isotropic class is a child class of the Agglomerator class that specializes the implementation to the case of Isotropic agglomeration
     CAgglomerator_IterativeChild class of Agglomerator_Isotropic which implements a specialized iterative algorithm for the search of fine cells
     CBimapAn easy and straight forward implementation of a Bimap
     CCoarse_CellClass describing a coarse cell
     CCoarse_Cell_ContainerClass implementing a custom container where the coarse cells are stored
     CCoarse_Cell_SubgraphClass describing a coarse cell with a full description, that is, it also holds a subgraph describing how the fine cells are connected inside the coarse one
     CCustomPairGreaterFunctorFunctor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones
     CCustomPairLessFunctorFunctor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones
     CDual_GraphA class implementing the CRS global graph representation of the global mesh
     CGraphAn interface class responsible of storing the cell centered dual graph and of acting on it (it is an interface for the global Dual_Graph and the Subgraph)
     CNeighbourhoodClass representing the neighbourhood of a given cell in the graph. Mind that no information about the element being already agglomerated or not is known here
     CNeighbourhood_ExtendedClass representing the neighbourhood of a given cell in the graph. In this derived class the neighbourhood is extended, meaning that all the neighbours seen so far are candidates
     CNeighbourhood_Pure_FrontClass representing the neighbourhood of a given cell in the graph. In this derived class, the neighbourhood is 'pure front-advancing', meaning that the next candidates are only the direct neighbours of the last added cell
     CNeighbourhoodCreatorPure abstract class for a creator of Neighbourhood objects. It can create from scratch or by copy
     CNeighbourhoodExtendedCreatorCreator of Neighbourhood_Extended objects. It can create from scratch or by copy
     CNeighbourhoodPureFrontCreatorCreator of Neighbourhood_Extended objects. It can create from scratch or by copy
     CNodeNode data structure that represent a node of the tree
     CPairFindFirstBasedFunctorFunctor implementing an operator telling if a given value if the first one of pair
     CPairSecondBasedLessFunctorFunctor for pairs implementing a less operator based only on the second element of the pair
     CPriority_PairWrapper around the STL pair with custom 'less than' operator: as in the standard case, first we compare the first elements, then the second ones; however it relies on the 'greater than' on the first elements, e.g., (4,X) < (3,Y), whereas standard rules apply to second elements, e.g., (4,3) < (4,4)
     CQueueA template class implementing a custom queue data structure
     CSeeds_PoolClass representing the pool of all the seeds for creating a coarse cell
     CSeeds_Pool_Boundary_PriorityClass representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are on the border
     CSeeds_Pool_Neighbourhood_PriorityClass representing the pool of all the seeds for creating a coarse cell. This derived class gives higher priority to cells that are neighbours of already existing coarse cells
     CSPFullInitializatorFunctor performing the full initialization of a seeds pool
     CSPInitializatorFunctor performing the initialization of a seeds pool
     CSPOnePointInitializatorFunctor performing the one-point initialization of a seeds pool
     CSubgraphA class implementing the CRS subgraph representation. It is used in the framework of CoMMA for the implementation of the CSR representation of the coarse cells
     CTreeTree structure that represent a coarse cell, the fine cell and the neighbours to them
    +
    +
    +
    + + + + diff --git a/namespaces_dup.js b/namespaces_dup.js new file mode 100644 index 0000000..afd866e --- /dev/null +++ b/namespaces_dup.js @@ -0,0 +1,4 @@ +var namespaces_dup = +[ + [ "comma", "namespacecomma.html", "namespacecomma" ] +]; \ No newline at end of file diff --git a/navtreedata.js b/navtreedata.js index b43deef..14a4415 100644 --- a/navtreedata.js +++ b/navtreedata.js @@ -26,8 +26,18 @@ var NAVTREE = [ [ "CoMMA", "index.html", [ [ "Welcome to CoMMA", "index.html", null ], - [ "Deprecated files", "md__co_m_m_a_lib_deprecated__r_e_a_d_m_e.html", null ], + [ "Deprecated files", "md_include__co_m_m_a_deprecated__r_e_a_d_m_e.html", null ], [ "Todo List", "todo.html", null ], + [ "Namespaces", "namespaces.html", [ + [ "Namespace List", "namespaces.html", "namespaces_dup" ], + [ "Namespace Members", "namespacemembers.html", [ + [ "All", "namespacemembers.html", null ], + [ "Functions", "namespacemembers_func.html", null ], + [ "Variables", "namespacemembers_vars.html", null ], + [ "Enumerations", "namespacemembers_enum.html", null ], + [ "Enumerator", "namespacemembers_eval.html", null ] + ] ] + ] ], [ "Classes", "annotated.html", [ [ "Class List", "annotated.html", "annotated_dup" ], [ "Class Index", "classes.html", null ], @@ -44,11 +54,6 @@ var NAVTREE = [ "File List", "files.html", "files_dup" ], [ "File Members", "globals.html", [ [ "All", "globals.html", null ], - [ "Functions", "globals_func.html", null ], - [ "Variables", "globals_vars.html", null ], - [ "Typedefs", "globals_type.html", null ], - [ "Enumerations", "globals_enum.html", null ], - [ "Enumerator", "globals_eval.html", null ], [ "Macros", "globals_defs.html", null ] ] ] ] ] @@ -58,7 +63,9 @@ var NAVTREE = var NAVTREEINDEX = [ "_agglomerator_8h.html", -"class_neighbourhood___pure___front.html#adbe2555ab33ea43e96f1db86ef9ebc5a" +"classcomma_1_1_coarse___cell___container.html#a909799f8910487259a0ebee59186b286", +"classcomma_1_1_node.html#aa27241e12cb061d59c589bd3364bea47", +"structcomma_1_1_custom_pair_greater_functor.html#a3baa52044f47d100d5320843cd48aa9f" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/navtreeindex0.js b/navtreeindex0.js index a8bb33a..53f81a3 100644 --- a/navtreeindex0.js +++ b/navtreeindex0.js @@ -1,253 +1,253 @@ var NAVTREEINDEX0 = { -"_agglomerator_8h.html":[4,0,0,1], -"_agglomerator_8h_source.html":[4,0,0,1], -"_bimap_8h.html":[4,0,0,0,0], -"_bimap_8h_source.html":[4,0,0,0,0], -"_co_m_m_a_8cpp.html":[4,0,0,4], -"_co_m_m_a_8cpp.html#a5cbd374c282b9c6431c52d2eae621735":[4,0,0,4,1], -"_co_m_m_a_8cpp.html#a9fa394743ff7c80b26b62c15be20b7aa":[4,0,0,4,0], -"_co_m_m_a_8h.html":[4,0,0,5], -"_co_m_m_a_8h.html#a06c8f4babe70bb7080dba80cf0473b21":[4,0,0,5,1], -"_co_m_m_a_8h.html#a906c231be20a1f53a240618bae81d95f":[4,0,0,5,0], -"_co_m_m_a_8h_source.html":[4,0,0,5], -"_co_m_m_a_types_8h.html":[4,0,0,6], -"_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4":[4,0,0,6,5], -"_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4a22d6940628c398311941290879caa0dc":[4,0,0,6,5,3], -"_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4a2bee0e8eaf4cde9b0c1703eea16f1096":[4,0,0,6,5,1], -"_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4ad5458f42463e6dbf4422680ac6c473ec":[4,0,0,6,5,0], -"_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4aedb5dcddd0aa551778485e2bfd5ac87f":[4,0,0,6,5,2], -"_co_m_m_a_types_8h.html#a2bdf0415b5394aa0a042816dcc3eb0b7":[4,0,0,6,1], -"_co_m_m_a_types_8h.html#a317369a7239fe01b94e2a7450c448531":[4,0,0,6,4], -"_co_m_m_a_types_8h.html#a317369a7239fe01b94e2a7450c448531a6bc295e29b5149df1ca1d0bc868d3735":[4,0,0,6,4,0], -"_co_m_m_a_types_8h.html#a317369a7239fe01b94e2a7450c448531a721785b33572067589eda175b3b2c525":[4,0,0,6,4,1], -"_co_m_m_a_types_8h.html#a4e6760b3d864fac2baff57fd3e865326":[4,0,0,6,0], -"_co_m_m_a_types_8h.html#a7d17e2ec30fc9b0796135ca2bfced205":[4,0,0,6,2], -"_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9":[4,0,0,6,3], -"_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9a427eb63b284bf229741f0a93da2222e7":[4,0,0,6,3,1], -"_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9a44d0e0475ad371f8556a44361e179516":[4,0,0,6,3,2], -"_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9a91c566614c1c87c437ab3d686408e9ea":[4,0,0,6,3,3], -"_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9aa5fec78385643202af1d49268705b4c2":[4,0,0,6,3,0], -"_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9ab2eff5e2e952ed10adb515644a05c3c4":[4,0,0,6,3,5], -"_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9ae98b90fef66d60ced715daeeed560730":[4,0,0,6,3,4], -"_co_m_m_a_types_8h_source.html":[4,0,0,6], -"_coarse___cell_8h.html":[4,0,0,2], -"_coarse___cell_8h_source.html":[4,0,0,2], -"_coarse___cell___container_8h.html":[4,0,0,3], -"_coarse___cell___container_8h_source.html":[4,0,0,3], -"_dual___graph_8h.html":[4,0,0,7], -"_dual___graph_8h_source.html":[4,0,0,7], -"_neighbourhood_8h.html":[4,0,0,8], -"_neighbourhood_8h_source.html":[4,0,0,8], -"_priority___pair_8h.html":[4,0,0,0,1], -"_priority___pair_8h_source.html":[4,0,0,0,1], -"_queue_8h.html":[4,0,0,0,2], -"_queue_8h_source.html":[4,0,0,0,2], -"_seeds___pool_8h.html":[4,0,0,9], -"_seeds___pool_8h_source.html":[4,0,0,9], -"_tree_8h.html":[4,0,0,0,4], -"_tree_8h_source.html":[4,0,0,0,4], -"_util_8h.html":[4,0,0,10], -"_util_8h.html#a0f9e797856aaddc8607e26502cea3658":[4,0,0,10,6], -"_util_8h.html#a391837a2e1b572f5f7926b9aaae04d44":[4,0,0,10,5], -"_util_8h.html#a40c9ba8185d11790d9d1a4e466d98a35":[4,0,0,10,9], -"_util_8h.html#a4cbf9d2aae5e1f86e108538e5baa10f8":[4,0,0,10,10], -"_util_8h.html#a4eb847819a7f5df06f9de67ff7dff82a":[4,0,0,10,11], -"_util_8h.html#a8084ea35afd15dd36dacfc54e6f8ff90":[4,0,0,10,4], -"_util_8h.html#a92bafb9d36c34646ee1bf8ec1c67f3c9":[4,0,0,10,12], -"_util_8h.html#a92f46b4dab5ae23f1a86a2c55c2a6beb":[4,0,0,10,8], -"_util_8h.html#aeec73ae34bff3c397b99dcf03d14a4a5":[4,0,0,10,7], -"_util_8h_source.html":[4,0,0,10], -"annotated.html":[3,0], -"class_agglomerator.html":[3,0,0], -"class_agglomerator.html#a0ac5f57bf96ca2504a7db6e6f9ed6fbf":[3,0,0,11], -"class_agglomerator.html#a383f9f3c19557031a4cfdbf5f9997557":[3,0,0,12], -"class_agglomerator.html#a38e7e1e9096ee706bcdd8571d85391f3":[3,0,0,7], -"class_agglomerator.html#a4e39d5b4ef1fc4e0f6831b37e2f4f3d6":[3,0,0,10], -"class_agglomerator.html#a58a3b2a3576b7f6819e4226228bfe77f":[3,0,0,14], -"class_agglomerator.html#a68d800a84b0b3d7bbe1d91e1226dd327":[3,0,0,3], -"class_agglomerator.html#a7b47f55bf7c7edcab6589e4ff93f28d6":[3,0,0,4], -"class_agglomerator.html#a7d4c2d619c8e433387d181b3628155cc":[3,0,0,1], -"class_agglomerator.html#a7f04bd9151b63c4945af474d0173df26":[3,0,0,0], -"class_agglomerator.html#a80151a5a6c0e81861a6fe4b2f9fd5517":[3,0,0,6], -"class_agglomerator.html#a9ec8984ec317c1a6588f2aa004e83c30":[3,0,0,2], -"class_agglomerator.html#aad06993145e0a315a30438c1213358ef":[3,0,0,9], -"class_agglomerator.html#ac0c848d78d09919644771d45b56acac1":[3,0,0,13], -"class_agglomerator.html#ad2d5d7d04112d5cf3b7e597cb9c3eca4":[3,0,0,5], -"class_agglomerator.html#af86ca3a8b211b4b3aa0297598bbd6e2c":[3,0,0,8], -"class_agglomerator___anisotropic.html":[3,0,1], -"class_agglomerator___anisotropic.html#a11c37eea028c942be60e5c6a224449a0":[3,0,1,2], -"class_agglomerator___anisotropic.html#a16ce420726335c28ca83cab73fa3f995":[3,0,1,7], -"class_agglomerator___anisotropic.html#a1f9699116b07859f52101dabe450b475":[3,0,1,0], -"class_agglomerator___anisotropic.html#a25a66ffe537285ba800a6ea7ab4b8238":[3,0,1,9], -"class_agglomerator___anisotropic.html#a59eae018fc07aada999110ca24597795":[3,0,1,12], -"class_agglomerator___anisotropic.html#a650ab1acbe83f765d0314efb8f319cd0":[3,0,1,14], -"class_agglomerator___anisotropic.html#a6aa2ebc6c7b6e70ca305219ad6836aa1":[3,0,1,11], -"class_agglomerator___anisotropic.html#aa5fe90f46019de67520ebe04eaa08e07":[3,0,1,13], -"class_agglomerator___anisotropic.html#ab0c44e5709cbe57ecab367f622e05eac":[3,0,1,10], -"class_agglomerator___anisotropic.html#ac0219221b9c9ee4b730c32246df96246":[3,0,1,5], -"class_agglomerator___anisotropic.html#ac765abc6d952dbe3b81e1bee877fcb69":[3,0,1,4], -"class_agglomerator___anisotropic.html#acdf28be45307f3ee1a30e120dd91ac24":[3,0,1,6], -"class_agglomerator___anisotropic.html#af042ee016e1176de1edd69227b4c73cd":[3,0,1,8], -"class_agglomerator___anisotropic.html#af5c47e43c784e7daef89c1f202dff74e":[3,0,1,3], -"class_agglomerator___anisotropic.html#af5d54b1e2a586ecb589251f64db47681":[3,0,1,1], -"class_agglomerator___biconnected.html":[3,0,2], -"class_agglomerator___biconnected.html#a48c585ecde2224027023eb2303062c95":[3,0,2,2], -"class_agglomerator___biconnected.html#a66a006a8b8b2f02b3bbfef050c1190d6":[3,0,2,0], -"class_agglomerator___biconnected.html#a7816d78ede33b94ecf33fc9e5919e1a7":[3,0,2,3], -"class_agglomerator___biconnected.html#ad2c325577dcfe05b9b4d4b27dd37de40":[3,0,2,1], -"class_agglomerator___isotropic.html":[3,0,3], -"class_agglomerator___isotropic.html#a03588cd463325589cb44471e3d980824":[3,0,3,2], -"class_agglomerator___isotropic.html#a2a74055172b861f3de243a55d5cd4622":[3,0,3,6], -"class_agglomerator___isotropic.html#a5235e06b6e1d681b5970a43c6eb90123":[3,0,3,8], -"class_agglomerator___isotropic.html#a72d96dedea94efc932d50ae95e9aa01d":[3,0,3,3], -"class_agglomerator___isotropic.html#a7c47e1d03561b56428dbee75803612f1":[3,0,3,5], -"class_agglomerator___isotropic.html#a7cc56d96d75a20a5f87c73f9459bbeef":[3,0,3,9], -"class_agglomerator___isotropic.html#aa232687cd2b7b8bc93953d1dff5d4f84":[3,0,3,4], -"class_agglomerator___isotropic.html#aa245ac4c02bde4ca77f58385fbf98958":[3,0,3,0], -"class_agglomerator___isotropic.html#abd429139ef36679e33a85e56d2b26d99":[3,0,3,11], -"class_agglomerator___isotropic.html#ac5499e103590911ed10b4f87eebc29a9":[3,0,3,1], -"class_agglomerator___isotropic.html#acd6b14cda474839dfe2430b253966b5b":[3,0,3,7], -"class_agglomerator___isotropic.html#aedc834cf0d9bb4af59452033b837120c":[3,0,3,10], -"class_agglomerator___iterative.html":[3,0,4], -"class_agglomerator___iterative.html#a080de7d893873a51618f9ce39a522467":[3,0,4,1], -"class_agglomerator___iterative.html#a5b2972f94b006e90d8e5878e272378d2":[3,0,4,0], -"class_agglomerator___iterative.html#acb0661b873442a19ad0b2ea678345642":[3,0,4,2], -"class_bimap.html":[3,0,5], -"class_bimap.html#a433a7a0d989b19d687458f760bffa665":[3,0,5,12], -"class_bimap.html#a4c78f72df8b5689251721a94a138c13d":[3,0,5,7], -"class_bimap.html#a6be43beacb00b26c8e24958950a66b82":[3,0,5,11], -"class_bimap.html#a8f0d12e64f86e857b3ec6f709301c186":[3,0,5,9], -"class_bimap.html#aa4f8c3c9dd622bccffe066167db3f021":[3,0,5,8], -"class_bimap.html#ac15ec85665c5628b1c5ac0dfdfc27274":[3,0,5,1], -"class_bimap.html#acc0c46d71708ab4a071dc045ea48c76f":[3,0,5,5], -"class_bimap.html#ace92920f113af9bf07f930e21689d9c4":[3,0,5,6], -"class_bimap.html#adab123f3fcc176fabad0712d1479bfb1":[3,0,5,0], -"class_bimap.html#adcf24cc8cc3f6fbef8783712d00415e2":[3,0,5,10], -"class_bimap.html#aed5fb1baaa71c1137984e96e9117ae5f":[3,0,5,2], -"class_bimap.html#af467a3fe1c6a834f59fb11e73ecaffe7":[3,0,5,4], -"class_bimap.html#aff20ef4205c50149fe441250a5966712":[3,0,5,3], -"class_coarse___cell.html":[3,0,6], -"class_coarse___cell.html#a047166bfed95c800f5818571ad353d64":[3,0,6,7], -"class_coarse___cell.html#a38bbb07dde775ec8b93e59d449f8496d":[3,0,6,10], -"class_coarse___cell.html#a4d90745cd32adfe8298a840af8ed02c8":[3,0,6,6], -"class_coarse___cell.html#a838221044200a9e58592b27c7f61769b":[3,0,6,1], -"class_coarse___cell.html#a8933946e4838039b06b01854ea02bba1":[3,0,6,3], -"class_coarse___cell.html#a8be4bfb51fc40000cf941d264323f6b2":[3,0,6,0], -"class_coarse___cell.html#a90c9c5cde7ccf85d11f5cfc98997368d":[3,0,6,11], -"class_coarse___cell.html#a9141f6b11ffcb23820a6bf94cff94375":[3,0,6,5], -"class_coarse___cell.html#a9d0de841b50f912776594f0569e027ce":[3,0,6,8], -"class_coarse___cell.html#aa72685cf11b7ef850592386bbbbf07cb":[3,0,6,4], -"class_coarse___cell.html#ab4e9114443109a7cdd92baca0d0fad0a":[3,0,6,9], -"class_coarse___cell.html#af75a1031ce60bbf121083ddda51f1941":[3,0,6,2], -"class_coarse___cell___container.html":[3,0,7], -"class_coarse___cell___container.html#a03acb3ee71ea2d53e899943912f7fc12":[3,0,7,5], -"class_coarse___cell___container.html#a09b33c3ceda1cc06bee353e8a23dfc02":[3,0,7,10], -"class_coarse___cell___container.html#a1a4fee09c0e84fcd74804ee3aadb7665":[3,0,7,11], -"class_coarse___cell___container.html#a209dae87bf495d5e9a9a1b51019203df":[3,0,7,9], -"class_coarse___cell___container.html#a319328848c99b14f01a0914710217371":[3,0,7,0], -"class_coarse___cell___container.html#a40c1a7820ff7948cde2ac8cb189be0f5":[3,0,7,21], -"class_coarse___cell___container.html#a420e4d3b4c4b4a11c151a5caf31f26d3":[3,0,7,13], -"class_coarse___cell___container.html#a424991a123832bea6e516b5e05498ab6":[3,0,7,17], -"class_coarse___cell___container.html#a534208d33bc0bdc591223024496a3796":[3,0,7,3], -"class_coarse___cell___container.html#a66f8c6355a3a99ac2f6487e86f17fc5c":[3,0,7,1], -"class_coarse___cell___container.html#a7940da5753d067f786aead5b6bc7f792":[3,0,7,19], -"class_coarse___cell___container.html#a89af69d54fd9564d112fcc0897e8f8c3":[3,0,7,7], -"class_coarse___cell___container.html#a914e4ce6536ddc54463f399e8e85f5b5":[3,0,7,8], -"class_coarse___cell___container.html#a9ae47860d515a99af0e0199f4d844473":[3,0,7,18], -"class_coarse___cell___container.html#a9ff233d4ed5041ea03911c235ea31cb1":[3,0,7,16], -"class_coarse___cell___container.html#aaedb1987672cc4859f2f6fe7e1ec8233":[3,0,7,14], -"class_coarse___cell___container.html#aba3dc19912418f8bd60fc006c6d17e6d":[3,0,7,12], -"class_coarse___cell___container.html#acbf8e09f2a919012a743a323564c3b3a":[3,0,7,4], -"class_coarse___cell___container.html#acd55a3361f7870e4e3a6fecc0b722143":[3,0,7,15], -"class_coarse___cell___container.html#ad6364e5fed3a17cdbe68a52a205c836a":[3,0,7,20], -"class_coarse___cell___container.html#ad8f17759e8670d7c89b2931282f55617":[3,0,7,6], -"class_coarse___cell___container.html#ae1f92ee786149dd1dccf1a63b9e6232e":[3,0,7,2], -"class_coarse___cell___container.html#afc84ade812ac4538c434bd8ad5907a62":[3,0,7,22], -"class_coarse___cell___subgraph.html":[3,0,8], -"class_coarse___cell___subgraph.html#a51ceea95e630f9bb05d09b4517c62444":[3,0,8,8], -"class_coarse___cell___subgraph.html#a66b1e4e891688f3ec18bd1d91b80b968":[3,0,8,7], -"class_coarse___cell___subgraph.html#a6721f05cc78e6cc4cb300522acddcf06":[3,0,8,4], -"class_coarse___cell___subgraph.html#a7a1792cefef0e843930729b039ae6fe0":[3,0,8,9], -"class_coarse___cell___subgraph.html#a8be4bfb51fc40000cf941d264323f6b2":[3,0,8,1], -"class_coarse___cell___subgraph.html#ab1c363143bc71d7b35e942d44eac78ab":[3,0,8,3], -"class_coarse___cell___subgraph.html#ac834adecb0b435e9722eb1e138bdac76":[3,0,8,2], -"class_coarse___cell___subgraph.html#acbd2ec917d2031f3d8c0e8a499c57185":[3,0,8,5], -"class_coarse___cell___subgraph.html#acf2adc2a72a1f59ad4c7cbd630186f18":[3,0,8,0], -"class_coarse___cell___subgraph.html#ad8656ac6fe4f8ab894e250fa160c5809":[3,0,8,6], -"class_coarse___cell___subgraph.html#adb35fdd9503dff948d1b6dc62a27d85d":[3,0,8,10], -"class_dual___graph.html":[3,0,11], -"class_dual___graph.html#a0480781b854e4e7542659dfecadee968":[3,0,11,6], -"class_dual___graph.html#a12ebafe2c27293840b5b57e934a7bd6a":[3,0,11,15], -"class_dual___graph.html#a1ebf7d891501216863dbea7d603eadc2":[3,0,11,9], -"class_dual___graph.html#a26a06a0cdafc77b7e5a16a609384424a":[3,0,11,10], -"class_dual___graph.html#a2e99aaad85e912fedd34f6c9686d3021":[3,0,11,2], -"class_dual___graph.html#a3a4977d15b734d7c28ca851f6871230e":[3,0,11,7], -"class_dual___graph.html#a61237752c04eb7a93d5306c4ccf789af":[3,0,11,14], -"class_dual___graph.html#a66fb85f140bc4c7dd8c7af4b1976f6d9":[3,0,11,0], -"class_dual___graph.html#a758730c4af1e17ac1531389083345ff2":[3,0,11,11], -"class_dual___graph.html#a8283d424689ee579c7ae6ad8c5a49f36":[3,0,11,16], -"class_dual___graph.html#ab33e369fe1af55d0f913f64143d8c6ce":[3,0,11,12], -"class_dual___graph.html#ab70bf7df2dc00ac790e2854f8a2eef6a":[3,0,11,4], -"class_dual___graph.html#abb8937d3bdb846254d3f63f0eb378dee":[3,0,11,3], -"class_dual___graph.html#adb7691275dece84b9bc51514b27d0641":[3,0,11,5], -"class_dual___graph.html#adee0ab6f08caf03b8acade0c9c7515c8":[3,0,11,13], -"class_dual___graph.html#aed45a1fa00a3234c2f122ad7bfca9812":[3,0,11,8], -"class_dual___graph.html#afd3bb2bfafa15c8db3d2adae54137714":[3,0,11,1], -"class_graph.html":[3,0,12], -"class_graph.html#a0245c0b3d009235b3357b584cae21642":[3,0,12,22], -"class_graph.html#a12311cab4fac8b78b4e61df8c0337a98":[3,0,12,17], -"class_graph.html#a33bbbcc09e102d47cf0944989d043d77":[3,0,12,15], -"class_graph.html#a37918efd419ec9a1e9f4f21fbf3472c2":[3,0,12,18], -"class_graph.html#a4088baba0398cdc0e6a4f4083c54f840":[3,0,12,2], -"class_graph.html#a43a49b14a5c4dbde4d6e2f7dd2779b15":[3,0,12,23], -"class_graph.html#a491a1c7a463f291568123421ba1e7ae9":[3,0,12,8], -"class_graph.html#a5596a1d6e1d107c5648c70903e8f6a76":[3,0,12,5], -"class_graph.html#a6e8f302f604d04f448e633628de2c1ec":[3,0,12,20], -"class_graph.html#a7a915976e94c826f8d9305376b9c78d0":[3,0,12,13], -"class_graph.html#a7e08c1758034942c58024c58690e8c30":[3,0,12,21], -"class_graph.html#a902a970714be95d373a5b18de1cddaeb":[3,0,12,16], -"class_graph.html#aa1cafeb913e75f305f2ea42d1c08cdc3":[3,0,12,19], -"class_graph.html#aad80e86de524b83ff2e582073fc6b950":[3,0,12,0], -"class_graph.html#aaed2c17ea94ec186aecac55ed1c3c591":[3,0,12,4], -"class_graph.html#ab70bf7df2dc00ac790e2854f8a2eef6a":[3,0,12,3], -"class_graph.html#ab898e7dc50ae162e9ae6663bd4e04cea":[3,0,12,14], -"class_graph.html#abb8937d3bdb846254d3f63f0eb378dee":[3,0,12,1], -"class_graph.html#ac7db1170e6505b0ea16d40ce255f18bf":[3,0,12,9], -"class_graph.html#ae22f936394d29e34b877581e4014cc65":[3,0,12,6], -"class_graph.html#aeb473d9568add4ad25a3da43f1067f70":[3,0,12,12], -"class_graph.html#af05d0f47a18adcd45211fe6cf795e039":[3,0,12,7], -"class_graph.html#af4d018aff36d0de453999de56b7a27c1":[3,0,12,11], -"class_graph.html#afb191c20fe7d483a018b7a448aabc037":[3,0,12,10], -"class_neighbourhood.html":[3,0,13], -"class_neighbourhood.html#a2732482bc200b9b8eceb1886ef51747d":[3,0,13,3], -"class_neighbourhood.html#a2f86c452a0c4f7642388e37a6a213e77":[3,0,13,10], -"class_neighbourhood.html#a3ddbac48fd3e9644422f8268fe96f0bd":[3,0,13,11], -"class_neighbourhood.html#a788b1672a154ea6e9d91d512ce4d4b70":[3,0,13,2], -"class_neighbourhood.html#a7add6b8c246cec11cd1f2aa8867937e1":[3,0,13,4], -"class_neighbourhood.html#a7f6e92db94e65505a45de7d8a7a6947c":[3,0,13,12], -"class_neighbourhood.html#a977a87103b31f7709bd762499c0e4fa0":[3,0,13,8], -"class_neighbourhood.html#a9e8f7bb0a8be9fdd20c3d0756caa805d":[3,0,13,5], -"class_neighbourhood.html#ab702a531ecdd5f909011e98db309eae9":[3,0,13,0], -"class_neighbourhood.html#ac9d1f9097ecfb39b5c1cea0333e7c9dc":[3,0,13,7], -"class_neighbourhood.html#ae06ab9e75b3e20ee885c4ccb59d4c01e":[3,0,13,1], -"class_neighbourhood.html#ae3588ec9956d43fa93f8ece1f09bd6c7":[3,0,13,6], -"class_neighbourhood.html#ae40fea4817fd6c5603eb7b9bd6740b68":[3,0,13,9], -"class_neighbourhood___extended.html":[3,0,14], -"class_neighbourhood___extended.html#a2732482bc200b9b8eceb1886ef51747d":[3,0,14,2], -"class_neighbourhood___extended.html#a3ae4f2f2052bc05e6f431a35ef06bcbb":[3,0,14,6], -"class_neighbourhood___extended.html#a598c0e2de4bdbe38780e5976c4782ecd":[3,0,14,5], -"class_neighbourhood___extended.html#a5f895ae7b37a44a28e7c4b1d92492946":[3,0,14,3], -"class_neighbourhood___extended.html#a788b1672a154ea6e9d91d512ce4d4b70":[3,0,14,1], -"class_neighbourhood___extended.html#a9d83345feb7a960eb430040f2e0dcfc6":[3,0,14,4], -"class_neighbourhood___extended.html#ae06ab9e75b3e20ee885c4ccb59d4c01e":[3,0,14,0], -"class_neighbourhood___pure___front.html":[3,0,15], -"class_neighbourhood___pure___front.html#a2732482bc200b9b8eceb1886ef51747d":[3,0,15,2], -"class_neighbourhood___pure___front.html#a2e706d0e5f7573df0b7744f4ad318f3f":[3,0,15,6], -"class_neighbourhood___pure___front.html#a378d383cd5c63f3a5a3f2a739ec52e40":[3,0,15,9], -"class_neighbourhood___pure___front.html#a476e4cd4e4dec20336072c55504a1ed5":[3,0,15,8], -"class_neighbourhood___pure___front.html#a487983e2d219c5527a9151056d61b7ed":[3,0,15,7], -"class_neighbourhood___pure___front.html#a788b1672a154ea6e9d91d512ce4d4b70":[3,0,15,1], -"class_neighbourhood___pure___front.html#a99d20edd1d58840dce2ea95153d8f346":[3,0,15,3], -"class_neighbourhood___pure___front.html#ab1fe82f0f4c5ddc07946b0c0fcdc2f65":[3,0,15,4] +"_agglomerator_8h.html":[5,0,0,0,1], +"_agglomerator_8h_source.html":[5,0,0,0,1], +"_bimap_8h.html":[5,0,0,0,0,0], +"_bimap_8h_source.html":[5,0,0,0,0,0], +"_co_m_m_a_8h.html":[5,0,0,0,4], +"_co_m_m_a_8h.html#aa6987db36673ecd638a9b08dfaac18b1":[5,0,0,0,4,0], +"_co_m_m_a_8h.html#ae843c64bc9e371bd460fe8d040c80e2b":[5,0,0,0,4,1], +"_co_m_m_a_8h_source.html":[5,0,0,0,4], +"_co_m_m_a_defs_8h.html":[5,0,0,0,5], +"_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8":[5,0,0,0,5,0], +"_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8a0309283de9cefb87968e32825c3418ec":[5,0,0,0,5,0,5], +"_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8a39ad49623cc576b66fc391bd2bc1c7cf":[5,0,0,0,5,0,3], +"_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8a4f18a70072d52370244908b93cf13e85":[5,0,0,0,5,0,1], +"_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8aaa4cdfbb2d1efc15da1728bbc125e9f1":[5,0,0,0,5,0,2], +"_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8ac5e925f6e54a010df01d51f9b4e6f981":[5,0,0,0,5,0,4], +"_co_m_m_a_defs_8h.html#a6676cd5a4d3dbf9141f8c7bc87617be8ada6f7a085b1f7f2125ce30f5e02db53c":[5,0,0,0,5,0,0], +"_co_m_m_a_defs_8h.html#a705b45ec112a3ac1bf59f760f0f4d022":[5,0,0,0,5,1], +"_co_m_m_a_defs_8h.html#a705b45ec112a3ac1bf59f760f0f4d022a5b91bee96d92adb448b6529d2ea8289d":[5,0,0,0,5,1,0], +"_co_m_m_a_defs_8h.html#a705b45ec112a3ac1bf59f760f0f4d022a681aa75b2dff7410008df1396b15fe35":[5,0,0,0,5,1,1], +"_co_m_m_a_defs_8h.html#a8c8213401033616d834d48d77bf359a4":[5,0,0,0,5,2], +"_co_m_m_a_defs_8h.html#a8c8213401033616d834d48d77bf359a4a29ddaed9cc8cda952d02296b79010787":[5,0,0,0,5,2,2], +"_co_m_m_a_defs_8h.html#a8c8213401033616d834d48d77bf359a4a7340b7195c9071cd34c7d9a633a3d857":[5,0,0,0,5,2,0], +"_co_m_m_a_defs_8h.html#a8c8213401033616d834d48d77bf359a4a8c23e18158e720cbd348f98e50376a5d":[5,0,0,0,5,2,3], +"_co_m_m_a_defs_8h.html#a8c8213401033616d834d48d77bf359a4ae3fbc583bddef8540a06125ed1e7dc79":[5,0,0,0,5,2,1], +"_co_m_m_a_defs_8h_source.html":[5,0,0,0,5], +"_coarse___cell_8h.html":[5,0,0,0,2], +"_coarse___cell_8h_source.html":[5,0,0,0,2], +"_coarse___cell___container_8h.html":[5,0,0,0,3], +"_coarse___cell___container_8h_source.html":[5,0,0,0,3], +"_dual___graph_8h.html":[5,0,0,0,6], +"_dual___graph_8h_source.html":[5,0,0,0,6], +"_neighbourhood_8h.html":[5,0,0,0,7], +"_neighbourhood_8h_source.html":[5,0,0,0,7], +"_priority___pair_8h.html":[5,0,0,0,0,1], +"_priority___pair_8h_source.html":[5,0,0,0,0,1], +"_queue_8h.html":[5,0,0,0,0,2], +"_queue_8h_source.html":[5,0,0,0,0,2], +"_seeds___pool_8h.html":[5,0,0,0,8], +"_seeds___pool_8h_source.html":[5,0,0,0,8], +"_tree_8h.html":[5,0,0,0,0,4], +"_tree_8h_source.html":[5,0,0,0,0,4], +"_util_8h.html":[5,0,0,0,9], +"_util_8h.html#a0e43c30768d45d4f1f643f2f8be53f5d":[5,0,0,0,9,8], +"_util_8h.html#a39eb676bbec9475d7b0b5a6186b5f3d0":[5,0,0,0,9,10], +"_util_8h.html#a3fda6288b7b5c19904abf0312557c774":[5,0,0,0,9,9], +"_util_8h.html#a75164a303f92061683959fa690d67906":[5,0,0,0,9,12], +"_util_8h.html#a8084ea35afd15dd36dacfc54e6f8ff90":[5,0,0,0,9,4], +"_util_8h.html#a81affca718f9c9927cfb82c317c8239e":[5,0,0,0,9,6], +"_util_8h.html#aa6823809d0c8cc7a1e30d51cfb0ce21a":[5,0,0,0,9,7], +"_util_8h.html#ab712cf58df5dacc470f08332abdde7ec":[5,0,0,0,9,11], +"_util_8h.html#ae3653181db03b3ea76722462c3b3e02b":[5,0,0,0,9,5], +"_util_8h_source.html":[5,0,0,0,9], +"annotated.html":[4,0], +"classcomma_1_1_agglomerator.html":[3,0,0,0], +"classcomma_1_1_agglomerator.html":[4,0,0,0], +"classcomma_1_1_agglomerator.html#a26017de7f4165439358cf9ad65c608ba":[4,0,0,0,9], +"classcomma_1_1_agglomerator.html#a26017de7f4165439358cf9ad65c608ba":[3,0,0,0,9], +"classcomma_1_1_agglomerator.html#a38fbd9dc2f6718a7c909bd524cd4a2f4":[4,0,0,0,1], +"classcomma_1_1_agglomerator.html#a38fbd9dc2f6718a7c909bd524cd4a2f4":[3,0,0,0,1], +"classcomma_1_1_agglomerator.html#a476edf422e78d865666af88b5757ed7c":[4,0,0,0,0], +"classcomma_1_1_agglomerator.html#a476edf422e78d865666af88b5757ed7c":[3,0,0,0,0], +"classcomma_1_1_agglomerator.html#a6587a8cd2ccb77bde337efe69f232980":[4,0,0,0,11], +"classcomma_1_1_agglomerator.html#a6587a8cd2ccb77bde337efe69f232980":[3,0,0,0,11], +"classcomma_1_1_agglomerator.html#a8451ab2bd5cb83611182ff63ee6df949":[4,0,0,0,4], +"classcomma_1_1_agglomerator.html#a8451ab2bd5cb83611182ff63ee6df949":[3,0,0,0,4], +"classcomma_1_1_agglomerator.html#a851078a996985840835428c7bef3c942":[4,0,0,0,7], +"classcomma_1_1_agglomerator.html#a851078a996985840835428c7bef3c942":[3,0,0,0,7], +"classcomma_1_1_agglomerator.html#a8d135285ab3126712b031a51cfa871b2":[4,0,0,0,14], +"classcomma_1_1_agglomerator.html#a8d135285ab3126712b031a51cfa871b2":[3,0,0,0,14], +"classcomma_1_1_agglomerator.html#aad1aaacca4a000d6ee819f9d36385f99":[4,0,0,0,12], +"classcomma_1_1_agglomerator.html#aad1aaacca4a000d6ee819f9d36385f99":[3,0,0,0,12], +"classcomma_1_1_agglomerator.html#abfae2aa7f2f81094f283990406492cc3":[4,0,0,0,6], +"classcomma_1_1_agglomerator.html#abfae2aa7f2f81094f283990406492cc3":[3,0,0,0,6], +"classcomma_1_1_agglomerator.html#ac8cfb2dbc276a34680c0f1fee2b3c390":[4,0,0,0,5], +"classcomma_1_1_agglomerator.html#ac8cfb2dbc276a34680c0f1fee2b3c390":[3,0,0,0,5], +"classcomma_1_1_agglomerator.html#ac9361db0f6352efc61cde4882c8e7f42":[3,0,0,0,10], +"classcomma_1_1_agglomerator.html#ac9361db0f6352efc61cde4882c8e7f42":[4,0,0,0,10], +"classcomma_1_1_agglomerator.html#acd76d69424ca63f9e726eccb31f26773":[3,0,0,0,13], +"classcomma_1_1_agglomerator.html#acd76d69424ca63f9e726eccb31f26773":[4,0,0,0,13], +"classcomma_1_1_agglomerator.html#acffaa9cdc55cd1affe6d3e2924f46f81":[4,0,0,0,8], +"classcomma_1_1_agglomerator.html#acffaa9cdc55cd1affe6d3e2924f46f81":[3,0,0,0,8], +"classcomma_1_1_agglomerator.html#ad2b5d75df795ac89897ab01d6be0f4e5":[3,0,0,0,3], +"classcomma_1_1_agglomerator.html#ad2b5d75df795ac89897ab01d6be0f4e5":[4,0,0,0,3], +"classcomma_1_1_agglomerator.html#ad318f38cc60db419207fa1def39e2269":[4,0,0,0,2], +"classcomma_1_1_agglomerator.html#ad318f38cc60db419207fa1def39e2269":[3,0,0,0,2], +"classcomma_1_1_agglomerator___anisotropic.html":[4,0,0,1], +"classcomma_1_1_agglomerator___anisotropic.html":[3,0,0,1], +"classcomma_1_1_agglomerator___anisotropic.html#a06284c8df3ba73d75790c1b703774b11":[4,0,0,1,7], +"classcomma_1_1_agglomerator___anisotropic.html#a06284c8df3ba73d75790c1b703774b11":[3,0,0,1,7], +"classcomma_1_1_agglomerator___anisotropic.html#a117343c20ddb4b72d4c9084a89c3303a":[3,0,0,1,8], +"classcomma_1_1_agglomerator___anisotropic.html#a117343c20ddb4b72d4c9084a89c3303a":[4,0,0,1,8], +"classcomma_1_1_agglomerator___anisotropic.html#a221bef52906b0fe45f9957ef52ac85d0":[4,0,0,1,2], +"classcomma_1_1_agglomerator___anisotropic.html#a221bef52906b0fe45f9957ef52ac85d0":[3,0,0,1,2], +"classcomma_1_1_agglomerator___anisotropic.html#a231b51e38cfd45989b02fb7ea383e6a9":[4,0,0,1,12], +"classcomma_1_1_agglomerator___anisotropic.html#a231b51e38cfd45989b02fb7ea383e6a9":[3,0,0,1,12], +"classcomma_1_1_agglomerator___anisotropic.html#a3ed52576f0b6698a69f388f295a2e1c5":[4,0,0,1,9], +"classcomma_1_1_agglomerator___anisotropic.html#a3ed52576f0b6698a69f388f295a2e1c5":[3,0,0,1,9], +"classcomma_1_1_agglomerator___anisotropic.html#a5c939c5706f8c9c47675e3df657568fb":[3,0,0,1,4], +"classcomma_1_1_agglomerator___anisotropic.html#a5c939c5706f8c9c47675e3df657568fb":[4,0,0,1,4], +"classcomma_1_1_agglomerator___anisotropic.html#a679ba0b3f517db87b18a0707d71a6432":[4,0,0,1,6], +"classcomma_1_1_agglomerator___anisotropic.html#a679ba0b3f517db87b18a0707d71a6432":[3,0,0,1,6], +"classcomma_1_1_agglomerator___anisotropic.html#a6f8e9378cb1709de43dedd5a1c3c6d5d":[3,0,0,1,13], +"classcomma_1_1_agglomerator___anisotropic.html#a6f8e9378cb1709de43dedd5a1c3c6d5d":[4,0,0,1,13], +"classcomma_1_1_agglomerator___anisotropic.html#a9479673f4208b7edd7c0b8884a06c4b7":[3,0,0,1,0], +"classcomma_1_1_agglomerator___anisotropic.html#a9479673f4208b7edd7c0b8884a06c4b7":[4,0,0,1,0], +"classcomma_1_1_agglomerator___anisotropic.html#a9de6a86962a319a3cd058000fade94e0":[3,0,0,1,1], +"classcomma_1_1_agglomerator___anisotropic.html#a9de6a86962a319a3cd058000fade94e0":[4,0,0,1,1], +"classcomma_1_1_agglomerator___anisotropic.html#a9f4297614846f54366d4561a6428fa4d":[4,0,0,1,3], +"classcomma_1_1_agglomerator___anisotropic.html#a9f4297614846f54366d4561a6428fa4d":[3,0,0,1,3], +"classcomma_1_1_agglomerator___anisotropic.html#aa9bfcf6f6403c97bff9c9bba8673a377":[3,0,0,1,5], +"classcomma_1_1_agglomerator___anisotropic.html#aa9bfcf6f6403c97bff9c9bba8673a377":[4,0,0,1,5], +"classcomma_1_1_agglomerator___anisotropic.html#aace7d0d96f2efb496df20b4f221d7872":[4,0,0,1,14], +"classcomma_1_1_agglomerator___anisotropic.html#aace7d0d96f2efb496df20b4f221d7872":[3,0,0,1,14], +"classcomma_1_1_agglomerator___anisotropic.html#ac26aae66c211f11a2cbc0d56f3a0a3a4":[3,0,0,1,10], +"classcomma_1_1_agglomerator___anisotropic.html#ac26aae66c211f11a2cbc0d56f3a0a3a4":[4,0,0,1,10], +"classcomma_1_1_agglomerator___anisotropic.html#af3090efb008f7fd601afcad457be5294":[4,0,0,1,11], +"classcomma_1_1_agglomerator___anisotropic.html#af3090efb008f7fd601afcad457be5294":[3,0,0,1,11], +"classcomma_1_1_agglomerator___biconnected.html":[4,0,0,2], +"classcomma_1_1_agglomerator___biconnected.html":[3,0,0,2], +"classcomma_1_1_agglomerator___biconnected.html#a1e429e7e1e8cca0447b7322a4636ca1b":[4,0,0,2,1], +"classcomma_1_1_agglomerator___biconnected.html#a1e429e7e1e8cca0447b7322a4636ca1b":[3,0,0,2,1], +"classcomma_1_1_agglomerator___biconnected.html#a3bb82fadd4a4ddd13581102df1491d08":[4,0,0,2,2], +"classcomma_1_1_agglomerator___biconnected.html#a3bb82fadd4a4ddd13581102df1491d08":[3,0,0,2,2], +"classcomma_1_1_agglomerator___biconnected.html#a4553e29aeae7a83000d10e48564e6cca":[3,0,0,2,0], +"classcomma_1_1_agglomerator___biconnected.html#a4553e29aeae7a83000d10e48564e6cca":[4,0,0,2,0], +"classcomma_1_1_agglomerator___biconnected.html#aae1d6469c6921e306a3fa054d076bf0f":[3,0,0,2,3], +"classcomma_1_1_agglomerator___biconnected.html#aae1d6469c6921e306a3fa054d076bf0f":[4,0,0,2,3], +"classcomma_1_1_agglomerator___isotropic.html":[3,0,0,3], +"classcomma_1_1_agglomerator___isotropic.html":[4,0,0,3], +"classcomma_1_1_agglomerator___isotropic.html#a471fd42799365932adaf4a0123834700":[4,0,0,3,6], +"classcomma_1_1_agglomerator___isotropic.html#a471fd42799365932adaf4a0123834700":[3,0,0,3,6], +"classcomma_1_1_agglomerator___isotropic.html#a4b6bec13ab0d5a563d0c7f2095186141":[3,0,0,3,8], +"classcomma_1_1_agglomerator___isotropic.html#a4b6bec13ab0d5a563d0c7f2095186141":[4,0,0,3,8], +"classcomma_1_1_agglomerator___isotropic.html#a5c6f7d604d05f97dcf8c61ace4e49aef":[4,0,0,3,11], +"classcomma_1_1_agglomerator___isotropic.html#a5c6f7d604d05f97dcf8c61ace4e49aef":[3,0,0,3,11], +"classcomma_1_1_agglomerator___isotropic.html#a5d71e7a65e072879cdf53c3ebd29b655":[4,0,0,3,10], +"classcomma_1_1_agglomerator___isotropic.html#a5d71e7a65e072879cdf53c3ebd29b655":[3,0,0,3,10], +"classcomma_1_1_agglomerator___isotropic.html#a674697dbdd54e42b6f8a37e60e5874b1":[3,0,0,3,9], +"classcomma_1_1_agglomerator___isotropic.html#a674697dbdd54e42b6f8a37e60e5874b1":[4,0,0,3,9], +"classcomma_1_1_agglomerator___isotropic.html#a73cb23502dc4cf7ae54bccfaa2f42e4a":[3,0,0,3,1], +"classcomma_1_1_agglomerator___isotropic.html#a73cb23502dc4cf7ae54bccfaa2f42e4a":[4,0,0,3,1], +"classcomma_1_1_agglomerator___isotropic.html#a7690b334b4f4d143d5edef7e015226c5":[3,0,0,3,5], +"classcomma_1_1_agglomerator___isotropic.html#a7690b334b4f4d143d5edef7e015226c5":[4,0,0,3,5], +"classcomma_1_1_agglomerator___isotropic.html#a88a36f50abb4794a7bfe1ce8caef5736":[4,0,0,3,0], +"classcomma_1_1_agglomerator___isotropic.html#a88a36f50abb4794a7bfe1ce8caef5736":[3,0,0,3,0], +"classcomma_1_1_agglomerator___isotropic.html#a8d0b6d4158f367ac301e93bbe29d0970":[3,0,0,3,3], +"classcomma_1_1_agglomerator___isotropic.html#a8d0b6d4158f367ac301e93bbe29d0970":[4,0,0,3,3], +"classcomma_1_1_agglomerator___isotropic.html#a8eeb2f4079e010af97f6018ea48d70da":[4,0,0,3,7], +"classcomma_1_1_agglomerator___isotropic.html#a8eeb2f4079e010af97f6018ea48d70da":[3,0,0,3,7], +"classcomma_1_1_agglomerator___isotropic.html#aa254625482275446b207051f544fd92f":[3,0,0,3,4], +"classcomma_1_1_agglomerator___isotropic.html#aa254625482275446b207051f544fd92f":[4,0,0,3,4], +"classcomma_1_1_agglomerator___isotropic.html#ae94e68908b4b05b376d7429d6e6c85b7":[4,0,0,3,2], +"classcomma_1_1_agglomerator___isotropic.html#ae94e68908b4b05b376d7429d6e6c85b7":[3,0,0,3,2], +"classcomma_1_1_agglomerator___iterative.html":[3,0,0,4], +"classcomma_1_1_agglomerator___iterative.html":[4,0,0,4], +"classcomma_1_1_agglomerator___iterative.html#a5e67fbff68bf868258ebdf1637a83ab6":[3,0,0,4,1], +"classcomma_1_1_agglomerator___iterative.html#a5e67fbff68bf868258ebdf1637a83ab6":[4,0,0,4,1], +"classcomma_1_1_agglomerator___iterative.html#ab6fe2d081288e81892bb0c251fcb2f47":[3,0,0,4,0], +"classcomma_1_1_agglomerator___iterative.html#ab6fe2d081288e81892bb0c251fcb2f47":[4,0,0,4,0], +"classcomma_1_1_agglomerator___iterative.html#adb49da3aaabcb93c3ece598600cb21b9":[3,0,0,4,2], +"classcomma_1_1_agglomerator___iterative.html#adb49da3aaabcb93c3ece598600cb21b9":[4,0,0,4,2], +"classcomma_1_1_bimap.html":[3,0,0,5], +"classcomma_1_1_bimap.html":[4,0,0,5], +"classcomma_1_1_bimap.html#a1651c9075b5bd0895e3d3deda3dca566":[4,0,0,5,9], +"classcomma_1_1_bimap.html#a1651c9075b5bd0895e3d3deda3dca566":[3,0,0,5,9], +"classcomma_1_1_bimap.html#a49bae8e54fe5ccd52d61d20c5aa543c0":[4,0,0,5,5], +"classcomma_1_1_bimap.html#a49bae8e54fe5ccd52d61d20c5aa543c0":[3,0,0,5,5], +"classcomma_1_1_bimap.html#a4a12f2d28cbd33146b138ebae62aaf35":[3,0,0,5,1], +"classcomma_1_1_bimap.html#a4a12f2d28cbd33146b138ebae62aaf35":[4,0,0,5,1], +"classcomma_1_1_bimap.html#a668d1a44f819088e9a97555428949af0":[3,0,0,5,0], +"classcomma_1_1_bimap.html#a668d1a44f819088e9a97555428949af0":[4,0,0,5,0], +"classcomma_1_1_bimap.html#a67acd42aeed25123ae23c2373dbf065b":[4,0,0,5,6], +"classcomma_1_1_bimap.html#a67acd42aeed25123ae23c2373dbf065b":[3,0,0,5,6], +"classcomma_1_1_bimap.html#a88364e304b1a847ff219e815af01be73":[4,0,0,5,2], +"classcomma_1_1_bimap.html#a88364e304b1a847ff219e815af01be73":[3,0,0,5,2], +"classcomma_1_1_bimap.html#a8b79b0b9ba226a25bb66a326a57d1dc6":[4,0,0,5,3], +"classcomma_1_1_bimap.html#a8b79b0b9ba226a25bb66a326a57d1dc6":[3,0,0,5,3], +"classcomma_1_1_bimap.html#aa15dba38c92794eedf5978c84a9b19e5":[3,0,0,5,12], +"classcomma_1_1_bimap.html#aa15dba38c92794eedf5978c84a9b19e5":[4,0,0,5,12], +"classcomma_1_1_bimap.html#aafc73798f8c673da69051f7c79cd73c2":[4,0,0,5,4], +"classcomma_1_1_bimap.html#aafc73798f8c673da69051f7c79cd73c2":[3,0,0,5,4], +"classcomma_1_1_bimap.html#aca11af6d19701ce17ce0dc05f25af6ec":[4,0,0,5,10], +"classcomma_1_1_bimap.html#aca11af6d19701ce17ce0dc05f25af6ec":[3,0,0,5,10], +"classcomma_1_1_bimap.html#ad7078e25a5c856ca2921c4dc34f7cd16":[4,0,0,5,11], +"classcomma_1_1_bimap.html#ad7078e25a5c856ca2921c4dc34f7cd16":[3,0,0,5,11], +"classcomma_1_1_bimap.html#af449cd0dc1fbb4f4b523cdbd1bc768ce":[3,0,0,5,8], +"classcomma_1_1_bimap.html#af449cd0dc1fbb4f4b523cdbd1bc768ce":[4,0,0,5,8], +"classcomma_1_1_bimap.html#af7226a5d51d99236f8b9451650356267":[3,0,0,5,7], +"classcomma_1_1_bimap.html#af7226a5d51d99236f8b9451650356267":[4,0,0,5,7], +"classcomma_1_1_coarse___cell.html":[3,0,0,6], +"classcomma_1_1_coarse___cell.html":[4,0,0,6], +"classcomma_1_1_coarse___cell.html#a13151d1da32d3567c38227842ba1d19f":[3,0,0,6,9], +"classcomma_1_1_coarse___cell.html#a13151d1da32d3567c38227842ba1d19f":[4,0,0,6,9], +"classcomma_1_1_coarse___cell.html#a31f56dd630378c3ce67d5e155a50fb5a":[3,0,0,6,6], +"classcomma_1_1_coarse___cell.html#a31f56dd630378c3ce67d5e155a50fb5a":[4,0,0,6,6], +"classcomma_1_1_coarse___cell.html#a35ecf0c52bb9edbc441d78a43279ca30":[3,0,0,6,0], +"classcomma_1_1_coarse___cell.html#a35ecf0c52bb9edbc441d78a43279ca30":[4,0,0,6,0], +"classcomma_1_1_coarse___cell.html#a39e720f43721fb92283e90641c884549":[3,0,0,6,10], +"classcomma_1_1_coarse___cell.html#a39e720f43721fb92283e90641c884549":[4,0,0,6,10], +"classcomma_1_1_coarse___cell.html#a8037db1d61c0f3d8f3cdd21dcf8dd301":[3,0,0,6,1], +"classcomma_1_1_coarse___cell.html#a8037db1d61c0f3d8f3cdd21dcf8dd301":[4,0,0,6,1], +"classcomma_1_1_coarse___cell.html#a80ad5b778411821842cfed3f7c8c19da":[3,0,0,6,3], +"classcomma_1_1_coarse___cell.html#a80ad5b778411821842cfed3f7c8c19da":[4,0,0,6,3], +"classcomma_1_1_coarse___cell.html#a90d3d1c06f292560c3d4c47c19c7931d":[3,0,0,6,11], +"classcomma_1_1_coarse___cell.html#a90d3d1c06f292560c3d4c47c19c7931d":[4,0,0,6,11], +"classcomma_1_1_coarse___cell.html#a910e720ead09571ffcae75f604e6b310":[3,0,0,6,8], +"classcomma_1_1_coarse___cell.html#a910e720ead09571ffcae75f604e6b310":[4,0,0,6,8], +"classcomma_1_1_coarse___cell.html#ab872db2f751d586c971943e25d9f0c65":[3,0,0,6,7], +"classcomma_1_1_coarse___cell.html#ab872db2f751d586c971943e25d9f0c65":[4,0,0,6,7], +"classcomma_1_1_coarse___cell.html#ac4034b8340779db758fdbe338ced45e4":[4,0,0,6,5], +"classcomma_1_1_coarse___cell.html#ac4034b8340779db758fdbe338ced45e4":[3,0,0,6,5], +"classcomma_1_1_coarse___cell.html#ac53b192d8a56d61153d33524b3b1663d":[4,0,0,6,2], +"classcomma_1_1_coarse___cell.html#ac53b192d8a56d61153d33524b3b1663d":[3,0,0,6,2], +"classcomma_1_1_coarse___cell.html#ad02809c84ac2972857fb912a389444ca":[3,0,0,6,4], +"classcomma_1_1_coarse___cell.html#ad02809c84ac2972857fb912a389444ca":[4,0,0,6,4], +"classcomma_1_1_coarse___cell___container.html":[3,0,0,7], +"classcomma_1_1_coarse___cell___container.html":[4,0,0,7], +"classcomma_1_1_coarse___cell___container.html#a00994ecc5f6dae2f9ab6bb376e50931a":[4,0,0,7,15], +"classcomma_1_1_coarse___cell___container.html#a00994ecc5f6dae2f9ab6bb376e50931a":[3,0,0,7,15], +"classcomma_1_1_coarse___cell___container.html#a06433ef8fe9388f3e640f3d8bfdf7c27":[3,0,0,7,13], +"classcomma_1_1_coarse___cell___container.html#a06433ef8fe9388f3e640f3d8bfdf7c27":[4,0,0,7,13], +"classcomma_1_1_coarse___cell___container.html#a08300d61da9f6559f580b29003e1f689":[4,0,0,7,22], +"classcomma_1_1_coarse___cell___container.html#a08300d61da9f6559f580b29003e1f689":[3,0,0,7,22], +"classcomma_1_1_coarse___cell___container.html#a16e9f6a6002a7a3580b7f1d017a15b99":[4,0,0,7,20], +"classcomma_1_1_coarse___cell___container.html#a16e9f6a6002a7a3580b7f1d017a15b99":[3,0,0,7,20], +"classcomma_1_1_coarse___cell___container.html#a337440485655e84a57e8a7e9d1d3ca8f":[3,0,0,7,21], +"classcomma_1_1_coarse___cell___container.html#a337440485655e84a57e8a7e9d1d3ca8f":[4,0,0,7,21], +"classcomma_1_1_coarse___cell___container.html#a3524485e16d28d4eda3cac529a882ae6":[3,0,0,7,16], +"classcomma_1_1_coarse___cell___container.html#a3524485e16d28d4eda3cac529a882ae6":[4,0,0,7,16], +"classcomma_1_1_coarse___cell___container.html#a4552eff1fb2fb15974b835d765b61e4b":[3,0,0,7,17], +"classcomma_1_1_coarse___cell___container.html#a4552eff1fb2fb15974b835d765b61e4b":[4,0,0,7,17], +"classcomma_1_1_coarse___cell___container.html#a4670588ea6b7292b0ef8760f589eece4":[3,0,0,7,0], +"classcomma_1_1_coarse___cell___container.html#a4670588ea6b7292b0ef8760f589eece4":[4,0,0,7,0], +"classcomma_1_1_coarse___cell___container.html#a5051b74d460fe27476950f53a5fd2229":[3,0,0,7,2], +"classcomma_1_1_coarse___cell___container.html#a5051b74d460fe27476950f53a5fd2229":[4,0,0,7,2], +"classcomma_1_1_coarse___cell___container.html#a5cd32093348aa15c437952de4fb50c20":[4,0,0,7,14], +"classcomma_1_1_coarse___cell___container.html#a5cd32093348aa15c437952de4fb50c20":[3,0,0,7,14], +"classcomma_1_1_coarse___cell___container.html#a7211f3bedde3f2f93044cbacd3e47c19":[3,0,0,7,12], +"classcomma_1_1_coarse___cell___container.html#a7211f3bedde3f2f93044cbacd3e47c19":[4,0,0,7,12], +"classcomma_1_1_coarse___cell___container.html#a745d1b842ec7a43dbe303cbef43a0b80":[3,0,0,7,7], +"classcomma_1_1_coarse___cell___container.html#a745d1b842ec7a43dbe303cbef43a0b80":[4,0,0,7,7], +"classcomma_1_1_coarse___cell___container.html#a74b86f5bf928b038c490f27c1e26bd64":[3,0,0,7,10], +"classcomma_1_1_coarse___cell___container.html#a74b86f5bf928b038c490f27c1e26bd64":[4,0,0,7,10], +"classcomma_1_1_coarse___cell___container.html#a7d4a556613699b7ab500717238bd7cf9":[3,0,0,7,19], +"classcomma_1_1_coarse___cell___container.html#a7d4a556613699b7ab500717238bd7cf9":[4,0,0,7,19], +"classcomma_1_1_coarse___cell___container.html#a7e57abc220fb85877b92ad7a7be0b540":[3,0,0,7,8], +"classcomma_1_1_coarse___cell___container.html#a7e57abc220fb85877b92ad7a7be0b540":[4,0,0,7,8], +"classcomma_1_1_coarse___cell___container.html#a86e1e85dcd0d95bfd49a267960d4ea58":[3,0,0,7,18], +"classcomma_1_1_coarse___cell___container.html#a86e1e85dcd0d95bfd49a267960d4ea58":[4,0,0,7,18], +"classcomma_1_1_coarse___cell___container.html#a909799f8910487259a0ebee59186b286":[3,0,0,7,1] }; diff --git a/navtreeindex1.js b/navtreeindex1.js index fee9a4d..8ae6f4d 100644 --- a/navtreeindex1.js +++ b/navtreeindex1.js @@ -1,179 +1,253 @@ var NAVTREEINDEX1 = { -"class_neighbourhood___pure___front.html#adbe2555ab33ea43e96f1db86ef9ebc5a":[3,0,15,5], -"class_neighbourhood___pure___front.html#ae06ab9e75b3e20ee885c4ccb59d4c01e":[3,0,15,0], -"class_neighbourhood_creator.html":[3,0,16], -"class_neighbourhood_creator.html#a694bd4a43d05d3f7d98b374f7217eaf2":[3,0,16,0], -"class_neighbourhood_creator.html#ac97c8d2b2d33bb0ac38264fd12da5bcf":[3,0,16,1], -"class_neighbourhood_creator.html#adb2b715bfe127683cacee497f3622e58":[3,0,16,2], -"class_neighbourhood_extended_creator.html":[3,0,17], -"class_neighbourhood_extended_creator.html#a5d3b220e990ffb8f12d5937915b8b530":[3,0,17,0], -"class_neighbourhood_extended_creator.html#a694bd4a43d05d3f7d98b374f7217eaf2":[3,0,17,1], -"class_neighbourhood_extended_creator.html#a95aaccfb071d8af38792bc7d3a714bb5":[3,0,17,4], -"class_neighbourhood_extended_creator.html#ac05c6d6367be13473953a9382567b1ad":[3,0,17,3], -"class_neighbourhood_extended_creator.html#ae35290e079c36b28efff609a94476922":[3,0,17,2], -"class_neighbourhood_pure_front_creator.html":[3,0,18], -"class_neighbourhood_pure_front_creator.html#a52f10c48b22181c5d1f2784b958b705c":[3,0,18,2], -"class_neighbourhood_pure_front_creator.html#a61e707ffe7a0727ed7468777dc9b9d94":[3,0,18,3], -"class_neighbourhood_pure_front_creator.html#a694bd4a43d05d3f7d98b374f7217eaf2":[3,0,18,1], -"class_neighbourhood_pure_front_creator.html#a8fcdc6ff2ed08f0806a1bd021728d6f1":[3,0,18,4], -"class_neighbourhood_pure_front_creator.html#ae382bc506c3b92487f915312b5843c26":[3,0,18,0], -"class_node.html":[3,0,19], -"class_node.html#a27d40cf9fb43d5b7ef5e0cac50b7b9ed":[3,0,19,4], -"class_node.html#a42dfa5fd9feef4fa4633b75d4b056f7e":[3,0,19,6], -"class_node.html#a55da666a9ff1b5a264f6ed64b505ff5c":[3,0,19,2], -"class_node.html#ab606cdd496b5cead1175beccdd6bf9e2":[3,0,19,1], -"class_node.html#ab90e84725773f5a76757d45ac14df54d":[3,0,19,5], -"class_node.html#acb9869a5c79ec10452851f23a95b1f1e":[3,0,19,3], -"class_node.html#acecc90c44683ccf6f4fc02d285e6221e":[3,0,19,7], -"class_node.html#afeedc506abd5ba81abf6485aad28bf5d":[3,0,19,0], -"class_pair_find_first_based_functor.html":[3,0,20], -"class_pair_find_first_based_functor.html#a0d1ac677374943a662cbc3a592473465":[3,0,20,1], -"class_pair_find_first_based_functor.html#a8cae901fdfde46d800070162ff963367":[3,0,20,3], -"class_pair_find_first_based_functor.html#a968048ebd83977dd8ea344e35fe105e7":[3,0,20,0], -"class_pair_find_first_based_functor.html#af0a85839b1ca6439a4594fdfbbf14550":[3,0,20,2], -"class_priority___pair.html":[3,0,22], -"class_priority___pair.html#a310cd15c31749fbad8133e67993f0481":[3,0,22,6], -"class_priority___pair.html#a3667ccbd1eaedd085805055e4d818c00":[3,0,22,4], -"class_priority___pair.html#a5d49cb729ca12b11ed1f465dfe700cf5":[3,0,22,3], -"class_priority___pair.html#a6445c73468c4c111a2c73330395ae9c3":[3,0,22,5], -"class_priority___pair.html#a65316a8c3d03d0413d3398b7b3ed453f":[3,0,22,0], -"class_priority___pair.html#ab21a9232231493249cf97b1f24998f68":[3,0,22,1], -"class_priority___pair.html#ac642de9d7479a589b93ac5cc5751634a":[3,0,22,2], -"class_queue.html":[3,0,23], -"class_queue.html#a84af2287bc5dad708508b588dc73457d":[3,0,23,2], -"class_queue.html#a8e75adf40c581bcf8804a70ae0be18a3":[3,0,23,4], -"class_queue.html#aa7eef1b427e24555780505de20e9acbc":[3,0,23,1], -"class_queue.html#abeee018138cbb5226e5352a5788e23bd":[3,0,23,3], -"class_queue.html#ac6f60c0282f64f3197d309e4f414da6f":[3,0,23,5], -"class_queue.html#af73bb29c868f7b37f369c668f114bd9f":[3,0,23,0], -"class_seeds___pool.html":[3,0,24], -"class_seeds___pool.html#a1567e2e69f9de4642a48a62dc3688c17":[3,0,24,3], -"class_seeds___pool.html#a23a0f231be556d1d87f216a5c002e760":[3,0,24,8], -"class_seeds___pool.html#a3b7070b7ddb7c2f856f35407bb76a73f":[3,0,24,5], -"class_seeds___pool.html#a3b7c154f4775ee5be6800bae7a564f99":[3,0,24,18], -"class_seeds___pool.html#a3d6ff9145c49b79610f4d7777dfdc342":[3,0,24,2], -"class_seeds___pool.html#a54aeaf8e86cccde8f7bca556ec005f3c":[3,0,24,6], -"class_seeds___pool.html#a5605fc7f8d961cac3343cc69b64a23f3":[3,0,24,11], -"class_seeds___pool.html#a7397a981bac53b7356e8ca715ac99a52":[3,0,24,15], -"class_seeds___pool.html#a748320ddb30c58dd41c89f392e7692e7":[3,0,24,19], -"class_seeds___pool.html#a90276b0aebe130de57c4b04afb7b45fc":[3,0,24,9], -"class_seeds___pool.html#a91f79ccf5fda9ea80726b78df15a7b94":[3,0,24,4], -"class_seeds___pool.html#a958a26a313e6a7d11aeef6ecb506ee6f":[3,0,24,17], -"class_seeds___pool.html#a9678e5bbd5f135398366fd74d95b925a":[3,0,24,0], -"class_seeds___pool.html#aae5389ce2e287218835acd3b0c97b61e":[3,0,24,7], -"class_seeds___pool.html#ab7e85e018510d448d7eed7a3c92b3108":[3,0,24,10], -"class_seeds___pool.html#abc1107196890a26c678ce4e4aa3fb4cb":[3,0,24,1], -"class_seeds___pool.html#ac134287c9c4d234dbc2e73b5aa2db96b":[3,0,24,13], -"class_seeds___pool.html#acf803da96cb6760c6bf2d4fa5a8552ac":[3,0,24,16], -"class_seeds___pool.html#adc6a34efef0ec0ffe69a4d4b50741d07":[3,0,24,14], -"class_seeds___pool.html#af2a613ae8e3acd93667292399fe925fc":[3,0,24,12], -"class_seeds___pool___boundary___priority.html":[3,0,25], -"class_seeds___pool___boundary___priority.html#a3d6ff9145c49b79610f4d7777dfdc342":[3,0,25,1], -"class_seeds___pool___boundary___priority.html#a607c4ab9284f6116d12e4356fe4702b6":[3,0,25,2], -"class_seeds___pool___boundary___priority.html#a7e10b833156c1c19009a093570697e75":[3,0,25,5], -"class_seeds___pool___boundary___priority.html#a95eaa542d85779930aca1fd962f88893":[3,0,25,6], -"class_seeds___pool___boundary___priority.html#a9678e5bbd5f135398366fd74d95b925a":[3,0,25,0], -"class_seeds___pool___boundary___priority.html#aa286e6beeaf6cc1915ed1de6b5b5cc6f":[3,0,25,3], -"class_seeds___pool___boundary___priority.html#acba386e4effac0b7d795ba8b2fb41372":[3,0,25,7], -"class_seeds___pool___boundary___priority.html#af3f91b37d8b3704c6bad00c8324f71be":[3,0,25,4], -"class_seeds___pool___neighbourhood___priority.html":[3,0,26], -"class_seeds___pool___neighbourhood___priority.html#a114213b8d042b86fd4c735b74c4af8a5":[3,0,26,7], -"class_seeds___pool___neighbourhood___priority.html#a1db03da69eb61cc4f6486d303065261d":[3,0,26,4], -"class_seeds___pool___neighbourhood___priority.html#a1fa4863f05ee5d83399275bfcd430e53":[3,0,26,2], -"class_seeds___pool___neighbourhood___priority.html#a3d6ff9145c49b79610f4d7777dfdc342":[3,0,26,1], -"class_seeds___pool___neighbourhood___priority.html#a9678e5bbd5f135398366fd74d95b925a":[3,0,26,0], -"class_seeds___pool___neighbourhood___priority.html#ae9694b6adced185e4282ec3bf8394346":[3,0,26,6], -"class_seeds___pool___neighbourhood___priority.html#aec2b6ee916560feeab9cda7204a6429a":[3,0,26,5], -"class_seeds___pool___neighbourhood___priority.html#afc8716dedda1636bce1de070b9f90326":[3,0,26,3], -"class_subgraph.html":[3,0,30], -"class_subgraph.html#a227bc4f69731cee95b7d931cc8cb401a":[3,0,30,9], -"class_subgraph.html#a542bd9e63de495030a058b1abe3c76b9":[3,0,30,8], -"class_subgraph.html#a7058ddca6eb8fb76a393dcbb55621072":[3,0,30,7], -"class_subgraph.html#ab70bf7df2dc00ac790e2854f8a2eef6a":[3,0,30,2], -"class_subgraph.html#abb8937d3bdb846254d3f63f0eb378dee":[3,0,30,1], -"class_subgraph.html#abe3ffa3088420c172fb65840429ea479":[3,0,30,4], -"class_subgraph.html#ac0630065e5ee2ecaf565b5199d28ea24":[3,0,30,10], -"class_subgraph.html#ace661b2b2465558589b6beabbfbe3d8c":[3,0,30,0], -"class_subgraph.html#acf5fbea7405e13ce3701069fd4fb6dc1":[3,0,30,5], -"class_subgraph.html#ad7ef3fa10ed764d28f653451e52c4897":[3,0,30,3], -"class_subgraph.html#afe1f74daa81f7af211cf683f2c8c85f5":[3,0,30,6], -"class_tree.html":[3,0,31], -"class_tree.html#a0c351d4a8573a2f786638e96a06f10b7":[3,0,31,8], -"class_tree.html#a2ea9eda153ab0589b22d324e25ac8a8c":[3,0,31,9], -"class_tree.html#a4d71a038b6d33dde44de8d1eddd634da":[3,0,31,6], -"class_tree.html#a51e33e50623d498fdf8eb9fb619328c3":[3,0,31,4], -"class_tree.html#a67a96cf01ba50b94071ba0e98c73cf93":[3,0,31,3], -"class_tree.html#a76e1e482851604865ddcf4952b037846":[3,0,31,10], -"class_tree.html#a8f223fd2ef5bec1e944b4815c268839d":[3,0,31,7], -"class_tree.html#ac75043a79cf9985ace5f340c311492a7":[3,0,31,1], -"class_tree.html#acc2d326e5727bc506094e726337210c9":[3,0,31,0], -"class_tree.html#ad8f18cbe37893507874177af06ab7df5":[3,0,31,5], -"class_tree.html#adebe85a87b76ce79b6d45bc05ff6b46a":[3,0,31,2], -"classes.html":[3,1], -"dir_b4d066f17bf8846320f45d1123837ca0.html":[4,0,0,0], -"dir_f7d8b6c0f4428b0df38184f730f938dc.html":[4,0,0], -"files.html":[4,0], -"functions.html":[3,3,0], -"functions.html":[3,3,0,0], -"functions_a.html":[3,3,0,1], -"functions_b.html":[3,3,0,2], -"functions_c.html":[3,3,0,3], -"functions_d.html":[3,3,0,4], -"functions_e.html":[3,3,0,5], -"functions_f.html":[3,3,0,6], -"functions_func.html":[3,3,1], -"functions_g.html":[3,3,0,7], -"functions_i.html":[3,3,0,8], -"functions_l.html":[3,3,0,9], -"functions_n.html":[3,3,0,10], -"functions_o.html":[3,3,0,11], -"functions_p.html":[3,3,0,12], -"functions_q.html":[3,3,0,13], -"functions_r.html":[3,3,0,14], -"functions_rela.html":[3,3,4], -"functions_s.html":[3,3,0,15], -"functions_t.html":[3,3,0,16], -"functions_type.html":[3,3,3], -"functions_u.html":[3,3,0,17], -"functions_vars.html":[3,3,2], -"functions_w.html":[3,3,0,18], -"functions_~.html":[3,3,0,19], -"globals.html":[4,1,0], -"globals_defs.html":[4,1,6], -"globals_enum.html":[4,1,4], -"globals_eval.html":[4,1,5], -"globals_func.html":[4,1,1], -"globals_type.html":[4,1,3], -"globals_vars.html":[4,1,2], -"hierarchy.html":[3,2], -"index.html":[], -"index.html":[0], -"md__co_m_m_a_lib_deprecated__r_e_a_d_m_e.html":[1], -"pages.html":[], -"struct_custom_pair_greater_functor.html":[3,0,9], -"struct_custom_pair_greater_functor.html#a9ac240416deabfd8c145f46a835d672c":[3,0,9,0], -"struct_custom_pair_less_functor.html":[3,0,10], -"struct_custom_pair_less_functor.html#af2e849a34c258f2ce1f92fcd0c7bcc2a":[3,0,10,0], -"struct_pair_second_based_less_functor.html":[3,0,21], -"struct_pair_second_based_less_functor.html#aadea5a66aac84faca65044194f80c2e3":[3,0,21,0], -"struct_s_p_full_initializator.html":[3,0,27], -"struct_s_p_full_initializator.html#a380cf703f0fe0069a5f5c7dd0ead70c5":[3,0,27,3], -"struct_s_p_full_initializator.html#a6fad2bcdb808aa5b9d076b6694de7046":[3,0,27,2], -"struct_s_p_full_initializator.html#a7cae6a0f08b656f912510a1c31327b99":[3,0,27,1], -"struct_s_p_full_initializator.html#aaaa1049d1803559770144bd222e895f0":[3,0,27,0], -"struct_s_p_initializator.html":[3,0,28], -"struct_s_p_initializator.html#a1d6d6649a4d47308166b97fe9a57714b":[3,0,28,3], -"struct_s_p_initializator.html#a6fad2bcdb808aa5b9d076b6694de7046":[3,0,28,2], -"struct_s_p_initializator.html#a7cae6a0f08b656f912510a1c31327b99":[3,0,28,1], -"struct_s_p_initializator.html#a900bdf529fbbd18e93f2769c35a87304":[3,0,28,0], -"struct_s_p_one_point_initializator.html":[3,0,29], -"struct_s_p_one_point_initializator.html#a557b7b2989b49ec5fd6d0a4c693ec703":[3,0,29,0], -"struct_s_p_one_point_initializator.html#a7cae6a0f08b656f912510a1c31327b99":[3,0,29,2], -"struct_s_p_one_point_initializator.html#a8a7072b8a77ffff0c4d4f6911d97f359":[3,0,29,3], -"struct_s_p_one_point_initializator.html#a900bdf529fbbd18e93f2769c35a87304":[3,0,29,1], -"template_helpers_8h.html":[4,0,0,0,3], -"template_helpers_8h.html#af8b229731dfc00cd8a557ef50078b87f":[4,0,0,0,3,0], -"template_helpers_8h_source.html":[4,0,0,0,3], -"todo.html":[2] +"classcomma_1_1_coarse___cell___container.html#a909799f8910487259a0ebee59186b286":[4,0,0,7,1], +"classcomma_1_1_coarse___cell___container.html#a93ab43e7ab6288a9e7d6fa00e7d53c3d":[3,0,0,7,11], +"classcomma_1_1_coarse___cell___container.html#a93ab43e7ab6288a9e7d6fa00e7d53c3d":[4,0,0,7,11], +"classcomma_1_1_coarse___cell___container.html#ac64a40e0897db7510ba5e5b874891268":[4,0,0,7,4], +"classcomma_1_1_coarse___cell___container.html#ac64a40e0897db7510ba5e5b874891268":[3,0,0,7,4], +"classcomma_1_1_coarse___cell___container.html#aca19a5b3b66ea0d481b315ff012a7725":[4,0,0,7,3], +"classcomma_1_1_coarse___cell___container.html#aca19a5b3b66ea0d481b315ff012a7725":[3,0,0,7,3], +"classcomma_1_1_coarse___cell___container.html#adfc1c9ae9a17a20cc98d26e1d94753ce":[3,0,0,7,9], +"classcomma_1_1_coarse___cell___container.html#adfc1c9ae9a17a20cc98d26e1d94753ce":[4,0,0,7,9], +"classcomma_1_1_coarse___cell___container.html#af30a16e10cd4cbcfa2837a36a5a80599":[3,0,0,7,6], +"classcomma_1_1_coarse___cell___container.html#af30a16e10cd4cbcfa2837a36a5a80599":[4,0,0,7,6], +"classcomma_1_1_coarse___cell___container.html#aff375cbd38f430300abad77480031841":[3,0,0,7,5], +"classcomma_1_1_coarse___cell___container.html#aff375cbd38f430300abad77480031841":[4,0,0,7,5], +"classcomma_1_1_coarse___cell___subgraph.html":[3,0,0,8], +"classcomma_1_1_coarse___cell___subgraph.html":[4,0,0,8], +"classcomma_1_1_coarse___cell___subgraph.html#a05670da5aee0809bd88770c7ef9ee00a":[3,0,0,8,0], +"classcomma_1_1_coarse___cell___subgraph.html#a05670da5aee0809bd88770c7ef9ee00a":[4,0,0,8,0], +"classcomma_1_1_coarse___cell___subgraph.html#a13e2b439ea8381b74bf91b1e1222fde2":[3,0,0,8,8], +"classcomma_1_1_coarse___cell___subgraph.html#a13e2b439ea8381b74bf91b1e1222fde2":[4,0,0,8,8], +"classcomma_1_1_coarse___cell___subgraph.html#a1f699fd8684fc8a66ca34f8635857b43":[3,0,0,8,5], +"classcomma_1_1_coarse___cell___subgraph.html#a1f699fd8684fc8a66ca34f8635857b43":[4,0,0,8,5], +"classcomma_1_1_coarse___cell___subgraph.html#a2961e12f53d52fb01a1be0243ea45126":[3,0,0,8,7], +"classcomma_1_1_coarse___cell___subgraph.html#a2961e12f53d52fb01a1be0243ea45126":[4,0,0,8,7], +"classcomma_1_1_coarse___cell___subgraph.html#a35ecf0c52bb9edbc441d78a43279ca30":[3,0,0,8,1], +"classcomma_1_1_coarse___cell___subgraph.html#a35ecf0c52bb9edbc441d78a43279ca30":[4,0,0,8,1], +"classcomma_1_1_coarse___cell___subgraph.html#a6b0355c909f3fa0124da54545c504977":[3,0,0,8,10], +"classcomma_1_1_coarse___cell___subgraph.html#a6b0355c909f3fa0124da54545c504977":[4,0,0,8,10], +"classcomma_1_1_coarse___cell___subgraph.html#a91979299073d846773d1222dc794175b":[4,0,0,8,6], +"classcomma_1_1_coarse___cell___subgraph.html#a91979299073d846773d1222dc794175b":[3,0,0,8,6], +"classcomma_1_1_coarse___cell___subgraph.html#aa143ca9ef420d4794ddad99596f8e74f":[4,0,0,8,9], +"classcomma_1_1_coarse___cell___subgraph.html#aa143ca9ef420d4794ddad99596f8e74f":[3,0,0,8,9], +"classcomma_1_1_coarse___cell___subgraph.html#ab140e803b551ea792a8f004aceb54aed":[4,0,0,8,3], +"classcomma_1_1_coarse___cell___subgraph.html#ab140e803b551ea792a8f004aceb54aed":[3,0,0,8,3], +"classcomma_1_1_coarse___cell___subgraph.html#ad5a7874698d85e8a75d1738a6257ab26":[4,0,0,8,2], +"classcomma_1_1_coarse___cell___subgraph.html#ad5a7874698d85e8a75d1738a6257ab26":[3,0,0,8,2], +"classcomma_1_1_coarse___cell___subgraph.html#adb533b705811bed203bea788a1ae7e07":[4,0,0,8,4], +"classcomma_1_1_coarse___cell___subgraph.html#adb533b705811bed203bea788a1ae7e07":[3,0,0,8,4], +"classcomma_1_1_dual___graph.html":[3,0,0,11], +"classcomma_1_1_dual___graph.html":[4,0,0,11], +"classcomma_1_1_dual___graph.html#a020ecb0b3f410b468bbb8e57878bf9aa":[3,0,0,11,8], +"classcomma_1_1_dual___graph.html#a020ecb0b3f410b468bbb8e57878bf9aa":[4,0,0,11,8], +"classcomma_1_1_dual___graph.html#a03162eab93fc7ace92992ebea53db274":[4,0,0,11,9], +"classcomma_1_1_dual___graph.html#a03162eab93fc7ace92992ebea53db274":[3,0,0,11,9], +"classcomma_1_1_dual___graph.html#a20485b4e0bddf0fd2e6fe38b5aa7582b":[3,0,0,11,7], +"classcomma_1_1_dual___graph.html#a20485b4e0bddf0fd2e6fe38b5aa7582b":[4,0,0,11,7], +"classcomma_1_1_dual___graph.html#a243466aae3bc5b1a7c1f259dc398ce67":[4,0,0,11,11], +"classcomma_1_1_dual___graph.html#a243466aae3bc5b1a7c1f259dc398ce67":[3,0,0,11,11], +"classcomma_1_1_dual___graph.html#a49d4b45fcbf985e001a9137f38d8fd0d":[3,0,0,11,13], +"classcomma_1_1_dual___graph.html#a49d4b45fcbf985e001a9137f38d8fd0d":[4,0,0,11,13], +"classcomma_1_1_dual___graph.html#a62db97821210fa0ffa99d3396eecdaae":[3,0,0,11,5], +"classcomma_1_1_dual___graph.html#a62db97821210fa0ffa99d3396eecdaae":[4,0,0,11,5], +"classcomma_1_1_dual___graph.html#a7e3f45ecd852a941dc39064f7454efb3":[4,0,0,11,10], +"classcomma_1_1_dual___graph.html#a7e3f45ecd852a941dc39064f7454efb3":[3,0,0,11,10], +"classcomma_1_1_dual___graph.html#a9e4ca69b6d5fa9725246dfc96d85c112":[3,0,0,11,1], +"classcomma_1_1_dual___graph.html#a9e4ca69b6d5fa9725246dfc96d85c112":[4,0,0,11,1], +"classcomma_1_1_dual___graph.html#aa791a6c06faf85eeab349adbb7010b7e":[4,0,0,11,15], +"classcomma_1_1_dual___graph.html#aa791a6c06faf85eeab349adbb7010b7e":[3,0,0,11,15], +"classcomma_1_1_dual___graph.html#ab61394e58e9019e8d55320e3a2885115":[3,0,0,11,4], +"classcomma_1_1_dual___graph.html#ab61394e58e9019e8d55320e3a2885115":[4,0,0,11,4], +"classcomma_1_1_dual___graph.html#ab65d0e9268c98fd72916f2eb16ce4ab4":[3,0,0,11,0], +"classcomma_1_1_dual___graph.html#ab65d0e9268c98fd72916f2eb16ce4ab4":[4,0,0,11,0], +"classcomma_1_1_dual___graph.html#ac24e8e9de0c15af027fe8d1ccd8304d4":[3,0,0,11,3], +"classcomma_1_1_dual___graph.html#ac24e8e9de0c15af027fe8d1ccd8304d4":[4,0,0,11,3], +"classcomma_1_1_dual___graph.html#ac83b5f3409ccd78654bc747f43e2d6d6":[3,0,0,11,2], +"classcomma_1_1_dual___graph.html#ac83b5f3409ccd78654bc747f43e2d6d6":[4,0,0,11,2], +"classcomma_1_1_dual___graph.html#ad2ece10214db2a38f54b4c2e4ab4451f":[4,0,0,11,6], +"classcomma_1_1_dual___graph.html#ad2ece10214db2a38f54b4c2e4ab4451f":[3,0,0,11,6], +"classcomma_1_1_dual___graph.html#adbc7f2b85fe3771b78a1d485575ed4a3":[3,0,0,11,14], +"classcomma_1_1_dual___graph.html#adbc7f2b85fe3771b78a1d485575ed4a3":[4,0,0,11,14], +"classcomma_1_1_dual___graph.html#ae54c9474438da03527cc8eab80362cf3":[3,0,0,11,12], +"classcomma_1_1_dual___graph.html#ae54c9474438da03527cc8eab80362cf3":[4,0,0,11,12], +"classcomma_1_1_dual___graph.html#af16576287d20ef656d4d7fa3479f0bed":[4,0,0,11,16], +"classcomma_1_1_dual___graph.html#af16576287d20ef656d4d7fa3479f0bed":[3,0,0,11,16], +"classcomma_1_1_graph.html":[3,0,0,12], +"classcomma_1_1_graph.html":[4,0,0,12], +"classcomma_1_1_graph.html#a036c1da6e0297d153c0a1dea0aeee8b9":[3,0,0,12,16], +"classcomma_1_1_graph.html#a036c1da6e0297d153c0a1dea0aeee8b9":[4,0,0,12,16], +"classcomma_1_1_graph.html#a07cb0d55e652d04e3e7c83c02efa757e":[3,0,0,12,20], +"classcomma_1_1_graph.html#a07cb0d55e652d04e3e7c83c02efa757e":[4,0,0,12,20], +"classcomma_1_1_graph.html#a138b207a27e58bcb238d0a80444ba75b":[4,0,0,12,10], +"classcomma_1_1_graph.html#a138b207a27e58bcb238d0a80444ba75b":[3,0,0,12,10], +"classcomma_1_1_graph.html#a22e0c39a18c9f9bc87cc71c0255b43c0":[4,0,0,12,4], +"classcomma_1_1_graph.html#a22e0c39a18c9f9bc87cc71c0255b43c0":[3,0,0,12,4], +"classcomma_1_1_graph.html#a26a90ddbfdfa7fd05dd068e3b8eb4c9f":[3,0,0,12,12], +"classcomma_1_1_graph.html#a26a90ddbfdfa7fd05dd068e3b8eb4c9f":[4,0,0,12,12], +"classcomma_1_1_graph.html#a33a60fc9c014fc5adb267d64e8f4b2bb":[4,0,0,12,2], +"classcomma_1_1_graph.html#a33a60fc9c014fc5adb267d64e8f4b2bb":[3,0,0,12,2], +"classcomma_1_1_graph.html#a49889cfff4e34758c1716d0d43c292d4":[4,0,0,12,15], +"classcomma_1_1_graph.html#a49889cfff4e34758c1716d0d43c292d4":[3,0,0,12,15], +"classcomma_1_1_graph.html#a4a4d55d139f5812150abfa01e197f5e5":[3,0,0,12,9], +"classcomma_1_1_graph.html#a4a4d55d139f5812150abfa01e197f5e5":[4,0,0,12,9], +"classcomma_1_1_graph.html#a565588a181fda3b2ebab502ff00c3546":[3,0,0,12,11], +"classcomma_1_1_graph.html#a565588a181fda3b2ebab502ff00c3546":[4,0,0,12,11], +"classcomma_1_1_graph.html#a5ca107f24d5ba40ea695a23699eb1661":[3,0,0,12,8], +"classcomma_1_1_graph.html#a5ca107f24d5ba40ea695a23699eb1661":[4,0,0,12,8], +"classcomma_1_1_graph.html#a698f1f4f188f408a34625c656038636e":[3,0,0,12,0], +"classcomma_1_1_graph.html#a698f1f4f188f408a34625c656038636e":[4,0,0,12,0], +"classcomma_1_1_graph.html#a708321a816653163524e7f261bbe4cbe":[3,0,0,12,19], +"classcomma_1_1_graph.html#a708321a816653163524e7f261bbe4cbe":[4,0,0,12,19], +"classcomma_1_1_graph.html#a72c40bec394188475ac30b159388f29f":[4,0,0,12,7], +"classcomma_1_1_graph.html#a72c40bec394188475ac30b159388f29f":[3,0,0,12,7], +"classcomma_1_1_graph.html#a9974d87bd1fc67902f8c5fc400a3ad71":[3,0,0,12,17], +"classcomma_1_1_graph.html#a9974d87bd1fc67902f8c5fc400a3ad71":[4,0,0,12,17], +"classcomma_1_1_graph.html#aa8d637d0718dbf470f51d8a7a07f3baa":[3,0,0,12,18], +"classcomma_1_1_graph.html#aa8d637d0718dbf470f51d8a7a07f3baa":[4,0,0,12,18], +"classcomma_1_1_graph.html#ab61394e58e9019e8d55320e3a2885115":[4,0,0,12,3], +"classcomma_1_1_graph.html#ab61394e58e9019e8d55320e3a2885115":[3,0,0,12,3], +"classcomma_1_1_graph.html#ac24e8e9de0c15af027fe8d1ccd8304d4":[3,0,0,12,1], +"classcomma_1_1_graph.html#ac24e8e9de0c15af027fe8d1ccd8304d4":[4,0,0,12,1], +"classcomma_1_1_graph.html#ad04e5b90c7fc132406dae34bb8f9fa49":[4,0,0,12,21], +"classcomma_1_1_graph.html#ad04e5b90c7fc132406dae34bb8f9fa49":[3,0,0,12,21], +"classcomma_1_1_graph.html#ad7d4773cefcbc9627b0779e28824e1f8":[4,0,0,12,5], +"classcomma_1_1_graph.html#ad7d4773cefcbc9627b0779e28824e1f8":[3,0,0,12,5], +"classcomma_1_1_graph.html#ad7ed39610dc52059d435b5c94f099f7b":[4,0,0,12,23], +"classcomma_1_1_graph.html#ad7ed39610dc52059d435b5c94f099f7b":[3,0,0,12,23], +"classcomma_1_1_graph.html#ae53c16fecb13a6319a63b681ac470f94":[4,0,0,12,14], +"classcomma_1_1_graph.html#ae53c16fecb13a6319a63b681ac470f94":[3,0,0,12,14], +"classcomma_1_1_graph.html#aec4547e40dba5830f05b5fe96cd2355c":[3,0,0,12,13], +"classcomma_1_1_graph.html#aec4547e40dba5830f05b5fe96cd2355c":[4,0,0,12,13], +"classcomma_1_1_graph.html#aec53729d369659cd15a85198a8d0595f":[4,0,0,12,22], +"classcomma_1_1_graph.html#aec53729d369659cd15a85198a8d0595f":[3,0,0,12,22], +"classcomma_1_1_graph.html#aeea451f73bc04c2b88a24a4709f28c21":[4,0,0,12,6], +"classcomma_1_1_graph.html#aeea451f73bc04c2b88a24a4709f28c21":[3,0,0,12,6], +"classcomma_1_1_neighbourhood.html":[4,0,0,13], +"classcomma_1_1_neighbourhood.html":[3,0,0,13], +"classcomma_1_1_neighbourhood.html#a0c2d7202d396da52d62d4b7463c5d947":[4,0,0,13,13], +"classcomma_1_1_neighbourhood.html#a0c2d7202d396da52d62d4b7463c5d947":[3,0,0,13,13], +"classcomma_1_1_neighbourhood.html#a1bcc96dd1f011b683f94d6492de5c94b":[4,0,0,13,1], +"classcomma_1_1_neighbourhood.html#a1bcc96dd1f011b683f94d6492de5c94b":[3,0,0,13,1], +"classcomma_1_1_neighbourhood.html#a23faf6843893fc19a84c4b3b2ded6044":[4,0,0,13,4], +"classcomma_1_1_neighbourhood.html#a23faf6843893fc19a84c4b3b2ded6044":[3,0,0,13,4], +"classcomma_1_1_neighbourhood.html#a2a993a6864f21796dafeb06778cb461d":[3,0,0,13,9], +"classcomma_1_1_neighbourhood.html#a2a993a6864f21796dafeb06778cb461d":[4,0,0,13,9], +"classcomma_1_1_neighbourhood.html#a357ce64ac4e6d2e9ff5e9e7e75157886":[4,0,0,13,12], +"classcomma_1_1_neighbourhood.html#a357ce64ac4e6d2e9ff5e9e7e75157886":[3,0,0,13,12], +"classcomma_1_1_neighbourhood.html#a63d4c3d2726a60aa88c69012f0b17167":[4,0,0,13,8], +"classcomma_1_1_neighbourhood.html#a63d4c3d2726a60aa88c69012f0b17167":[3,0,0,13,8], +"classcomma_1_1_neighbourhood.html#a6ddd9f0975543a8c8843b415645abc69":[4,0,0,13,10], +"classcomma_1_1_neighbourhood.html#a6ddd9f0975543a8c8843b415645abc69":[3,0,0,13,10], +"classcomma_1_1_neighbourhood.html#a777595766a1b44ada43638ab5844f98d":[4,0,0,13,0], +"classcomma_1_1_neighbourhood.html#a777595766a1b44ada43638ab5844f98d":[3,0,0,13,0], +"classcomma_1_1_neighbourhood.html#a848ff0040340a5b904dfb9c8306e1439":[4,0,0,13,3], +"classcomma_1_1_neighbourhood.html#a848ff0040340a5b904dfb9c8306e1439":[3,0,0,13,3], +"classcomma_1_1_neighbourhood.html#a86faebda628571c81ff0771703a80a1a":[4,0,0,13,5], +"classcomma_1_1_neighbourhood.html#a86faebda628571c81ff0771703a80a1a":[3,0,0,13,5], +"classcomma_1_1_neighbourhood.html#aab45271f5bea1f6519cab6c069df7bac":[3,0,0,13,11], +"classcomma_1_1_neighbourhood.html#aab45271f5bea1f6519cab6c069df7bac":[4,0,0,13,11], +"classcomma_1_1_neighbourhood.html#abf5efa9c654e7bacae24f74d3c3b8dc1":[3,0,0,13,7], +"classcomma_1_1_neighbourhood.html#abf5efa9c654e7bacae24f74d3c3b8dc1":[4,0,0,13,7], +"classcomma_1_1_neighbourhood.html#ae017bf1bdbf97533b6078628196daa0a":[3,0,0,13,2], +"classcomma_1_1_neighbourhood.html#ae017bf1bdbf97533b6078628196daa0a":[4,0,0,13,2], +"classcomma_1_1_neighbourhood.html#ae54c6b0bf42c2ec21c56308a1cddf05b":[3,0,0,13,6], +"classcomma_1_1_neighbourhood.html#ae54c6b0bf42c2ec21c56308a1cddf05b":[4,0,0,13,6], +"classcomma_1_1_neighbourhood___extended.html":[3,0,0,14], +"classcomma_1_1_neighbourhood___extended.html":[4,0,0,14], +"classcomma_1_1_neighbourhood___extended.html#a1bcc96dd1f011b683f94d6492de5c94b":[3,0,0,14,0], +"classcomma_1_1_neighbourhood___extended.html#a1bcc96dd1f011b683f94d6492de5c94b":[4,0,0,14,0], +"classcomma_1_1_neighbourhood___extended.html#a452c8c35e83e2b4a28cb4e60362bcfed":[4,0,0,14,7], +"classcomma_1_1_neighbourhood___extended.html#a452c8c35e83e2b4a28cb4e60362bcfed":[3,0,0,14,7], +"classcomma_1_1_neighbourhood___extended.html#a7186ba352d92837fca975e90fd1b5013":[3,0,0,14,3], +"classcomma_1_1_neighbourhood___extended.html#a7186ba352d92837fca975e90fd1b5013":[4,0,0,14,3], +"classcomma_1_1_neighbourhood___extended.html#a848ff0040340a5b904dfb9c8306e1439":[4,0,0,14,2], +"classcomma_1_1_neighbourhood___extended.html#a848ff0040340a5b904dfb9c8306e1439":[3,0,0,14,2], +"classcomma_1_1_neighbourhood___extended.html#abcf357a7a3031045502ba7a3a9959c0c":[4,0,0,14,4], +"classcomma_1_1_neighbourhood___extended.html#abcf357a7a3031045502ba7a3a9959c0c":[3,0,0,14,4], +"classcomma_1_1_neighbourhood___extended.html#ada067e494ee4d1ed5533aa26384806f9":[3,0,0,14,6], +"classcomma_1_1_neighbourhood___extended.html#ada067e494ee4d1ed5533aa26384806f9":[4,0,0,14,6], +"classcomma_1_1_neighbourhood___extended.html#ae017bf1bdbf97533b6078628196daa0a":[4,0,0,14,1], +"classcomma_1_1_neighbourhood___extended.html#ae017bf1bdbf97533b6078628196daa0a":[3,0,0,14,1], +"classcomma_1_1_neighbourhood___extended.html#aead86237e93abd8199965599ac2df567":[3,0,0,14,5], +"classcomma_1_1_neighbourhood___extended.html#aead86237e93abd8199965599ac2df567":[4,0,0,14,5], +"classcomma_1_1_neighbourhood___pure___front.html":[4,0,0,15], +"classcomma_1_1_neighbourhood___pure___front.html":[3,0,0,15], +"classcomma_1_1_neighbourhood___pure___front.html#a1bcc96dd1f011b683f94d6492de5c94b":[4,0,0,15,0], +"classcomma_1_1_neighbourhood___pure___front.html#a1bcc96dd1f011b683f94d6492de5c94b":[3,0,0,15,0], +"classcomma_1_1_neighbourhood___pure___front.html#a2ed8fac1690468f67afe039ac052a5d2":[3,0,0,15,6], +"classcomma_1_1_neighbourhood___pure___front.html#a2ed8fac1690468f67afe039ac052a5d2":[4,0,0,15,6], +"classcomma_1_1_neighbourhood___pure___front.html#a5ec25c24172a6b37f0c669ed78347e65":[3,0,0,15,5], +"classcomma_1_1_neighbourhood___pure___front.html#a5ec25c24172a6b37f0c669ed78347e65":[4,0,0,15,5], +"classcomma_1_1_neighbourhood___pure___front.html#a848ff0040340a5b904dfb9c8306e1439":[3,0,0,15,2], +"classcomma_1_1_neighbourhood___pure___front.html#a848ff0040340a5b904dfb9c8306e1439":[4,0,0,15,2], +"classcomma_1_1_neighbourhood___pure___front.html#a8e347e275fb8cb02e86844219742fd9e":[4,0,0,15,7], +"classcomma_1_1_neighbourhood___pure___front.html#a8e347e275fb8cb02e86844219742fd9e":[3,0,0,15,7], +"classcomma_1_1_neighbourhood___pure___front.html#a913459e984b1617005be9d6674e3bea9":[3,0,0,15,3], +"classcomma_1_1_neighbourhood___pure___front.html#a913459e984b1617005be9d6674e3bea9":[4,0,0,15,3], +"classcomma_1_1_neighbourhood___pure___front.html#ab4f56f2ddccb9f209a1192f931062456":[4,0,0,15,10], +"classcomma_1_1_neighbourhood___pure___front.html#ab4f56f2ddccb9f209a1192f931062456":[3,0,0,15,10], +"classcomma_1_1_neighbourhood___pure___front.html#abb29cb2a39fe869e98626c420b08531f":[3,0,0,15,9], +"classcomma_1_1_neighbourhood___pure___front.html#abb29cb2a39fe869e98626c420b08531f":[4,0,0,15,9], +"classcomma_1_1_neighbourhood___pure___front.html#ae017bf1bdbf97533b6078628196daa0a":[3,0,0,15,1], +"classcomma_1_1_neighbourhood___pure___front.html#ae017bf1bdbf97533b6078628196daa0a":[4,0,0,15,1], +"classcomma_1_1_neighbourhood___pure___front.html#ae1b96c3d2b2421520cdef03e16a7d102":[4,0,0,15,8], +"classcomma_1_1_neighbourhood___pure___front.html#ae1b96c3d2b2421520cdef03e16a7d102":[3,0,0,15,8], +"classcomma_1_1_neighbourhood___pure___front.html#af8021c4955de4919701b4fc10218c1e7":[3,0,0,15,4], +"classcomma_1_1_neighbourhood___pure___front.html#af8021c4955de4919701b4fc10218c1e7":[4,0,0,15,4], +"classcomma_1_1_neighbourhood_creator.html":[3,0,0,16], +"classcomma_1_1_neighbourhood_creator.html":[4,0,0,16], +"classcomma_1_1_neighbourhood_creator.html#a5744afc0bb83cb634548bbee1399e935":[4,0,0,16,3], +"classcomma_1_1_neighbourhood_creator.html#a5744afc0bb83cb634548bbee1399e935":[3,0,0,16,3], +"classcomma_1_1_neighbourhood_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e":[4,0,0,16,0], +"classcomma_1_1_neighbourhood_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e":[3,0,0,16,0], +"classcomma_1_1_neighbourhood_creator.html#a8e26c2ebfc2006e05c528dd70293e274":[4,0,0,16,2], +"classcomma_1_1_neighbourhood_creator.html#a8e26c2ebfc2006e05c528dd70293e274":[3,0,0,16,2], +"classcomma_1_1_neighbourhood_creator.html#af4f957b393cc21b8d4e091063e8a4e8c":[4,0,0,16,1], +"classcomma_1_1_neighbourhood_creator.html#af4f957b393cc21b8d4e091063e8a4e8c":[3,0,0,16,1], +"classcomma_1_1_neighbourhood_creator.html#afe62a60eabce766b4aea2b02eeed61e5":[4,0,0,16,4], +"classcomma_1_1_neighbourhood_creator.html#afe62a60eabce766b4aea2b02eeed61e5":[3,0,0,16,4], +"classcomma_1_1_neighbourhood_extended_creator.html":[4,0,0,17], +"classcomma_1_1_neighbourhood_extended_creator.html":[3,0,0,17], +"classcomma_1_1_neighbourhood_extended_creator.html#a2412e4b615346b2dfa34ab3aba147ef4":[4,0,0,17,4], +"classcomma_1_1_neighbourhood_extended_creator.html#a2412e4b615346b2dfa34ab3aba147ef4":[3,0,0,17,4], +"classcomma_1_1_neighbourhood_extended_creator.html#a63b796c170a94ef0e6be980bff923465":[3,0,0,17,2], +"classcomma_1_1_neighbourhood_extended_creator.html#a63b796c170a94ef0e6be980bff923465":[4,0,0,17,2], +"classcomma_1_1_neighbourhood_extended_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e":[3,0,0,17,1], +"classcomma_1_1_neighbourhood_extended_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e":[4,0,0,17,1], +"classcomma_1_1_neighbourhood_extended_creator.html#a7e890e6fff3c54d74e5e2cf9aa73332b":[3,0,0,17,6], +"classcomma_1_1_neighbourhood_extended_creator.html#a7e890e6fff3c54d74e5e2cf9aa73332b":[4,0,0,17,6], +"classcomma_1_1_neighbourhood_extended_creator.html#ad6d5ab836d929ef895fa2820cc160324":[3,0,0,17,3], +"classcomma_1_1_neighbourhood_extended_creator.html#ad6d5ab836d929ef895fa2820cc160324":[4,0,0,17,3], +"classcomma_1_1_neighbourhood_extended_creator.html#adb1ed78173e7523fc25c3a7e81d1c9a3":[4,0,0,17,5], +"classcomma_1_1_neighbourhood_extended_creator.html#adb1ed78173e7523fc25c3a7e81d1c9a3":[3,0,0,17,5], +"classcomma_1_1_neighbourhood_extended_creator.html#ae2cbcfa4423cf20e5045a9530c5f9c80":[3,0,0,17,0], +"classcomma_1_1_neighbourhood_extended_creator.html#ae2cbcfa4423cf20e5045a9530c5f9c80":[4,0,0,17,0], +"classcomma_1_1_neighbourhood_pure_front_creator.html":[3,0,0,18], +"classcomma_1_1_neighbourhood_pure_front_creator.html":[4,0,0,18], +"classcomma_1_1_neighbourhood_pure_front_creator.html#a550fb5859f1d0b86326ad4892e0fcfb7":[3,0,0,18,3], +"classcomma_1_1_neighbourhood_pure_front_creator.html#a550fb5859f1d0b86326ad4892e0fcfb7":[4,0,0,18,3], +"classcomma_1_1_neighbourhood_pure_front_creator.html#a5c84dd3fbf5c5b5e113261da07379ffb":[4,0,0,18,0], +"classcomma_1_1_neighbourhood_pure_front_creator.html#a5c84dd3fbf5c5b5e113261da07379ffb":[3,0,0,18,0], +"classcomma_1_1_neighbourhood_pure_front_creator.html#a73b13c01032e09c04690d4320174d222":[4,0,0,18,5], +"classcomma_1_1_neighbourhood_pure_front_creator.html#a73b13c01032e09c04690d4320174d222":[3,0,0,18,5], +"classcomma_1_1_neighbourhood_pure_front_creator.html#a762a03d248377977aa1c60eacd4479a8":[4,0,0,18,4], +"classcomma_1_1_neighbourhood_pure_front_creator.html#a762a03d248377977aa1c60eacd4479a8":[3,0,0,18,4], +"classcomma_1_1_neighbourhood_pure_front_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e":[3,0,0,18,1], +"classcomma_1_1_neighbourhood_pure_front_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e":[4,0,0,18,1], +"classcomma_1_1_neighbourhood_pure_front_creator.html#a8594b34dfb4913c08cb825415cb7755e":[4,0,0,18,2], +"classcomma_1_1_neighbourhood_pure_front_creator.html#a8594b34dfb4913c08cb825415cb7755e":[3,0,0,18,2], +"classcomma_1_1_neighbourhood_pure_front_creator.html#aaac38025ac8e92eecd2b32d85c3e3d0e":[4,0,0,18,6], +"classcomma_1_1_neighbourhood_pure_front_creator.html#aaac38025ac8e92eecd2b32d85c3e3d0e":[3,0,0,18,6], +"classcomma_1_1_node.html":[3,0,0,19], +"classcomma_1_1_node.html":[4,0,0,19], +"classcomma_1_1_node.html#a00784e85c969362df47c971dfcd3a8f5":[4,0,0,19,5], +"classcomma_1_1_node.html#a00784e85c969362df47c971dfcd3a8f5":[3,0,0,19,5], +"classcomma_1_1_node.html#a0bf32c66dc95f86917b1a5bcd59a0eb8":[4,0,0,19,4], +"classcomma_1_1_node.html#a0bf32c66dc95f86917b1a5bcd59a0eb8":[3,0,0,19,4], +"classcomma_1_1_node.html#a1392428dc13cfdbeca98c01003402b3f":[3,0,0,19,1], +"classcomma_1_1_node.html#a1392428dc13cfdbeca98c01003402b3f":[4,0,0,19,1], +"classcomma_1_1_node.html#a1ab325d368510e673507beae3116e78e":[3,0,0,19,7], +"classcomma_1_1_node.html#a1ab325d368510e673507beae3116e78e":[4,0,0,19,7], +"classcomma_1_1_node.html#aa27241e12cb061d59c589bd3364bea47":[4,0,0,19,3] }; diff --git a/navtreeindex2.js b/navtreeindex2.js new file mode 100644 index 0000000..ca4df1b --- /dev/null +++ b/navtreeindex2.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX2 = +{ +"classcomma_1_1_node.html#aa27241e12cb061d59c589bd3364bea47":[3,0,0,19,3], +"classcomma_1_1_node.html#aa73c0969d0ff731040bc3c684913c86c":[4,0,0,19,6], +"classcomma_1_1_node.html#aa73c0969d0ff731040bc3c684913c86c":[3,0,0,19,6], +"classcomma_1_1_node.html#ab982f0768228f971628980b0d5ca47e1":[3,0,0,19,0], +"classcomma_1_1_node.html#ab982f0768228f971628980b0d5ca47e1":[4,0,0,19,0], +"classcomma_1_1_node.html#abb78e37b6c11686abeaf744f0e29ec2a":[4,0,0,19,2], +"classcomma_1_1_node.html#abb78e37b6c11686abeaf744f0e29ec2a":[3,0,0,19,2], +"classcomma_1_1_pair_find_first_based_functor.html":[4,0,0,20], +"classcomma_1_1_pair_find_first_based_functor.html":[3,0,0,20], +"classcomma_1_1_pair_find_first_based_functor.html#a162183a1f3a7017792fab396ef5a2e7b":[4,0,0,20,3], +"classcomma_1_1_pair_find_first_based_functor.html#a162183a1f3a7017792fab396ef5a2e7b":[3,0,0,20,3], +"classcomma_1_1_pair_find_first_based_functor.html#a6ee63654dfa0f1c4676f198b318a9bed":[4,0,0,20,2], +"classcomma_1_1_pair_find_first_based_functor.html#a6ee63654dfa0f1c4676f198b318a9bed":[3,0,0,20,2], +"classcomma_1_1_pair_find_first_based_functor.html#a806e13eb6b28c4455f796aa9a46d24bd":[4,0,0,20,0], +"classcomma_1_1_pair_find_first_based_functor.html#a806e13eb6b28c4455f796aa9a46d24bd":[3,0,0,20,0], +"classcomma_1_1_pair_find_first_based_functor.html#ac8129162752fe2eea0bce8e956e6d02f":[4,0,0,20,1], +"classcomma_1_1_pair_find_first_based_functor.html#ac8129162752fe2eea0bce8e956e6d02f":[3,0,0,20,1], +"classcomma_1_1_priority___pair.html":[4,0,0,22], +"classcomma_1_1_priority___pair.html":[3,0,0,22], +"classcomma_1_1_priority___pair.html#a00bcb87b3275b43aaa493fd50dfa19f5":[4,0,0,22,2], +"classcomma_1_1_priority___pair.html#a00bcb87b3275b43aaa493fd50dfa19f5":[3,0,0,22,2], +"classcomma_1_1_priority___pair.html#a02001027693bee639c39e28aae3cf260":[4,0,0,22,1], +"classcomma_1_1_priority___pair.html#a02001027693bee639c39e28aae3cf260":[3,0,0,22,1], +"classcomma_1_1_priority___pair.html#a310cd15c31749fbad8133e67993f0481":[4,0,0,22,6], +"classcomma_1_1_priority___pair.html#a310cd15c31749fbad8133e67993f0481":[3,0,0,22,6], +"classcomma_1_1_priority___pair.html#a433fe6eac4e503827959000d52d4fe2b":[4,0,0,22,0], +"classcomma_1_1_priority___pair.html#a433fe6eac4e503827959000d52d4fe2b":[3,0,0,22,0], +"classcomma_1_1_priority___pair.html#a6445c73468c4c111a2c73330395ae9c3":[4,0,0,22,5], +"classcomma_1_1_priority___pair.html#a6445c73468c4c111a2c73330395ae9c3":[3,0,0,22,5], +"classcomma_1_1_priority___pair.html#a68586e6c5930aee091998935b657028e":[4,0,0,22,4], +"classcomma_1_1_priority___pair.html#a68586e6c5930aee091998935b657028e":[3,0,0,22,4], +"classcomma_1_1_priority___pair.html#a992d3e38d40c9741a9ffc7efa4172c04":[4,0,0,22,3], +"classcomma_1_1_priority___pair.html#a992d3e38d40c9741a9ffc7efa4172c04":[3,0,0,22,3], +"classcomma_1_1_queue.html":[3,0,0,23], +"classcomma_1_1_queue.html":[4,0,0,23], +"classcomma_1_1_queue.html#a2f3e001cc9477b9ed8015bd2118702bf":[4,0,0,23,5], +"classcomma_1_1_queue.html#a2f3e001cc9477b9ed8015bd2118702bf":[3,0,0,23,5], +"classcomma_1_1_queue.html#a5aee19993ac8929694ea6f0ef7951d8d":[3,0,0,23,3], +"classcomma_1_1_queue.html#a5aee19993ac8929694ea6f0ef7951d8d":[4,0,0,23,3], +"classcomma_1_1_queue.html#a995428caef81f88244df2c05972252bf":[3,0,0,23,1], +"classcomma_1_1_queue.html#a995428caef81f88244df2c05972252bf":[4,0,0,23,1], +"classcomma_1_1_queue.html#aa5746b4e600f2c85ec6f9f427974d302":[3,0,0,23,2], +"classcomma_1_1_queue.html#aa5746b4e600f2c85ec6f9f427974d302":[4,0,0,23,2], +"classcomma_1_1_queue.html#aa75e16d9b3abc36850da8c426c169219":[3,0,0,23,0], +"classcomma_1_1_queue.html#aa75e16d9b3abc36850da8c426c169219":[4,0,0,23,0], +"classcomma_1_1_queue.html#af1aa48fd67cce65d729cd13806496eb3":[3,0,0,23,4], +"classcomma_1_1_queue.html#af1aa48fd67cce65d729cd13806496eb3":[4,0,0,23,4], +"classcomma_1_1_seeds___pool.html":[4,0,0,24], +"classcomma_1_1_seeds___pool.html":[3,0,0,24], +"classcomma_1_1_seeds___pool.html#a01f69492190dc641f35e38c748bc84d9":[4,0,0,24,10], +"classcomma_1_1_seeds___pool.html#a01f69492190dc641f35e38c748bc84d9":[3,0,0,24,10], +"classcomma_1_1_seeds___pool.html#a0d840ac2abaa80ac8d2e5ff80ca9984d":[3,0,0,24,17], +"classcomma_1_1_seeds___pool.html#a0d840ac2abaa80ac8d2e5ff80ca9984d":[4,0,0,24,17], +"classcomma_1_1_seeds___pool.html#a0e128dabb2ee75e11ea2bbcb4b3920e8":[4,0,0,24,7], +"classcomma_1_1_seeds___pool.html#a0e128dabb2ee75e11ea2bbcb4b3920e8":[3,0,0,24,7], +"classcomma_1_1_seeds___pool.html#a12a6662e2f8e508e852c76f36df1ff17":[3,0,0,24,19], +"classcomma_1_1_seeds___pool.html#a12a6662e2f8e508e852c76f36df1ff17":[4,0,0,24,19], +"classcomma_1_1_seeds___pool.html#a1493c48d699131945ffbd173104c900c":[4,0,0,24,3], +"classcomma_1_1_seeds___pool.html#a1493c48d699131945ffbd173104c900c":[3,0,0,24,3], +"classcomma_1_1_seeds___pool.html#a14a19c8ef86507a6b3f0ff73d3b0a86c":[4,0,0,24,6], +"classcomma_1_1_seeds___pool.html#a14a19c8ef86507a6b3f0ff73d3b0a86c":[3,0,0,24,6], +"classcomma_1_1_seeds___pool.html#a5b81870765d59728538feb0960bbcc5a":[4,0,0,24,9], +"classcomma_1_1_seeds___pool.html#a5b81870765d59728538feb0960bbcc5a":[3,0,0,24,9], +"classcomma_1_1_seeds___pool.html#a70eb9e8d60f84565604934f31b6c52a3":[3,0,0,24,0], +"classcomma_1_1_seeds___pool.html#a70eb9e8d60f84565604934f31b6c52a3":[4,0,0,24,0], +"classcomma_1_1_seeds___pool.html#a7179db66333b68d1229bb8056dedf97d":[3,0,0,24,4], +"classcomma_1_1_seeds___pool.html#a7179db66333b68d1229bb8056dedf97d":[4,0,0,24,4], +"classcomma_1_1_seeds___pool.html#a820ecd76d0ab974a69701c9a9df3114e":[3,0,0,24,8], +"classcomma_1_1_seeds___pool.html#a820ecd76d0ab974a69701c9a9df3114e":[4,0,0,24,8], +"classcomma_1_1_seeds___pool.html#a822572a26fb4a9f1efef060d3ecada9f":[4,0,0,24,14], +"classcomma_1_1_seeds___pool.html#a822572a26fb4a9f1efef060d3ecada9f":[3,0,0,24,14], +"classcomma_1_1_seeds___pool.html#a9da3ca5fd578388aa227af993bb305cf":[4,0,0,24,2], +"classcomma_1_1_seeds___pool.html#a9da3ca5fd578388aa227af993bb305cf":[3,0,0,24,2], +"classcomma_1_1_seeds___pool.html#ab12ee6a6886337d0a11eff12c9dcda9c":[3,0,0,24,15], +"classcomma_1_1_seeds___pool.html#ab12ee6a6886337d0a11eff12c9dcda9c":[4,0,0,24,15], +"classcomma_1_1_seeds___pool.html#ab8e4795e11961d437344ff026bdabf2f":[4,0,0,24,13], +"classcomma_1_1_seeds___pool.html#ab8e4795e11961d437344ff026bdabf2f":[3,0,0,24,13], +"classcomma_1_1_seeds___pool.html#ab973d98317537bd99b53956103e69ba8":[4,0,0,24,12], +"classcomma_1_1_seeds___pool.html#ab973d98317537bd99b53956103e69ba8":[3,0,0,24,12], +"classcomma_1_1_seeds___pool.html#abd24f8571c5608afb54cb4f52558635e":[3,0,0,24,1], +"classcomma_1_1_seeds___pool.html#abd24f8571c5608afb54cb4f52558635e":[4,0,0,24,1], +"classcomma_1_1_seeds___pool.html#ac1d8be5640d4c3de04958b4aa9e0e75f":[3,0,0,24,16], +"classcomma_1_1_seeds___pool.html#ac1d8be5640d4c3de04958b4aa9e0e75f":[4,0,0,24,16], +"classcomma_1_1_seeds___pool.html#aeb9e0c8f04da45e06e215bd6d262929c":[4,0,0,24,11], +"classcomma_1_1_seeds___pool.html#aeb9e0c8f04da45e06e215bd6d262929c":[3,0,0,24,11], +"classcomma_1_1_seeds___pool.html#af927ed91e46d30b8571a964b72f206dc":[4,0,0,24,5], +"classcomma_1_1_seeds___pool.html#af927ed91e46d30b8571a964b72f206dc":[3,0,0,24,5], +"classcomma_1_1_seeds___pool.html#af94325238592b000a2549eccf7905f58":[4,0,0,24,18], +"classcomma_1_1_seeds___pool.html#af94325238592b000a2549eccf7905f58":[3,0,0,24,18], +"classcomma_1_1_seeds___pool___boundary___priority.html":[4,0,0,25], +"classcomma_1_1_seeds___pool___boundary___priority.html":[3,0,0,25], +"classcomma_1_1_seeds___pool___boundary___priority.html#a12bb14f9c2daa73a9842c0554919be54":[4,0,0,25,7], +"classcomma_1_1_seeds___pool___boundary___priority.html#a12bb14f9c2daa73a9842c0554919be54":[3,0,0,25,7], +"classcomma_1_1_seeds___pool___boundary___priority.html#a1d1c45f7e5b7803108d17ba4bdef0261":[3,0,0,25,2], +"classcomma_1_1_seeds___pool___boundary___priority.html#a1d1c45f7e5b7803108d17ba4bdef0261":[4,0,0,25,2], +"classcomma_1_1_seeds___pool___boundary___priority.html#a3e80d6c43797e17da8a2bb3dd33a2f87":[4,0,0,25,6], +"classcomma_1_1_seeds___pool___boundary___priority.html#a3e80d6c43797e17da8a2bb3dd33a2f87":[3,0,0,25,6], +"classcomma_1_1_seeds___pool___boundary___priority.html#a70eb9e8d60f84565604934f31b6c52a3":[3,0,0,25,0], +"classcomma_1_1_seeds___pool___boundary___priority.html#a70eb9e8d60f84565604934f31b6c52a3":[4,0,0,25,0], +"classcomma_1_1_seeds___pool___boundary___priority.html#a849b5e49938159a291940d3e5fbb13f2":[3,0,0,25,3], +"classcomma_1_1_seeds___pool___boundary___priority.html#a849b5e49938159a291940d3e5fbb13f2":[4,0,0,25,3], +"classcomma_1_1_seeds___pool___boundary___priority.html#a9b8cb88165b0e4d5cdbd35430122e126":[3,0,0,25,4], +"classcomma_1_1_seeds___pool___boundary___priority.html#a9b8cb88165b0e4d5cdbd35430122e126":[4,0,0,25,4], +"classcomma_1_1_seeds___pool___boundary___priority.html#a9da3ca5fd578388aa227af993bb305cf":[3,0,0,25,1], +"classcomma_1_1_seeds___pool___boundary___priority.html#a9da3ca5fd578388aa227af993bb305cf":[4,0,0,25,1], +"classcomma_1_1_seeds___pool___boundary___priority.html#adff771d42e189fd9f51ec5ca70c5ad0d":[3,0,0,25,8], +"classcomma_1_1_seeds___pool___boundary___priority.html#adff771d42e189fd9f51ec5ca70c5ad0d":[4,0,0,25,8], +"classcomma_1_1_seeds___pool___boundary___priority.html#ae970ce201db03dfd873895b9b9e24c5e":[4,0,0,25,5], +"classcomma_1_1_seeds___pool___boundary___priority.html#ae970ce201db03dfd873895b9b9e24c5e":[3,0,0,25,5], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html":[3,0,0,26], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html":[4,0,0,26], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a02b84ea9c154e7475a6952f63595565e":[3,0,0,26,5], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a02b84ea9c154e7475a6952f63595565e":[4,0,0,26,5], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a341847d4bc85427d4ee8c406c7005fa7":[3,0,0,26,6], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a341847d4bc85427d4ee8c406c7005fa7":[4,0,0,26,6], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a4ca303915819a28c8688b3391ade65ba":[3,0,0,26,3], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a4ca303915819a28c8688b3391ade65ba":[4,0,0,26,3], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a5f8c325ed9efd6476c36b9a979273fb1":[3,0,0,26,4], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a5f8c325ed9efd6476c36b9a979273fb1":[4,0,0,26,4], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a66ebace9a08086690b4ea3a1965f2cd9":[3,0,0,26,2], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a66ebace9a08086690b4ea3a1965f2cd9":[4,0,0,26,2], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a70eb9e8d60f84565604934f31b6c52a3":[3,0,0,26,0], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a70eb9e8d60f84565604934f31b6c52a3":[4,0,0,26,0], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a8fddbf0ca066c36daf377289806f19b8":[3,0,0,26,7], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a8fddbf0ca066c36daf377289806f19b8":[4,0,0,26,7], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a9da3ca5fd578388aa227af993bb305cf":[3,0,0,26,1], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#a9da3ca5fd578388aa227af993bb305cf":[4,0,0,26,1], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#af2883cfa457dc93928f31d35f7e62a3c":[3,0,0,26,8], +"classcomma_1_1_seeds___pool___neighbourhood___priority.html#af2883cfa457dc93928f31d35f7e62a3c":[4,0,0,26,8], +"classcomma_1_1_subgraph.html":[3,0,0,30], +"classcomma_1_1_subgraph.html":[4,0,0,30], +"classcomma_1_1_subgraph.html#a230d6568fd758a52709f60c1601662c8":[4,0,0,30,9], +"classcomma_1_1_subgraph.html#a230d6568fd758a52709f60c1601662c8":[3,0,0,30,9], +"classcomma_1_1_subgraph.html#a297656c72928fe5c7f9892a70595f973":[4,0,0,30,8], +"classcomma_1_1_subgraph.html#a297656c72928fe5c7f9892a70595f973":[3,0,0,30,8], +"classcomma_1_1_subgraph.html#a3cfdb160481138be28f9a51340d99cea":[3,0,0,30,4], +"classcomma_1_1_subgraph.html#a3cfdb160481138be28f9a51340d99cea":[4,0,0,30,4], +"classcomma_1_1_subgraph.html#a427eb4209f44547612b694d4ae7f1875":[3,0,0,30,5], +"classcomma_1_1_subgraph.html#a427eb4209f44547612b694d4ae7f1875":[4,0,0,30,5], +"classcomma_1_1_subgraph.html#a4ed3e10de29d6b5ffefd442abb5bd164":[4,0,0,30,10], +"classcomma_1_1_subgraph.html#a4ed3e10de29d6b5ffefd442abb5bd164":[3,0,0,30,10], +"classcomma_1_1_subgraph.html#a769d2fcd1f0d69a5b2741bdec90d409d":[3,0,0,30,0], +"classcomma_1_1_subgraph.html#a769d2fcd1f0d69a5b2741bdec90d409d":[4,0,0,30,0], +"classcomma_1_1_subgraph.html#a7abbe5057d801b3c44c0f3cd16dbfc56":[3,0,0,30,3], +"classcomma_1_1_subgraph.html#a7abbe5057d801b3c44c0f3cd16dbfc56":[4,0,0,30,3], +"classcomma_1_1_subgraph.html#a9af08fe78c28ad4dc06e6128b2aa07bb":[3,0,0,30,7], +"classcomma_1_1_subgraph.html#a9af08fe78c28ad4dc06e6128b2aa07bb":[4,0,0,30,7], +"classcomma_1_1_subgraph.html#ab61394e58e9019e8d55320e3a2885115":[4,0,0,30,2], +"classcomma_1_1_subgraph.html#ab61394e58e9019e8d55320e3a2885115":[3,0,0,30,2], +"classcomma_1_1_subgraph.html#aba2014ec2b66bcc8cf270892bd395e1e":[4,0,0,30,6], +"classcomma_1_1_subgraph.html#aba2014ec2b66bcc8cf270892bd395e1e":[3,0,0,30,6], +"classcomma_1_1_subgraph.html#ac24e8e9de0c15af027fe8d1ccd8304d4":[4,0,0,30,1], +"classcomma_1_1_subgraph.html#ac24e8e9de0c15af027fe8d1ccd8304d4":[3,0,0,30,1], +"classcomma_1_1_tree.html":[3,0,0,31], +"classcomma_1_1_tree.html":[4,0,0,31], +"classcomma_1_1_tree.html#a099bf175c326e84cee7d90a42e5ece2e":[3,0,0,31,7], +"classcomma_1_1_tree.html#a099bf175c326e84cee7d90a42e5ece2e":[4,0,0,31,7], +"classcomma_1_1_tree.html#a1807654696d35f467175dfae12ef3f8c":[3,0,0,31,10], +"classcomma_1_1_tree.html#a1807654696d35f467175dfae12ef3f8c":[4,0,0,31,10], +"classcomma_1_1_tree.html#a22632aa17b0500f1bfe9428bbd612c33":[3,0,0,31,4], +"classcomma_1_1_tree.html#a22632aa17b0500f1bfe9428bbd612c33":[4,0,0,31,4], +"classcomma_1_1_tree.html#a38103210c800f4ea07328f7ba5b80326":[3,0,0,31,5], +"classcomma_1_1_tree.html#a38103210c800f4ea07328f7ba5b80326":[4,0,0,31,5], +"classcomma_1_1_tree.html#aa8d121b22ac52df459f125da7b1c939b":[4,0,0,31,9], +"classcomma_1_1_tree.html#aa8d121b22ac52df459f125da7b1c939b":[3,0,0,31,9], +"classcomma_1_1_tree.html#ab4df4521ca99f1feff41aa55b06464b1":[3,0,0,31,6], +"classcomma_1_1_tree.html#ab4df4521ca99f1feff41aa55b06464b1":[4,0,0,31,6], +"classcomma_1_1_tree.html#acbf7f4e37693578e32f675680b0859ca":[3,0,0,31,8], +"classcomma_1_1_tree.html#acbf7f4e37693578e32f675680b0859ca":[4,0,0,31,8], +"classcomma_1_1_tree.html#adde017be7b486d827e7ab1fb6355cfdc":[3,0,0,31,3], +"classcomma_1_1_tree.html#adde017be7b486d827e7ab1fb6355cfdc":[4,0,0,31,3], +"classcomma_1_1_tree.html#aeea0d5dc507464848dbb6ee591f512d1":[4,0,0,31,2], +"classcomma_1_1_tree.html#aeea0d5dc507464848dbb6ee591f512d1":[3,0,0,31,2], +"classcomma_1_1_tree.html#afa76cefe052c105cbdf5a89e6171e001":[4,0,0,31,1], +"classcomma_1_1_tree.html#afa76cefe052c105cbdf5a89e6171e001":[3,0,0,31,1], +"classcomma_1_1_tree.html#aff9812ac9e33103d2651b0f8a9ba601a":[3,0,0,31,0], +"classcomma_1_1_tree.html#aff9812ac9e33103d2651b0f8a9ba601a":[4,0,0,31,0], +"classes.html":[4,1], +"dir_375345a2a898c11a64ab4059403f7be4.html":[5,0,0,0,0], +"dir_8f906a4a6ae3a71fbba10fd081503c31.html":[5,0,0,0], +"dir_d44c64559bbebec7f509842c48db8b23.html":[5,0,0], +"files.html":[5,0], +"functions.html":[4,3,0,0], +"functions.html":[4,3,0], +"functions_a.html":[4,3,0,1], +"functions_b.html":[4,3,0,2], +"functions_c.html":[4,3,0,3], +"functions_d.html":[4,3,0,4], +"functions_e.html":[4,3,0,5], +"functions_f.html":[4,3,0,6], +"functions_func.html":[4,3,1], +"functions_g.html":[4,3,0,7], +"functions_i.html":[4,3,0,8], +"functions_l.html":[4,3,0,9], +"functions_n.html":[4,3,0,10], +"functions_o.html":[4,3,0,11], +"functions_p.html":[4,3,0,12], +"functions_q.html":[4,3,0,13], +"functions_r.html":[4,3,0,14], +"functions_rela.html":[4,3,4], +"functions_s.html":[4,3,0,15], +"functions_t.html":[4,3,0,16], +"functions_type.html":[4,3,3], +"functions_u.html":[4,3,0,17], +"functions_vars.html":[4,3,2], +"functions_w.html":[4,3,0,18], +"functions_~.html":[4,3,0,19], +"globals.html":[5,1,0], +"globals_defs.html":[5,1,1], +"hierarchy.html":[4,2], +"index.html":[], +"index.html":[0], +"md_include__co_m_m_a_deprecated__r_e_a_d_m_e.html":[1], +"namespacecomma.html":[3,0,0], +"namespacecomma.html#a0e43c30768d45d4f1f643f2f8be53f5d":[3,0,0,39], +"namespacecomma.html#a18179379fcc2bb56e6b89c7b43e249c2":[3,0,0,40], +"namespacecomma.html#a39eb676bbec9475d7b0b5a6186b5f3d0":[3,0,0,42], +"namespacecomma.html#a3fda6288b7b5c19904abf0312557c774":[3,0,0,41], +"namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8":[3,0,0,32], +"namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8a0309283de9cefb87968e32825c3418ec":[3,0,0,32,5], +"namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8a39ad49623cc576b66fc391bd2bc1c7cf":[3,0,0,32,3], +"namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8a4f18a70072d52370244908b93cf13e85":[3,0,0,32,1], +"namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8aaa4cdfbb2d1efc15da1728bbc125e9f1":[3,0,0,32,2], +"namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8ac5e925f6e54a010df01d51f9b4e6f981":[3,0,0,32,4], +"namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8ada6f7a085b1f7f2125ce30f5e02db53c":[3,0,0,32,0], +"namespacecomma.html#a705b45ec112a3ac1bf59f760f0f4d022":[3,0,0,33], +"namespacecomma.html#a705b45ec112a3ac1bf59f760f0f4d022a5b91bee96d92adb448b6529d2ea8289d":[3,0,0,33,0], +"namespacecomma.html#a705b45ec112a3ac1bf59f760f0f4d022a681aa75b2dff7410008df1396b15fe35":[3,0,0,33,1], +"namespacecomma.html#a75164a303f92061683959fa690d67906":[3,0,0,44], +"namespacecomma.html#a81affca718f9c9927cfb82c317c8239e":[3,0,0,37], +"namespacecomma.html#a8c8213401033616d834d48d77bf359a4":[3,0,0,34], +"namespacecomma.html#a8c8213401033616d834d48d77bf359a4a29ddaed9cc8cda952d02296b79010787":[3,0,0,34,2], +"namespacecomma.html#a8c8213401033616d834d48d77bf359a4a7340b7195c9071cd34c7d9a633a3d857":[3,0,0,34,0], +"namespacecomma.html#a8c8213401033616d834d48d77bf359a4a8c23e18158e720cbd348f98e50376a5d":[3,0,0,34,3], +"namespacecomma.html#a8c8213401033616d834d48d77bf359a4ae3fbc583bddef8540a06125ed1e7dc79":[3,0,0,34,1], +"namespacecomma.html#aa6823809d0c8cc7a1e30d51cfb0ce21a":[3,0,0,38], +"namespacecomma.html#aa6987db36673ecd638a9b08dfaac18b1":[3,0,0,35], +"namespacecomma.html#ab712cf58df5dacc470f08332abdde7ec":[3,0,0,43], +"namespacecomma.html#ae3653181db03b3ea76722462c3b3e02b":[3,0,0,36], +"namespacecomma.html#ae843c64bc9e371bd460fe8d040c80e2b":[3,0,0,45], +"namespacemembers.html":[3,1,0], +"namespacemembers_enum.html":[3,1,3], +"namespacemembers_eval.html":[3,1,4], +"namespacemembers_func.html":[3,1,1], +"namespacemembers_vars.html":[3,1,2], +"namespaces.html":[3,0], +"pages.html":[], +"structcomma_1_1_custom_pair_greater_functor.html":[4,0,0,9], +"structcomma_1_1_custom_pair_greater_functor.html":[3,0,0,9], +"structcomma_1_1_custom_pair_greater_functor.html#a3baa52044f47d100d5320843cd48aa9f":[3,0,0,9,0] +}; diff --git a/navtreeindex3.js b/navtreeindex3.js new file mode 100644 index 0000000..d959581 --- /dev/null +++ b/navtreeindex3.js @@ -0,0 +1,58 @@ +var NAVTREEINDEX3 = +{ +"structcomma_1_1_custom_pair_greater_functor.html#a3baa52044f47d100d5320843cd48aa9f":[4,0,0,9,0], +"structcomma_1_1_custom_pair_less_functor.html":[3,0,0,10], +"structcomma_1_1_custom_pair_less_functor.html":[4,0,0,10], +"structcomma_1_1_custom_pair_less_functor.html#a31e9586ccc427694e6621fee6a910109":[4,0,0,10,0], +"structcomma_1_1_custom_pair_less_functor.html#a31e9586ccc427694e6621fee6a910109":[3,0,0,10,0], +"structcomma_1_1_pair_second_based_less_functor.html":[4,0,0,21], +"structcomma_1_1_pair_second_based_less_functor.html":[3,0,0,21], +"structcomma_1_1_pair_second_based_less_functor.html#a6e502c50b4ff11d09764e2f95a331bd8":[4,0,0,21,0], +"structcomma_1_1_pair_second_based_less_functor.html#a6e502c50b4ff11d09764e2f95a331bd8":[3,0,0,21,0], +"structcomma_1_1_s_p_full_initializator.html":[4,0,0,27], +"structcomma_1_1_s_p_full_initializator.html":[3,0,0,27], +"structcomma_1_1_s_p_full_initializator.html#a1a40a546f44cdd9bec7f20516cabb05c":[4,0,0,27,3], +"structcomma_1_1_s_p_full_initializator.html#a1a40a546f44cdd9bec7f20516cabb05c":[3,0,0,27,3], +"structcomma_1_1_s_p_full_initializator.html#a3e1e0581f3ad467d53f35e15f851c80d":[4,0,0,27,0], +"structcomma_1_1_s_p_full_initializator.html#a3e1e0581f3ad467d53f35e15f851c80d":[3,0,0,27,0], +"structcomma_1_1_s_p_full_initializator.html#a41002d642267555e928ce4979c27d2c0":[4,0,0,27,4], +"structcomma_1_1_s_p_full_initializator.html#a41002d642267555e928ce4979c27d2c0":[3,0,0,27,4], +"structcomma_1_1_s_p_full_initializator.html#abc882b29c5dbe57f25390e6bb043e667":[3,0,0,27,5], +"structcomma_1_1_s_p_full_initializator.html#abc882b29c5dbe57f25390e6bb043e667":[4,0,0,27,5], +"structcomma_1_1_s_p_full_initializator.html#adce25caf80707955d4f7a9c6e722d075":[4,0,0,27,2], +"structcomma_1_1_s_p_full_initializator.html#adce25caf80707955d4f7a9c6e722d075":[3,0,0,27,2], +"structcomma_1_1_s_p_full_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533":[3,0,0,27,1], +"structcomma_1_1_s_p_full_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533":[4,0,0,27,1], +"structcomma_1_1_s_p_initializator.html":[4,0,0,28], +"structcomma_1_1_s_p_initializator.html":[3,0,0,28], +"structcomma_1_1_s_p_initializator.html#a1063dfdb4f126da363e38ecf9e3f741c":[4,0,0,28,0], +"structcomma_1_1_s_p_initializator.html#a1063dfdb4f126da363e38ecf9e3f741c":[3,0,0,28,0], +"structcomma_1_1_s_p_initializator.html#a7b3eebdd5c01a9cc42e64458f409bed4":[4,0,0,28,4], +"structcomma_1_1_s_p_initializator.html#a7b3eebdd5c01a9cc42e64458f409bed4":[3,0,0,28,4], +"structcomma_1_1_s_p_initializator.html#a7d1760e2cc5a58d61717a777c3a2d283":[4,0,0,28,3], +"structcomma_1_1_s_p_initializator.html#a7d1760e2cc5a58d61717a777c3a2d283":[3,0,0,28,3], +"structcomma_1_1_s_p_initializator.html#ada8d7d7f0f4b41ae82f5b159bd001d5e":[4,0,0,28,5], +"structcomma_1_1_s_p_initializator.html#ada8d7d7f0f4b41ae82f5b159bd001d5e":[3,0,0,28,5], +"structcomma_1_1_s_p_initializator.html#adce25caf80707955d4f7a9c6e722d075":[3,0,0,28,2], +"structcomma_1_1_s_p_initializator.html#adce25caf80707955d4f7a9c6e722d075":[4,0,0,28,2], +"structcomma_1_1_s_p_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533":[4,0,0,28,1], +"structcomma_1_1_s_p_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533":[3,0,0,28,1], +"structcomma_1_1_s_p_one_point_initializator.html":[4,0,0,29], +"structcomma_1_1_s_p_one_point_initializator.html":[3,0,0,29], +"structcomma_1_1_s_p_one_point_initializator.html#a1063dfdb4f126da363e38ecf9e3f741c":[4,0,0,29,1], +"structcomma_1_1_s_p_one_point_initializator.html#a1063dfdb4f126da363e38ecf9e3f741c":[3,0,0,29,1], +"structcomma_1_1_s_p_one_point_initializator.html#a23df838a74c07f688109bb52065cee31":[4,0,0,29,0], +"structcomma_1_1_s_p_one_point_initializator.html#a23df838a74c07f688109bb52065cee31":[3,0,0,29,0], +"structcomma_1_1_s_p_one_point_initializator.html#a50828abe38c5d16833c9d7fd5a407c9c":[4,0,0,29,5], +"structcomma_1_1_s_p_one_point_initializator.html#a50828abe38c5d16833c9d7fd5a407c9c":[3,0,0,29,5], +"structcomma_1_1_s_p_one_point_initializator.html#a549cb8f8d1080026044644bd9ccf3a24":[4,0,0,29,4], +"structcomma_1_1_s_p_one_point_initializator.html#a549cb8f8d1080026044644bd9ccf3a24":[3,0,0,29,4], +"structcomma_1_1_s_p_one_point_initializator.html#ae24aec29ae1c72997a91bc99b9c8f6f5":[3,0,0,29,3], +"structcomma_1_1_s_p_one_point_initializator.html#ae24aec29ae1c72997a91bc99b9c8f6f5":[4,0,0,29,3], +"structcomma_1_1_s_p_one_point_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533":[4,0,0,29,2], +"structcomma_1_1_s_p_one_point_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533":[3,0,0,29,2], +"template_helpers_8h.html":[5,0,0,0,0,3], +"template_helpers_8h.html#a18179379fcc2bb56e6b89c7b43e249c2":[5,0,0,0,0,3,0], +"template_helpers_8h_source.html":[5,0,0,0,0,3], +"todo.html":[2] +}; diff --git a/pages.html b/pages.html index 10b4215..97b8f5d 100644 --- a/pages.html +++ b/pages.html @@ -96,7 +96,7 @@
    Here is a list of all related documentation pages:
    diff --git a/search/all_0.js b/search/all_0.js index 5ffdb4b..30f85e3 100644 --- a/search/all_0.js +++ b/search/all_0.js @@ -1,64 +1,64 @@ var searchData= [ - ['_5faniso_5fneighbours_0',['_aniso_neighbours',['../class_agglomerator___anisotropic.html#ab0c44e5709cbe57ecab367f622e05eac',1,'Agglomerator_Anisotropic']]], - ['_5fcandidates_1',['_candidates',['../class_neighbourhood.html#ae40fea4817fd6c5603eb7b9bd6740b68',1,'Neighbourhood']]], - ['_5fcardinality_2',['_cardinality',['../class_subgraph.html#a7058ddca6eb8fb76a393dcbb55621072',1,'Subgraph::_cardinality()'],['../class_coarse___cell.html#a4d90745cd32adfe8298a840af8ed02c8',1,'Coarse_Cell::_cardinality()']]], - ['_5fcc_5fcounter_3',['_cc_counter',['../class_coarse___cell___container.html#aaedb1987672cc4859f2f6fe7e1ec8233',1,'Coarse_Cell_Container']]], - ['_5fcc_5fgraph_4',['_cc_graph',['../class_agglomerator.html#a7b47f55bf7c7edcab6589e4ff93f28d6',1,'Agglomerator::_cc_graph()'],['../class_coarse___cell___subgraph.html#a51ceea95e630f9bb05d09b4517c62444',1,'Coarse_Cell_Subgraph::_cc_graph()']]], - ['_5fccs_5',['_ccs',['../class_coarse___cell___container.html#acd55a3361f7870e4e3a6fecc0b722143',1,'Coarse_Cell_Container']]], - ['_5fcenters_6',['_centers',['../class_dual___graph.html#adee0ab6f08caf03b8acade0c9c7515c8',1,'Dual_Graph']]], - ['_5fcompactness_7',['_compactness',['../class_coarse___cell.html#a047166bfed95c800f5818571ad353d64',1,'Coarse_Cell::_compactness()'],['../class_subgraph.html#a542bd9e63de495030a058b1abe3c76b9',1,'Subgraph::_compactness()']]], - ['_5fcompute_5far_8',['_compute_AR',['../class_agglomerator.html#ad2d5d7d04112d5cf3b7e597cb9c3eca4',1,'Agglomerator::_compute_AR()'],['../class_dual___graph.html#a61237752c04eb7a93d5306c4ccf789af',1,'Dual_Graph::_compute_AR()']]], - ['_5fcur_5ftop_5fqueue_9',['_cur_top_queue',['../class_seeds___pool.html#a7397a981bac53b7356e8ca715ac99a52',1,'Seeds_Pool']]], - ['_5fdelayed_5fcc_10',['_delayed_cc',['../class_coarse___cell___container.html#a9ff233d4ed5041ea03911c235ea31cb1',1,'Coarse_Cell_Container']]], - ['_5fdimension_11',['_dimension',['../class_agglomerator.html#a80151a5a6c0e81861a6fe4b2f9fd5517',1,'Agglomerator::_dimension()'],['../class_neighbourhood___pure___front.html#a476e4cd4e4dec20336072c55504a1ed5',1,'Neighbourhood_Pure_Front::_dimension()']]], - ['_5ffather_12',['_father',['../class_node.html#ab606cdd496b5cead1175beccdd6bf9e2',1,'Node']]], - ['_5ffc_5f2_5fcc_13',['_fc_2_cc',['../class_coarse___cell___container.html#a424991a123832bea6e516b5e05498ab6',1,'Coarse_Cell_Container']]], - ['_5ffc_5fgraph_14',['_fc_graph',['../class_agglomerator.html#a38e7e1e9096ee706bcdd8571d85391f3',1,'Agglomerator::_fc_graph()'],['../class_coarse___cell___container.html#a9ae47860d515a99af0e0199f4d844473',1,'Coarse_Cell_Container::_fc_graph()'],['../class_coarse___cell.html#a9d0de841b50f912776594f0569e027ce',1,'Coarse_Cell::_fc_graph()']]], - ['_5ffc_5fiter_15',['_fc_iter',['../class_agglomerator___isotropic.html#aedc834cf0d9bb4af59452033b837120c',1,'Agglomerator_Isotropic']]], - ['_5fgoal_5fcard_16',['_goal_card',['../class_agglomerator.html#af86ca3a8b211b4b3aa0297598bbd6e2c',1,'Agglomerator']]], - ['_5fidx_17',['_idx',['../class_coarse___cell.html#ab4e9114443109a7cdd92baca0d0fad0a',1,'Coarse_Cell']]], - ['_5findex_18',['_index',['../class_node.html#a55da666a9ff1b5a264f6ed64b505ff5c',1,'Node']]], - ['_5finitializator_19',['_initializator',['../class_seeds___pool.html#acf803da96cb6760c6bf2d4fa5a8552ac',1,'Seeds_Pool']]], - ['_5fis_5fconnected_20',['_is_connected',['../class_coarse___cell___subgraph.html#a7a1792cefef0e843930729b039ae6fe0',1,'Coarse_Cell_Subgraph']]], - ['_5fis_5fconnectivity_5fup_5fto_5fdate_21',['_is_connectivity_up_to_date',['../class_coarse___cell___subgraph.html#adb35fdd9503dff948d1b6dc62a27d85d',1,'Coarse_Cell_Subgraph']]], - ['_5fis_5ffc_5fagglomerated_22',['_is_fc_agglomerated',['../class_coarse___cell___container.html#a7940da5753d067f786aead5b6bc7f792',1,'Coarse_Cell_Container']]], - ['_5fis_5fisotropic_23',['_is_isotropic',['../class_coarse___cell.html#a38bbb07dde775ec8b93e59d449f8496d',1,'Coarse_Cell::_is_isotropic()'],['../class_subgraph.html#a227bc4f69731cee95b7d931cc8cb401a',1,'Subgraph::_is_isotropic()']]], - ['_5fl_5fnb_5fof_5fcells_24',['_l_nb_of_cells',['../class_agglomerator.html#aad06993145e0a315a30438c1213358ef',1,'Agglomerator']]], - ['_5fl_5fof_5fseeds_25',['_l_of_seeds',['../class_seeds___pool.html#a958a26a313e6a7d11aeef6ecb506ee6f',1,'Seeds_Pool']]], - ['_5fleft_5fidx_26',['_left_idx',['../class_node.html#acb9869a5c79ec10452851f23a95b1f1e',1,'Node']]], - ['_5fleft_5fson_5fidx_27',['_left_son_idx',['../class_node.html#a27d40cf9fb43d5b7ef5e0cac50b7b9ed',1,'Node']]], - ['_5fm_5fcrs_5fcol_5find_28',['_m_CRS_Col_Ind',['../class_graph.html#a37918efd419ec9a1e9f4f21fbf3472c2',1,'Graph']]], - ['_5fm_5fcrs_5frow_5fptr_29',['_m_CRS_Row_Ptr',['../class_graph.html#aa1cafeb913e75f305f2ea42d1c08cdc3',1,'Graph']]], - ['_5fm_5fcrs_5fvalues_30',['_m_CRS_Values',['../class_graph.html#a6e8f302f604d04f448e633628de2c1ec',1,'Graph']]], - ['_5fmapa_31',['_mapA',['../class_bimap.html#a6be43beacb00b26c8e24958950a66b82',1,'Bimap']]], - ['_5fmapb_32',['_mapB',['../class_bimap.html#a433a7a0d989b19d687458f760bffa665',1,'Bimap']]], - ['_5fmapping_5fl_5fto_5fg_33',['_mapping_l_to_g',['../class_subgraph.html#ac0630065e5ee2ecaf565b5199d28ea24',1,'Subgraph']]], - ['_5fmax_5fcard_34',['_max_card',['../class_agglomerator.html#a4e39d5b4ef1fc4e0f6831b37e2f4f3d6',1,'Agglomerator']]], - ['_5fmin_5fcard_35',['_min_card',['../class_agglomerator.html#a0ac5f57bf96ca2504a7db6e6f9ed6fbf',1,'Agglomerator']]], - ['_5fmin_5fneighbourhood_36',['_min_neighbourhood',['../class_agglomerator.html#a383f9f3c19557031a4cfdbf5f9997557',1,'Agglomerator']]], - ['_5fn_5fbnd_5ffaces_37',['_n_bnd_faces',['../class_dual___graph.html#a12ebafe2c27293840b5b57e934a7bd6a',1,'Dual_Graph::_n_bnd_faces()'],['../class_seeds___pool.html#a3b7c154f4775ee5be6800bae7a564f99',1,'Seeds_Pool::_n_bnd_faces()']]], - ['_5fnb_5flines_38',['_nb_lines',['../class_agglomerator___anisotropic.html#a6aa2ebc6c7b6e70ca305219ad6836aa1',1,'Agglomerator_Anisotropic']]], - ['_5fnb_5fof_5fagglomerated_5ffc_39',['_nb_of_agglomerated_fc',['../class_coarse___cell___container.html#ad6364e5fed3a17cdbe68a52a205c836a',1,'Coarse_Cell_Container']]], - ['_5fneigh_5fcrtor_40',['_neigh_crtor',['../class_agglomerator___isotropic.html#abd429139ef36679e33a85e56d2b26d99',1,'Agglomerator_Isotropic']]], - ['_5fnumber_5fof_5fcells_41',['_number_of_cells',['../class_graph.html#a7e08c1758034942c58024c58690e8c30',1,'Graph']]], - ['_5fodd_5fline_5flength_42',['_odd_line_length',['../class_agglomerator___anisotropic.html#a59eae018fc07aada999110ca24597795',1,'Agglomerator_Anisotropic']]], - ['_5fpriority_5fweights_43',['_priority_weights',['../class_seeds___pool.html#a748320ddb30c58dd41c89f392e7692e7',1,'Seeds_Pool']]], - ['_5fq_5fneighs_5fw_5fweights_44',['_q_neighs_w_weights',['../class_neighbourhood___pure___front.html#a378d383cd5c63f3a5a3f2a739ec52e40',1,'Neighbourhood_Pure_Front']]], - ['_5fright_5fidx_45',['_right_idx',['../class_node.html#ab90e84725773f5a76757d45ac14df54d',1,'Node']]], - ['_5froot_46',['_root',['../class_tree.html#a76e1e482851604865ddcf4952b037846',1,'Tree']]], - ['_5fs_5fanisotropic_5fcompliant_5fcells_47',['_s_anisotropic_compliant_cells',['../class_dual___graph.html#a8283d424689ee579c7ae6ad8c5a49f36',1,'Dual_Graph']]], - ['_5fs_5ffc_48',['_s_fc',['../class_coarse___cell.html#a90c9c5cde7ccf85d11f5cfc98997368d',1,'Coarse_Cell::_s_fc()'],['../class_neighbourhood.html#a2f86c452a0c4f7642388e37a6a213e77',1,'Neighbourhood::_s_fc()']]], - ['_5fs_5fneighbours_5fof_5fseed_49',['_s_neighbours_of_seed',['../class_neighbourhood.html#a3ddbac48fd3e9644422f8268fe96f0bd',1,'Neighbourhood']]], - ['_5fseeds_5fpool_50',['_seeds_pool',['../class_agglomerator.html#ac0c848d78d09919644771d45b56acac1',1,'Agglomerator']]], - ['_5fshould_5fagglomerate_51',['_should_agglomerate',['../class_agglomerator___anisotropic.html#aa5fe90f46019de67520ebe04eaa08e07',1,'Agglomerator_Anisotropic']]], - ['_5fsing_5fcard_5fthresh_52',['_sing_card_thresh',['../class_coarse___cell___container.html#a40c1a7820ff7948cde2ac8cb189be0f5',1,'Coarse_Cell_Container']]], - ['_5fsingular_5fcc_53',['_singular_cc',['../class_coarse___cell___container.html#afc84ade812ac4538c434bd8ad5907a62',1,'Coarse_Cell_Container']]], - ['_5fsonc_54',['_sonc',['../class_node.html#a42dfa5fd9feef4fa4633b75d4b056f7e',1,'Node']]], - ['_5fthreshold_5fcard_55',['_threshold_card',['../class_agglomerator.html#a58a3b2a3576b7f6819e4226228bfe77f',1,'Agglomerator']]], - ['_5fv_5flines_56',['_v_lines',['../class_agglomerator___anisotropic.html#a650ab1acbe83f765d0314efb8f319cd0',1,'Agglomerator_Anisotropic']]], - ['_5fvisited_57',['_visited',['../class_graph.html#a0245c0b3d009235b3357b584cae21642',1,'Graph']]], - ['_5fvolume_58',['_volume',['../class_node.html#acecc90c44683ccf6f4fc02d285e6221e',1,'Node']]], - ['_5fvolumes_59',['_volumes',['../class_graph.html#a43a49b14a5c4dbde4d6e2f7dd2779b15',1,'Graph']]], - ['_5fweights_60',['_weights',['../class_neighbourhood.html#a7f6e92db94e65505a45de7d8a7a6947c',1,'Neighbourhood']]] + ['_5faniso_5fneighbours_0',['_aniso_neighbours',['../classcomma_1_1_agglomerator___anisotropic.html#ac26aae66c211f11a2cbc0d56f3a0a3a4',1,'comma::Agglomerator_Anisotropic']]], + ['_5fcandidates_1',['_candidates',['../classcomma_1_1_neighbourhood.html#a6ddd9f0975543a8c8843b415645abc69',1,'comma::Neighbourhood']]], + ['_5fcardinality_2',['_cardinality',['../classcomma_1_1_subgraph.html#a9af08fe78c28ad4dc06e6128b2aa07bb',1,'comma::Subgraph::_cardinality()'],['../classcomma_1_1_coarse___cell.html#a31f56dd630378c3ce67d5e155a50fb5a',1,'comma::Coarse_Cell::_cardinality()']]], + ['_5fcc_5fcounter_3',['_cc_counter',['../classcomma_1_1_coarse___cell___container.html#a5cd32093348aa15c437952de4fb50c20',1,'comma::Coarse_Cell_Container']]], + ['_5fcc_5fgraph_4',['_cc_graph',['../classcomma_1_1_agglomerator.html#a8451ab2bd5cb83611182ff63ee6df949',1,'comma::Agglomerator::_cc_graph()'],['../classcomma_1_1_coarse___cell___subgraph.html#a13e2b439ea8381b74bf91b1e1222fde2',1,'comma::Coarse_Cell_Subgraph::_cc_graph()']]], + ['_5fccs_5',['_ccs',['../classcomma_1_1_coarse___cell___container.html#a00994ecc5f6dae2f9ab6bb376e50931a',1,'comma::Coarse_Cell_Container']]], + ['_5fcenters_6',['_centers',['../classcomma_1_1_dual___graph.html#a49d4b45fcbf985e001a9137f38d8fd0d',1,'comma::Dual_Graph']]], + ['_5fcompactness_7',['_compactness',['../classcomma_1_1_coarse___cell.html#ab872db2f751d586c971943e25d9f0c65',1,'comma::Coarse_Cell::_compactness()'],['../classcomma_1_1_subgraph.html#a297656c72928fe5c7f9892a70595f973',1,'comma::Subgraph::_compactness()']]], + ['_5fcompute_5far_8',['_compute_AR',['../classcomma_1_1_agglomerator.html#ac8cfb2dbc276a34680c0f1fee2b3c390',1,'comma::Agglomerator::_compute_AR()'],['../classcomma_1_1_dual___graph.html#adbc7f2b85fe3771b78a1d485575ed4a3',1,'comma::Dual_Graph::_compute_AR()']]], + ['_5fcur_5ftop_5fqueue_9',['_cur_top_queue',['../classcomma_1_1_seeds___pool.html#ab12ee6a6886337d0a11eff12c9dcda9c',1,'comma::Seeds_Pool']]], + ['_5fdelayed_5fcc_10',['_delayed_cc',['../classcomma_1_1_coarse___cell___container.html#a3524485e16d28d4eda3cac529a882ae6',1,'comma::Coarse_Cell_Container']]], + ['_5fdimension_11',['_dimension',['../classcomma_1_1_agglomerator.html#abfae2aa7f2f81094f283990406492cc3',1,'comma::Agglomerator::_dimension()'],['../classcomma_1_1_neighbourhood___pure___front.html#abb29cb2a39fe869e98626c420b08531f',1,'comma::Neighbourhood_Pure_Front::_dimension()']]], + ['_5ffather_12',['_father',['../classcomma_1_1_node.html#a1392428dc13cfdbeca98c01003402b3f',1,'comma::Node']]], + ['_5ffc_5f2_5fcc_13',['_fc_2_cc',['../classcomma_1_1_coarse___cell___container.html#a4552eff1fb2fb15974b835d765b61e4b',1,'comma::Coarse_Cell_Container']]], + ['_5ffc_5fgraph_14',['_fc_graph',['../classcomma_1_1_agglomerator.html#a851078a996985840835428c7bef3c942',1,'comma::Agglomerator::_fc_graph()'],['../classcomma_1_1_coarse___cell___container.html#a86e1e85dcd0d95bfd49a267960d4ea58',1,'comma::Coarse_Cell_Container::_fc_graph()'],['../classcomma_1_1_coarse___cell.html#a910e720ead09571ffcae75f604e6b310',1,'comma::Coarse_Cell::_fc_graph()']]], + ['_5ffc_5fiter_15',['_fc_iter',['../classcomma_1_1_agglomerator___isotropic.html#a5d71e7a65e072879cdf53c3ebd29b655',1,'comma::Agglomerator_Isotropic']]], + ['_5fgoal_5fcard_16',['_goal_card',['../classcomma_1_1_agglomerator.html#acffaa9cdc55cd1affe6d3e2924f46f81',1,'comma::Agglomerator']]], + ['_5fidx_17',['_idx',['../classcomma_1_1_coarse___cell.html#a13151d1da32d3567c38227842ba1d19f',1,'comma::Coarse_Cell']]], + ['_5findex_18',['_index',['../classcomma_1_1_node.html#abb78e37b6c11686abeaf744f0e29ec2a',1,'comma::Node']]], + ['_5finitializator_19',['_initializator',['../classcomma_1_1_seeds___pool.html#ac1d8be5640d4c3de04958b4aa9e0e75f',1,'comma::Seeds_Pool']]], + ['_5fis_5fconnected_20',['_is_connected',['../classcomma_1_1_coarse___cell___subgraph.html#aa143ca9ef420d4794ddad99596f8e74f',1,'comma::Coarse_Cell_Subgraph']]], + ['_5fis_5fconnectivity_5fup_5fto_5fdate_21',['_is_connectivity_up_to_date',['../classcomma_1_1_coarse___cell___subgraph.html#a6b0355c909f3fa0124da54545c504977',1,'comma::Coarse_Cell_Subgraph']]], + ['_5fis_5ffc_5fagglomerated_22',['_is_fc_agglomerated',['../classcomma_1_1_coarse___cell___container.html#a7d4a556613699b7ab500717238bd7cf9',1,'comma::Coarse_Cell_Container']]], + ['_5fis_5fisotropic_23',['_is_isotropic',['../classcomma_1_1_coarse___cell.html#a39e720f43721fb92283e90641c884549',1,'comma::Coarse_Cell::_is_isotropic()'],['../classcomma_1_1_subgraph.html#a230d6568fd758a52709f60c1601662c8',1,'comma::Subgraph::_is_isotropic()']]], + ['_5fl_5fnb_5fof_5fcells_24',['_l_nb_of_cells',['../classcomma_1_1_agglomerator.html#a26017de7f4165439358cf9ad65c608ba',1,'comma::Agglomerator']]], + ['_5fl_5fof_5fseeds_25',['_l_of_seeds',['../classcomma_1_1_seeds___pool.html#a0d840ac2abaa80ac8d2e5ff80ca9984d',1,'comma::Seeds_Pool']]], + ['_5fleft_5fidx_26',['_left_idx',['../classcomma_1_1_node.html#aa27241e12cb061d59c589bd3364bea47',1,'comma::Node']]], + ['_5fleft_5fson_5fidx_27',['_left_son_idx',['../classcomma_1_1_node.html#a0bf32c66dc95f86917b1a5bcd59a0eb8',1,'comma::Node']]], + ['_5fm_5fcrs_5fcol_5find_28',['_m_CRS_Col_Ind',['../classcomma_1_1_graph.html#aa8d637d0718dbf470f51d8a7a07f3baa',1,'comma::Graph']]], + ['_5fm_5fcrs_5frow_5fptr_29',['_m_CRS_Row_Ptr',['../classcomma_1_1_graph.html#a708321a816653163524e7f261bbe4cbe',1,'comma::Graph']]], + ['_5fm_5fcrs_5fvalues_30',['_m_CRS_Values',['../classcomma_1_1_graph.html#a07cb0d55e652d04e3e7c83c02efa757e',1,'comma::Graph']]], + ['_5fmapa_31',['_mapA',['../classcomma_1_1_bimap.html#ad7078e25a5c856ca2921c4dc34f7cd16',1,'comma::Bimap']]], + ['_5fmapb_32',['_mapB',['../classcomma_1_1_bimap.html#aa15dba38c92794eedf5978c84a9b19e5',1,'comma::Bimap']]], + ['_5fmapping_5fl_5fto_5fg_33',['_mapping_l_to_g',['../classcomma_1_1_subgraph.html#a4ed3e10de29d6b5ffefd442abb5bd164',1,'comma::Subgraph']]], + ['_5fmax_5fcard_34',['_max_card',['../classcomma_1_1_agglomerator.html#ac9361db0f6352efc61cde4882c8e7f42',1,'comma::Agglomerator']]], + ['_5fmin_5fcard_35',['_min_card',['../classcomma_1_1_agglomerator.html#a6587a8cd2ccb77bde337efe69f232980',1,'comma::Agglomerator']]], + ['_5fmin_5fneighbourhood_36',['_min_neighbourhood',['../classcomma_1_1_agglomerator.html#aad1aaacca4a000d6ee819f9d36385f99',1,'comma::Agglomerator']]], + ['_5fn_5fbnd_5ffaces_37',['_n_bnd_faces',['../classcomma_1_1_dual___graph.html#aa791a6c06faf85eeab349adbb7010b7e',1,'comma::Dual_Graph::_n_bnd_faces()'],['../classcomma_1_1_seeds___pool.html#af94325238592b000a2549eccf7905f58',1,'comma::Seeds_Pool::_n_bnd_faces()']]], + ['_5fnb_5flines_38',['_nb_lines',['../classcomma_1_1_agglomerator___anisotropic.html#af3090efb008f7fd601afcad457be5294',1,'comma::Agglomerator_Anisotropic']]], + ['_5fnb_5fof_5fagglomerated_5ffc_39',['_nb_of_agglomerated_fc',['../classcomma_1_1_coarse___cell___container.html#a16e9f6a6002a7a3580b7f1d017a15b99',1,'comma::Coarse_Cell_Container']]], + ['_5fneigh_5fcrtor_40',['_neigh_crtor',['../classcomma_1_1_agglomerator___isotropic.html#a5c6f7d604d05f97dcf8c61ace4e49aef',1,'comma::Agglomerator_Isotropic']]], + ['_5fnumber_5fof_5fcells_41',['_number_of_cells',['../classcomma_1_1_graph.html#ad04e5b90c7fc132406dae34bb8f9fa49',1,'comma::Graph']]], + ['_5fodd_5fline_5flength_42',['_odd_line_length',['../classcomma_1_1_agglomerator___anisotropic.html#a231b51e38cfd45989b02fb7ea383e6a9',1,'comma::Agglomerator_Anisotropic']]], + ['_5fpriority_5fweights_43',['_priority_weights',['../classcomma_1_1_seeds___pool.html#a12a6662e2f8e508e852c76f36df1ff17',1,'comma::Seeds_Pool']]], + ['_5fq_5fneighs_5fw_5fweights_44',['_q_neighs_w_weights',['../classcomma_1_1_neighbourhood___pure___front.html#ab4f56f2ddccb9f209a1192f931062456',1,'comma::Neighbourhood_Pure_Front']]], + ['_5fright_5fidx_45',['_right_idx',['../classcomma_1_1_node.html#a00784e85c969362df47c971dfcd3a8f5',1,'comma::Node']]], + ['_5froot_46',['_root',['../classcomma_1_1_tree.html#a1807654696d35f467175dfae12ef3f8c',1,'comma::Tree']]], + ['_5fs_5fanisotropic_5fcompliant_5fcells_47',['_s_anisotropic_compliant_cells',['../classcomma_1_1_dual___graph.html#af16576287d20ef656d4d7fa3479f0bed',1,'comma::Dual_Graph']]], + ['_5fs_5ffc_48',['_s_fc',['../classcomma_1_1_coarse___cell.html#a90d3d1c06f292560c3d4c47c19c7931d',1,'comma::Coarse_Cell::_s_fc()'],['../classcomma_1_1_neighbourhood.html#aab45271f5bea1f6519cab6c069df7bac',1,'comma::Neighbourhood::_s_fc()']]], + ['_5fs_5fneighbours_5fof_5fseed_49',['_s_neighbours_of_seed',['../classcomma_1_1_neighbourhood.html#a357ce64ac4e6d2e9ff5e9e7e75157886',1,'comma::Neighbourhood']]], + ['_5fseeds_5fpool_50',['_seeds_pool',['../classcomma_1_1_agglomerator.html#acd76d69424ca63f9e726eccb31f26773',1,'comma::Agglomerator']]], + ['_5fshould_5fagglomerate_51',['_should_agglomerate',['../classcomma_1_1_agglomerator___anisotropic.html#a6f8e9378cb1709de43dedd5a1c3c6d5d',1,'comma::Agglomerator_Anisotropic']]], + ['_5fsing_5fcard_5fthresh_52',['_sing_card_thresh',['../classcomma_1_1_coarse___cell___container.html#a337440485655e84a57e8a7e9d1d3ca8f',1,'comma::Coarse_Cell_Container']]], + ['_5fsingular_5fcc_53',['_singular_cc',['../classcomma_1_1_coarse___cell___container.html#a08300d61da9f6559f580b29003e1f689',1,'comma::Coarse_Cell_Container']]], + ['_5fsonc_54',['_sonc',['../classcomma_1_1_node.html#aa73c0969d0ff731040bc3c684913c86c',1,'comma::Node']]], + ['_5fthreshold_5fcard_55',['_threshold_card',['../classcomma_1_1_agglomerator.html#a8d135285ab3126712b031a51cfa871b2',1,'comma::Agglomerator']]], + ['_5fv_5flines_56',['_v_lines',['../classcomma_1_1_agglomerator___anisotropic.html#aace7d0d96f2efb496df20b4f221d7872',1,'comma::Agglomerator_Anisotropic']]], + ['_5fvisited_57',['_visited',['../classcomma_1_1_graph.html#aec53729d369659cd15a85198a8d0595f',1,'comma::Graph']]], + ['_5fvolume_58',['_volume',['../classcomma_1_1_node.html#a1ab325d368510e673507beae3116e78e',1,'comma::Node']]], + ['_5fvolumes_59',['_volumes',['../classcomma_1_1_graph.html#ad7ed39610dc52059d435b5c94f099f7b',1,'comma::Graph']]], + ['_5fweights_60',['_weights',['../classcomma_1_1_neighbourhood.html#a0c2d7202d396da52d62d4b7463c5d947',1,'comma::Neighbourhood']]] ]; diff --git a/search/all_1.js b/search/all_1.js index 60b9db4..af41002 100644 --- a/search/all_1.js +++ b/search/all_1.js @@ -1,12 +1,12 @@ var searchData= [ - ['agglomerate_5fone_5flevel_0',['agglomerate_one_level',['../class_agglomerator___isotropic.html#a7c47e1d03561b56428dbee75803612f1',1,'Agglomerator_Isotropic::agglomerate_one_level()'],['../_co_m_m_a_8h.html#a906c231be20a1f53a240618bae81d95f',1,'agglomerate_one_level(): CoMMA.h'],['../class_agglomerator___anisotropic.html#acdf28be45307f3ee1a30e120dd91ac24',1,'Agglomerator_Anisotropic::agglomerate_one_level()'],['../class_agglomerator.html#a9ec8984ec317c1a6588f2aa004e83c30',1,'Agglomerator::agglomerate_one_level()']]], - ['agglomerator_1',['Agglomerator',['../class_agglomerator.html',1,'Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_agglomerator.html#a7f04bd9151b63c4945af474d0173df26',1,'Agglomerator::Agglomerator()']]], + ['agglomerate_5fone_5flevel_0',['agglomerate_one_level',['../classcomma_1_1_agglomerator___isotropic.html#a7690b334b4f4d143d5edef7e015226c5',1,'comma::Agglomerator_Isotropic::agglomerate_one_level()'],['../namespacecomma.html#aa6987db36673ecd638a9b08dfaac18b1',1,'comma::agglomerate_one_level()'],['../classcomma_1_1_agglomerator___anisotropic.html#a679ba0b3f517db87b18a0707d71a6432',1,'comma::Agglomerator_Anisotropic::agglomerate_one_level()'],['../classcomma_1_1_agglomerator.html#ad318f38cc60db419207fa1def39e2269',1,'comma::Agglomerator::agglomerate_one_level(const CoMMAIntType goal_card, const CoMMAIntType min_card, const CoMMAIntType max_card, const std::vector< CoMMAWeightType > &priority_weights, bool correction_steps)=0']]], + ['agglomerator_1',['Agglomerator',['../classcomma_1_1_agglomerator.html#a476edf422e78d865666af88b5757ed7c',1,'comma::Agglomerator::Agglomerator()'],['../classcomma_1_1_agglomerator.html',1,'comma::Agglomerator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >']]], ['agglomerator_2eh_2',['Agglomerator.h',['../_agglomerator_8h.html',1,'']]], - ['agglomerator_5fanisotropic_3',['Agglomerator_Anisotropic',['../class_agglomerator___anisotropic.html#ac765abc6d952dbe3b81e1bee877fcb69',1,'Agglomerator_Anisotropic::Agglomerator_Anisotropic()'],['../class_agglomerator___anisotropic.html',1,'Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >']]], - ['agglomerator_5fbiconnected_4',['Agglomerator_Biconnected',['../class_agglomerator___biconnected.html',1,'Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_agglomerator___biconnected.html#a66a006a8b8b2f02b3bbfef050c1190d6',1,'Agglomerator_Biconnected::Agglomerator_Biconnected()']]], - ['agglomerator_5fisotropic_5',['Agglomerator_Isotropic',['../class_agglomerator___isotropic.html',1,'Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_agglomerator___isotropic.html#a72d96dedea94efc932d50ae95e9aa01d',1,'Agglomerator_Isotropic::Agglomerator_Isotropic()']]], - ['agglomerator_5fiterative_6',['Agglomerator_Iterative',['../class_agglomerator___iterative.html',1,'Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_agglomerator___iterative.html#a5b2972f94b006e90d8e5878e272378d2',1,'Agglomerator_Iterative::Agglomerator_Iterative()']]], - ['anisotropicline_7',['AnisotropicLine',['../class_agglomerator___anisotropic.html#a1f9699116b07859f52101dabe450b475',1,'Agglomerator_Anisotropic']]], - ['anisotropiclineptr_8',['AnisotropicLinePtr',['../class_agglomerator___anisotropic.html#af5d54b1e2a586ecb589251f64db47681',1,'Agglomerator_Anisotropic']]] + ['agglomerator_5fanisotropic_3',['Agglomerator_Anisotropic',['../classcomma_1_1_agglomerator___anisotropic.html#a5c939c5706f8c9c47675e3df657568fb',1,'comma::Agglomerator_Anisotropic::Agglomerator_Anisotropic()'],['../classcomma_1_1_agglomerator___anisotropic.html',1,'comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >']]], + ['agglomerator_5fbiconnected_4',['Agglomerator_Biconnected',['../classcomma_1_1_agglomerator___biconnected.html#a4553e29aeae7a83000d10e48564e6cca',1,'comma::Agglomerator_Biconnected::Agglomerator_Biconnected()'],['../classcomma_1_1_agglomerator___biconnected.html',1,'comma::Agglomerator_Biconnected< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >']]], + ['agglomerator_5fisotropic_5',['Agglomerator_Isotropic',['../classcomma_1_1_agglomerator___isotropic.html#a8d0b6d4158f367ac301e93bbe29d0970',1,'comma::Agglomerator_Isotropic::Agglomerator_Isotropic()'],['../classcomma_1_1_agglomerator___isotropic.html',1,'comma::Agglomerator_Isotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >']]], + ['agglomerator_5fiterative_6',['Agglomerator_Iterative',['../classcomma_1_1_agglomerator___iterative.html#ab6fe2d081288e81892bb0c251fcb2f47',1,'comma::Agglomerator_Iterative::Agglomerator_Iterative()'],['../classcomma_1_1_agglomerator___iterative.html',1,'comma::Agglomerator_Iterative< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >']]], + ['anisotropicline_7',['AnisotropicLine',['../classcomma_1_1_agglomerator___anisotropic.html#a9479673f4208b7edd7c0b8884a06c4b7',1,'comma::Agglomerator_Anisotropic']]], + ['anisotropiclineptr_8',['AnisotropicLinePtr',['../classcomma_1_1_agglomerator___anisotropic.html#a9de6a86962a319a3cd058000fade94e0',1,'comma::Agglomerator_Anisotropic']]] ]; diff --git a/search/all_10.js b/search/all_10.js index a1aa50a..12e28bc 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -1,22 +1,10 @@ var searchData= [ - ['search_0',['search',['../class_tree.html#a0c351d4a8573a2f786638e96a06f10b7',1,'Tree']]], - ['second_1',['second',['../class_priority___pair.html#a3667ccbd1eaedd085805055e4d818c00',1,'Priority_Pair']]], - ['seeds_5fpool_2',['Seeds_Pool',['../class_seeds___pool.html',1,'Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_seeds___pool.html#a1567e2e69f9de4642a48a62dc3688c17',1,'Seeds_Pool::Seeds_Pool()']]], - ['seeds_5fpool_2eh_3',['Seeds_Pool.h',['../_seeds___pool_8h.html',1,'']]], - ['seeds_5fpool_5fboundary_5fpriority_4',['Seeds_Pool_Boundary_Priority',['../class_seeds___pool___boundary___priority.html',1,'Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_seeds___pool___boundary___priority.html#aa286e6beeaf6cc1915ed1de6b5b5cc6f',1,'Seeds_Pool_Boundary_Priority::Seeds_Pool_Boundary_Priority()']]], - ['seeds_5fpool_5fneighbourhood_5fpriority_5',['Seeds_Pool_Neighbourhood_Priority',['../class_seeds___pool___neighbourhood___priority.html#afc8716dedda1636bce1de070b9f90326',1,'Seeds_Pool_Neighbourhood_Priority::Seeds_Pool_Neighbourhood_Priority()'],['../class_seeds___pool___neighbourhood___priority.html',1,'Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >']]], - ['seedspoolbasetype_6',['SeedsPoolBaseType',['../class_seeds___pool___boundary___priority.html#a607c4ab9284f6116d12e4356fe4702b6',1,'Seeds_Pool_Boundary_Priority::SeedsPoolBaseType()'],['../class_seeds___pool___neighbourhood___priority.html#a1fa4863f05ee5d83399275bfcd430e53',1,'Seeds_Pool_Neighbourhood_Priority::SeedsPoolBaseType()']]], - ['select_5fbest_5fcc_5fto_5fagglomerate_7',['select_best_cc_to_agglomerate',['../class_coarse___cell___container.html#aba3dc19912418f8bd60fc006c6d17e6d',1,'Coarse_Cell_Container']]], - ['select_5fbest_5fcc_5fto_5fagglomerate_5fwhole_8',['select_best_cc_to_agglomerate_whole',['../class_coarse___cell___container.html#a420e4d3b4c4b4a11c151a5caf31f26d3',1,'Coarse_Cell_Container']]], - ['set_5fagglomeration_5fparameter_9',['set_agglomeration_parameter',['../class_agglomerator___isotropic.html#a7cc56d96d75a20a5f87c73f9459bbeef',1,'Agglomerator_Isotropic']]], - ['set_5ftop_5fqueue_10',['set_top_queue',['../class_seeds___pool.html#af2a613ae8e3acd93667292399fe925fc',1,'Seeds_Pool']]], - ['spfullinitializator_11',['SPFullInitializator',['../struct_s_p_full_initializator.html',1,'']]], - ['spinitializator_12',['SPInitializator',['../struct_s_p_initializator.html',1,'']]], - ['spoil_5fqueue_13',['spoil_queue',['../class_seeds___pool.html#ac134287c9c4d234dbc2e73b5aa2db96b',1,'Seeds_Pool']]], - ['sponepointinitializator_14',['SPOnePointInitializator',['../struct_s_p_one_point_initializator.html',1,'']]], - ['squared_5feuclidean_5fdistance_15',['squared_euclidean_distance',['../_util_8h.html#a4cbf9d2aae5e1f86e108538e5baa10f8',1,'Util.h']]], - ['subgraph_16',['Subgraph',['../class_subgraph.html',1,'Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_subgraph.html#ad7ef3fa10ed764d28f653451e52c4897',1,'Subgraph::Subgraph()']]], - ['subgraphptr_17',['SubGraphPtr',['../class_coarse___cell___subgraph.html#ac834adecb0b435e9722eb1e138bdac76',1,'Coarse_Cell_Subgraph']]], - ['subgraphtype_18',['SubGraphType',['../class_coarse___cell___subgraph.html#ab1c363143bc71d7b35e942d44eac78ab',1,'Coarse_Cell_Subgraph']]] + ['tag_5fanisotropic_5fcells_0',['tag_anisotropic_cells',['../classcomma_1_1_dual___graph.html#ae54c9474438da03527cc8eab80362cf3',1,'comma::Dual_Graph']]], + ['templatehelpers_2eh_1',['templateHelpers.h',['../template_helpers_8h.html',1,'']]], + ['todo_20list_2',['Todo List',['../todo.html',1,'']]], + ['top_3',['top',['../classcomma_1_1_queue.html#a2f3e001cc9477b9ed8015bd2118702bf',1,'comma::Queue']]], + ['transverse_4',['transverse',['../classcomma_1_1_tree.html#aa8d121b22ac52df459f125da7b1c939b',1,'comma::Tree']]], + ['tree_5',['Tree',['../classcomma_1_1_tree.html',1,'comma::Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_tree.html#afa76cefe052c105cbdf5a89e6171e001',1,'comma::Tree::Tree()']]], + ['tree_2eh_6',['Tree.h',['../_tree_8h.html',1,'']]] ]; diff --git a/search/all_11.js b/search/all_11.js index 5660599..93e7abd 100644 --- a/search/all_11.js +++ b/search/all_11.js @@ -1,10 +1,9 @@ var searchData= [ - ['tag_5fanisotropic_5fcells_0',['tag_anisotropic_cells',['../class_dual___graph.html#ab33e369fe1af55d0f913f64143d8c6ce',1,'Dual_Graph']]], - ['templatehelpers_2eh_1',['templateHelpers.h',['../template_helpers_8h.html',1,'']]], - ['todo_20list_2',['Todo List',['../todo.html',1,'']]], - ['top_3',['top',['../class_queue.html#ac6f60c0282f64f3197d309e4f414da6f',1,'Queue']]], - ['transverse_4',['transverse',['../class_tree.html#a2ea9eda153ab0589b22d324e25ac8a8c',1,'Tree']]], - ['tree_5',['Tree',['../class_tree.html',1,'Tree< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_tree.html#ac75043a79cf9985ace5f340c311492a7',1,'Tree::Tree()']]], - ['tree_2eh_6',['Tree.h',['../_tree_8h.html',1,'']]] + ['update_0',['update',['../classcomma_1_1_neighbourhood.html#a2a993a6864f21796dafeb06778cb461d',1,'comma::Neighbourhood::update()'],['../classcomma_1_1_neighbourhood___extended.html#a452c8c35e83e2b4a28cb4e60362bcfed',1,'comma::Neighbourhood_Extended::update()'],['../classcomma_1_1_neighbourhood___pure___front.html#ae1b96c3d2b2421520cdef03e16a7d102',1,'comma::Neighbourhood_Pure_Front::update()'],['../classcomma_1_1_seeds___pool.html#a822572a26fb4a9f1efef060d3ecada9f',1,'comma::Seeds_Pool::update()'],['../classcomma_1_1_seeds___pool___boundary___priority.html#adff771d42e189fd9f51ec5ca70c5ad0d',1,'comma::Seeds_Pool_Boundary_Priority::update()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#af2883cfa457dc93928f31d35f7e62a3c',1,'comma::Seeds_Pool_Neighbourhood_Priority::update()']]], + ['update_5fconnectivity_1',['update_connectivity',['../classcomma_1_1_coarse___cell___subgraph.html#a2961e12f53d52fb01a1be0243ea45126',1,'comma::Coarse_Cell_Subgraph']]], + ['update_5fnodea_2',['update_nodeA',['../classcomma_1_1_bimap.html#a1651c9075b5bd0895e3d3deda3dca566',1,'comma::Bimap']]], + ['update_5fnodeb_3',['update_nodeB',['../classcomma_1_1_bimap.html#aca11af6d19701ce17ce0dc05f25af6ec',1,'comma::Bimap']]], + ['update_5fseeds_5fpool_4',['update_seeds_pool',['../classcomma_1_1_agglomerator___anisotropic.html#a3ed52576f0b6698a69f388f295a2e1c5',1,'comma::Agglomerator_Anisotropic']]], + ['util_2eh_5',['Util.h',['../_util_8h.html',1,'']]] ]; diff --git a/search/all_12.js b/search/all_12.js index b1a02fb..3ed811a 100644 --- a/search/all_12.js +++ b/search/all_12.js @@ -1,9 +1,5 @@ var searchData= [ - ['update_0',['update',['../class_neighbourhood.html#a977a87103b31f7709bd762499c0e4fa0',1,'Neighbourhood::update()'],['../class_neighbourhood___extended.html#a3ae4f2f2052bc05e6f431a35ef06bcbb',1,'Neighbourhood_Extended::update()'],['../class_neighbourhood___pure___front.html#a487983e2d219c5527a9151056d61b7ed',1,'Neighbourhood_Pure_Front::update()'],['../class_seeds___pool.html#adc6a34efef0ec0ffe69a4d4b50741d07',1,'Seeds_Pool::update()'],['../class_seeds___pool___boundary___priority.html#acba386e4effac0b7d795ba8b2fb41372',1,'Seeds_Pool_Boundary_Priority::update()'],['../class_seeds___pool___neighbourhood___priority.html#a114213b8d042b86fd4c735b74c4af8a5',1,'Seeds_Pool_Neighbourhood_Priority::update()']]], - ['update_5fconnectivity_1',['update_connectivity',['../class_coarse___cell___subgraph.html#a66b1e4e891688f3ec18bd1d91b80b968',1,'Coarse_Cell_Subgraph']]], - ['update_5fnodea_2',['update_nodeA',['../class_bimap.html#a8f0d12e64f86e857b3ec6f709301c186',1,'Bimap']]], - ['update_5fnodeb_3',['update_nodeB',['../class_bimap.html#adcf24cc8cc3f6fbef8783712d00415e2',1,'Bimap']]], - ['update_5fseeds_5fpool_4',['update_seeds_pool',['../class_agglomerator___anisotropic.html#a25a66ffe537285ba800a6ea7ab4b8238',1,'Agglomerator_Anisotropic']]], - ['util_2eh_5',['Util.h',['../_util_8h.html',1,'']]] + ['valley_0',['VALLEY',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8a4f18a70072d52370244908b93cf13e85',1,'comma']]], + ['vector_5fof_5ffirst_5felements_1',['vector_of_first_elements',['../namespacecomma.html#ab712cf58df5dacc470f08332abdde7ec',1,'comma']]] ]; diff --git a/search/all_13.js b/search/all_13.js index 8884845..bfcbd30 100644 --- a/search/all_13.js +++ b/search/all_13.js @@ -1,5 +1,6 @@ var searchData= [ - ['valley_0',['VALLEY',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9a427eb63b284bf229741f0a93da2222e7',1,'CoMMATypes.h']]], - ['vector_5fof_5ffirst_5felements_1',['vector_of_first_elements',['../_util_8h.html#a4eb847819a7f5df06f9de67ff7dff82a',1,'Util.h']]] + ['weights_5fcbegin_0',['weights_cbegin',['../classcomma_1_1_graph.html#a036c1da6e0297d153c0a1dea0aeee8b9',1,'comma::Graph']]], + ['weights_5fcend_1',['weights_cend',['../classcomma_1_1_graph.html#a9974d87bd1fc67902f8c5fc400a3ad71',1,'comma::Graph']]], + ['welcome_20to_20comma_2',['Welcome to CoMMA',['../index.html',1,'']]] ]; diff --git a/search/all_14.js b/search/all_14.js index 1e9f05a..b55b409 100644 --- a/search/all_14.js +++ b/search/all_14.js @@ -1,6 +1,30 @@ var searchData= [ - ['weights_5fcbegin_0',['weights_cbegin',['../class_graph.html#a902a970714be95d373a5b18de1cddaeb',1,'Graph']]], - ['weights_5fcend_1',['weights_cend',['../class_graph.html#a12311cab4fac8b78b4e61df8c0337a98',1,'Graph']]], - ['welcome_20to_20comma_2',['Welcome to CoMMA',['../index.html',1,'']]] + ['_7eagglomerator_0',['~Agglomerator',['../classcomma_1_1_agglomerator.html#a38fbd9dc2f6718a7c909bd524cd4a2f4',1,'comma::Agglomerator']]], + ['_7eagglomerator_5fanisotropic_1',['~Agglomerator_Anisotropic',['../classcomma_1_1_agglomerator___anisotropic.html#aa9bfcf6f6403c97bff9c9bba8673a377',1,'comma::Agglomerator_Anisotropic']]], + ['_7eagglomerator_5fbiconnected_2',['~Agglomerator_Biconnected',['../classcomma_1_1_agglomerator___biconnected.html#a1e429e7e1e8cca0447b7322a4636ca1b',1,'comma::Agglomerator_Biconnected']]], + ['_7eagglomerator_5fisotropic_3',['~Agglomerator_Isotropic',['../classcomma_1_1_agglomerator___isotropic.html#aa254625482275446b207051f544fd92f',1,'comma::Agglomerator_Isotropic']]], + ['_7eagglomerator_5fiterative_4',['~Agglomerator_Iterative',['../classcomma_1_1_agglomerator___iterative.html#a5e67fbff68bf868258ebdf1637a83ab6',1,'comma::Agglomerator_Iterative']]], + ['_7ebimap_5',['~Bimap',['../classcomma_1_1_bimap.html#a4a12f2d28cbd33146b138ebae62aaf35',1,'comma::Bimap']]], + ['_7ecoarse_5fcell_6',['~Coarse_Cell',['../classcomma_1_1_coarse___cell.html#ac53b192d8a56d61153d33524b3b1663d',1,'comma::Coarse_Cell']]], + ['_7ecoarse_5fcell_5fcontainer_7',['~Coarse_Cell_Container',['../classcomma_1_1_coarse___cell___container.html#ac64a40e0897db7510ba5e5b874891268',1,'comma::Coarse_Cell_Container']]], + ['_7edual_5fgraph_8',['~Dual_Graph',['../classcomma_1_1_dual___graph.html#ad2ece10214db2a38f54b4c2e4ab4451f',1,'comma::Dual_Graph']]], + ['_7egraph_9',['~Graph',['../classcomma_1_1_graph.html#ad7d4773cefcbc9627b0779e28824e1f8',1,'comma::Graph']]], + ['_7eneighbourhood_10',['~Neighbourhood',['../classcomma_1_1_neighbourhood.html#ae54c6b0bf42c2ec21c56308a1cddf05b',1,'comma::Neighbourhood']]], + ['_7eneighbourhood_5fextended_11',['~Neighbourhood_Extended',['../classcomma_1_1_neighbourhood___extended.html#ada067e494ee4d1ed5533aa26384806f9',1,'comma::Neighbourhood_Extended']]], + ['_7eneighbourhood_5fpure_5ffront_12',['~Neighbourhood_Pure_Front',['../classcomma_1_1_neighbourhood___pure___front.html#a2ed8fac1690468f67afe039ac052a5d2',1,'comma::Neighbourhood_Pure_Front']]], + ['_7eneighbourhoodcreator_13',['~NeighbourhoodCreator',['../classcomma_1_1_neighbourhood_creator.html#a8e26c2ebfc2006e05c528dd70293e274',1,'comma::NeighbourhoodCreator']]], + ['_7eneighbourhoodextendedcreator_14',['~NeighbourhoodExtendedCreator',['../classcomma_1_1_neighbourhood_extended_creator.html#a2412e4b615346b2dfa34ab3aba147ef4',1,'comma::NeighbourhoodExtendedCreator']]], + ['_7eneighbourhoodpurefrontcreator_15',['~NeighbourhoodPureFrontCreator',['../classcomma_1_1_neighbourhood_pure_front_creator.html#a762a03d248377977aa1c60eacd4479a8',1,'comma::NeighbourhoodPureFrontCreator']]], + ['_7epairfindfirstbasedfunctor_16',['~PairFindFirstBasedFunctor',['../classcomma_1_1_pair_find_first_based_functor.html#a6ee63654dfa0f1c4676f198b318a9bed',1,'comma::PairFindFirstBasedFunctor']]], + ['_7epriority_5fpair_17',['~Priority_Pair',['../classcomma_1_1_priority___pair.html#a00bcb87b3275b43aaa493fd50dfa19f5',1,'comma::Priority_Pair']]], + ['_7equeue_18',['~Queue',['../classcomma_1_1_queue.html#a995428caef81f88244df2c05972252bf',1,'comma::Queue']]], + ['_7eseeds_5fpool_19',['~Seeds_Pool',['../classcomma_1_1_seeds___pool.html#a7179db66333b68d1229bb8056dedf97d',1,'comma::Seeds_Pool']]], + ['_7eseeds_5fpool_5fboundary_5fpriority_20',['~Seeds_Pool_Boundary_Priority',['../classcomma_1_1_seeds___pool___boundary___priority.html#a9b8cb88165b0e4d5cdbd35430122e126',1,'comma::Seeds_Pool_Boundary_Priority']]], + ['_7eseeds_5fpool_5fneighbourhood_5fpriority_21',['~Seeds_Pool_Neighbourhood_Priority',['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a5f8c325ed9efd6476c36b9a979273fb1',1,'comma::Seeds_Pool_Neighbourhood_Priority']]], + ['_7espfullinitializator_22',['~SPFullInitializator',['../structcomma_1_1_s_p_full_initializator.html#a41002d642267555e928ce4979c27d2c0',1,'comma::SPFullInitializator']]], + ['_7espinitializator_23',['~SPInitializator',['../structcomma_1_1_s_p_initializator.html#a7b3eebdd5c01a9cc42e64458f409bed4',1,'comma::SPInitializator']]], + ['_7esponepointinitializator_24',['~SPOnePointInitializator',['../structcomma_1_1_s_p_one_point_initializator.html#a549cb8f8d1080026044644bd9ccf3a24',1,'comma::SPOnePointInitializator']]], + ['_7esubgraph_25',['~Subgraph',['../classcomma_1_1_subgraph.html#a3cfdb160481138be28f9a51340d99cea',1,'comma::Subgraph']]], + ['_7etree_26',['~Tree',['../classcomma_1_1_tree.html#aeea0d5dc507464848dbb6ee591f512d1',1,'comma::Tree']]] ]; diff --git a/search/all_15.js b/search/all_15.js deleted file mode 100644 index 0d87c9f..0000000 --- a/search/all_15.js +++ /dev/null @@ -1,19 +0,0 @@ -var searchData= -[ - ['_7eagglomerator_0',['~Agglomerator',['../class_agglomerator.html#a7d4c2d619c8e433387d181b3628155cc',1,'Agglomerator']]], - ['_7eagglomerator_5fanisotropic_1',['~Agglomerator_Anisotropic',['../class_agglomerator___anisotropic.html#ac0219221b9c9ee4b730c32246df96246',1,'Agglomerator_Anisotropic']]], - ['_7eagglomerator_5fbiconnected_2',['~Agglomerator_Biconnected',['../class_agglomerator___biconnected.html#ad2c325577dcfe05b9b4d4b27dd37de40',1,'Agglomerator_Biconnected']]], - ['_7eagglomerator_5fisotropic_3',['~Agglomerator_Isotropic',['../class_agglomerator___isotropic.html#aa232687cd2b7b8bc93953d1dff5d4f84',1,'Agglomerator_Isotropic']]], - ['_7eagglomerator_5fiterative_4',['~Agglomerator_Iterative',['../class_agglomerator___iterative.html#a080de7d893873a51618f9ce39a522467',1,'Agglomerator_Iterative']]], - ['_7ebimap_5',['~Bimap',['../class_bimap.html#ac15ec85665c5628b1c5ac0dfdfc27274',1,'Bimap']]], - ['_7ecoarse_5fcell_6',['~Coarse_Cell',['../class_coarse___cell.html#af75a1031ce60bbf121083ddda51f1941',1,'Coarse_Cell']]], - ['_7ecoarse_5fcell_5fcontainer_7',['~Coarse_Cell_Container',['../class_coarse___cell___container.html#acbf8e09f2a919012a743a323564c3b3a',1,'Coarse_Cell_Container']]], - ['_7edual_5fgraph_8',['~Dual_Graph',['../class_dual___graph.html#a0480781b854e4e7542659dfecadee968',1,'Dual_Graph']]], - ['_7egraph_9',['~Graph',['../class_graph.html#a5596a1d6e1d107c5648c70903e8f6a76',1,'Graph']]], - ['_7epairfindfirstbasedfunctor_10',['~PairFindFirstBasedFunctor',['../class_pair_find_first_based_functor.html#af0a85839b1ca6439a4594fdfbbf14550',1,'PairFindFirstBasedFunctor']]], - ['_7epriority_5fpair_11',['~Priority_Pair',['../class_priority___pair.html#ac642de9d7479a589b93ac5cc5751634a',1,'Priority_Pair']]], - ['_7equeue_12',['~Queue',['../class_queue.html#aa7eef1b427e24555780505de20e9acbc',1,'Queue']]], - ['_7eseeds_5fpool_13',['~Seeds_Pool',['../class_seeds___pool.html#a91f79ccf5fda9ea80726b78df15a7b94',1,'Seeds_Pool']]], - ['_7esubgraph_14',['~Subgraph',['../class_subgraph.html#abe3ffa3088420c172fb65840429ea479',1,'Subgraph']]], - ['_7etree_15',['~Tree',['../class_tree.html#adebe85a87b76ce79b6d45bc05ff6b46a',1,'Tree']]] -]; diff --git a/search/all_2.js b/search/all_2.js index a28eef9..4c5fe09 100644 --- a/search/all_2.js +++ b/search/all_2.js @@ -1,11 +1,11 @@ var searchData= [ - ['baseclass_0',['BaseClass',['../class_coarse___cell___subgraph.html#acf2adc2a72a1f59ad4c7cbd630186f18',1,'Coarse_Cell_Subgraph::BaseClass()'],['../class_subgraph.html#ace661b2b2465558589b6beabbfbe3d8c',1,'Subgraph::BaseClass()'],['../class_dual___graph.html#a66fb85f140bc4c7dd8c7af4b1976f6d9',1,'Dual_Graph::BaseClass()'],['../struct_s_p_full_initializator.html#aaaa1049d1803559770144bd222e895f0',1,'SPFullInitializator::BaseClass()'],['../struct_s_p_one_point_initializator.html#a557b7b2989b49ec5fd6d0a4c693ec703',1,'SPOnePointInitializator::BaseClass()']]], - ['bfs_1',['BFS',['../class_graph.html#ae22f936394d29e34b877581e4014cc65',1,'Graph']]], - ['bimap_2',['Bimap',['../class_bimap.html',1,'Bimap< A, B >'],['../class_bimap.html#adab123f3fcc176fabad0712d1479bfb1',1,'Bimap::Bimap()']]], + ['baseclass_0',['BaseClass',['../classcomma_1_1_coarse___cell___subgraph.html#a05670da5aee0809bd88770c7ef9ee00a',1,'comma::Coarse_Cell_Subgraph::BaseClass()'],['../classcomma_1_1_subgraph.html#a769d2fcd1f0d69a5b2741bdec90d409d',1,'comma::Subgraph::BaseClass()'],['../classcomma_1_1_dual___graph.html#ab65d0e9268c98fd72916f2eb16ce4ab4',1,'comma::Dual_Graph::BaseClass()'],['../structcomma_1_1_s_p_full_initializator.html#a3e1e0581f3ad467d53f35e15f851c80d',1,'comma::SPFullInitializator::BaseClass()'],['../structcomma_1_1_s_p_one_point_initializator.html#a23df838a74c07f688109bb52065cee31',1,'comma::SPOnePointInitializator::BaseClass()']]], + ['bfs_1',['BFS',['../classcomma_1_1_graph.html#aeea451f73bc04c2b88a24a4709f28c21',1,'comma::Graph']]], + ['bimap_2',['Bimap',['../classcomma_1_1_bimap.html#a668d1a44f819088e9a97555428949af0',1,'comma::Bimap::Bimap()'],['../classcomma_1_1_bimap.html',1,'comma::Bimap< A, B >']]], ['bimap_2eh_3',['Bimap.h',['../_bimap_8h.html',1,'']]], - ['boundary_5fpriority_4',['BOUNDARY_PRIORITY',['../_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4ad5458f42463e6dbf4422680ac6c473ec',1,'CoMMATypes.h']]], - ['boundary_5fpriority_5fone_5fpoint_5finit_5',['BOUNDARY_PRIORITY_ONE_POINT_INIT',['../_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4aedb5dcddd0aa551778485e2bfd5ac87f',1,'CoMMATypes.h']]], - ['build_5fanisotropic_5flines_6',['build_anisotropic_lines',['../class_agglomerator___anisotropic.html#a16ce420726335c28ca83cab73fa3f995',1,'Agglomerator_Anisotropic']]], - ['build_5fqueue_7',['build_queue',['../class_seeds___pool.html#a3b7070b7ddb7c2f856f35407bb76a73f',1,'Seeds_Pool']]] + ['boundary_5fpriority_4',['BOUNDARY_PRIORITY',['../namespacecomma.html#a8c8213401033616d834d48d77bf359a4a7340b7195c9071cd34c7d9a633a3d857',1,'comma']]], + ['boundary_5fpriority_5fone_5fpoint_5finit_5',['BOUNDARY_PRIORITY_ONE_POINT_INIT',['../namespacecomma.html#a8c8213401033616d834d48d77bf359a4a29ddaed9cc8cda952d02296b79010787',1,'comma']]], + ['build_5fanisotropic_5flines_6',['build_anisotropic_lines',['../classcomma_1_1_agglomerator___anisotropic.html#a06284c8df3ba73d75790c1b703774b11',1,'comma::Agglomerator_Anisotropic']]], + ['build_5fqueue_7',['build_queue',['../classcomma_1_1_seeds___pool.html#af927ed91e46d30b8571a964b72f206dc',1,'comma::Seeds_Pool']]] ]; diff --git a/search/all_3.js b/search/all_3.js index d6dcea1..ac0be8a 100644 --- a/search/all_3.js +++ b/search/all_3.js @@ -1,48 +1,44 @@ var searchData= [ - ['candidatescontainertype_0',['CandidatesContainerType',['../class_neighbourhood.html#ab702a531ecdd5f909011e98db309eae9',1,'Neighbourhood']]], - ['cc_5fcreate_5fall_5fdelayed_5fcc_1',['cc_create_all_delayed_cc',['../class_coarse___cell___container.html#a03acb3ee71ea2d53e899943912f7fc12',1,'Coarse_Cell_Container']]], - ['check_5fconnectivity_2',['check_connectivity',['../class_graph.html#af05d0f47a18adcd45211fe6cf795e039',1,'Graph']]], - ['choose_5fnew_5fseed_3',['choose_new_seed',['../class_seeds___pool___neighbourhood___priority.html#a1db03da69eb61cc4f6486d303065261d',1,'Seeds_Pool_Neighbourhood_Priority::choose_new_seed()'],['../class_seeds___pool___boundary___priority.html#af3f91b37d8b3704c6bad00c8324f71be',1,'Seeds_Pool_Boundary_Priority::choose_new_seed()'],['../class_seeds___pool.html#a54aeaf8e86cccde8f7bca556ec005f3c',1,'Seeds_Pool::choose_new_seed()']]], - ['choose_5foptimal_5fcc_5fand_5fupdate_5fseeds_5fpool_4',['choose_optimal_cc_and_update_seeds_pool',['../class_agglomerator___biconnected.html#a48c585ecde2224027023eb2303062c95',1,'Agglomerator_Biconnected::choose_optimal_cc_and_update_seeds_pool()'],['../class_agglomerator___isotropic.html#a2a74055172b861f3de243a55d5cd4622',1,'Agglomerator_Isotropic::choose_optimal_cc_and_update_seeds_pool()']]], - ['clone_5',['clone',['../class_neighbourhood_pure_front_creator.html#a61e707ffe7a0727ed7468777dc9b9d94',1,'NeighbourhoodPureFrontCreator::clone()'],['../class_neighbourhood_extended_creator.html#ac05c6d6367be13473953a9382567b1ad',1,'NeighbourhoodExtendedCreator::clone()'],['../class_neighbourhood_creator.html#ac97c8d2b2d33bb0ac38264fd12da5bcf',1,'NeighbourhoodCreator::clone()']]], - ['coarse_5fcell_6',['Coarse_Cell',['../class_coarse___cell.html',1,'Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_coarse___cell.html#a838221044200a9e58592b27c7f61769b',1,'Coarse_Cell::Coarse_Cell()']]], + ['candidatescontainertype_0',['CandidatesContainerType',['../classcomma_1_1_neighbourhood.html#a777595766a1b44ada43638ab5844f98d',1,'comma::Neighbourhood']]], + ['cc_5fcreate_5fall_5fdelayed_5fcc_1',['cc_create_all_delayed_cc',['../classcomma_1_1_coarse___cell___container.html#aff375cbd38f430300abad77480031841',1,'comma::Coarse_Cell_Container']]], + ['check_5fconnectivity_2',['check_connectivity',['../classcomma_1_1_graph.html#a72c40bec394188475ac30b159388f29f',1,'comma::Graph']]], + ['choose_5fnew_5fseed_3',['choose_new_seed',['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a02b84ea9c154e7475a6952f63595565e',1,'comma::Seeds_Pool_Neighbourhood_Priority::choose_new_seed()'],['../classcomma_1_1_seeds___pool___boundary___priority.html#ae970ce201db03dfd873895b9b9e24c5e',1,'comma::Seeds_Pool_Boundary_Priority::choose_new_seed()'],['../classcomma_1_1_seeds___pool.html#a14a19c8ef86507a6b3f0ff73d3b0a86c',1,'comma::Seeds_Pool::choose_new_seed()']]], + ['choose_5foptimal_5fcc_5fand_5fupdate_5fseeds_5fpool_4',['choose_optimal_cc_and_update_seeds_pool',['../classcomma_1_1_agglomerator___biconnected.html#a3bb82fadd4a4ddd13581102df1491d08',1,'comma::Agglomerator_Biconnected::choose_optimal_cc_and_update_seeds_pool()'],['../classcomma_1_1_agglomerator___isotropic.html#a471fd42799365932adaf4a0123834700',1,'comma::Agglomerator_Isotropic::choose_optimal_cc_and_update_seeds_pool()']]], + ['clone_5',['clone',['../classcomma_1_1_neighbourhood_pure_front_creator.html#a73b13c01032e09c04690d4320174d222',1,'comma::NeighbourhoodPureFrontCreator::clone()'],['../classcomma_1_1_neighbourhood_extended_creator.html#adb1ed78173e7523fc25c3a7e81d1c9a3',1,'comma::NeighbourhoodExtendedCreator::clone()'],['../classcomma_1_1_neighbourhood_creator.html#a5744afc0bb83cb634548bbee1399e935',1,'comma::NeighbourhoodCreator::clone()']]], + ['coarse_5fcell_6',['Coarse_Cell',['../classcomma_1_1_coarse___cell.html#a8037db1d61c0f3d8f3cdd21dcf8dd301',1,'comma::Coarse_Cell::Coarse_Cell()'],['../classcomma_1_1_coarse___cell.html',1,'comma::Coarse_Cell< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >']]], ['coarse_5fcell_2eh_7',['Coarse_Cell.h',['../_coarse___cell_8h.html',1,'']]], - ['coarse_5fcell_5fcontainer_8',['Coarse_Cell_Container',['../class_coarse___cell___container.html',1,'Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_coarse___cell___container.html#a534208d33bc0bdc591223024496a3796',1,'Coarse_Cell_Container::Coarse_Cell_Container()']]], + ['coarse_5fcell_5fcontainer_8',['Coarse_Cell_Container',['../classcomma_1_1_coarse___cell___container.html#aca19a5b3b66ea0d481b315ff012a7725',1,'comma::Coarse_Cell_Container::Coarse_Cell_Container()'],['../classcomma_1_1_coarse___cell___container.html',1,'comma::Coarse_Cell_Container< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >']]], ['coarse_5fcell_5fcontainer_2eh_9',['Coarse_Cell_Container.h',['../_coarse___cell___container_8h.html',1,'']]], - ['coarse_5fcell_5fsubgraph_10',['Coarse_Cell_Subgraph',['../class_coarse___cell___subgraph.html',1,'Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_coarse___cell___subgraph.html#a6721f05cc78e6cc4cb300522acddcf06',1,'Coarse_Cell_Subgraph::Coarse_Cell_Subgraph()']]], - ['coarsecellptr_11',['CoarseCellPtr',['../class_coarse___cell___container.html#a319328848c99b14f01a0914710217371',1,'Coarse_Cell_Container']]], - ['coarsecelltype_12',['CoarseCellType',['../class_coarse___cell___container.html#a66f8c6355a3a99ac2f6487e86f17fc5c',1,'Coarse_Cell_Container']]], - ['comma_2ecpp_13',['CoMMA.cpp',['../_co_m_m_a_8cpp.html',1,'']]], + ['coarse_5fcell_5fsubgraph_10',['Coarse_Cell_Subgraph',['../classcomma_1_1_coarse___cell___subgraph.html#adb533b705811bed203bea788a1ae7e07',1,'comma::Coarse_Cell_Subgraph::Coarse_Cell_Subgraph()'],['../classcomma_1_1_coarse___cell___subgraph.html',1,'comma::Coarse_Cell_Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >']]], + ['coarsecellptr_11',['CoarseCellPtr',['../classcomma_1_1_coarse___cell___container.html#a4670588ea6b7292b0ef8760f589eece4',1,'comma::Coarse_Cell_Container']]], + ['coarsecelltype_12',['CoarseCellType',['../classcomma_1_1_coarse___cell___container.html#a909799f8910487259a0ebee59186b286',1,'comma::Coarse_Cell_Container']]], + ['comma_13',['comma',['../namespacecomma.html',1,'']]], ['comma_2eh_14',['CoMMA.h',['../_co_m_m_a_8h.html',1,'']]], - ['commacellt_15',['CoMMACellT',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9',1,'CoMMATypes.h']]], - ['commaindext_16',['CoMMAIndexT',['../_co_m_m_a_types_8h.html#a4e6760b3d864fac2baff57fd3e865326',1,'CoMMATypes.h']]], - ['commaintt_17',['CoMMAIntT',['../_co_m_m_a_types_8h.html#a2bdf0415b5394aa0a042816dcc3eb0b7',1,'CoMMATypes.h']]], - ['commaneighbourhoodt_18',['CoMMANeighbourhoodT',['../_co_m_m_a_types_8h.html#a317369a7239fe01b94e2a7450c448531',1,'CoMMATypes.h']]], - ['commapairfindfirstbasedtype_19',['CoMMAPairFindFirstBasedType',['../class_neighbourhood___extended.html#ae06ab9e75b3e20ee885c4ccb59d4c01e',1,'Neighbourhood_Extended::CoMMAPairFindFirstBasedType()'],['../class_neighbourhood___pure___front.html#ae06ab9e75b3e20ee885c4ccb59d4c01e',1,'Neighbourhood_Pure_Front::CoMMAPairFindFirstBasedType()'],['../class_neighbourhood.html#ae06ab9e75b3e20ee885c4ccb59d4c01e',1,'Neighbourhood::CoMMAPairFindFirstBasedType()']]], - ['commapairtype_20',['CoMMAPairType',['../class_agglomerator___anisotropic.html#a11c37eea028c942be60e5c6a224449a0',1,'Agglomerator_Anisotropic::CoMMAPairType()'],['../class_dual___graph.html#afd3bb2bfafa15c8db3d2adae54137714',1,'Dual_Graph::CoMMAPairType()'],['../class_neighbourhood.html#a788b1672a154ea6e9d91d512ce4d4b70',1,'Neighbourhood::CoMMAPairType()'],['../struct_s_p_initializator.html#a900bdf529fbbd18e93f2769c35a87304',1,'SPInitializator::CoMMAPairType()'],['../class_seeds___pool.html#a9678e5bbd5f135398366fd74d95b925a',1,'Seeds_Pool::CoMMAPairType()'],['../class_neighbourhood___extended.html#a788b1672a154ea6e9d91d512ce4d4b70',1,'Neighbourhood_Extended::CoMMAPairType()'],['../class_neighbourhood___pure___front.html#a788b1672a154ea6e9d91d512ce4d4b70',1,'Neighbourhood_Pure_Front::CoMMAPairType()'],['../struct_s_p_one_point_initializator.html#a900bdf529fbbd18e93f2769c35a87304',1,'SPOnePointInitializator::CoMMAPairType()'],['../class_seeds___pool___boundary___priority.html#a9678e5bbd5f135398366fd74d95b925a',1,'Seeds_Pool_Boundary_Priority::CoMMAPairType()'],['../class_seeds___pool___neighbourhood___priority.html#a9678e5bbd5f135398366fd74d95b925a',1,'Seeds_Pool_Neighbourhood_Priority::CoMMAPairType()']]], - ['commaqueuetype_21',['CoMMAQueueType',['../struct_s_p_one_point_initializator.html#a7cae6a0f08b656f912510a1c31327b99',1,'SPOnePointInitializator::CoMMAQueueType()'],['../class_seeds___pool.html#abc1107196890a26c678ce4e4aa3fb4cb',1,'Seeds_Pool::CoMMAQueueType()'],['../struct_s_p_initializator.html#a7cae6a0f08b656f912510a1c31327b99',1,'SPInitializator::CoMMAQueueType()'],['../struct_s_p_full_initializator.html#a7cae6a0f08b656f912510a1c31327b99',1,'SPFullInitializator::CoMMAQueueType()']]], - ['commaseedspoolt_22',['CoMMASeedsPoolT',['../_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4',1,'CoMMATypes.h']]], - ['commasetofpairtype_23',['CoMMASetOfPairType',['../class_neighbourhood.html#a2732482bc200b9b8eceb1886ef51747d',1,'Neighbourhood::CoMMASetOfPairType()'],['../class_agglomerator___anisotropic.html#af5c47e43c784e7daef89c1f202dff74e',1,'Agglomerator_Anisotropic::CoMMASetOfPairType()'],['../class_dual___graph.html#a2e99aaad85e912fedd34f6c9686d3021',1,'Dual_Graph::CoMMASetOfPairType()'],['../class_seeds___pool___neighbourhood___priority.html#a3d6ff9145c49b79610f4d7777dfdc342',1,'Seeds_Pool_Neighbourhood_Priority::CoMMASetOfPairType()'],['../class_seeds___pool___boundary___priority.html#a3d6ff9145c49b79610f4d7777dfdc342',1,'Seeds_Pool_Boundary_Priority::CoMMASetOfPairType()'],['../struct_s_p_full_initializator.html#a6fad2bcdb808aa5b9d076b6694de7046',1,'SPFullInitializator::CoMMASetOfPairType()'],['../class_neighbourhood___pure___front.html#a2732482bc200b9b8eceb1886ef51747d',1,'Neighbourhood_Pure_Front::CoMMASetOfPairType()'],['../class_neighbourhood___extended.html#a2732482bc200b9b8eceb1886ef51747d',1,'Neighbourhood_Extended::CoMMASetOfPairType()'],['../class_seeds___pool.html#a3d6ff9145c49b79610f4d7777dfdc342',1,'Seeds_Pool::CoMMASetOfPairType()'],['../struct_s_p_initializator.html#a6fad2bcdb808aa5b9d076b6694de7046',1,'SPInitializator::CoMMASetOfPairType()']]], - ['commasignedindext_24',['CoMMASignedIndexT',['../_co_m_m_a_8cpp.html#a9fa394743ff7c80b26b62c15be20b7aa',1,'CoMMA.cpp']]], - ['commatypes_2eh_25',['CoMMATypes.h',['../_co_m_m_a_types_8h.html',1,'']]], - ['commaunused_26',['CoMMAUnused',['../_util_8h.html#a8084ea35afd15dd36dacfc54e6f8ff90',1,'Util.h']]], - ['commaweightt_27',['CoMMAWeightT',['../_co_m_m_a_types_8h.html#a7d17e2ec30fc9b0796135ca2bfced205',1,'CoMMATypes.h']]], - ['compute_5fbest_5ffc_5fto_5fadd_28',['compute_best_fc_to_add',['../class_agglomerator___biconnected.html#a7816d78ede33b94ecf33fc9e5919e1a7',1,'Agglomerator_Biconnected::compute_best_fc_to_add()'],['../class_agglomerator___iterative.html#acb0661b873442a19ad0b2ea678345642',1,'Agglomerator_Iterative::compute_best_fc_to_add()']]], - ['compute_5ffc_5fcompactness_5finside_5fa_5fcc_29',['compute_fc_compactness_inside_a_cc',['../class_graph.html#a491a1c7a463f291568123421ba1e7ae9',1,'Graph']]], - ['compute_5fmin_5ffc_5fcompactness_5finside_5fa_5fcc_30',['compute_min_fc_compactness_inside_a_cc',['../class_graph.html#ac7db1170e6505b0ea16d40ce255f18bf',1,'Graph']]], - ['compute_5fneighbourhood_5fbased_5fwall_5fdistance_31',['compute_neighbourhood_based_wall_distance',['../_util_8h.html#a391837a2e1b572f5f7926b9aaae04d44',1,'Util.h']]], - ['compute_5fneighbourhood_5fof_5fcc_32',['compute_neighbourhood_of_cc',['../class_dual___graph.html#a3a4977d15b734d7c28ca851f6871230e',1,'Dual_Graph']]], - ['compute_5fnext_5fcc_5ffeatures_33',['compute_next_cc_features',['../class_agglomerator___isotropic.html#acd6b14cda474839dfe2430b253966b5b',1,'Agglomerator_Isotropic']]], - ['containerindexconstit_34',['ContainerIndexConstIt',['../class_graph.html#aad80e86de524b83ff2e582073fc6b950',1,'Graph']]], - ['containerindextype_35',['ContainerIndexType',['../class_dual___graph.html#abb8937d3bdb846254d3f63f0eb378dee',1,'Dual_Graph::ContainerIndexType()'],['../class_subgraph.html#abb8937d3bdb846254d3f63f0eb378dee',1,'Subgraph::ContainerIndexType()'],['../class_graph.html#abb8937d3bdb846254d3f63f0eb378dee',1,'Graph::ContainerIndexType()']]], - ['containerweightconstit_36',['ContainerWeightConstIt',['../class_graph.html#a4088baba0398cdc0e6a4f4083c54f840',1,'Graph']]], - ['containerweighttype_37',['ContainerWeightType',['../class_dual___graph.html#ab70bf7df2dc00ac790e2854f8a2eef6a',1,'Dual_Graph::ContainerWeightType()'],['../class_subgraph.html#ab70bf7df2dc00ac790e2854f8a2eef6a',1,'Subgraph::ContainerWeightType()'],['../class_graph.html#ab70bf7df2dc00ac790e2854f8a2eef6a',1,'Graph::ContainerWeightType()']]], - ['corner_38',['CORNER',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9a91c566614c1c87c437ab3d686408e9ea',1,'CoMMATypes.h']]], - ['correct_39',['correct',['../class_coarse___cell___container.html#ad8f17759e8670d7c89b2931282f55617',1,'Coarse_Cell_Container']]], - ['create_40',['create',['../class_neighbourhood_creator.html#adb2b715bfe127683cacee497f3622e58',1,'NeighbourhoodCreator::create()'],['../class_neighbourhood_extended_creator.html#a95aaccfb071d8af38792bc7d3a714bb5',1,'NeighbourhoodExtendedCreator::create()'],['../class_neighbourhood_pure_front_creator.html#a8fcdc6ff2ed08f0806a1bd021728d6f1',1,'NeighbourhoodPureFrontCreator::create()']]], - ['create_5fcc_41',['create_cc',['../class_coarse___cell___container.html#a89af69d54fd9564d112fcc0897e8f8c3',1,'Coarse_Cell_Container']]], - ['creatorbasetype_42',['CreatorBaseType',['../class_neighbourhood_extended_creator.html#a5d3b220e990ffb8f12d5937915b8b530',1,'NeighbourhoodExtendedCreator::CreatorBaseType()'],['../class_neighbourhood_pure_front_creator.html#ae382bc506c3b92487f915312b5843c26',1,'NeighbourhoodPureFrontCreator::CreatorBaseType()']]], - ['custompairgreaterfunctor_43',['CustomPairGreaterFunctor',['../struct_custom_pair_greater_functor.html',1,'']]], - ['custompairlessfunctor_44',['CustomPairLessFunctor',['../struct_custom_pair_less_functor.html',1,'']]] + ['commacellt_15',['CoMMACellT',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8',1,'comma']]], + ['commadefs_2eh_16',['CoMMADefs.h',['../_co_m_m_a_defs_8h.html',1,'']]], + ['commaneighbourhoodt_17',['CoMMANeighbourhoodT',['../namespacecomma.html#a705b45ec112a3ac1bf59f760f0f4d022',1,'comma']]], + ['commapairfindfirstbasedtype_18',['CoMMAPairFindFirstBasedType',['../classcomma_1_1_neighbourhood___extended.html#a1bcc96dd1f011b683f94d6492de5c94b',1,'comma::Neighbourhood_Extended::CoMMAPairFindFirstBasedType()'],['../classcomma_1_1_neighbourhood___pure___front.html#a1bcc96dd1f011b683f94d6492de5c94b',1,'comma::Neighbourhood_Pure_Front::CoMMAPairFindFirstBasedType()'],['../classcomma_1_1_neighbourhood.html#a1bcc96dd1f011b683f94d6492de5c94b',1,'comma::Neighbourhood::CoMMAPairFindFirstBasedType()']]], + ['commapairtype_19',['CoMMAPairType',['../classcomma_1_1_agglomerator___anisotropic.html#a221bef52906b0fe45f9957ef52ac85d0',1,'comma::Agglomerator_Anisotropic::CoMMAPairType()'],['../classcomma_1_1_dual___graph.html#a9e4ca69b6d5fa9725246dfc96d85c112',1,'comma::Dual_Graph::CoMMAPairType()'],['../classcomma_1_1_neighbourhood.html#ae017bf1bdbf97533b6078628196daa0a',1,'comma::Neighbourhood::CoMMAPairType()'],['../structcomma_1_1_s_p_initializator.html#a1063dfdb4f126da363e38ecf9e3f741c',1,'comma::SPInitializator::CoMMAPairType()'],['../classcomma_1_1_seeds___pool.html#a70eb9e8d60f84565604934f31b6c52a3',1,'comma::Seeds_Pool::CoMMAPairType()'],['../classcomma_1_1_neighbourhood___extended.html#ae017bf1bdbf97533b6078628196daa0a',1,'comma::Neighbourhood_Extended::CoMMAPairType()'],['../classcomma_1_1_neighbourhood___pure___front.html#ae017bf1bdbf97533b6078628196daa0a',1,'comma::Neighbourhood_Pure_Front::CoMMAPairType()'],['../structcomma_1_1_s_p_one_point_initializator.html#a1063dfdb4f126da363e38ecf9e3f741c',1,'comma::SPOnePointInitializator::CoMMAPairType()'],['../classcomma_1_1_seeds___pool___boundary___priority.html#a70eb9e8d60f84565604934f31b6c52a3',1,'comma::Seeds_Pool_Boundary_Priority::CoMMAPairType()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a70eb9e8d60f84565604934f31b6c52a3',1,'comma::Seeds_Pool_Neighbourhood_Priority::CoMMAPairType()']]], + ['commaqueuetype_20',['CoMMAQueueType',['../structcomma_1_1_s_p_one_point_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533',1,'comma::SPOnePointInitializator::CoMMAQueueType()'],['../classcomma_1_1_seeds___pool.html#abd24f8571c5608afb54cb4f52558635e',1,'comma::Seeds_Pool::CoMMAQueueType()'],['../structcomma_1_1_s_p_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533',1,'comma::SPInitializator::CoMMAQueueType()'],['../structcomma_1_1_s_p_full_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533',1,'comma::SPFullInitializator::CoMMAQueueType()']]], + ['commaseedspoolt_21',['CoMMASeedsPoolT',['../namespacecomma.html#a8c8213401033616d834d48d77bf359a4',1,'comma']]], + ['commasetofpairtype_22',['CoMMASetOfPairType',['../classcomma_1_1_neighbourhood.html#a848ff0040340a5b904dfb9c8306e1439',1,'comma::Neighbourhood::CoMMASetOfPairType()'],['../structcomma_1_1_s_p_initializator.html#adce25caf80707955d4f7a9c6e722d075',1,'comma::SPInitializator::CoMMASetOfPairType()'],['../classcomma_1_1_seeds___pool.html#a9da3ca5fd578388aa227af993bb305cf',1,'comma::Seeds_Pool::CoMMASetOfPairType()'],['../classcomma_1_1_neighbourhood___extended.html#a848ff0040340a5b904dfb9c8306e1439',1,'comma::Neighbourhood_Extended::CoMMASetOfPairType()'],['../classcomma_1_1_neighbourhood___pure___front.html#a848ff0040340a5b904dfb9c8306e1439',1,'comma::Neighbourhood_Pure_Front::CoMMASetOfPairType()'],['../structcomma_1_1_s_p_full_initializator.html#adce25caf80707955d4f7a9c6e722d075',1,'comma::SPFullInitializator::CoMMASetOfPairType()'],['../classcomma_1_1_seeds___pool___boundary___priority.html#a9da3ca5fd578388aa227af993bb305cf',1,'comma::Seeds_Pool_Boundary_Priority::CoMMASetOfPairType()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a9da3ca5fd578388aa227af993bb305cf',1,'comma::Seeds_Pool_Neighbourhood_Priority::CoMMASetOfPairType()'],['../classcomma_1_1_dual___graph.html#ac83b5f3409ccd78654bc747f43e2d6d6',1,'comma::Dual_Graph::CoMMASetOfPairType()'],['../classcomma_1_1_agglomerator___anisotropic.html#a9f4297614846f54366d4561a6428fa4d',1,'comma::Agglomerator_Anisotropic::CoMMASetOfPairType()']]], + ['commaunused_23',['CoMMAUnused',['../_util_8h.html#a8084ea35afd15dd36dacfc54e6f8ff90',1,'Util.h']]], + ['compute_5fbest_5ffc_5fto_5fadd_24',['compute_best_fc_to_add',['../classcomma_1_1_agglomerator___iterative.html#adb49da3aaabcb93c3ece598600cb21b9',1,'comma::Agglomerator_Iterative::compute_best_fc_to_add()'],['../classcomma_1_1_agglomerator___biconnected.html#aae1d6469c6921e306a3fa054d076bf0f',1,'comma::Agglomerator_Biconnected::compute_best_fc_to_add()']]], + ['compute_5ffc_5fcompactness_5finside_5fa_5fcc_25',['compute_fc_compactness_inside_a_cc',['../classcomma_1_1_graph.html#a5ca107f24d5ba40ea695a23699eb1661',1,'comma::Graph']]], + ['compute_5fmin_5ffc_5fcompactness_5finside_5fa_5fcc_26',['compute_min_fc_compactness_inside_a_cc',['../classcomma_1_1_graph.html#a4a4d55d139f5812150abfa01e197f5e5',1,'comma::Graph']]], + ['compute_5fneighbourhood_5fbased_5fwall_5fdistance_27',['compute_neighbourhood_based_wall_distance',['../namespacecomma.html#ae3653181db03b3ea76722462c3b3e02b',1,'comma']]], + ['compute_5fneighbourhood_5fof_5fcc_28',['compute_neighbourhood_of_cc',['../classcomma_1_1_dual___graph.html#a20485b4e0bddf0fd2e6fe38b5aa7582b',1,'comma::Dual_Graph']]], + ['compute_5fnext_5fcc_5ffeatures_29',['compute_next_cc_features',['../classcomma_1_1_agglomerator___isotropic.html#a8eeb2f4079e010af97f6018ea48d70da',1,'comma::Agglomerator_Isotropic']]], + ['containerindexconstit_30',['ContainerIndexConstIt',['../classcomma_1_1_graph.html#a698f1f4f188f408a34625c656038636e',1,'comma::Graph']]], + ['containerindextype_31',['ContainerIndexType',['../classcomma_1_1_graph.html#ac24e8e9de0c15af027fe8d1ccd8304d4',1,'comma::Graph::ContainerIndexType()'],['../classcomma_1_1_dual___graph.html#ac24e8e9de0c15af027fe8d1ccd8304d4',1,'comma::Dual_Graph::ContainerIndexType()'],['../classcomma_1_1_subgraph.html#ac24e8e9de0c15af027fe8d1ccd8304d4',1,'comma::Subgraph::ContainerIndexType()']]], + ['containerweightconstit_32',['ContainerWeightConstIt',['../classcomma_1_1_graph.html#a33a60fc9c014fc5adb267d64e8f4b2bb',1,'comma::Graph']]], + ['containerweighttype_33',['ContainerWeightType',['../classcomma_1_1_graph.html#ab61394e58e9019e8d55320e3a2885115',1,'comma::Graph::ContainerWeightType()'],['../classcomma_1_1_subgraph.html#ab61394e58e9019e8d55320e3a2885115',1,'comma::Subgraph::ContainerWeightType()'],['../classcomma_1_1_dual___graph.html#ab61394e58e9019e8d55320e3a2885115',1,'comma::Dual_Graph::ContainerWeightType()']]], + ['corner_34',['CORNER',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8a39ad49623cc576b66fc391bd2bc1c7cf',1,'comma']]], + ['correct_35',['correct',['../classcomma_1_1_coarse___cell___container.html#af30a16e10cd4cbcfa2837a36a5a80599',1,'comma::Coarse_Cell_Container']]], + ['create_36',['create',['../classcomma_1_1_neighbourhood_creator.html#afe62a60eabce766b4aea2b02eeed61e5',1,'comma::NeighbourhoodCreator::create()'],['../classcomma_1_1_neighbourhood_extended_creator.html#a7e890e6fff3c54d74e5e2cf9aa73332b',1,'comma::NeighbourhoodExtendedCreator::create()'],['../classcomma_1_1_neighbourhood_pure_front_creator.html#aaac38025ac8e92eecd2b32d85c3e3d0e',1,'comma::NeighbourhoodPureFrontCreator::create()']]], + ['create_5fcc_37',['create_cc',['../classcomma_1_1_coarse___cell___container.html#a745d1b842ec7a43dbe303cbef43a0b80',1,'comma::Coarse_Cell_Container']]], + ['creatorbasetype_38',['CreatorBaseType',['../classcomma_1_1_neighbourhood_extended_creator.html#ae2cbcfa4423cf20e5045a9530c5f9c80',1,'comma::NeighbourhoodExtendedCreator::CreatorBaseType()'],['../classcomma_1_1_neighbourhood_pure_front_creator.html#a5c84dd3fbf5c5b5e113261da07379ffb',1,'comma::NeighbourhoodPureFrontCreator::CreatorBaseType()']]], + ['custompairgreaterfunctor_39',['CustomPairGreaterFunctor',['../structcomma_1_1_custom_pair_greater_functor.html',1,'comma']]], + ['custompairlessfunctor_40',['CustomPairLessFunctor',['../structcomma_1_1_custom_pair_less_functor.html',1,'comma']]] ]; diff --git a/search/all_4.js b/search/all_4.js index bb178e2..256489a 100644 --- a/search/all_4.js +++ b/search/all_4.js @@ -1,14 +1,14 @@ var searchData= [ - ['d_5fkeys_5fto_5fset_0',['d_keys_to_set',['../_util_8h.html#a0f9e797856aaddc8607e26502cea3658',1,'Util.h']]], - ['delete_5fnode_1',['delete_node',['../class_tree.html#a67a96cf01ba50b94071ba0e98c73cf93',1,'Tree']]], - ['deletenode_2',['deleteNode',['../class_tree.html#a51e33e50623d498fdf8eb9fb619328c3',1,'Tree']]], - ['deprecated_20files_3',['Deprecated files',['../md__co_m_m_a_lib_deprecated__r_e_a_d_m_e.html',1,'']]], - ['deviate_5fthresh_4',['deviate_thresh',['../_util_8h.html#a92bafb9d36c34646ee1bf8ec1c67f3c9',1,'Util.h']]], - ['dfs_5',['DFS',['../class_graph.html#afb191c20fe7d483a018b7a448aabc037',1,'Graph']]], - ['dot_5fdeviate_6',['dot_deviate',['../_util_8h.html#aeec73ae34bff3c397b99dcf03d14a4a5',1,'Util.h']]], - ['dot_5fproduct_7',['dot_product',['../_util_8h.html#a92f46b4dab5ae23f1a86a2c55c2a6beb',1,'Util.h']]], - ['dual_5fgraph_8',['Dual_Graph',['../class_dual___graph.html',1,'Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_dual___graph.html#adb7691275dece84b9bc51514b27d0641',1,'Dual_Graph::Dual_Graph()']]], + ['d_5fkeys_5fto_5fset_0',['d_keys_to_set',['../namespacecomma.html#a81affca718f9c9927cfb82c317c8239e',1,'comma']]], + ['delete_5fnode_1',['delete_node',['../classcomma_1_1_tree.html#adde017be7b486d827e7ab1fb6355cfdc',1,'comma::Tree']]], + ['deletenode_2',['deleteNode',['../classcomma_1_1_tree.html#a22632aa17b0500f1bfe9428bbd612c33',1,'comma::Tree']]], + ['deprecated_20files_3',['Deprecated files',['../md_include__co_m_m_a_deprecated__r_e_a_d_m_e.html',1,'']]], + ['deviate_5fthresh_4',['deviate_thresh',['../namespacecomma.html#a75164a303f92061683959fa690d67906',1,'comma']]], + ['dfs_5',['DFS',['../classcomma_1_1_graph.html#a138b207a27e58bcb238d0a80444ba75b',1,'comma::Graph']]], + ['dot_5fdeviate_6',['dot_deviate',['../namespacecomma.html#aa6823809d0c8cc7a1e30d51cfb0ce21a',1,'comma']]], + ['dot_5fproduct_7',['dot_product',['../namespacecomma.html#a0e43c30768d45d4f1f643f2f8be53f5d',1,'comma']]], + ['dual_5fgraph_8',['Dual_Graph',['../classcomma_1_1_dual___graph.html',1,'comma::Dual_Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_dual___graph.html#a62db97821210fa0ffa99d3396eecdaae',1,'comma::Dual_Graph::Dual_Graph()']]], ['dual_5fgraph_2eh_9',['Dual_Graph.h',['../_dual___graph_8h.html',1,'']]], - ['dualgraphptr_10',['DualGraphPtr',['../class_coarse___cell.html#a8be4bfb51fc40000cf941d264323f6b2',1,'Coarse_Cell::DualGraphPtr()'],['../class_coarse___cell___container.html#ae1f92ee786149dd1dccf1a63b9e6232e',1,'Coarse_Cell_Container::DualGraphPtr()'],['../class_coarse___cell___subgraph.html#a8be4bfb51fc40000cf941d264323f6b2',1,'Coarse_Cell_Subgraph::DualGraphPtr()']]] + ['dualgraphptr_10',['DualGraphPtr',['../classcomma_1_1_coarse___cell.html#a35ecf0c52bb9edbc441d78a43279ca30',1,'comma::Coarse_Cell::DualGraphPtr()'],['../classcomma_1_1_coarse___cell___container.html#a5051b74d460fe27476950f53a5fd2229',1,'comma::Coarse_Cell_Container::DualGraphPtr()'],['../classcomma_1_1_coarse___cell___subgraph.html#a35ecf0c52bb9edbc441d78a43279ca30',1,'comma::Coarse_Cell_Subgraph::DualGraphPtr()']]] ]; diff --git a/search/all_5.js b/search/all_5.js index c3f4147..9ac69e9 100644 --- a/search/all_5.js +++ b/search/all_5.js @@ -1,10 +1,10 @@ var searchData= [ - ['empty_0',['empty',['../class_bimap.html#aed5fb1baaa71c1137984e96e9117ae5f',1,'Bimap::empty()'],['../class_queue.html#a84af2287bc5dad708508b588dc73457d',1,'Queue::empty()']]], - ['erase_5fb_1',['erase_B',['../class_bimap.html#aff20ef4205c50149fe441250a5966712',1,'Bimap']]], - ['estimate_5fboundary_5fface_2',['estimate_boundary_face',['../class_agglomerator___isotropic.html#a5235e06b6e1d681b5970a43c6eb90123',1,'Agglomerator_Isotropic']]], - ['export_5fanisotropic_5flines_3',['export_anisotropic_lines',['../class_agglomerator___anisotropic.html#af042ee016e1176de1edd69227b4c73cd',1,'Agglomerator_Anisotropic']]], - ['extended_4',['EXTENDED',['../_co_m_m_a_types_8h.html#a317369a7239fe01b94e2a7450c448531a6bc295e29b5149df1ca1d0bc868d3735',1,'CoMMATypes.h']]], - ['extract_5fand_5fupdate_5fcandidates_5',['extract_and_update_candidates',['../class_neighbourhood.html#ae3588ec9956d43fa93f8ece1f09bd6c7',1,'Neighbourhood']]], - ['extreme_6',['EXTREME',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9ae98b90fef66d60ced715daeeed560730',1,'CoMMATypes.h']]] + ['empty_0',['empty',['../classcomma_1_1_bimap.html#a88364e304b1a847ff219e815af01be73',1,'comma::Bimap::empty()'],['../classcomma_1_1_queue.html#aa5746b4e600f2c85ec6f9f427974d302',1,'comma::Queue::empty()']]], + ['erase_5fb_1',['erase_B',['../classcomma_1_1_bimap.html#a8b79b0b9ba226a25bb66a326a57d1dc6',1,'comma::Bimap']]], + ['estimate_5fboundary_5fface_2',['estimate_boundary_face',['../classcomma_1_1_agglomerator___isotropic.html#a4b6bec13ab0d5a563d0c7f2095186141',1,'comma::Agglomerator_Isotropic']]], + ['export_5fanisotropic_5flines_3',['export_anisotropic_lines',['../classcomma_1_1_agglomerator___anisotropic.html#a117343c20ddb4b72d4c9084a89c3303a',1,'comma::Agglomerator_Anisotropic']]], + ['extended_4',['EXTENDED',['../namespacecomma.html#a705b45ec112a3ac1bf59f760f0f4d022a5b91bee96d92adb448b6529d2ea8289d',1,'comma']]], + ['extract_5fand_5fupdate_5fcandidates_5',['extract_and_update_candidates',['../classcomma_1_1_neighbourhood.html#abf5efa9c654e7bacae24f74d3c3b8dc1',1,'comma::Neighbourhood']]], + ['extreme_6',['EXTREME',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8ac5e925f6e54a010df01d51f9b4e6f981',1,'comma']]] ]; diff --git a/search/all_6.js b/search/all_6.js index 89af013..28d66d1 100644 --- a/search/all_6.js +++ b/search/all_6.js @@ -1,5 +1,5 @@ var searchData= [ - ['fill_5fvalue_0',['fill_value',['../template_helpers_8h.html#af8b229731dfc00cd8a557ef50078b87f',1,'templateHelpers.h']]], - ['first_1',['first',['../class_priority___pair.html#a5d49cb729ca12b11ed1f465dfe700cf5',1,'Priority_Pair']]] + ['fill_5fvalue_0',['fill_value',['../namespacecomma.html#a18179379fcc2bb56e6b89c7b43e249c2',1,'comma']]], + ['first_1',['first',['../classcomma_1_1_priority___pair.html#a992d3e38d40c9741a9ffc7efa4172c04',1,'comma::Priority_Pair']]] ]; diff --git a/search/all_7.js b/search/all_7.js index 18f6187..5784eae 100644 --- a/search/all_7.js +++ b/search/all_7.js @@ -1,21 +1,21 @@ var searchData= [ - ['get_5fa_0',['get_A',['../class_bimap.html#af467a3fe1c6a834f59fb11e73ecaffe7',1,'Bimap']]], - ['get_5fb_1',['get_B',['../class_bimap.html#acc0c46d71708ab4a071dc045ea48c76f',1,'Bimap']]], - ['get_5fcandidates_2',['get_candidates',['../class_neighbourhood.html#ac9d1f9097ecfb39b5c1cea0333e7c9dc',1,'Neighbourhood']]], - ['get_5fdirection_3',['get_direction',['../_util_8h.html#a40c9ba8185d11790d9d1a4e466d98a35',1,'Util.h']]], - ['get_5ffc_5f2_5fcc_4',['get_fc_2_cc',['../class_agglomerator.html#a68d800a84b0b3d7bbe1d91e1226dd327',1,'Agglomerator']]], - ['get_5fhighest_5fn_5fbnd_5fyet_5fto_5fagglomerate_5',['get_highest_n_bnd_yet_to_agglomerate',['../class_seeds___pool.html#aae5389ce2e287218835acd3b0c97b61e',1,'Seeds_Pool']]], - ['get_5fn_5fboundary_5ffaces_6',['get_n_boundary_faces',['../class_dual___graph.html#aed45a1fa00a3234c2f122ad7bfca9812',1,'Dual_Graph']]], - ['get_5fnb_5fcells_7',['get_nb_cells',['../class_dual___graph.html#a1ebf7d891501216863dbea7d603eadc2',1,'Dual_Graph']]], - ['get_5fnb_5fof_5fcc_8',['get_nb_of_cc',['../class_coarse___cell___container.html#a914e4ce6536ddc54463f399e8e85f5b5',1,'Coarse_Cell_Container']]], - ['get_5fnb_5fof_5fneighbours_9',['get_nb_of_neighbours',['../class_graph.html#af4d018aff36d0de453999de56b7a27c1',1,'Graph']]], - ['get_5fneighbourhood_5fof_5fcc_10',['get_neighbourhood_of_cc',['../class_dual___graph.html#a26a06a0cdafc77b7e5a16a609384424a',1,'Dual_Graph']]], - ['get_5fneighbours_11',['get_neighbours',['../class_graph.html#aeb473d9568add4ad25a3da43f1067f70',1,'Graph']]], - ['get_5fneighbours_5fby_5flevel_12',['get_neighbours_by_level',['../class_neighbourhood___pure___front.html#a2e706d0e5f7573df0b7744f4ad318f3f',1,'Neighbourhood_Pure_Front']]], - ['get_5fneighs_5fcc_13',['get_neighs_cc',['../class_coarse___cell___container.html#a209dae87bf495d5e9a9a1b51019203df',1,'Coarse_Cell_Container']]], - ['get_5fnumber_5fof_5ffc_5fagglomerated_14',['get_number_of_fc_agglomerated',['../class_coarse___cell___container.html#a09b33c3ceda1cc06bee353e8a23dfc02',1,'Coarse_Cell_Container']]], - ['get_5fshared_5ffaces_15',['get_shared_faces',['../class_coarse___cell___container.html#a1a4fee09c0e84fcd74804ee3aadb7665',1,'Coarse_Cell_Container']]], - ['get_5fweights_16',['get_weights',['../class_graph.html#a7a915976e94c826f8d9305376b9c78d0',1,'Graph']]], - ['graph_17',['Graph',['../class_graph.html#aaed2c17ea94ec186aecac55ed1c3c591',1,'Graph::Graph()'],['../class_graph.html',1,'Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >']]] + ['get_5fa_0',['get_A',['../classcomma_1_1_bimap.html#aafc73798f8c673da69051f7c79cd73c2',1,'comma::Bimap']]], + ['get_5fb_1',['get_B',['../classcomma_1_1_bimap.html#a49bae8e54fe5ccd52d61d20c5aa543c0',1,'comma::Bimap']]], + ['get_5fcandidates_2',['get_candidates',['../classcomma_1_1_neighbourhood.html#a63d4c3d2726a60aa88c69012f0b17167',1,'comma::Neighbourhood']]], + ['get_5fdirection_3',['get_direction',['../namespacecomma.html#a3fda6288b7b5c19904abf0312557c774',1,'comma']]], + ['get_5ffc_5f2_5fcc_4',['get_fc_2_cc',['../classcomma_1_1_agglomerator.html#ad2b5d75df795ac89897ab01d6be0f4e5',1,'comma::Agglomerator']]], + ['get_5fhighest_5fn_5fbnd_5fyet_5fto_5fagglomerate_5',['get_highest_n_bnd_yet_to_agglomerate',['../classcomma_1_1_seeds___pool.html#a0e128dabb2ee75e11ea2bbcb4b3920e8',1,'comma::Seeds_Pool']]], + ['get_5fn_5fboundary_5ffaces_6',['get_n_boundary_faces',['../classcomma_1_1_dual___graph.html#a020ecb0b3f410b468bbb8e57878bf9aa',1,'comma::Dual_Graph']]], + ['get_5fnb_5fcells_7',['get_nb_cells',['../classcomma_1_1_dual___graph.html#a03162eab93fc7ace92992ebea53db274',1,'comma::Dual_Graph']]], + ['get_5fnb_5fof_5fcc_8',['get_nb_of_cc',['../classcomma_1_1_coarse___cell___container.html#a7e57abc220fb85877b92ad7a7be0b540',1,'comma::Coarse_Cell_Container']]], + ['get_5fnb_5fof_5fneighbours_9',['get_nb_of_neighbours',['../classcomma_1_1_graph.html#a565588a181fda3b2ebab502ff00c3546',1,'comma::Graph']]], + ['get_5fneighbourhood_5fof_5fcc_10',['get_neighbourhood_of_cc',['../classcomma_1_1_dual___graph.html#a7e3f45ecd852a941dc39064f7454efb3',1,'comma::Dual_Graph']]], + ['get_5fneighbours_11',['get_neighbours',['../classcomma_1_1_graph.html#a26a90ddbfdfa7fd05dd068e3b8eb4c9f',1,'comma::Graph']]], + ['get_5fneighbours_5fby_5flevel_12',['get_neighbours_by_level',['../classcomma_1_1_neighbourhood___pure___front.html#a8e347e275fb8cb02e86844219742fd9e',1,'comma::Neighbourhood_Pure_Front']]], + ['get_5fneighs_5fcc_13',['get_neighs_cc',['../classcomma_1_1_coarse___cell___container.html#adfc1c9ae9a17a20cc98d26e1d94753ce',1,'comma::Coarse_Cell_Container']]], + ['get_5fnumber_5fof_5ffc_5fagglomerated_14',['get_number_of_fc_agglomerated',['../classcomma_1_1_coarse___cell___container.html#a74b86f5bf928b038c490f27c1e26bd64',1,'comma::Coarse_Cell_Container']]], + ['get_5fshared_5ffaces_15',['get_shared_faces',['../classcomma_1_1_coarse___cell___container.html#a93ab43e7ab6288a9e7d6fa00e7d53c3d',1,'comma::Coarse_Cell_Container']]], + ['get_5fweights_16',['get_weights',['../classcomma_1_1_graph.html#aec4547e40dba5830f05b5fe96cd2355c',1,'comma::Graph']]], + ['graph_17',['Graph',['../classcomma_1_1_graph.html',1,'comma::Graph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_graph.html#a22e0c39a18c9f9bc87cc71c0255b43c0',1,'comma::Graph::Graph()']]] ]; diff --git a/search/all_8.js b/search/all_8.js index bf95a2c..3d5d475 100644 --- a/search/all_8.js +++ b/search/all_8.js @@ -1,13 +1,14 @@ var searchData= [ - ['initialize_0',['initialize',['../class_seeds___pool.html#a23a0f231be556d1d87f216a5c002e760',1,'Seeds_Pool']]], - ['insert_1',['insert',['../class_bimap.html#ace92920f113af9bf07f930e21689d9c4',1,'Bimap']]], - ['insert_5fcell_2',['insert_cell',['../class_coarse___cell.html#a8933946e4838039b06b01854ea02bba1',1,'Coarse_Cell::insert_cell()'],['../class_coarse___cell___subgraph.html#acbd2ec917d2031f3d8c0e8a499c57185',1,'Coarse_Cell_Subgraph::insert_cell()']]], - ['insert_5fcells_3',['insert_cells',['../class_coarse___cell.html#aa72685cf11b7ef850592386bbbbf07cb',1,'Coarse_Cell::insert_cells()'],['../class_coarse___cell___subgraph.html#ad8656ac6fe4f8ab894e250fa160c5809',1,'Coarse_Cell_Subgraph::insert_cells()']]], - ['insert_5fnode_4',['insert_node',['../class_subgraph.html#acf5fbea7405e13ce3701069fd4fb6dc1',1,'Subgraph']]], - ['insertson_5',['insertSon',['../class_tree.html#ad8f18cbe37893507874177af06ab7df5',1,'Tree']]], - ['interior_6',['INTERIOR',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9aa5fec78385643202af1d49268705b4c2',1,'CoMMATypes.h']]], - ['is_5fconnected_7',['is_connected',['../class_coarse___cell.html#a9141f6b11ffcb23820a6bf94cff94375',1,'Coarse_Cell']]], - ['is_5fempty_8',['is_empty',['../class_seeds___pool.html#a90276b0aebe130de57c4b04afb7b45fc',1,'Seeds_Pool']]], - ['is_5fon_5fboundary_9',['is_on_boundary',['../class_dual___graph.html#a758730c4af1e17ac1531389083345ff2',1,'Dual_Graph']]] + ['initialize_0',['initialize',['../classcomma_1_1_seeds___pool.html#a820ecd76d0ab974a69701c9a9df3114e',1,'comma::Seeds_Pool']]], + ['insert_1',['insert',['../classcomma_1_1_bimap.html#a67acd42aeed25123ae23c2373dbf065b',1,'comma::Bimap']]], + ['insert_5fcell_2',['insert_cell',['../classcomma_1_1_coarse___cell.html#a80ad5b778411821842cfed3f7c8c19da',1,'comma::Coarse_Cell::insert_cell()'],['../classcomma_1_1_coarse___cell___subgraph.html#a1f699fd8684fc8a66ca34f8635857b43',1,'comma::Coarse_Cell_Subgraph::insert_cell()']]], + ['insert_5fcells_3',['insert_cells',['../classcomma_1_1_coarse___cell.html#ad02809c84ac2972857fb912a389444ca',1,'comma::Coarse_Cell::insert_cells()'],['../classcomma_1_1_coarse___cell___subgraph.html#a91979299073d846773d1222dc794175b',1,'comma::Coarse_Cell_Subgraph::insert_cells()']]], + ['insert_5fnode_4',['insert_node',['../classcomma_1_1_subgraph.html#a427eb4209f44547612b694d4ae7f1875',1,'comma::Subgraph']]], + ['insertson_5',['insertSon',['../classcomma_1_1_tree.html#a38103210c800f4ea07328f7ba5b80326',1,'comma::Tree']]], + ['interior_6',['INTERIOR',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8ada6f7a085b1f7f2125ce30f5e02db53c',1,'comma']]], + ['is_5fconnected_7',['is_connected',['../classcomma_1_1_coarse___cell.html#ac4034b8340779db758fdbe338ced45e4',1,'comma::Coarse_Cell']]], + ['is_5fempty_8',['is_empty',['../classcomma_1_1_seeds___pool.html#a5b81870765d59728538feb0960bbcc5a',1,'comma::Seeds_Pool']]], + ['is_5fon_5fboundary_9',['is_on_boundary',['../classcomma_1_1_dual___graph.html#a243466aae3bc5b1a7c1f259dc398ce67',1,'comma::Dual_Graph']]], + ['iter_5fagglo_5fmax_5fiter_10',['iter_agglo_max_iter',['../namespacecomma.html#ae843c64bc9e371bd460fe8d040c80e2b',1,'comma']]] ]; diff --git a/search/all_9.js b/search/all_9.js index 5de015c..290bf0e 100644 --- a/search/all_9.js +++ b/search/all_9.js @@ -1,4 +1,4 @@ var searchData= [ - ['lung_0',['lung',['../class_bimap.html#a4c78f72df8b5689251721a94a138c13d',1,'Bimap']]] + ['lung_0',['lung',['../classcomma_1_1_bimap.html#af7226a5d51d99236f8b9451650356267',1,'comma::Bimap']]] ]; diff --git a/search/all_a.js b/search/all_a.js index e5d24bf..cb0d2cd 100644 --- a/search/all_a.js +++ b/search/all_a.js @@ -1,4 +1,23 @@ var searchData= [ - ['max_5fiter_0',['max_iter',['../_co_m_m_a_8h.html#a06c8f4babe70bb7080dba80cf0473b21',1,'CoMMA.h']]] + ['n_5fcell_5ftypes_0',['N_CELL_TYPES',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8a0309283de9cefb87968e32825c3418ec',1,'comma']]], + ['need_5finitialization_1',['need_initialization',['../classcomma_1_1_seeds___pool.html#a01f69492190dc641f35e38c748bc84d9',1,'comma::Seeds_Pool::need_initialization()'],['../classcomma_1_1_seeds___pool___boundary___priority.html#a3e80d6c43797e17da8a2bb3dd33a2f87',1,'comma::Seeds_Pool_Boundary_Priority::need_initialization()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a341847d4bc85427d4ee8c406c7005fa7',1,'comma::Seeds_Pool_Neighbourhood_Priority::need_initialization()']]], + ['neighbourhood_2',['Neighbourhood',['../classcomma_1_1_neighbourhood.html',1,'comma::Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_neighbourhood.html#a23faf6843893fc19a84c4b3b2ded6044',1,'comma::Neighbourhood::Neighbourhood(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)'],['../classcomma_1_1_neighbourhood.html#a86faebda628571c81ff0771703a80a1a',1,'comma::Neighbourhood::Neighbourhood(const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default']]], + ['neighbourhood_2eh_3',['Neighbourhood.h',['../_neighbourhood_8h.html',1,'']]], + ['neighbourhood_5fextended_4',['Neighbourhood_Extended',['../classcomma_1_1_neighbourhood___extended.html',1,'comma::Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_neighbourhood___extended.html#aead86237e93abd8199965599ac2df567',1,'comma::Neighbourhood_Extended::Neighbourhood_Extended(const Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default'],['../classcomma_1_1_neighbourhood___extended.html#abcf357a7a3031045502ba7a3a9959c0c',1,'comma::Neighbourhood_Extended::Neighbourhood_Extended(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)']]], + ['neighbourhood_5fpriority_5',['NEIGHBOURHOOD_PRIORITY',['../namespacecomma.html#a8c8213401033616d834d48d77bf359a4ae3fbc583bddef8540a06125ed1e7dc79',1,'comma']]], + ['neighbourhood_5fpriority_5fone_5fpoint_5finit_6',['NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT',['../namespacecomma.html#a8c8213401033616d834d48d77bf359a4a8c23e18158e720cbd348f98e50376a5d',1,'comma']]], + ['neighbourhood_5fpure_5ffront_7',['Neighbourhood_Pure_Front',['../classcomma_1_1_neighbourhood___pure___front.html',1,'comma::Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_neighbourhood___pure___front.html#af8021c4955de4919701b4fc10218c1e7',1,'comma::Neighbourhood_Pure_Front::Neighbourhood_Pure_Front(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights, CoMMAIntType dimension)'],['../classcomma_1_1_neighbourhood___pure___front.html#a5ec25c24172a6b37f0c669ed78347e65',1,'comma::Neighbourhood_Pure_Front::Neighbourhood_Pure_Front(const Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default']]], + ['neighbourhoodbasetype_8',['NeighbourhoodBaseType',['../classcomma_1_1_neighbourhood___extended.html#a7186ba352d92837fca975e90fd1b5013',1,'comma::Neighbourhood_Extended::NeighbourhoodBaseType()'],['../classcomma_1_1_neighbourhood___pure___front.html#a913459e984b1617005be9d6674e3bea9',1,'comma::Neighbourhood_Pure_Front::NeighbourhoodBaseType()'],['../classcomma_1_1_neighbourhood_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e',1,'comma::NeighbourhoodCreator::NeighbourhoodBaseType()'],['../classcomma_1_1_neighbourhood_extended_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e',1,'comma::NeighbourhoodExtendedCreator::NeighbourhoodBaseType()'],['../classcomma_1_1_neighbourhood_pure_front_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e',1,'comma::NeighbourhoodPureFrontCreator::NeighbourhoodBaseType()']]], + ['neighbourhoodcreator_9',['NeighbourhoodCreator',['../classcomma_1_1_neighbourhood_creator.html',1,'comma::NeighbourhoodCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_neighbourhood_creator.html#af4f957b393cc21b8d4e091063e8a4e8c',1,'comma::NeighbourhoodCreator::NeighbourhoodCreator()']]], + ['neighbourhoodcreatorbasetype_10',['NeighbourhoodCreatorBaseType',['../classcomma_1_1_agglomerator___isotropic.html#a88a36f50abb4794a7bfe1ce8caef5736',1,'comma::Agglomerator_Isotropic']]], + ['neighbourhoodcreatorexttype_11',['NeighbourhoodCreatorExtType',['../classcomma_1_1_agglomerator___isotropic.html#a73cb23502dc4cf7ae54bccfaa2f42e4a',1,'comma::Agglomerator_Isotropic']]], + ['neighbourhoodcreatorpftype_12',['NeighbourhoodCreatorPFType',['../classcomma_1_1_agglomerator___isotropic.html#ae94e68908b4b05b376d7429d6e6c85b7',1,'comma::Agglomerator_Isotropic']]], + ['neighbourhoodderivedtype_13',['NeighbourhoodDerivedType',['../classcomma_1_1_neighbourhood_extended_creator.html#a63b796c170a94ef0e6be980bff923465',1,'comma::NeighbourhoodExtendedCreator::NeighbourhoodDerivedType()'],['../classcomma_1_1_neighbourhood_pure_front_creator.html#a8594b34dfb4913c08cb825415cb7755e',1,'comma::NeighbourhoodPureFrontCreator::NeighbourhoodDerivedType()']]], + ['neighbourhoodextendedcreator_14',['NeighbourhoodExtendedCreator',['../classcomma_1_1_neighbourhood_extended_creator.html',1,'comma::NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_neighbourhood_extended_creator.html#ad6d5ab836d929ef895fa2820cc160324',1,'comma::NeighbourhoodExtendedCreator::NeighbourhoodExtendedCreator()']]], + ['neighbourhoodpurefrontcreator_15',['NeighbourhoodPureFrontCreator',['../classcomma_1_1_neighbourhood_pure_front_creator.html',1,'comma::NeighbourhoodPureFrontCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_neighbourhood_pure_front_creator.html#a550fb5859f1d0b86326ad4892e0fcfb7',1,'comma::NeighbourhoodPureFrontCreator::NeighbourhoodPureFrontCreator()']]], + ['neighbours_5fcbegin_16',['neighbours_cbegin',['../classcomma_1_1_graph.html#ae53c16fecb13a6319a63b681ac470f94',1,'comma::Graph']]], + ['neighbours_5fcend_17',['neighbours_cend',['../classcomma_1_1_graph.html#a49889cfff4e34758c1716d0d43c292d4',1,'comma::Graph']]], + ['node_18',['Node',['../classcomma_1_1_node.html',1,'comma::Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_node.html#ab982f0768228f971628980b0d5ca47e1',1,'comma::Node::Node()']]], + ['nodetype_19',['NodeType',['../classcomma_1_1_tree.html#aff9812ac9e33103d2651b0f8a9ba601a',1,'comma::Tree']]] ]; diff --git a/search/all_b.js b/search/all_b.js index 80b03fa..a10255b 100644 --- a/search/all_b.js +++ b/search/all_b.js @@ -1,23 +1,7 @@ var searchData= [ - ['n_5fcell_5ftypes_0',['N_CELL_TYPES',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9ab2eff5e2e952ed10adb515644a05c3c4',1,'CoMMATypes.h']]], - ['need_5finitialization_1',['need_initialization',['../class_seeds___pool.html#ab7e85e018510d448d7eed7a3c92b3108',1,'Seeds_Pool::need_initialization()'],['../class_seeds___pool___boundary___priority.html#a7e10b833156c1c19009a093570697e75',1,'Seeds_Pool_Boundary_Priority::need_initialization()'],['../class_seeds___pool___neighbourhood___priority.html#aec2b6ee916560feeab9cda7204a6429a',1,'Seeds_Pool_Neighbourhood_Priority::need_initialization()']]], - ['neighbourhood_2',['Neighbourhood',['../class_neighbourhood.html',1,'Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_neighbourhood.html#a7add6b8c246cec11cd1f2aa8867937e1',1,'Neighbourhood::Neighbourhood(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)'],['../class_neighbourhood.html#a9e8f7bb0a8be9fdd20c3d0756caa805d',1,'Neighbourhood::Neighbourhood(const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default']]], - ['neighbourhood_2eh_3',['Neighbourhood.h',['../_neighbourhood_8h.html',1,'']]], - ['neighbourhood_5fextended_4',['Neighbourhood_Extended',['../class_neighbourhood___extended.html',1,'Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_neighbourhood___extended.html#a598c0e2de4bdbe38780e5976c4782ecd',1,'Neighbourhood_Extended::Neighbourhood_Extended(const Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default'],['../class_neighbourhood___extended.html#a9d83345feb7a960eb430040f2e0dcfc6',1,'Neighbourhood_Extended::Neighbourhood_Extended(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)']]], - ['neighbourhood_5fpriority_5',['NEIGHBOURHOOD_PRIORITY',['../_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4a2bee0e8eaf4cde9b0c1703eea16f1096',1,'CoMMATypes.h']]], - ['neighbourhood_5fpriority_5fone_5fpoint_5finit_6',['NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT',['../_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4a22d6940628c398311941290879caa0dc',1,'CoMMATypes.h']]], - ['neighbourhood_5fpure_5ffront_7',['Neighbourhood_Pure_Front',['../class_neighbourhood___pure___front.html',1,'Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../class_neighbourhood___pure___front.html#ab1fe82f0f4c5ddc07946b0c0fcdc2f65',1,'Neighbourhood_Pure_Front::Neighbourhood_Pure_Front(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights, CoMMAIntType dimension)'],['../class_neighbourhood___pure___front.html#adbe2555ab33ea43e96f1db86ef9ebc5a',1,'Neighbourhood_Pure_Front::Neighbourhood_Pure_Front(const Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default']]], - ['neighbourhoodbasetype_8',['NeighbourhoodBaseType',['../class_neighbourhood___extended.html#a5f895ae7b37a44a28e7c4b1d92492946',1,'Neighbourhood_Extended::NeighbourhoodBaseType()'],['../class_neighbourhood___pure___front.html#a99d20edd1d58840dce2ea95153d8f346',1,'Neighbourhood_Pure_Front::NeighbourhoodBaseType()'],['../class_neighbourhood_creator.html#a694bd4a43d05d3f7d98b374f7217eaf2',1,'NeighbourhoodCreator::NeighbourhoodBaseType()'],['../class_neighbourhood_extended_creator.html#a694bd4a43d05d3f7d98b374f7217eaf2',1,'NeighbourhoodExtendedCreator::NeighbourhoodBaseType()'],['../class_neighbourhood_pure_front_creator.html#a694bd4a43d05d3f7d98b374f7217eaf2',1,'NeighbourhoodPureFrontCreator::NeighbourhoodBaseType()']]], - ['neighbourhoodcreator_9',['NeighbourhoodCreator',['../class_neighbourhood_creator.html',1,'']]], - ['neighbourhoodcreatorbasetype_10',['NeighbourhoodCreatorBaseType',['../class_agglomerator___isotropic.html#aa245ac4c02bde4ca77f58385fbf98958',1,'Agglomerator_Isotropic']]], - ['neighbourhoodcreatorexttype_11',['NeighbourhoodCreatorExtType',['../class_agglomerator___isotropic.html#ac5499e103590911ed10b4f87eebc29a9',1,'Agglomerator_Isotropic']]], - ['neighbourhoodcreatorpftype_12',['NeighbourhoodCreatorPFType',['../class_agglomerator___isotropic.html#a03588cd463325589cb44471e3d980824',1,'Agglomerator_Isotropic']]], - ['neighbourhoodderivedtype_13',['NeighbourhoodDerivedType',['../class_neighbourhood_extended_creator.html#ae35290e079c36b28efff609a94476922',1,'NeighbourhoodExtendedCreator::NeighbourhoodDerivedType()'],['../class_neighbourhood_pure_front_creator.html#a52f10c48b22181c5d1f2784b958b705c',1,'NeighbourhoodPureFrontCreator::NeighbourhoodDerivedType()']]], - ['neighbourhoodextendedcreator_14',['NeighbourhoodExtendedCreator',['../class_neighbourhood_extended_creator.html',1,'']]], - ['neighbourhoodpurefrontcreator_15',['NeighbourhoodPureFrontCreator',['../class_neighbourhood_pure_front_creator.html',1,'']]], - ['neighbours_5fcbegin_16',['neighbours_cbegin',['../class_graph.html#ab898e7dc50ae162e9ae6663bd4e04cea',1,'Graph']]], - ['neighbours_5fcend_17',['neighbours_cend',['../class_graph.html#a33bbbcc09e102d47cf0944989d043d77',1,'Graph']]], - ['node_18',['Node',['../class_node.html#afeedc506abd5ba81abf6485aad28bf5d',1,'Node::Node()'],['../class_node.html',1,'Node< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >']]], - ['nodetype_19',['NodeType',['../class_tree.html#acc2d326e5727bc506094e726337210c9',1,'Tree']]] + ['operator_28_29_0',['operator()',['../structcomma_1_1_s_p_initializator.html#ada8d7d7f0f4b41ae82f5b159bd001d5e',1,'comma::SPInitializator::operator()()'],['../structcomma_1_1_s_p_full_initializator.html#abc882b29c5dbe57f25390e6bb043e667',1,'comma::SPFullInitializator::operator()()'],['../structcomma_1_1_s_p_one_point_initializator.html#a50828abe38c5d16833c9d7fd5a407c9c',1,'comma::SPOnePointInitializator::operator()()'],['../structcomma_1_1_custom_pair_less_functor.html#a31e9586ccc427694e6621fee6a910109',1,'comma::CustomPairLessFunctor::operator()()'],['../structcomma_1_1_custom_pair_greater_functor.html#a3baa52044f47d100d5320843cd48aa9f',1,'comma::CustomPairGreaterFunctor::operator()()'],['../structcomma_1_1_pair_second_based_less_functor.html#a6e502c50b4ff11d09764e2f95a331bd8',1,'comma::PairSecondBasedLessFunctor::operator()()'],['../classcomma_1_1_pair_find_first_based_functor.html#a162183a1f3a7017792fab396ef5a2e7b',1,'comma::PairFindFirstBasedFunctor::operator()()']]], + ['operator_3c_1',['operator<',['../classcomma_1_1_priority___pair.html#a6445c73468c4c111a2c73330395ae9c3',1,'comma::Priority_Pair']]], + ['operator_3d_3d_2',['operator==',['../classcomma_1_1_priority___pair.html#a310cd15c31749fbad8133e67993f0481',1,'comma::Priority_Pair']]], + ['order_5fnew_5fseeds_5fand_5fupdate_3',['order_new_seeds_and_update',['../classcomma_1_1_seeds___pool.html#aeb9e0c8f04da45e06e215bd6d262929c',1,'comma::Seeds_Pool::order_new_seeds_and_update()'],['../classcomma_1_1_seeds___pool___boundary___priority.html#a12bb14f9c2daa73a9842c0554919be54',1,'comma::Seeds_Pool_Boundary_Priority::order_new_seeds_and_update()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a8fddbf0ca066c36daf377289806f19b8',1,'comma::Seeds_Pool_Neighbourhood_Priority::order_new_seeds_and_update()']]] ]; diff --git a/search/all_c.js b/search/all_c.js index 3e373c1..06f0f85 100644 --- a/search/all_c.js +++ b/search/all_c.js @@ -1,7 +1,12 @@ var searchData= [ - ['operator_28_29_0',['operator()',['../struct_s_p_initializator.html#a1d6d6649a4d47308166b97fe9a57714b',1,'SPInitializator::operator()()'],['../struct_s_p_full_initializator.html#a380cf703f0fe0069a5f5c7dd0ead70c5',1,'SPFullInitializator::operator()()'],['../struct_s_p_one_point_initializator.html#a8a7072b8a77ffff0c4d4f6911d97f359',1,'SPOnePointInitializator::operator()()'],['../struct_custom_pair_less_functor.html#af2e849a34c258f2ce1f92fcd0c7bcc2a',1,'CustomPairLessFunctor::operator()()'],['../struct_custom_pair_greater_functor.html#a9ac240416deabfd8c145f46a835d672c',1,'CustomPairGreaterFunctor::operator()()'],['../struct_pair_second_based_less_functor.html#aadea5a66aac84faca65044194f80c2e3',1,'PairSecondBasedLessFunctor::operator()()'],['../class_pair_find_first_based_functor.html#a8cae901fdfde46d800070162ff963367',1,'PairFindFirstBasedFunctor::operator()()']]], - ['operator_3c_1',['operator<',['../class_priority___pair.html#a6445c73468c4c111a2c73330395ae9c3',1,'Priority_Pair']]], - ['operator_3d_3d_2',['operator==',['../class_priority___pair.html#a310cd15c31749fbad8133e67993f0481',1,'Priority_Pair']]], - ['order_5fnew_5fseeds_5fand_5fupdate_3',['order_new_seeds_and_update',['../class_seeds___pool.html#a5605fc7f8d961cac3343cc69b64a23f3',1,'Seeds_Pool::order_new_seeds_and_update()'],['../class_seeds___pool___boundary___priority.html#a95eaa542d85779930aca1fd962f88893',1,'Seeds_Pool_Boundary_Priority::order_new_seeds_and_update()'],['../class_seeds___pool___neighbourhood___priority.html#ae9694b6adced185e4282ec3bf8394346',1,'Seeds_Pool_Neighbourhood_Priority::order_new_seeds_and_update()']]] + ['pairfindfirstbasedfunctor_0',['PairFindFirstBasedFunctor',['../classcomma_1_1_pair_find_first_based_functor.html',1,'comma::PairFindFirstBasedFunctor< PairT >'],['../classcomma_1_1_pair_find_first_based_functor.html#a806e13eb6b28c4455f796aa9a46d24bd',1,'comma::PairFindFirstBasedFunctor::PairFindFirstBasedFunctor()'],['../classcomma_1_1_pair_find_first_based_functor.html#ac8129162752fe2eea0bce8e956e6d02f',1,'comma::PairFindFirstBasedFunctor::PairFindFirstBasedFunctor(const typename PairT::first_type &target)']]], + ['pairsecondbasedlessfunctor_1',['PairSecondBasedLessFunctor',['../structcomma_1_1_pair_second_based_less_functor.html',1,'comma']]], + ['pop_2',['pop',['../classcomma_1_1_queue.html#a5aee19993ac8929694ea6f0ef7951d8d',1,'comma::Queue']]], + ['print_3',['print',['../classcomma_1_1_bimap.html#af449cd0dc1fbb4f4b523cdbd1bc768ce',1,'comma::Bimap::print()'],['../classcomma_1_1_tree.html#ab4df4521ca99f1feff41aa55b06464b1',1,'comma::Tree::print()']]], + ['print_5fnodes_4',['print_nodes',['../classcomma_1_1_tree.html#a099bf175c326e84cee7d90a42e5ece2e',1,'comma::Tree']]], + ['priority_5fpair_5',['Priority_Pair',['../classcomma_1_1_priority___pair.html',1,'comma::Priority_Pair< A, B >'],['../classcomma_1_1_priority___pair.html#a433fe6eac4e503827959000d52d4fe2b',1,'comma::Priority_Pair::Priority_Pair()=default'],['../classcomma_1_1_priority___pair.html#a02001027693bee639c39e28aae3cf260',1,'comma::Priority_Pair::Priority_Pair(const A &a, const B &b)']]], + ['priority_5fpair_2eh_6',['Priority_Pair.h',['../_priority___pair_8h.html',1,'']]], + ['pure_5ffront_7',['PURE_FRONT',['../namespacecomma.html#a705b45ec112a3ac1bf59f760f0f4d022a681aa75b2dff7410008df1396b15fe35',1,'comma']]], + ['push_8',['push',['../classcomma_1_1_queue.html#af1aa48fd67cce65d729cd13806496eb3',1,'comma::Queue']]] ]; diff --git a/search/all_d.js b/search/all_d.js index 8d299fc..3aecaab 100644 --- a/search/all_d.js +++ b/search/all_d.js @@ -1,13 +1,5 @@ var searchData= [ - ['pairfindfirstbasedfunctor_0',['PairFindFirstBasedFunctor',['../class_pair_find_first_based_functor.html',1,'PairFindFirstBasedFunctor< PairT >'],['../class_pair_find_first_based_functor.html#a968048ebd83977dd8ea344e35fe105e7',1,'PairFindFirstBasedFunctor::PairFindFirstBasedFunctor()'],['../class_pair_find_first_based_functor.html#a0d1ac677374943a662cbc3a592473465',1,'PairFindFirstBasedFunctor::PairFindFirstBasedFunctor(const typename PairT::first_type &target)']]], - ['pairsecondbasedlessfunctor_1',['PairSecondBasedLessFunctor',['../struct_pair_second_based_less_functor.html',1,'']]], - ['pop_2',['pop',['../class_queue.html#abeee018138cbb5226e5352a5788e23bd',1,'Queue']]], - ['print_3',['print',['../class_bimap.html#aa4f8c3c9dd622bccffe066167db3f021',1,'Bimap::print()'],['../class_tree.html#a4d71a038b6d33dde44de8d1eddd634da',1,'Tree::print()']]], - ['print_5fnodes_4',['print_nodes',['../class_tree.html#a8f223fd2ef5bec1e944b4815c268839d',1,'Tree']]], - ['priority_5fpair_5',['Priority_Pair',['../class_priority___pair.html',1,'Priority_Pair< A, B >'],['../class_priority___pair.html#a65316a8c3d03d0413d3398b7b3ed453f',1,'Priority_Pair::Priority_Pair()'],['../class_priority___pair.html#ab21a9232231493249cf97b1f24998f68',1,'Priority_Pair::Priority_Pair(const A &a, const B &b)']]], - ['priority_5fpair_2eh_6',['Priority_Pair.h',['../_priority___pair_8h.html',1,'']]], - ['pure_5ffront_7',['PURE_FRONT',['../_co_m_m_a_types_8h.html#a317369a7239fe01b94e2a7450c448531a721785b33572067589eda175b3b2c525',1,'CoMMATypes.h']]], - ['push_8',['push',['../class_queue.html#a8e75adf40c581bcf8804a70ae0be18a3',1,'Queue']]], - ['pybind11_5fmodule_9',['PYBIND11_MODULE',['../_co_m_m_a_8cpp.html#a5cbd374c282b9c6431c52d2eae621735',1,'CoMMA.cpp']]] + ['queue_0',['Queue',['../classcomma_1_1_queue.html',1,'comma::Queue< T >'],['../classcomma_1_1_queue.html#aa75e16d9b3abc36850da8c426c169219',1,'comma::Queue::Queue()']]], + ['queue_2eh_1',['Queue.h',['../_queue_8h.html',1,'']]] ]; diff --git a/search/all_e.js b/search/all_e.js index 82a97e6..b7af83c 100644 --- a/search/all_e.js +++ b/search/all_e.js @@ -1,5 +1,6 @@ var searchData= [ - ['queue_0',['Queue',['../class_queue.html',1,'Queue< T >'],['../class_queue.html#af73bb29c868f7b37f369c668f114bd9f',1,'Queue::Queue()']]], - ['queue_2eh_1',['Queue.h',['../_queue_8h.html',1,'']]] + ['readme_2emd_0',['README.md',['../deprecated_2_r_e_a_d_m_e_8md.html',1,'(Global Namespace)'],['../_r_e_a_d_m_e_8md.html',1,'(Global Namespace)']]], + ['remove_5fnode_1',['remove_node',['../classcomma_1_1_subgraph.html#aba2014ec2b66bcc8cf270892bd395e1e',1,'comma::Subgraph']]], + ['ridge_2',['RIDGE',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8aaa4cdfbb2d1efc15da1728bbc125e9f1',1,'comma']]] ]; diff --git a/search/all_f.js b/search/all_f.js index ab281a0..b702b24 100644 --- a/search/all_f.js +++ b/search/all_f.js @@ -1,6 +1,22 @@ var searchData= [ - ['readme_2emd_0',['README.md',['../deprecated_2_r_e_a_d_m_e_8md.html',1,'(Global Namespace)'],['../_r_e_a_d_m_e_8md.html',1,'(Global Namespace)']]], - ['remove_5fnode_1',['remove_node',['../class_subgraph.html#afe1f74daa81f7af211cf683f2c8c85f5',1,'Subgraph']]], - ['ridge_2',['RIDGE',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9a44d0e0475ad371f8556a44361e179516',1,'CoMMATypes.h']]] + ['search_0',['search',['../classcomma_1_1_tree.html#acbf7f4e37693578e32f675680b0859ca',1,'comma::Tree']]], + ['second_1',['second',['../classcomma_1_1_priority___pair.html#a68586e6c5930aee091998935b657028e',1,'comma::Priority_Pair']]], + ['seeds_5fpool_2',['Seeds_Pool',['../classcomma_1_1_seeds___pool.html',1,'comma::Seeds_Pool< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_seeds___pool.html#a1493c48d699131945ffbd173104c900c',1,'comma::Seeds_Pool::Seeds_Pool()']]], + ['seeds_5fpool_2eh_3',['Seeds_Pool.h',['../_seeds___pool_8h.html',1,'']]], + ['seeds_5fpool_5fboundary_5fpriority_4',['Seeds_Pool_Boundary_Priority',['../classcomma_1_1_seeds___pool___boundary___priority.html',1,'comma::Seeds_Pool_Boundary_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_seeds___pool___boundary___priority.html#a849b5e49938159a291940d3e5fbb13f2',1,'comma::Seeds_Pool_Boundary_Priority::Seeds_Pool_Boundary_Priority()']]], + ['seeds_5fpool_5fneighbourhood_5fpriority_5',['Seeds_Pool_Neighbourhood_Priority',['../classcomma_1_1_seeds___pool___neighbourhood___priority.html',1,'comma::Seeds_Pool_Neighbourhood_Priority< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a4ca303915819a28c8688b3391ade65ba',1,'comma::Seeds_Pool_Neighbourhood_Priority::Seeds_Pool_Neighbourhood_Priority()']]], + ['seedspoolbasetype_6',['SeedsPoolBaseType',['../classcomma_1_1_seeds___pool___boundary___priority.html#a1d1c45f7e5b7803108d17ba4bdef0261',1,'comma::Seeds_Pool_Boundary_Priority::SeedsPoolBaseType()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a66ebace9a08086690b4ea3a1965f2cd9',1,'comma::Seeds_Pool_Neighbourhood_Priority::SeedsPoolBaseType()']]], + ['select_5fbest_5fcc_5fto_5fagglomerate_7',['select_best_cc_to_agglomerate',['../classcomma_1_1_coarse___cell___container.html#a7211f3bedde3f2f93044cbacd3e47c19',1,'comma::Coarse_Cell_Container']]], + ['select_5fbest_5fcc_5fto_5fagglomerate_5fwhole_8',['select_best_cc_to_agglomerate_whole',['../classcomma_1_1_coarse___cell___container.html#a06433ef8fe9388f3e640f3d8bfdf7c27',1,'comma::Coarse_Cell_Container']]], + ['set_5fagglomeration_5fparameter_9',['set_agglomeration_parameter',['../classcomma_1_1_agglomerator___isotropic.html#a674697dbdd54e42b6f8a37e60e5874b1',1,'comma::Agglomerator_Isotropic']]], + ['set_5ftop_5fqueue_10',['set_top_queue',['../classcomma_1_1_seeds___pool.html#ab973d98317537bd99b53956103e69ba8',1,'comma::Seeds_Pool']]], + ['spfullinitializator_11',['SPFullInitializator',['../structcomma_1_1_s_p_full_initializator.html',1,'comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../structcomma_1_1_s_p_full_initializator.html#a1a40a546f44cdd9bec7f20516cabb05c',1,'comma::SPFullInitializator::SPFullInitializator()']]], + ['spinitializator_12',['SPInitializator',['../structcomma_1_1_s_p_initializator.html',1,'comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../structcomma_1_1_s_p_initializator.html#a7d1760e2cc5a58d61717a777c3a2d283',1,'comma::SPInitializator::SPInitializator()']]], + ['spoil_5fqueue_13',['spoil_queue',['../classcomma_1_1_seeds___pool.html#ab8e4795e11961d437344ff026bdabf2f',1,'comma::Seeds_Pool']]], + ['sponepointinitializator_14',['SPOnePointInitializator',['../structcomma_1_1_s_p_one_point_initializator.html',1,'comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../structcomma_1_1_s_p_one_point_initializator.html#ae24aec29ae1c72997a91bc99b9c8f6f5',1,'comma::SPOnePointInitializator::SPOnePointInitializator()']]], + ['squared_5feuclidean_5fdistance_15',['squared_euclidean_distance',['../namespacecomma.html#a39eb676bbec9475d7b0b5a6186b5f3d0',1,'comma']]], + ['subgraph_16',['Subgraph',['../classcomma_1_1_subgraph.html',1,'comma::Subgraph< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >'],['../classcomma_1_1_subgraph.html#a7abbe5057d801b3c44c0f3cd16dbfc56',1,'comma::Subgraph::Subgraph()']]], + ['subgraphptr_17',['SubGraphPtr',['../classcomma_1_1_coarse___cell___subgraph.html#ad5a7874698d85e8a75d1738a6257ab26',1,'comma::Coarse_Cell_Subgraph']]], + ['subgraphtype_18',['SubGraphType',['../classcomma_1_1_coarse___cell___subgraph.html#ab140e803b551ea792a8f004aceb54aed',1,'comma::Coarse_Cell_Subgraph']]] ]; diff --git a/search/classes_0.js b/search/classes_0.js index 498db31..2979cd3 100644 --- a/search/classes_0.js +++ b/search/classes_0.js @@ -1,8 +1,8 @@ var searchData= [ - ['agglomerator_0',['Agglomerator',['../class_agglomerator.html',1,'']]], - ['agglomerator_5fanisotropic_1',['Agglomerator_Anisotropic',['../class_agglomerator___anisotropic.html',1,'']]], - ['agglomerator_5fbiconnected_2',['Agglomerator_Biconnected',['../class_agglomerator___biconnected.html',1,'']]], - ['agglomerator_5fisotropic_3',['Agglomerator_Isotropic',['../class_agglomerator___isotropic.html',1,'']]], - ['agglomerator_5fiterative_4',['Agglomerator_Iterative',['../class_agglomerator___iterative.html',1,'']]] + ['agglomerator_0',['Agglomerator',['../classcomma_1_1_agglomerator.html',1,'comma']]], + ['agglomerator_5fanisotropic_1',['Agglomerator_Anisotropic',['../classcomma_1_1_agglomerator___anisotropic.html',1,'comma']]], + ['agglomerator_5fbiconnected_2',['Agglomerator_Biconnected',['../classcomma_1_1_agglomerator___biconnected.html',1,'comma']]], + ['agglomerator_5fisotropic_3',['Agglomerator_Isotropic',['../classcomma_1_1_agglomerator___isotropic.html',1,'comma']]], + ['agglomerator_5fiterative_4',['Agglomerator_Iterative',['../classcomma_1_1_agglomerator___iterative.html',1,'comma']]] ]; diff --git a/search/classes_1.js b/search/classes_1.js index ff76034..9db3009 100644 --- a/search/classes_1.js +++ b/search/classes_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['bimap_0',['Bimap',['../class_bimap.html',1,'']]] + ['bimap_0',['Bimap',['../classcomma_1_1_bimap.html',1,'comma']]] ]; diff --git a/search/classes_2.js b/search/classes_2.js index 93c92ad..b1aa7fc 100644 --- a/search/classes_2.js +++ b/search/classes_2.js @@ -1,8 +1,8 @@ var searchData= [ - ['coarse_5fcell_0',['Coarse_Cell',['../class_coarse___cell.html',1,'']]], - ['coarse_5fcell_5fcontainer_1',['Coarse_Cell_Container',['../class_coarse___cell___container.html',1,'']]], - ['coarse_5fcell_5fsubgraph_2',['Coarse_Cell_Subgraph',['../class_coarse___cell___subgraph.html',1,'']]], - ['custompairgreaterfunctor_3',['CustomPairGreaterFunctor',['../struct_custom_pair_greater_functor.html',1,'']]], - ['custompairlessfunctor_4',['CustomPairLessFunctor',['../struct_custom_pair_less_functor.html',1,'']]] + ['coarse_5fcell_0',['Coarse_Cell',['../classcomma_1_1_coarse___cell.html',1,'comma']]], + ['coarse_5fcell_5fcontainer_1',['Coarse_Cell_Container',['../classcomma_1_1_coarse___cell___container.html',1,'comma']]], + ['coarse_5fcell_5fsubgraph_2',['Coarse_Cell_Subgraph',['../classcomma_1_1_coarse___cell___subgraph.html',1,'comma']]], + ['custompairgreaterfunctor_3',['CustomPairGreaterFunctor',['../structcomma_1_1_custom_pair_greater_functor.html',1,'comma']]], + ['custompairlessfunctor_4',['CustomPairLessFunctor',['../structcomma_1_1_custom_pair_less_functor.html',1,'comma']]] ]; diff --git a/search/classes_3.js b/search/classes_3.js index b37ed8b..2e662cd 100644 --- a/search/classes_3.js +++ b/search/classes_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['dual_5fgraph_0',['Dual_Graph',['../class_dual___graph.html',1,'']]] + ['dual_5fgraph_0',['Dual_Graph',['../classcomma_1_1_dual___graph.html',1,'comma']]] ]; diff --git a/search/classes_4.js b/search/classes_4.js index 400740a..05238c3 100644 --- a/search/classes_4.js +++ b/search/classes_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['graph_0',['Graph',['../class_graph.html',1,'']]] + ['graph_0',['Graph',['../classcomma_1_1_graph.html',1,'comma']]] ]; diff --git a/search/classes_5.js b/search/classes_5.js index d8bb874..a3cec10 100644 --- a/search/classes_5.js +++ b/search/classes_5.js @@ -1,10 +1,10 @@ var searchData= [ - ['neighbourhood_0',['Neighbourhood',['../class_neighbourhood.html',1,'']]], - ['neighbourhood_5fextended_1',['Neighbourhood_Extended',['../class_neighbourhood___extended.html',1,'']]], - ['neighbourhood_5fpure_5ffront_2',['Neighbourhood_Pure_Front',['../class_neighbourhood___pure___front.html',1,'']]], - ['neighbourhoodcreator_3',['NeighbourhoodCreator',['../class_neighbourhood_creator.html',1,'']]], - ['neighbourhoodextendedcreator_4',['NeighbourhoodExtendedCreator',['../class_neighbourhood_extended_creator.html',1,'']]], - ['neighbourhoodpurefrontcreator_5',['NeighbourhoodPureFrontCreator',['../class_neighbourhood_pure_front_creator.html',1,'']]], - ['node_6',['Node',['../class_node.html',1,'']]] + ['neighbourhood_0',['Neighbourhood',['../classcomma_1_1_neighbourhood.html',1,'comma']]], + ['neighbourhood_5fextended_1',['Neighbourhood_Extended',['../classcomma_1_1_neighbourhood___extended.html',1,'comma']]], + ['neighbourhood_5fpure_5ffront_2',['Neighbourhood_Pure_Front',['../classcomma_1_1_neighbourhood___pure___front.html',1,'comma']]], + ['neighbourhoodcreator_3',['NeighbourhoodCreator',['../classcomma_1_1_neighbourhood_creator.html',1,'comma']]], + ['neighbourhoodextendedcreator_4',['NeighbourhoodExtendedCreator',['../classcomma_1_1_neighbourhood_extended_creator.html',1,'comma']]], + ['neighbourhoodpurefrontcreator_5',['NeighbourhoodPureFrontCreator',['../classcomma_1_1_neighbourhood_pure_front_creator.html',1,'comma']]], + ['node_6',['Node',['../classcomma_1_1_node.html',1,'comma']]] ]; diff --git a/search/classes_6.js b/search/classes_6.js index 19dcf64..e4e4cab 100644 --- a/search/classes_6.js +++ b/search/classes_6.js @@ -1,6 +1,6 @@ var searchData= [ - ['pairfindfirstbasedfunctor_0',['PairFindFirstBasedFunctor',['../class_pair_find_first_based_functor.html',1,'']]], - ['pairsecondbasedlessfunctor_1',['PairSecondBasedLessFunctor',['../struct_pair_second_based_less_functor.html',1,'']]], - ['priority_5fpair_2',['Priority_Pair',['../class_priority___pair.html',1,'']]] + ['pairfindfirstbasedfunctor_0',['PairFindFirstBasedFunctor',['../classcomma_1_1_pair_find_first_based_functor.html',1,'comma']]], + ['pairsecondbasedlessfunctor_1',['PairSecondBasedLessFunctor',['../structcomma_1_1_pair_second_based_less_functor.html',1,'comma']]], + ['priority_5fpair_2',['Priority_Pair',['../classcomma_1_1_priority___pair.html',1,'comma']]] ]; diff --git a/search/classes_7.js b/search/classes_7.js index e762dca..1b73c10 100644 --- a/search/classes_7.js +++ b/search/classes_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['queue_0',['Queue',['../class_queue.html',1,'']]] + ['queue_0',['Queue',['../classcomma_1_1_queue.html',1,'comma']]] ]; diff --git a/search/classes_8.js b/search/classes_8.js index bf56711..4730f6a 100644 --- a/search/classes_8.js +++ b/search/classes_8.js @@ -1,10 +1,10 @@ var searchData= [ - ['seeds_5fpool_0',['Seeds_Pool',['../class_seeds___pool.html',1,'']]], - ['seeds_5fpool_5fboundary_5fpriority_1',['Seeds_Pool_Boundary_Priority',['../class_seeds___pool___boundary___priority.html',1,'']]], - ['seeds_5fpool_5fneighbourhood_5fpriority_2',['Seeds_Pool_Neighbourhood_Priority',['../class_seeds___pool___neighbourhood___priority.html',1,'']]], - ['spfullinitializator_3',['SPFullInitializator',['../struct_s_p_full_initializator.html',1,'']]], - ['spinitializator_4',['SPInitializator',['../struct_s_p_initializator.html',1,'']]], - ['sponepointinitializator_5',['SPOnePointInitializator',['../struct_s_p_one_point_initializator.html',1,'']]], - ['subgraph_6',['Subgraph',['../class_subgraph.html',1,'']]] + ['seeds_5fpool_0',['Seeds_Pool',['../classcomma_1_1_seeds___pool.html',1,'comma']]], + ['seeds_5fpool_5fboundary_5fpriority_1',['Seeds_Pool_Boundary_Priority',['../classcomma_1_1_seeds___pool___boundary___priority.html',1,'comma']]], + ['seeds_5fpool_5fneighbourhood_5fpriority_2',['Seeds_Pool_Neighbourhood_Priority',['../classcomma_1_1_seeds___pool___neighbourhood___priority.html',1,'comma']]], + ['spfullinitializator_3',['SPFullInitializator',['../structcomma_1_1_s_p_full_initializator.html',1,'comma']]], + ['spinitializator_4',['SPInitializator',['../structcomma_1_1_s_p_initializator.html',1,'comma']]], + ['sponepointinitializator_5',['SPOnePointInitializator',['../structcomma_1_1_s_p_one_point_initializator.html',1,'comma']]], + ['subgraph_6',['Subgraph',['../classcomma_1_1_subgraph.html',1,'comma']]] ]; diff --git a/search/classes_9.js b/search/classes_9.js index 0d6d7e9..44eb358 100644 --- a/search/classes_9.js +++ b/search/classes_9.js @@ -1,4 +1,4 @@ var searchData= [ - ['tree_0',['Tree',['../class_tree.html',1,'']]] + ['tree_0',['Tree',['../classcomma_1_1_tree.html',1,'comma']]] ]; diff --git a/search/enums_0.js b/search/enums_0.js index 3a77dd8..0531269 100644 --- a/search/enums_0.js +++ b/search/enums_0.js @@ -1,6 +1,6 @@ var searchData= [ - ['commacellt_0',['CoMMACellT',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9',1,'CoMMATypes.h']]], - ['commaneighbourhoodt_1',['CoMMANeighbourhoodT',['../_co_m_m_a_types_8h.html#a317369a7239fe01b94e2a7450c448531',1,'CoMMATypes.h']]], - ['commaseedspoolt_2',['CoMMASeedsPoolT',['../_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4',1,'CoMMATypes.h']]] + ['commacellt_0',['CoMMACellT',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8',1,'comma']]], + ['commaneighbourhoodt_1',['CoMMANeighbourhoodT',['../namespacecomma.html#a705b45ec112a3ac1bf59f760f0f4d022',1,'comma']]], + ['commaseedspoolt_2',['CoMMASeedsPoolT',['../namespacecomma.html#a8c8213401033616d834d48d77bf359a4',1,'comma']]] ]; diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js index 38743da..7d272eb 100644 --- a/search/enumvalues_0.js +++ b/search/enumvalues_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['boundary_5fpriority_0',['BOUNDARY_PRIORITY',['../_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4ad5458f42463e6dbf4422680ac6c473ec',1,'CoMMATypes.h']]], - ['boundary_5fpriority_5fone_5fpoint_5finit_1',['BOUNDARY_PRIORITY_ONE_POINT_INIT',['../_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4aedb5dcddd0aa551778485e2bfd5ac87f',1,'CoMMATypes.h']]] + ['boundary_5fpriority_0',['BOUNDARY_PRIORITY',['../namespacecomma.html#a8c8213401033616d834d48d77bf359a4a7340b7195c9071cd34c7d9a633a3d857',1,'comma']]], + ['boundary_5fpriority_5fone_5fpoint_5finit_1',['BOUNDARY_PRIORITY_ONE_POINT_INIT',['../namespacecomma.html#a8c8213401033616d834d48d77bf359a4a29ddaed9cc8cda952d02296b79010787',1,'comma']]] ]; diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js index fedc52f..1f64dfd 100644 --- a/search/enumvalues_1.js +++ b/search/enumvalues_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['corner_0',['CORNER',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9a91c566614c1c87c437ab3d686408e9ea',1,'CoMMATypes.h']]] + ['corner_0',['CORNER',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8a39ad49623cc576b66fc391bd2bc1c7cf',1,'comma']]] ]; diff --git a/search/enumvalues_2.js b/search/enumvalues_2.js index 67a1385..612b7b1 100644 --- a/search/enumvalues_2.js +++ b/search/enumvalues_2.js @@ -1,5 +1,5 @@ var searchData= [ - ['extended_0',['EXTENDED',['../_co_m_m_a_types_8h.html#a317369a7239fe01b94e2a7450c448531a6bc295e29b5149df1ca1d0bc868d3735',1,'CoMMATypes.h']]], - ['extreme_1',['EXTREME',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9ae98b90fef66d60ced715daeeed560730',1,'CoMMATypes.h']]] + ['extended_0',['EXTENDED',['../namespacecomma.html#a705b45ec112a3ac1bf59f760f0f4d022a5b91bee96d92adb448b6529d2ea8289d',1,'comma']]], + ['extreme_1',['EXTREME',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8ac5e925f6e54a010df01d51f9b4e6f981',1,'comma']]] ]; diff --git a/search/enumvalues_3.js b/search/enumvalues_3.js index 5971a48..4e0c8a3 100644 --- a/search/enumvalues_3.js +++ b/search/enumvalues_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['interior_0',['INTERIOR',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9aa5fec78385643202af1d49268705b4c2',1,'CoMMATypes.h']]] + ['interior_0',['INTERIOR',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8ada6f7a085b1f7f2125ce30f5e02db53c',1,'comma']]] ]; diff --git a/search/enumvalues_4.js b/search/enumvalues_4.js index ded5499..42ca3e7 100644 --- a/search/enumvalues_4.js +++ b/search/enumvalues_4.js @@ -1,6 +1,6 @@ var searchData= [ - ['n_5fcell_5ftypes_0',['N_CELL_TYPES',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9ab2eff5e2e952ed10adb515644a05c3c4',1,'CoMMATypes.h']]], - ['neighbourhood_5fpriority_1',['NEIGHBOURHOOD_PRIORITY',['../_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4a2bee0e8eaf4cde9b0c1703eea16f1096',1,'CoMMATypes.h']]], - ['neighbourhood_5fpriority_5fone_5fpoint_5finit_2',['NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT',['../_co_m_m_a_types_8h.html#a21d465186a970946f27155976c4d2ef4a22d6940628c398311941290879caa0dc',1,'CoMMATypes.h']]] + ['n_5fcell_5ftypes_0',['N_CELL_TYPES',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8a0309283de9cefb87968e32825c3418ec',1,'comma']]], + ['neighbourhood_5fpriority_1',['NEIGHBOURHOOD_PRIORITY',['../namespacecomma.html#a8c8213401033616d834d48d77bf359a4ae3fbc583bddef8540a06125ed1e7dc79',1,'comma']]], + ['neighbourhood_5fpriority_5fone_5fpoint_5finit_2',['NEIGHBOURHOOD_PRIORITY_ONE_POINT_INIT',['../namespacecomma.html#a8c8213401033616d834d48d77bf359a4a8c23e18158e720cbd348f98e50376a5d',1,'comma']]] ]; diff --git a/search/enumvalues_5.js b/search/enumvalues_5.js index 5c2f692..b419923 100644 --- a/search/enumvalues_5.js +++ b/search/enumvalues_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['pure_5ffront_0',['PURE_FRONT',['../_co_m_m_a_types_8h.html#a317369a7239fe01b94e2a7450c448531a721785b33572067589eda175b3b2c525',1,'CoMMATypes.h']]] + ['pure_5ffront_0',['PURE_FRONT',['../namespacecomma.html#a705b45ec112a3ac1bf59f760f0f4d022a681aa75b2dff7410008df1396b15fe35',1,'comma']]] ]; diff --git a/search/enumvalues_6.js b/search/enumvalues_6.js index bcd6cf8..8f78309 100644 --- a/search/enumvalues_6.js +++ b/search/enumvalues_6.js @@ -1,4 +1,4 @@ var searchData= [ - ['ridge_0',['RIDGE',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9a44d0e0475ad371f8556a44361e179516',1,'CoMMATypes.h']]] + ['ridge_0',['RIDGE',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8aaa4cdfbb2d1efc15da1728bbc125e9f1',1,'comma']]] ]; diff --git a/search/enumvalues_7.js b/search/enumvalues_7.js index 2dbc128..9039cf3 100644 --- a/search/enumvalues_7.js +++ b/search/enumvalues_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['valley_0',['VALLEY',['../_co_m_m_a_types_8h.html#aaa3311fe4fbb22497d5d6825731902c9a427eb63b284bf229741f0a93da2222e7',1,'CoMMATypes.h']]] + ['valley_0',['VALLEY',['../namespacecomma.html#a6676cd5a4d3dbf9141f8c7bc87617be8a4f18a70072d52370244908b93cf13e85',1,'comma']]] ]; diff --git a/search/files_2.js b/search/files_2.js index 7109384..2258a5f 100644 --- a/search/files_2.js +++ b/search/files_2.js @@ -2,7 +2,6 @@ var searchData= [ ['coarse_5fcell_2eh_0',['Coarse_Cell.h',['../_coarse___cell_8h.html',1,'']]], ['coarse_5fcell_5fcontainer_2eh_1',['Coarse_Cell_Container.h',['../_coarse___cell___container_8h.html',1,'']]], - ['comma_2ecpp_2',['CoMMA.cpp',['../_co_m_m_a_8cpp.html',1,'']]], - ['comma_2eh_3',['CoMMA.h',['../_co_m_m_a_8h.html',1,'']]], - ['commatypes_2eh_4',['CoMMATypes.h',['../_co_m_m_a_types_8h.html',1,'']]] + ['comma_2eh_2',['CoMMA.h',['../_co_m_m_a_8h.html',1,'']]], + ['commadefs_2eh_3',['CoMMADefs.h',['../_co_m_m_a_defs_8h.html',1,'']]] ]; diff --git a/search/functions_0.js b/search/functions_0.js index 4d6668f..e7dece2 100644 --- a/search/functions_0.js +++ b/search/functions_0.js @@ -1,9 +1,9 @@ var searchData= [ - ['agglomerate_5fone_5flevel_0',['agglomerate_one_level',['../class_agglomerator.html#a9ec8984ec317c1a6588f2aa004e83c30',1,'Agglomerator::agglomerate_one_level()'],['../class_agglomerator___anisotropic.html#acdf28be45307f3ee1a30e120dd91ac24',1,'Agglomerator_Anisotropic::agglomerate_one_level()'],['../class_agglomerator___isotropic.html#a7c47e1d03561b56428dbee75803612f1',1,'Agglomerator_Isotropic::agglomerate_one_level()'],['../_co_m_m_a_8h.html#a906c231be20a1f53a240618bae81d95f',1,'agglomerate_one_level(): CoMMA.h']]], - ['agglomerator_1',['Agglomerator',['../class_agglomerator.html#a7f04bd9151b63c4945af474d0173df26',1,'Agglomerator']]], - ['agglomerator_5fanisotropic_2',['Agglomerator_Anisotropic',['../class_agglomerator___anisotropic.html#ac765abc6d952dbe3b81e1bee877fcb69',1,'Agglomerator_Anisotropic']]], - ['agglomerator_5fbiconnected_3',['Agglomerator_Biconnected',['../class_agglomerator___biconnected.html#a66a006a8b8b2f02b3bbfef050c1190d6',1,'Agglomerator_Biconnected']]], - ['agglomerator_5fisotropic_4',['Agglomerator_Isotropic',['../class_agglomerator___isotropic.html#a72d96dedea94efc932d50ae95e9aa01d',1,'Agglomerator_Isotropic']]], - ['agglomerator_5fiterative_5',['Agglomerator_Iterative',['../class_agglomerator___iterative.html#a5b2972f94b006e90d8e5878e272378d2',1,'Agglomerator_Iterative']]] + ['agglomerate_5fone_5flevel_0',['agglomerate_one_level',['../classcomma_1_1_agglomerator.html#ad318f38cc60db419207fa1def39e2269',1,'comma::Agglomerator::agglomerate_one_level()'],['../classcomma_1_1_agglomerator___anisotropic.html#a679ba0b3f517db87b18a0707d71a6432',1,'comma::Agglomerator_Anisotropic::agglomerate_one_level()'],['../classcomma_1_1_agglomerator___isotropic.html#a7690b334b4f4d143d5edef7e015226c5',1,'comma::Agglomerator_Isotropic::agglomerate_one_level()'],['../namespacecomma.html#aa6987db36673ecd638a9b08dfaac18b1',1,'comma::agglomerate_one_level()']]], + ['agglomerator_1',['Agglomerator',['../classcomma_1_1_agglomerator.html#a476edf422e78d865666af88b5757ed7c',1,'comma::Agglomerator']]], + ['agglomerator_5fanisotropic_2',['Agglomerator_Anisotropic',['../classcomma_1_1_agglomerator___anisotropic.html#a5c939c5706f8c9c47675e3df657568fb',1,'comma::Agglomerator_Anisotropic']]], + ['agglomerator_5fbiconnected_3',['Agglomerator_Biconnected',['../classcomma_1_1_agglomerator___biconnected.html#a4553e29aeae7a83000d10e48564e6cca',1,'comma::Agglomerator_Biconnected']]], + ['agglomerator_5fisotropic_4',['Agglomerator_Isotropic',['../classcomma_1_1_agglomerator___isotropic.html#a8d0b6d4158f367ac301e93bbe29d0970',1,'comma::Agglomerator_Isotropic']]], + ['agglomerator_5fiterative_5',['Agglomerator_Iterative',['../classcomma_1_1_agglomerator___iterative.html#ab6fe2d081288e81892bb0c251fcb2f47',1,'comma::Agglomerator_Iterative']]] ]; diff --git a/search/functions_1.js b/search/functions_1.js index d865265..a2be3f8 100644 --- a/search/functions_1.js +++ b/search/functions_1.js @@ -1,7 +1,7 @@ var searchData= [ - ['bfs_0',['BFS',['../class_graph.html#ae22f936394d29e34b877581e4014cc65',1,'Graph']]], - ['bimap_1',['Bimap',['../class_bimap.html#adab123f3fcc176fabad0712d1479bfb1',1,'Bimap']]], - ['build_5fanisotropic_5flines_2',['build_anisotropic_lines',['../class_agglomerator___anisotropic.html#a16ce420726335c28ca83cab73fa3f995',1,'Agglomerator_Anisotropic']]], - ['build_5fqueue_3',['build_queue',['../class_seeds___pool.html#a3b7070b7ddb7c2f856f35407bb76a73f',1,'Seeds_Pool']]] + ['bfs_0',['BFS',['../classcomma_1_1_graph.html#aeea451f73bc04c2b88a24a4709f28c21',1,'comma::Graph']]], + ['bimap_1',['Bimap',['../classcomma_1_1_bimap.html#a668d1a44f819088e9a97555428949af0',1,'comma::Bimap']]], + ['build_5fanisotropic_5flines_2',['build_anisotropic_lines',['../classcomma_1_1_agglomerator___anisotropic.html#a06284c8df3ba73d75790c1b703774b11',1,'comma::Agglomerator_Anisotropic']]], + ['build_5fqueue_3',['build_queue',['../classcomma_1_1_seeds___pool.html#af927ed91e46d30b8571a964b72f206dc',1,'comma::Seeds_Pool']]] ]; diff --git a/search/functions_10.js b/search/functions_10.js index 58d1408..79c2977 100644 --- a/search/functions_10.js +++ b/search/functions_10.js @@ -1,8 +1,8 @@ var searchData= [ - ['update_0',['update',['../class_neighbourhood.html#a977a87103b31f7709bd762499c0e4fa0',1,'Neighbourhood::update()'],['../class_neighbourhood___extended.html#a3ae4f2f2052bc05e6f431a35ef06bcbb',1,'Neighbourhood_Extended::update()'],['../class_neighbourhood___pure___front.html#a487983e2d219c5527a9151056d61b7ed',1,'Neighbourhood_Pure_Front::update()'],['../class_seeds___pool.html#adc6a34efef0ec0ffe69a4d4b50741d07',1,'Seeds_Pool::update()'],['../class_seeds___pool___boundary___priority.html#acba386e4effac0b7d795ba8b2fb41372',1,'Seeds_Pool_Boundary_Priority::update()'],['../class_seeds___pool___neighbourhood___priority.html#a114213b8d042b86fd4c735b74c4af8a5',1,'Seeds_Pool_Neighbourhood_Priority::update()']]], - ['update_5fconnectivity_1',['update_connectivity',['../class_coarse___cell___subgraph.html#a66b1e4e891688f3ec18bd1d91b80b968',1,'Coarse_Cell_Subgraph']]], - ['update_5fnodea_2',['update_nodeA',['../class_bimap.html#a8f0d12e64f86e857b3ec6f709301c186',1,'Bimap']]], - ['update_5fnodeb_3',['update_nodeB',['../class_bimap.html#adcf24cc8cc3f6fbef8783712d00415e2',1,'Bimap']]], - ['update_5fseeds_5fpool_4',['update_seeds_pool',['../class_agglomerator___anisotropic.html#a25a66ffe537285ba800a6ea7ab4b8238',1,'Agglomerator_Anisotropic']]] + ['update_0',['update',['../classcomma_1_1_neighbourhood.html#a2a993a6864f21796dafeb06778cb461d',1,'comma::Neighbourhood::update()'],['../classcomma_1_1_neighbourhood___extended.html#a452c8c35e83e2b4a28cb4e60362bcfed',1,'comma::Neighbourhood_Extended::update()'],['../classcomma_1_1_neighbourhood___pure___front.html#ae1b96c3d2b2421520cdef03e16a7d102',1,'comma::Neighbourhood_Pure_Front::update()'],['../classcomma_1_1_seeds___pool.html#a822572a26fb4a9f1efef060d3ecada9f',1,'comma::Seeds_Pool::update()'],['../classcomma_1_1_seeds___pool___boundary___priority.html#adff771d42e189fd9f51ec5ca70c5ad0d',1,'comma::Seeds_Pool_Boundary_Priority::update()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#af2883cfa457dc93928f31d35f7e62a3c',1,'comma::Seeds_Pool_Neighbourhood_Priority::update()']]], + ['update_5fconnectivity_1',['update_connectivity',['../classcomma_1_1_coarse___cell___subgraph.html#a2961e12f53d52fb01a1be0243ea45126',1,'comma::Coarse_Cell_Subgraph']]], + ['update_5fnodea_2',['update_nodeA',['../classcomma_1_1_bimap.html#a1651c9075b5bd0895e3d3deda3dca566',1,'comma::Bimap']]], + ['update_5fnodeb_3',['update_nodeB',['../classcomma_1_1_bimap.html#aca11af6d19701ce17ce0dc05f25af6ec',1,'comma::Bimap']]], + ['update_5fseeds_5fpool_4',['update_seeds_pool',['../classcomma_1_1_agglomerator___anisotropic.html#a3ed52576f0b6698a69f388f295a2e1c5',1,'comma::Agglomerator_Anisotropic']]] ]; diff --git a/search/functions_11.js b/search/functions_11.js index c2a5e84..14742c2 100644 --- a/search/functions_11.js +++ b/search/functions_11.js @@ -1,4 +1,4 @@ var searchData= [ - ['vector_5fof_5ffirst_5felements_0',['vector_of_first_elements',['../_util_8h.html#a4eb847819a7f5df06f9de67ff7dff82a',1,'Util.h']]] + ['vector_5fof_5ffirst_5felements_0',['vector_of_first_elements',['../namespacecomma.html#ab712cf58df5dacc470f08332abdde7ec',1,'comma']]] ]; diff --git a/search/functions_12.js b/search/functions_12.js index ceeecce..872c04d 100644 --- a/search/functions_12.js +++ b/search/functions_12.js @@ -1,5 +1,5 @@ var searchData= [ - ['weights_5fcbegin_0',['weights_cbegin',['../class_graph.html#a902a970714be95d373a5b18de1cddaeb',1,'Graph']]], - ['weights_5fcend_1',['weights_cend',['../class_graph.html#a12311cab4fac8b78b4e61df8c0337a98',1,'Graph']]] + ['weights_5fcbegin_0',['weights_cbegin',['../classcomma_1_1_graph.html#a036c1da6e0297d153c0a1dea0aeee8b9',1,'comma::Graph']]], + ['weights_5fcend_1',['weights_cend',['../classcomma_1_1_graph.html#a9974d87bd1fc67902f8c5fc400a3ad71',1,'comma::Graph']]] ]; diff --git a/search/functions_13.js b/search/functions_13.js index 0d87c9f..b55b409 100644 --- a/search/functions_13.js +++ b/search/functions_13.js @@ -1,19 +1,30 @@ var searchData= [ - ['_7eagglomerator_0',['~Agglomerator',['../class_agglomerator.html#a7d4c2d619c8e433387d181b3628155cc',1,'Agglomerator']]], - ['_7eagglomerator_5fanisotropic_1',['~Agglomerator_Anisotropic',['../class_agglomerator___anisotropic.html#ac0219221b9c9ee4b730c32246df96246',1,'Agglomerator_Anisotropic']]], - ['_7eagglomerator_5fbiconnected_2',['~Agglomerator_Biconnected',['../class_agglomerator___biconnected.html#ad2c325577dcfe05b9b4d4b27dd37de40',1,'Agglomerator_Biconnected']]], - ['_7eagglomerator_5fisotropic_3',['~Agglomerator_Isotropic',['../class_agglomerator___isotropic.html#aa232687cd2b7b8bc93953d1dff5d4f84',1,'Agglomerator_Isotropic']]], - ['_7eagglomerator_5fiterative_4',['~Agglomerator_Iterative',['../class_agglomerator___iterative.html#a080de7d893873a51618f9ce39a522467',1,'Agglomerator_Iterative']]], - ['_7ebimap_5',['~Bimap',['../class_bimap.html#ac15ec85665c5628b1c5ac0dfdfc27274',1,'Bimap']]], - ['_7ecoarse_5fcell_6',['~Coarse_Cell',['../class_coarse___cell.html#af75a1031ce60bbf121083ddda51f1941',1,'Coarse_Cell']]], - ['_7ecoarse_5fcell_5fcontainer_7',['~Coarse_Cell_Container',['../class_coarse___cell___container.html#acbf8e09f2a919012a743a323564c3b3a',1,'Coarse_Cell_Container']]], - ['_7edual_5fgraph_8',['~Dual_Graph',['../class_dual___graph.html#a0480781b854e4e7542659dfecadee968',1,'Dual_Graph']]], - ['_7egraph_9',['~Graph',['../class_graph.html#a5596a1d6e1d107c5648c70903e8f6a76',1,'Graph']]], - ['_7epairfindfirstbasedfunctor_10',['~PairFindFirstBasedFunctor',['../class_pair_find_first_based_functor.html#af0a85839b1ca6439a4594fdfbbf14550',1,'PairFindFirstBasedFunctor']]], - ['_7epriority_5fpair_11',['~Priority_Pair',['../class_priority___pair.html#ac642de9d7479a589b93ac5cc5751634a',1,'Priority_Pair']]], - ['_7equeue_12',['~Queue',['../class_queue.html#aa7eef1b427e24555780505de20e9acbc',1,'Queue']]], - ['_7eseeds_5fpool_13',['~Seeds_Pool',['../class_seeds___pool.html#a91f79ccf5fda9ea80726b78df15a7b94',1,'Seeds_Pool']]], - ['_7esubgraph_14',['~Subgraph',['../class_subgraph.html#abe3ffa3088420c172fb65840429ea479',1,'Subgraph']]], - ['_7etree_15',['~Tree',['../class_tree.html#adebe85a87b76ce79b6d45bc05ff6b46a',1,'Tree']]] + ['_7eagglomerator_0',['~Agglomerator',['../classcomma_1_1_agglomerator.html#a38fbd9dc2f6718a7c909bd524cd4a2f4',1,'comma::Agglomerator']]], + ['_7eagglomerator_5fanisotropic_1',['~Agglomerator_Anisotropic',['../classcomma_1_1_agglomerator___anisotropic.html#aa9bfcf6f6403c97bff9c9bba8673a377',1,'comma::Agglomerator_Anisotropic']]], + ['_7eagglomerator_5fbiconnected_2',['~Agglomerator_Biconnected',['../classcomma_1_1_agglomerator___biconnected.html#a1e429e7e1e8cca0447b7322a4636ca1b',1,'comma::Agglomerator_Biconnected']]], + ['_7eagglomerator_5fisotropic_3',['~Agglomerator_Isotropic',['../classcomma_1_1_agglomerator___isotropic.html#aa254625482275446b207051f544fd92f',1,'comma::Agglomerator_Isotropic']]], + ['_7eagglomerator_5fiterative_4',['~Agglomerator_Iterative',['../classcomma_1_1_agglomerator___iterative.html#a5e67fbff68bf868258ebdf1637a83ab6',1,'comma::Agglomerator_Iterative']]], + ['_7ebimap_5',['~Bimap',['../classcomma_1_1_bimap.html#a4a12f2d28cbd33146b138ebae62aaf35',1,'comma::Bimap']]], + ['_7ecoarse_5fcell_6',['~Coarse_Cell',['../classcomma_1_1_coarse___cell.html#ac53b192d8a56d61153d33524b3b1663d',1,'comma::Coarse_Cell']]], + ['_7ecoarse_5fcell_5fcontainer_7',['~Coarse_Cell_Container',['../classcomma_1_1_coarse___cell___container.html#ac64a40e0897db7510ba5e5b874891268',1,'comma::Coarse_Cell_Container']]], + ['_7edual_5fgraph_8',['~Dual_Graph',['../classcomma_1_1_dual___graph.html#ad2ece10214db2a38f54b4c2e4ab4451f',1,'comma::Dual_Graph']]], + ['_7egraph_9',['~Graph',['../classcomma_1_1_graph.html#ad7d4773cefcbc9627b0779e28824e1f8',1,'comma::Graph']]], + ['_7eneighbourhood_10',['~Neighbourhood',['../classcomma_1_1_neighbourhood.html#ae54c6b0bf42c2ec21c56308a1cddf05b',1,'comma::Neighbourhood']]], + ['_7eneighbourhood_5fextended_11',['~Neighbourhood_Extended',['../classcomma_1_1_neighbourhood___extended.html#ada067e494ee4d1ed5533aa26384806f9',1,'comma::Neighbourhood_Extended']]], + ['_7eneighbourhood_5fpure_5ffront_12',['~Neighbourhood_Pure_Front',['../classcomma_1_1_neighbourhood___pure___front.html#a2ed8fac1690468f67afe039ac052a5d2',1,'comma::Neighbourhood_Pure_Front']]], + ['_7eneighbourhoodcreator_13',['~NeighbourhoodCreator',['../classcomma_1_1_neighbourhood_creator.html#a8e26c2ebfc2006e05c528dd70293e274',1,'comma::NeighbourhoodCreator']]], + ['_7eneighbourhoodextendedcreator_14',['~NeighbourhoodExtendedCreator',['../classcomma_1_1_neighbourhood_extended_creator.html#a2412e4b615346b2dfa34ab3aba147ef4',1,'comma::NeighbourhoodExtendedCreator']]], + ['_7eneighbourhoodpurefrontcreator_15',['~NeighbourhoodPureFrontCreator',['../classcomma_1_1_neighbourhood_pure_front_creator.html#a762a03d248377977aa1c60eacd4479a8',1,'comma::NeighbourhoodPureFrontCreator']]], + ['_7epairfindfirstbasedfunctor_16',['~PairFindFirstBasedFunctor',['../classcomma_1_1_pair_find_first_based_functor.html#a6ee63654dfa0f1c4676f198b318a9bed',1,'comma::PairFindFirstBasedFunctor']]], + ['_7epriority_5fpair_17',['~Priority_Pair',['../classcomma_1_1_priority___pair.html#a00bcb87b3275b43aaa493fd50dfa19f5',1,'comma::Priority_Pair']]], + ['_7equeue_18',['~Queue',['../classcomma_1_1_queue.html#a995428caef81f88244df2c05972252bf',1,'comma::Queue']]], + ['_7eseeds_5fpool_19',['~Seeds_Pool',['../classcomma_1_1_seeds___pool.html#a7179db66333b68d1229bb8056dedf97d',1,'comma::Seeds_Pool']]], + ['_7eseeds_5fpool_5fboundary_5fpriority_20',['~Seeds_Pool_Boundary_Priority',['../classcomma_1_1_seeds___pool___boundary___priority.html#a9b8cb88165b0e4d5cdbd35430122e126',1,'comma::Seeds_Pool_Boundary_Priority']]], + ['_7eseeds_5fpool_5fneighbourhood_5fpriority_21',['~Seeds_Pool_Neighbourhood_Priority',['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a5f8c325ed9efd6476c36b9a979273fb1',1,'comma::Seeds_Pool_Neighbourhood_Priority']]], + ['_7espfullinitializator_22',['~SPFullInitializator',['../structcomma_1_1_s_p_full_initializator.html#a41002d642267555e928ce4979c27d2c0',1,'comma::SPFullInitializator']]], + ['_7espinitializator_23',['~SPInitializator',['../structcomma_1_1_s_p_initializator.html#a7b3eebdd5c01a9cc42e64458f409bed4',1,'comma::SPInitializator']]], + ['_7esponepointinitializator_24',['~SPOnePointInitializator',['../structcomma_1_1_s_p_one_point_initializator.html#a549cb8f8d1080026044644bd9ccf3a24',1,'comma::SPOnePointInitializator']]], + ['_7esubgraph_25',['~Subgraph',['../classcomma_1_1_subgraph.html#a3cfdb160481138be28f9a51340d99cea',1,'comma::Subgraph']]], + ['_7etree_26',['~Tree',['../classcomma_1_1_tree.html#aeea0d5dc507464848dbb6ee591f512d1',1,'comma::Tree']]] ]; diff --git a/search/functions_2.js b/search/functions_2.js index 7ebdb03..8ba2d76 100644 --- a/search/functions_2.js +++ b/search/functions_2.js @@ -1,20 +1,20 @@ var searchData= [ - ['cc_5fcreate_5fall_5fdelayed_5fcc_0',['cc_create_all_delayed_cc',['../class_coarse___cell___container.html#a03acb3ee71ea2d53e899943912f7fc12',1,'Coarse_Cell_Container']]], - ['check_5fconnectivity_1',['check_connectivity',['../class_graph.html#af05d0f47a18adcd45211fe6cf795e039',1,'Graph']]], - ['choose_5fnew_5fseed_2',['choose_new_seed',['../class_seeds___pool.html#a54aeaf8e86cccde8f7bca556ec005f3c',1,'Seeds_Pool::choose_new_seed()'],['../class_seeds___pool___boundary___priority.html#af3f91b37d8b3704c6bad00c8324f71be',1,'Seeds_Pool_Boundary_Priority::choose_new_seed()'],['../class_seeds___pool___neighbourhood___priority.html#a1db03da69eb61cc4f6486d303065261d',1,'Seeds_Pool_Neighbourhood_Priority::choose_new_seed()']]], - ['choose_5foptimal_5fcc_5fand_5fupdate_5fseeds_5fpool_3',['choose_optimal_cc_and_update_seeds_pool',['../class_agglomerator___isotropic.html#a2a74055172b861f3de243a55d5cd4622',1,'Agglomerator_Isotropic::choose_optimal_cc_and_update_seeds_pool()'],['../class_agglomerator___biconnected.html#a48c585ecde2224027023eb2303062c95',1,'Agglomerator_Biconnected::choose_optimal_cc_and_update_seeds_pool()']]], - ['clone_4',['clone',['../class_neighbourhood_creator.html#ac97c8d2b2d33bb0ac38264fd12da5bcf',1,'NeighbourhoodCreator::clone()'],['../class_neighbourhood_extended_creator.html#ac05c6d6367be13473953a9382567b1ad',1,'NeighbourhoodExtendedCreator::clone()'],['../class_neighbourhood_pure_front_creator.html#a61e707ffe7a0727ed7468777dc9b9d94',1,'NeighbourhoodPureFrontCreator::clone()']]], - ['coarse_5fcell_5',['Coarse_Cell',['../class_coarse___cell.html#a838221044200a9e58592b27c7f61769b',1,'Coarse_Cell']]], - ['coarse_5fcell_5fcontainer_6',['Coarse_Cell_Container',['../class_coarse___cell___container.html#a534208d33bc0bdc591223024496a3796',1,'Coarse_Cell_Container']]], - ['coarse_5fcell_5fsubgraph_7',['Coarse_Cell_Subgraph',['../class_coarse___cell___subgraph.html#a6721f05cc78e6cc4cb300522acddcf06',1,'Coarse_Cell_Subgraph']]], - ['compute_5fbest_5ffc_5fto_5fadd_8',['compute_best_fc_to_add',['../class_agglomerator___biconnected.html#a7816d78ede33b94ecf33fc9e5919e1a7',1,'Agglomerator_Biconnected::compute_best_fc_to_add()'],['../class_agglomerator___iterative.html#acb0661b873442a19ad0b2ea678345642',1,'Agglomerator_Iterative::compute_best_fc_to_add()']]], - ['compute_5ffc_5fcompactness_5finside_5fa_5fcc_9',['compute_fc_compactness_inside_a_cc',['../class_graph.html#a491a1c7a463f291568123421ba1e7ae9',1,'Graph']]], - ['compute_5fmin_5ffc_5fcompactness_5finside_5fa_5fcc_10',['compute_min_fc_compactness_inside_a_cc',['../class_graph.html#ac7db1170e6505b0ea16d40ce255f18bf',1,'Graph']]], - ['compute_5fneighbourhood_5fbased_5fwall_5fdistance_11',['compute_neighbourhood_based_wall_distance',['../_util_8h.html#a391837a2e1b572f5f7926b9aaae04d44',1,'Util.h']]], - ['compute_5fneighbourhood_5fof_5fcc_12',['compute_neighbourhood_of_cc',['../class_dual___graph.html#a3a4977d15b734d7c28ca851f6871230e',1,'Dual_Graph']]], - ['compute_5fnext_5fcc_5ffeatures_13',['compute_next_cc_features',['../class_agglomerator___isotropic.html#acd6b14cda474839dfe2430b253966b5b',1,'Agglomerator_Isotropic']]], - ['correct_14',['correct',['../class_coarse___cell___container.html#ad8f17759e8670d7c89b2931282f55617',1,'Coarse_Cell_Container']]], - ['create_15',['create',['../class_neighbourhood_creator.html#adb2b715bfe127683cacee497f3622e58',1,'NeighbourhoodCreator::create()'],['../class_neighbourhood_extended_creator.html#a95aaccfb071d8af38792bc7d3a714bb5',1,'NeighbourhoodExtendedCreator::create()'],['../class_neighbourhood_pure_front_creator.html#a8fcdc6ff2ed08f0806a1bd021728d6f1',1,'NeighbourhoodPureFrontCreator::create()']]], - ['create_5fcc_16',['create_cc',['../class_coarse___cell___container.html#a89af69d54fd9564d112fcc0897e8f8c3',1,'Coarse_Cell_Container']]] + ['cc_5fcreate_5fall_5fdelayed_5fcc_0',['cc_create_all_delayed_cc',['../classcomma_1_1_coarse___cell___container.html#aff375cbd38f430300abad77480031841',1,'comma::Coarse_Cell_Container']]], + ['check_5fconnectivity_1',['check_connectivity',['../classcomma_1_1_graph.html#a72c40bec394188475ac30b159388f29f',1,'comma::Graph']]], + ['choose_5fnew_5fseed_2',['choose_new_seed',['../classcomma_1_1_seeds___pool.html#a14a19c8ef86507a6b3f0ff73d3b0a86c',1,'comma::Seeds_Pool::choose_new_seed()'],['../classcomma_1_1_seeds___pool___boundary___priority.html#ae970ce201db03dfd873895b9b9e24c5e',1,'comma::Seeds_Pool_Boundary_Priority::choose_new_seed()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a02b84ea9c154e7475a6952f63595565e',1,'comma::Seeds_Pool_Neighbourhood_Priority::choose_new_seed()']]], + ['choose_5foptimal_5fcc_5fand_5fupdate_5fseeds_5fpool_3',['choose_optimal_cc_and_update_seeds_pool',['../classcomma_1_1_agglomerator___isotropic.html#a471fd42799365932adaf4a0123834700',1,'comma::Agglomerator_Isotropic::choose_optimal_cc_and_update_seeds_pool()'],['../classcomma_1_1_agglomerator___biconnected.html#a3bb82fadd4a4ddd13581102df1491d08',1,'comma::Agglomerator_Biconnected::choose_optimal_cc_and_update_seeds_pool()']]], + ['clone_4',['clone',['../classcomma_1_1_neighbourhood_creator.html#a5744afc0bb83cb634548bbee1399e935',1,'comma::NeighbourhoodCreator::clone()'],['../classcomma_1_1_neighbourhood_extended_creator.html#adb1ed78173e7523fc25c3a7e81d1c9a3',1,'comma::NeighbourhoodExtendedCreator::clone()'],['../classcomma_1_1_neighbourhood_pure_front_creator.html#a73b13c01032e09c04690d4320174d222',1,'comma::NeighbourhoodPureFrontCreator::clone()']]], + ['coarse_5fcell_5',['Coarse_Cell',['../classcomma_1_1_coarse___cell.html#a8037db1d61c0f3d8f3cdd21dcf8dd301',1,'comma::Coarse_Cell']]], + ['coarse_5fcell_5fcontainer_6',['Coarse_Cell_Container',['../classcomma_1_1_coarse___cell___container.html#aca19a5b3b66ea0d481b315ff012a7725',1,'comma::Coarse_Cell_Container']]], + ['coarse_5fcell_5fsubgraph_7',['Coarse_Cell_Subgraph',['../classcomma_1_1_coarse___cell___subgraph.html#adb533b705811bed203bea788a1ae7e07',1,'comma::Coarse_Cell_Subgraph']]], + ['compute_5fbest_5ffc_5fto_5fadd_8',['compute_best_fc_to_add',['../classcomma_1_1_agglomerator___biconnected.html#aae1d6469c6921e306a3fa054d076bf0f',1,'comma::Agglomerator_Biconnected::compute_best_fc_to_add()'],['../classcomma_1_1_agglomerator___iterative.html#adb49da3aaabcb93c3ece598600cb21b9',1,'comma::Agglomerator_Iterative::compute_best_fc_to_add()']]], + ['compute_5ffc_5fcompactness_5finside_5fa_5fcc_9',['compute_fc_compactness_inside_a_cc',['../classcomma_1_1_graph.html#a5ca107f24d5ba40ea695a23699eb1661',1,'comma::Graph']]], + ['compute_5fmin_5ffc_5fcompactness_5finside_5fa_5fcc_10',['compute_min_fc_compactness_inside_a_cc',['../classcomma_1_1_graph.html#a4a4d55d139f5812150abfa01e197f5e5',1,'comma::Graph']]], + ['compute_5fneighbourhood_5fbased_5fwall_5fdistance_11',['compute_neighbourhood_based_wall_distance',['../namespacecomma.html#ae3653181db03b3ea76722462c3b3e02b',1,'comma']]], + ['compute_5fneighbourhood_5fof_5fcc_12',['compute_neighbourhood_of_cc',['../classcomma_1_1_dual___graph.html#a20485b4e0bddf0fd2e6fe38b5aa7582b',1,'comma::Dual_Graph']]], + ['compute_5fnext_5fcc_5ffeatures_13',['compute_next_cc_features',['../classcomma_1_1_agglomerator___isotropic.html#a8eeb2f4079e010af97f6018ea48d70da',1,'comma::Agglomerator_Isotropic']]], + ['correct_14',['correct',['../classcomma_1_1_coarse___cell___container.html#af30a16e10cd4cbcfa2837a36a5a80599',1,'comma::Coarse_Cell_Container']]], + ['create_15',['create',['../classcomma_1_1_neighbourhood_creator.html#afe62a60eabce766b4aea2b02eeed61e5',1,'comma::NeighbourhoodCreator::create()'],['../classcomma_1_1_neighbourhood_extended_creator.html#a7e890e6fff3c54d74e5e2cf9aa73332b',1,'comma::NeighbourhoodExtendedCreator::create()'],['../classcomma_1_1_neighbourhood_pure_front_creator.html#aaac38025ac8e92eecd2b32d85c3e3d0e',1,'comma::NeighbourhoodPureFrontCreator::create()']]], + ['create_5fcc_16',['create_cc',['../classcomma_1_1_coarse___cell___container.html#a745d1b842ec7a43dbe303cbef43a0b80',1,'comma::Coarse_Cell_Container']]] ]; diff --git a/search/functions_3.js b/search/functions_3.js index 4026370..b1a9242 100644 --- a/search/functions_3.js +++ b/search/functions_3.js @@ -1,10 +1,10 @@ var searchData= [ - ['d_5fkeys_5fto_5fset_0',['d_keys_to_set',['../_util_8h.html#a0f9e797856aaddc8607e26502cea3658',1,'Util.h']]], - ['delete_5fnode_1',['delete_node',['../class_tree.html#a67a96cf01ba50b94071ba0e98c73cf93',1,'Tree']]], - ['deletenode_2',['deleteNode',['../class_tree.html#a51e33e50623d498fdf8eb9fb619328c3',1,'Tree']]], - ['dfs_3',['DFS',['../class_graph.html#afb191c20fe7d483a018b7a448aabc037',1,'Graph']]], - ['dot_5fdeviate_4',['dot_deviate',['../_util_8h.html#aeec73ae34bff3c397b99dcf03d14a4a5',1,'Util.h']]], - ['dot_5fproduct_5',['dot_product',['../_util_8h.html#a92f46b4dab5ae23f1a86a2c55c2a6beb',1,'Util.h']]], - ['dual_5fgraph_6',['Dual_Graph',['../class_dual___graph.html#adb7691275dece84b9bc51514b27d0641',1,'Dual_Graph']]] + ['d_5fkeys_5fto_5fset_0',['d_keys_to_set',['../namespacecomma.html#a81affca718f9c9927cfb82c317c8239e',1,'comma']]], + ['delete_5fnode_1',['delete_node',['../classcomma_1_1_tree.html#adde017be7b486d827e7ab1fb6355cfdc',1,'comma::Tree']]], + ['deletenode_2',['deleteNode',['../classcomma_1_1_tree.html#a22632aa17b0500f1bfe9428bbd612c33',1,'comma::Tree']]], + ['dfs_3',['DFS',['../classcomma_1_1_graph.html#a138b207a27e58bcb238d0a80444ba75b',1,'comma::Graph']]], + ['dot_5fdeviate_4',['dot_deviate',['../namespacecomma.html#aa6823809d0c8cc7a1e30d51cfb0ce21a',1,'comma']]], + ['dot_5fproduct_5',['dot_product',['../namespacecomma.html#a0e43c30768d45d4f1f643f2f8be53f5d',1,'comma']]], + ['dual_5fgraph_6',['Dual_Graph',['../classcomma_1_1_dual___graph.html#a62db97821210fa0ffa99d3396eecdaae',1,'comma::Dual_Graph']]] ]; diff --git a/search/functions_4.js b/search/functions_4.js index c7ad567..6635336 100644 --- a/search/functions_4.js +++ b/search/functions_4.js @@ -1,8 +1,8 @@ var searchData= [ - ['empty_0',['empty',['../class_bimap.html#aed5fb1baaa71c1137984e96e9117ae5f',1,'Bimap::empty()'],['../class_queue.html#a84af2287bc5dad708508b588dc73457d',1,'Queue::empty()']]], - ['erase_5fb_1',['erase_B',['../class_bimap.html#aff20ef4205c50149fe441250a5966712',1,'Bimap']]], - ['estimate_5fboundary_5fface_2',['estimate_boundary_face',['../class_agglomerator___isotropic.html#a5235e06b6e1d681b5970a43c6eb90123',1,'Agglomerator_Isotropic']]], - ['export_5fanisotropic_5flines_3',['export_anisotropic_lines',['../class_agglomerator___anisotropic.html#af042ee016e1176de1edd69227b4c73cd',1,'Agglomerator_Anisotropic']]], - ['extract_5fand_5fupdate_5fcandidates_4',['extract_and_update_candidates',['../class_neighbourhood.html#ae3588ec9956d43fa93f8ece1f09bd6c7',1,'Neighbourhood']]] + ['empty_0',['empty',['../classcomma_1_1_bimap.html#a88364e304b1a847ff219e815af01be73',1,'comma::Bimap::empty()'],['../classcomma_1_1_queue.html#aa5746b4e600f2c85ec6f9f427974d302',1,'comma::Queue::empty()']]], + ['erase_5fb_1',['erase_B',['../classcomma_1_1_bimap.html#a8b79b0b9ba226a25bb66a326a57d1dc6',1,'comma::Bimap']]], + ['estimate_5fboundary_5fface_2',['estimate_boundary_face',['../classcomma_1_1_agglomerator___isotropic.html#a4b6bec13ab0d5a563d0c7f2095186141',1,'comma::Agglomerator_Isotropic']]], + ['export_5fanisotropic_5flines_3',['export_anisotropic_lines',['../classcomma_1_1_agglomerator___anisotropic.html#a117343c20ddb4b72d4c9084a89c3303a',1,'comma::Agglomerator_Anisotropic']]], + ['extract_5fand_5fupdate_5fcandidates_4',['extract_and_update_candidates',['../classcomma_1_1_neighbourhood.html#abf5efa9c654e7bacae24f74d3c3b8dc1',1,'comma::Neighbourhood']]] ]; diff --git a/search/functions_5.js b/search/functions_5.js index 89af013..28d66d1 100644 --- a/search/functions_5.js +++ b/search/functions_5.js @@ -1,5 +1,5 @@ var searchData= [ - ['fill_5fvalue_0',['fill_value',['../template_helpers_8h.html#af8b229731dfc00cd8a557ef50078b87f',1,'templateHelpers.h']]], - ['first_1',['first',['../class_priority___pair.html#a5d49cb729ca12b11ed1f465dfe700cf5',1,'Priority_Pair']]] + ['fill_5fvalue_0',['fill_value',['../namespacecomma.html#a18179379fcc2bb56e6b89c7b43e249c2',1,'comma']]], + ['first_1',['first',['../classcomma_1_1_priority___pair.html#a992d3e38d40c9741a9ffc7efa4172c04',1,'comma::Priority_Pair']]] ]; diff --git a/search/functions_6.js b/search/functions_6.js index 732d96f..0981a8b 100644 --- a/search/functions_6.js +++ b/search/functions_6.js @@ -1,21 +1,21 @@ var searchData= [ - ['get_5fa_0',['get_A',['../class_bimap.html#af467a3fe1c6a834f59fb11e73ecaffe7',1,'Bimap']]], - ['get_5fb_1',['get_B',['../class_bimap.html#acc0c46d71708ab4a071dc045ea48c76f',1,'Bimap']]], - ['get_5fcandidates_2',['get_candidates',['../class_neighbourhood.html#ac9d1f9097ecfb39b5c1cea0333e7c9dc',1,'Neighbourhood']]], - ['get_5fdirection_3',['get_direction',['../_util_8h.html#a40c9ba8185d11790d9d1a4e466d98a35',1,'Util.h']]], - ['get_5ffc_5f2_5fcc_4',['get_fc_2_cc',['../class_agglomerator.html#a68d800a84b0b3d7bbe1d91e1226dd327',1,'Agglomerator']]], - ['get_5fhighest_5fn_5fbnd_5fyet_5fto_5fagglomerate_5',['get_highest_n_bnd_yet_to_agglomerate',['../class_seeds___pool.html#aae5389ce2e287218835acd3b0c97b61e',1,'Seeds_Pool']]], - ['get_5fn_5fboundary_5ffaces_6',['get_n_boundary_faces',['../class_dual___graph.html#aed45a1fa00a3234c2f122ad7bfca9812',1,'Dual_Graph']]], - ['get_5fnb_5fcells_7',['get_nb_cells',['../class_dual___graph.html#a1ebf7d891501216863dbea7d603eadc2',1,'Dual_Graph']]], - ['get_5fnb_5fof_5fcc_8',['get_nb_of_cc',['../class_coarse___cell___container.html#a914e4ce6536ddc54463f399e8e85f5b5',1,'Coarse_Cell_Container']]], - ['get_5fnb_5fof_5fneighbours_9',['get_nb_of_neighbours',['../class_graph.html#af4d018aff36d0de453999de56b7a27c1',1,'Graph']]], - ['get_5fneighbourhood_5fof_5fcc_10',['get_neighbourhood_of_cc',['../class_dual___graph.html#a26a06a0cdafc77b7e5a16a609384424a',1,'Dual_Graph']]], - ['get_5fneighbours_11',['get_neighbours',['../class_graph.html#aeb473d9568add4ad25a3da43f1067f70',1,'Graph']]], - ['get_5fneighbours_5fby_5flevel_12',['get_neighbours_by_level',['../class_neighbourhood___pure___front.html#a2e706d0e5f7573df0b7744f4ad318f3f',1,'Neighbourhood_Pure_Front']]], - ['get_5fneighs_5fcc_13',['get_neighs_cc',['../class_coarse___cell___container.html#a209dae87bf495d5e9a9a1b51019203df',1,'Coarse_Cell_Container']]], - ['get_5fnumber_5fof_5ffc_5fagglomerated_14',['get_number_of_fc_agglomerated',['../class_coarse___cell___container.html#a09b33c3ceda1cc06bee353e8a23dfc02',1,'Coarse_Cell_Container']]], - ['get_5fshared_5ffaces_15',['get_shared_faces',['../class_coarse___cell___container.html#a1a4fee09c0e84fcd74804ee3aadb7665',1,'Coarse_Cell_Container']]], - ['get_5fweights_16',['get_weights',['../class_graph.html#a7a915976e94c826f8d9305376b9c78d0',1,'Graph']]], - ['graph_17',['Graph',['../class_graph.html#aaed2c17ea94ec186aecac55ed1c3c591',1,'Graph']]] + ['get_5fa_0',['get_A',['../classcomma_1_1_bimap.html#aafc73798f8c673da69051f7c79cd73c2',1,'comma::Bimap']]], + ['get_5fb_1',['get_B',['../classcomma_1_1_bimap.html#a49bae8e54fe5ccd52d61d20c5aa543c0',1,'comma::Bimap']]], + ['get_5fcandidates_2',['get_candidates',['../classcomma_1_1_neighbourhood.html#a63d4c3d2726a60aa88c69012f0b17167',1,'comma::Neighbourhood']]], + ['get_5fdirection_3',['get_direction',['../namespacecomma.html#a3fda6288b7b5c19904abf0312557c774',1,'comma']]], + ['get_5ffc_5f2_5fcc_4',['get_fc_2_cc',['../classcomma_1_1_agglomerator.html#ad2b5d75df795ac89897ab01d6be0f4e5',1,'comma::Agglomerator']]], + ['get_5fhighest_5fn_5fbnd_5fyet_5fto_5fagglomerate_5',['get_highest_n_bnd_yet_to_agglomerate',['../classcomma_1_1_seeds___pool.html#a0e128dabb2ee75e11ea2bbcb4b3920e8',1,'comma::Seeds_Pool']]], + ['get_5fn_5fboundary_5ffaces_6',['get_n_boundary_faces',['../classcomma_1_1_dual___graph.html#a020ecb0b3f410b468bbb8e57878bf9aa',1,'comma::Dual_Graph']]], + ['get_5fnb_5fcells_7',['get_nb_cells',['../classcomma_1_1_dual___graph.html#a03162eab93fc7ace92992ebea53db274',1,'comma::Dual_Graph']]], + ['get_5fnb_5fof_5fcc_8',['get_nb_of_cc',['../classcomma_1_1_coarse___cell___container.html#a7e57abc220fb85877b92ad7a7be0b540',1,'comma::Coarse_Cell_Container']]], + ['get_5fnb_5fof_5fneighbours_9',['get_nb_of_neighbours',['../classcomma_1_1_graph.html#a565588a181fda3b2ebab502ff00c3546',1,'comma::Graph']]], + ['get_5fneighbourhood_5fof_5fcc_10',['get_neighbourhood_of_cc',['../classcomma_1_1_dual___graph.html#a7e3f45ecd852a941dc39064f7454efb3',1,'comma::Dual_Graph']]], + ['get_5fneighbours_11',['get_neighbours',['../classcomma_1_1_graph.html#a26a90ddbfdfa7fd05dd068e3b8eb4c9f',1,'comma::Graph']]], + ['get_5fneighbours_5fby_5flevel_12',['get_neighbours_by_level',['../classcomma_1_1_neighbourhood___pure___front.html#a8e347e275fb8cb02e86844219742fd9e',1,'comma::Neighbourhood_Pure_Front']]], + ['get_5fneighs_5fcc_13',['get_neighs_cc',['../classcomma_1_1_coarse___cell___container.html#adfc1c9ae9a17a20cc98d26e1d94753ce',1,'comma::Coarse_Cell_Container']]], + ['get_5fnumber_5fof_5ffc_5fagglomerated_14',['get_number_of_fc_agglomerated',['../classcomma_1_1_coarse___cell___container.html#a74b86f5bf928b038c490f27c1e26bd64',1,'comma::Coarse_Cell_Container']]], + ['get_5fshared_5ffaces_15',['get_shared_faces',['../classcomma_1_1_coarse___cell___container.html#a93ab43e7ab6288a9e7d6fa00e7d53c3d',1,'comma::Coarse_Cell_Container']]], + ['get_5fweights_16',['get_weights',['../classcomma_1_1_graph.html#aec4547e40dba5830f05b5fe96cd2355c',1,'comma::Graph']]], + ['graph_17',['Graph',['../classcomma_1_1_graph.html#a22e0c39a18c9f9bc87cc71c0255b43c0',1,'comma::Graph']]] ]; diff --git a/search/functions_7.js b/search/functions_7.js index d873b53..39c331c 100644 --- a/search/functions_7.js +++ b/search/functions_7.js @@ -1,12 +1,12 @@ var searchData= [ - ['initialize_0',['initialize',['../class_seeds___pool.html#a23a0f231be556d1d87f216a5c002e760',1,'Seeds_Pool']]], - ['insert_1',['insert',['../class_bimap.html#ace92920f113af9bf07f930e21689d9c4',1,'Bimap']]], - ['insert_5fcell_2',['insert_cell',['../class_coarse___cell.html#a8933946e4838039b06b01854ea02bba1',1,'Coarse_Cell::insert_cell()'],['../class_coarse___cell___subgraph.html#acbd2ec917d2031f3d8c0e8a499c57185',1,'Coarse_Cell_Subgraph::insert_cell()']]], - ['insert_5fcells_3',['insert_cells',['../class_coarse___cell.html#aa72685cf11b7ef850592386bbbbf07cb',1,'Coarse_Cell::insert_cells()'],['../class_coarse___cell___subgraph.html#ad8656ac6fe4f8ab894e250fa160c5809',1,'Coarse_Cell_Subgraph::insert_cells()']]], - ['insert_5fnode_4',['insert_node',['../class_subgraph.html#acf5fbea7405e13ce3701069fd4fb6dc1',1,'Subgraph']]], - ['insertson_5',['insertSon',['../class_tree.html#ad8f18cbe37893507874177af06ab7df5',1,'Tree']]], - ['is_5fconnected_6',['is_connected',['../class_coarse___cell.html#a9141f6b11ffcb23820a6bf94cff94375',1,'Coarse_Cell']]], - ['is_5fempty_7',['is_empty',['../class_seeds___pool.html#a90276b0aebe130de57c4b04afb7b45fc',1,'Seeds_Pool']]], - ['is_5fon_5fboundary_8',['is_on_boundary',['../class_dual___graph.html#a758730c4af1e17ac1531389083345ff2',1,'Dual_Graph']]] + ['initialize_0',['initialize',['../classcomma_1_1_seeds___pool.html#a820ecd76d0ab974a69701c9a9df3114e',1,'comma::Seeds_Pool']]], + ['insert_1',['insert',['../classcomma_1_1_bimap.html#a67acd42aeed25123ae23c2373dbf065b',1,'comma::Bimap']]], + ['insert_5fcell_2',['insert_cell',['../classcomma_1_1_coarse___cell.html#a80ad5b778411821842cfed3f7c8c19da',1,'comma::Coarse_Cell::insert_cell()'],['../classcomma_1_1_coarse___cell___subgraph.html#a1f699fd8684fc8a66ca34f8635857b43',1,'comma::Coarse_Cell_Subgraph::insert_cell()']]], + ['insert_5fcells_3',['insert_cells',['../classcomma_1_1_coarse___cell.html#ad02809c84ac2972857fb912a389444ca',1,'comma::Coarse_Cell::insert_cells()'],['../classcomma_1_1_coarse___cell___subgraph.html#a91979299073d846773d1222dc794175b',1,'comma::Coarse_Cell_Subgraph::insert_cells()']]], + ['insert_5fnode_4',['insert_node',['../classcomma_1_1_subgraph.html#a427eb4209f44547612b694d4ae7f1875',1,'comma::Subgraph']]], + ['insertson_5',['insertSon',['../classcomma_1_1_tree.html#a38103210c800f4ea07328f7ba5b80326',1,'comma::Tree']]], + ['is_5fconnected_6',['is_connected',['../classcomma_1_1_coarse___cell.html#ac4034b8340779db758fdbe338ced45e4',1,'comma::Coarse_Cell']]], + ['is_5fempty_7',['is_empty',['../classcomma_1_1_seeds___pool.html#a5b81870765d59728538feb0960bbcc5a',1,'comma::Seeds_Pool']]], + ['is_5fon_5fboundary_8',['is_on_boundary',['../classcomma_1_1_dual___graph.html#a243466aae3bc5b1a7c1f259dc398ce67',1,'comma::Dual_Graph']]] ]; diff --git a/search/functions_8.js b/search/functions_8.js index 5de015c..290bf0e 100644 --- a/search/functions_8.js +++ b/search/functions_8.js @@ -1,4 +1,4 @@ var searchData= [ - ['lung_0',['lung',['../class_bimap.html#a4c78f72df8b5689251721a94a138c13d',1,'Bimap']]] + ['lung_0',['lung',['../classcomma_1_1_bimap.html#af7226a5d51d99236f8b9451650356267',1,'comma::Bimap']]] ]; diff --git a/search/functions_9.js b/search/functions_9.js index ae2fc21..0f614e4 100644 --- a/search/functions_9.js +++ b/search/functions_9.js @@ -1,10 +1,13 @@ var searchData= [ - ['need_5finitialization_0',['need_initialization',['../class_seeds___pool.html#ab7e85e018510d448d7eed7a3c92b3108',1,'Seeds_Pool::need_initialization()'],['../class_seeds___pool___boundary___priority.html#a7e10b833156c1c19009a093570697e75',1,'Seeds_Pool_Boundary_Priority::need_initialization()'],['../class_seeds___pool___neighbourhood___priority.html#aec2b6ee916560feeab9cda7204a6429a',1,'Seeds_Pool_Neighbourhood_Priority::need_initialization()']]], - ['neighbourhood_1',['Neighbourhood',['../class_neighbourhood.html#a7add6b8c246cec11cd1f2aa8867937e1',1,'Neighbourhood::Neighbourhood(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)'],['../class_neighbourhood.html#a9e8f7bb0a8be9fdd20c3d0756caa805d',1,'Neighbourhood::Neighbourhood(const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default']]], - ['neighbourhood_5fextended_2',['Neighbourhood_Extended',['../class_neighbourhood___extended.html#a9d83345feb7a960eb430040f2e0dcfc6',1,'Neighbourhood_Extended::Neighbourhood_Extended(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights)'],['../class_neighbourhood___extended.html#a598c0e2de4bdbe38780e5976c4782ecd',1,'Neighbourhood_Extended::Neighbourhood_Extended(const Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default']]], - ['neighbourhood_5fpure_5ffront_3',['Neighbourhood_Pure_Front',['../class_neighbourhood___pure___front.html#ab1fe82f0f4c5ddc07946b0c0fcdc2f65',1,'Neighbourhood_Pure_Front::Neighbourhood_Pure_Front(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &weights, CoMMAIntType dimension)'],['../class_neighbourhood___pure___front.html#adbe2555ab33ea43e96f1db86ef9ebc5a',1,'Neighbourhood_Pure_Front::Neighbourhood_Pure_Front(const Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default']]], - ['neighbours_5fcbegin_4',['neighbours_cbegin',['../class_graph.html#ab898e7dc50ae162e9ae6663bd4e04cea',1,'Graph']]], - ['neighbours_5fcend_5',['neighbours_cend',['../class_graph.html#a33bbbcc09e102d47cf0944989d043d77',1,'Graph']]], - ['node_6',['Node',['../class_node.html#afeedc506abd5ba81abf6485aad28bf5d',1,'Node']]] + ['need_5finitialization_0',['need_initialization',['../classcomma_1_1_seeds___pool.html#a01f69492190dc641f35e38c748bc84d9',1,'comma::Seeds_Pool::need_initialization()'],['../classcomma_1_1_seeds___pool___boundary___priority.html#a3e80d6c43797e17da8a2bb3dd33a2f87',1,'comma::Seeds_Pool_Boundary_Priority::need_initialization()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a341847d4bc85427d4ee8c406c7005fa7',1,'comma::Seeds_Pool_Neighbourhood_Priority::need_initialization()']]], + ['neighbourhood_1',['Neighbourhood',['../classcomma_1_1_neighbourhood.html#a23faf6843893fc19a84c4b3b2ded6044',1,'comma::Neighbourhood::Neighbourhood(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)'],['../classcomma_1_1_neighbourhood.html#a86faebda628571c81ff0771703a80a1a',1,'comma::Neighbourhood::Neighbourhood(const Neighbourhood< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default']]], + ['neighbourhood_5fextended_2',['Neighbourhood_Extended',['../classcomma_1_1_neighbourhood___extended.html#abcf357a7a3031045502ba7a3a9959c0c',1,'comma::Neighbourhood_Extended::Neighbourhood_Extended(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights)'],['../classcomma_1_1_neighbourhood___extended.html#aead86237e93abd8199965599ac2df567',1,'comma::Neighbourhood_Extended::Neighbourhood_Extended(const Neighbourhood_Extended< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default']]], + ['neighbourhood_5fpure_5ffront_3',['Neighbourhood_Pure_Front',['../classcomma_1_1_neighbourhood___pure___front.html#af8021c4955de4919701b4fc10218c1e7',1,'comma::Neighbourhood_Pure_Front::Neighbourhood_Pure_Front(const std::unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const std::vector< CoMMAWeightType > &weights, CoMMAIntType dimension)'],['../classcomma_1_1_neighbourhood___pure___front.html#a5ec25c24172a6b37f0c669ed78347e65',1,'comma::Neighbourhood_Pure_Front::Neighbourhood_Pure_Front(const Neighbourhood_Pure_Front< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > &other)=default']]], + ['neighbourhoodcreator_4',['NeighbourhoodCreator',['../classcomma_1_1_neighbourhood_creator.html#af4f957b393cc21b8d4e091063e8a4e8c',1,'comma::NeighbourhoodCreator']]], + ['neighbourhoodextendedcreator_5',['NeighbourhoodExtendedCreator',['../classcomma_1_1_neighbourhood_extended_creator.html#ad6d5ab836d929ef895fa2820cc160324',1,'comma::NeighbourhoodExtendedCreator']]], + ['neighbourhoodpurefrontcreator_6',['NeighbourhoodPureFrontCreator',['../classcomma_1_1_neighbourhood_pure_front_creator.html#a550fb5859f1d0b86326ad4892e0fcfb7',1,'comma::NeighbourhoodPureFrontCreator']]], + ['neighbours_5fcbegin_7',['neighbours_cbegin',['../classcomma_1_1_graph.html#ae53c16fecb13a6319a63b681ac470f94',1,'comma::Graph']]], + ['neighbours_5fcend_8',['neighbours_cend',['../classcomma_1_1_graph.html#a49889cfff4e34758c1716d0d43c292d4',1,'comma::Graph']]], + ['node_9',['Node',['../classcomma_1_1_node.html#ab982f0768228f971628980b0d5ca47e1',1,'comma::Node']]] ]; diff --git a/search/functions_a.js b/search/functions_a.js index 67fa06b..b789d59 100644 --- a/search/functions_a.js +++ b/search/functions_a.js @@ -1,5 +1,5 @@ var searchData= [ - ['operator_28_29_0',['operator()',['../struct_s_p_initializator.html#a1d6d6649a4d47308166b97fe9a57714b',1,'SPInitializator::operator()()'],['../struct_s_p_full_initializator.html#a380cf703f0fe0069a5f5c7dd0ead70c5',1,'SPFullInitializator::operator()()'],['../struct_s_p_one_point_initializator.html#a8a7072b8a77ffff0c4d4f6911d97f359',1,'SPOnePointInitializator::operator()()'],['../struct_custom_pair_less_functor.html#af2e849a34c258f2ce1f92fcd0c7bcc2a',1,'CustomPairLessFunctor::operator()()'],['../struct_custom_pair_greater_functor.html#a9ac240416deabfd8c145f46a835d672c',1,'CustomPairGreaterFunctor::operator()()'],['../struct_pair_second_based_less_functor.html#aadea5a66aac84faca65044194f80c2e3',1,'PairSecondBasedLessFunctor::operator()()'],['../class_pair_find_first_based_functor.html#a8cae901fdfde46d800070162ff963367',1,'PairFindFirstBasedFunctor::operator()()']]], - ['order_5fnew_5fseeds_5fand_5fupdate_1',['order_new_seeds_and_update',['../class_seeds___pool.html#a5605fc7f8d961cac3343cc69b64a23f3',1,'Seeds_Pool::order_new_seeds_and_update()'],['../class_seeds___pool___boundary___priority.html#a95eaa542d85779930aca1fd962f88893',1,'Seeds_Pool_Boundary_Priority::order_new_seeds_and_update()'],['../class_seeds___pool___neighbourhood___priority.html#ae9694b6adced185e4282ec3bf8394346',1,'Seeds_Pool_Neighbourhood_Priority::order_new_seeds_and_update()']]] + ['operator_28_29_0',['operator()',['../structcomma_1_1_s_p_initializator.html#ada8d7d7f0f4b41ae82f5b159bd001d5e',1,'comma::SPInitializator::operator()()'],['../structcomma_1_1_s_p_full_initializator.html#abc882b29c5dbe57f25390e6bb043e667',1,'comma::SPFullInitializator::operator()()'],['../structcomma_1_1_s_p_one_point_initializator.html#a50828abe38c5d16833c9d7fd5a407c9c',1,'comma::SPOnePointInitializator::operator()()'],['../structcomma_1_1_custom_pair_less_functor.html#a31e9586ccc427694e6621fee6a910109',1,'comma::CustomPairLessFunctor::operator()()'],['../structcomma_1_1_custom_pair_greater_functor.html#a3baa52044f47d100d5320843cd48aa9f',1,'comma::CustomPairGreaterFunctor::operator()()'],['../structcomma_1_1_pair_second_based_less_functor.html#a6e502c50b4ff11d09764e2f95a331bd8',1,'comma::PairSecondBasedLessFunctor::operator()()'],['../classcomma_1_1_pair_find_first_based_functor.html#a162183a1f3a7017792fab396ef5a2e7b',1,'comma::PairFindFirstBasedFunctor::operator()()']]], + ['order_5fnew_5fseeds_5fand_5fupdate_1',['order_new_seeds_and_update',['../classcomma_1_1_seeds___pool.html#aeb9e0c8f04da45e06e215bd6d262929c',1,'comma::Seeds_Pool::order_new_seeds_and_update()'],['../classcomma_1_1_seeds___pool___boundary___priority.html#a12bb14f9c2daa73a9842c0554919be54',1,'comma::Seeds_Pool_Boundary_Priority::order_new_seeds_and_update()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a8fddbf0ca066c36daf377289806f19b8',1,'comma::Seeds_Pool_Neighbourhood_Priority::order_new_seeds_and_update()']]] ]; diff --git a/search/functions_b.js b/search/functions_b.js index 0b01270..d9e1641 100644 --- a/search/functions_b.js +++ b/search/functions_b.js @@ -1,10 +1,9 @@ var searchData= [ - ['pairfindfirstbasedfunctor_0',['PairFindFirstBasedFunctor',['../class_pair_find_first_based_functor.html#a968048ebd83977dd8ea344e35fe105e7',1,'PairFindFirstBasedFunctor::PairFindFirstBasedFunctor()'],['../class_pair_find_first_based_functor.html#a0d1ac677374943a662cbc3a592473465',1,'PairFindFirstBasedFunctor::PairFindFirstBasedFunctor(const typename PairT::first_type &target)']]], - ['pop_1',['pop',['../class_queue.html#abeee018138cbb5226e5352a5788e23bd',1,'Queue']]], - ['print_2',['print',['../class_bimap.html#aa4f8c3c9dd622bccffe066167db3f021',1,'Bimap::print()'],['../class_tree.html#a4d71a038b6d33dde44de8d1eddd634da',1,'Tree::print()']]], - ['print_5fnodes_3',['print_nodes',['../class_tree.html#a8f223fd2ef5bec1e944b4815c268839d',1,'Tree']]], - ['priority_5fpair_4',['Priority_Pair',['../class_priority___pair.html#a65316a8c3d03d0413d3398b7b3ed453f',1,'Priority_Pair::Priority_Pair()'],['../class_priority___pair.html#ab21a9232231493249cf97b1f24998f68',1,'Priority_Pair::Priority_Pair(const A &a, const B &b)']]], - ['push_5',['push',['../class_queue.html#a8e75adf40c581bcf8804a70ae0be18a3',1,'Queue']]], - ['pybind11_5fmodule_6',['PYBIND11_MODULE',['../_co_m_m_a_8cpp.html#a5cbd374c282b9c6431c52d2eae621735',1,'CoMMA.cpp']]] + ['pairfindfirstbasedfunctor_0',['PairFindFirstBasedFunctor',['../classcomma_1_1_pair_find_first_based_functor.html#a806e13eb6b28c4455f796aa9a46d24bd',1,'comma::PairFindFirstBasedFunctor::PairFindFirstBasedFunctor()'],['../classcomma_1_1_pair_find_first_based_functor.html#ac8129162752fe2eea0bce8e956e6d02f',1,'comma::PairFindFirstBasedFunctor::PairFindFirstBasedFunctor(const typename PairT::first_type &target)']]], + ['pop_1',['pop',['../classcomma_1_1_queue.html#a5aee19993ac8929694ea6f0ef7951d8d',1,'comma::Queue']]], + ['print_2',['print',['../classcomma_1_1_bimap.html#af449cd0dc1fbb4f4b523cdbd1bc768ce',1,'comma::Bimap::print()'],['../classcomma_1_1_tree.html#ab4df4521ca99f1feff41aa55b06464b1',1,'comma::Tree::print()']]], + ['print_5fnodes_3',['print_nodes',['../classcomma_1_1_tree.html#a099bf175c326e84cee7d90a42e5ece2e',1,'comma::Tree']]], + ['priority_5fpair_4',['Priority_Pair',['../classcomma_1_1_priority___pair.html#a433fe6eac4e503827959000d52d4fe2b',1,'comma::Priority_Pair::Priority_Pair()=default'],['../classcomma_1_1_priority___pair.html#a02001027693bee639c39e28aae3cf260',1,'comma::Priority_Pair::Priority_Pair(const A &a, const B &b)']]], + ['push_5',['push',['../classcomma_1_1_queue.html#af1aa48fd67cce65d729cd13806496eb3',1,'comma::Queue']]] ]; diff --git a/search/functions_c.js b/search/functions_c.js index 38c8961..7226497 100644 --- a/search/functions_c.js +++ b/search/functions_c.js @@ -1,4 +1,4 @@ var searchData= [ - ['queue_0',['Queue',['../class_queue.html#af73bb29c868f7b37f369c668f114bd9f',1,'Queue']]] + ['queue_0',['Queue',['../classcomma_1_1_queue.html#aa75e16d9b3abc36850da8c426c169219',1,'comma::Queue']]] ]; diff --git a/search/functions_d.js b/search/functions_d.js index d7f5d24..f655f4f 100644 --- a/search/functions_d.js +++ b/search/functions_d.js @@ -1,4 +1,4 @@ var searchData= [ - ['remove_5fnode_0',['remove_node',['../class_subgraph.html#afe1f74daa81f7af211cf683f2c8c85f5',1,'Subgraph']]] + ['remove_5fnode_0',['remove_node',['../classcomma_1_1_subgraph.html#aba2014ec2b66bcc8cf270892bd395e1e',1,'comma::Subgraph']]] ]; diff --git a/search/functions_e.js b/search/functions_e.js index 6e08329..bc07011 100644 --- a/search/functions_e.js +++ b/search/functions_e.js @@ -1,15 +1,18 @@ var searchData= [ - ['search_0',['search',['../class_tree.html#a0c351d4a8573a2f786638e96a06f10b7',1,'Tree']]], - ['second_1',['second',['../class_priority___pair.html#a3667ccbd1eaedd085805055e4d818c00',1,'Priority_Pair']]], - ['seeds_5fpool_2',['Seeds_Pool',['../class_seeds___pool.html#a1567e2e69f9de4642a48a62dc3688c17',1,'Seeds_Pool']]], - ['seeds_5fpool_5fboundary_5fpriority_3',['Seeds_Pool_Boundary_Priority',['../class_seeds___pool___boundary___priority.html#aa286e6beeaf6cc1915ed1de6b5b5cc6f',1,'Seeds_Pool_Boundary_Priority']]], - ['seeds_5fpool_5fneighbourhood_5fpriority_4',['Seeds_Pool_Neighbourhood_Priority',['../class_seeds___pool___neighbourhood___priority.html#afc8716dedda1636bce1de070b9f90326',1,'Seeds_Pool_Neighbourhood_Priority']]], - ['select_5fbest_5fcc_5fto_5fagglomerate_5',['select_best_cc_to_agglomerate',['../class_coarse___cell___container.html#aba3dc19912418f8bd60fc006c6d17e6d',1,'Coarse_Cell_Container']]], - ['select_5fbest_5fcc_5fto_5fagglomerate_5fwhole_6',['select_best_cc_to_agglomerate_whole',['../class_coarse___cell___container.html#a420e4d3b4c4b4a11c151a5caf31f26d3',1,'Coarse_Cell_Container']]], - ['set_5fagglomeration_5fparameter_7',['set_agglomeration_parameter',['../class_agglomerator___isotropic.html#a7cc56d96d75a20a5f87c73f9459bbeef',1,'Agglomerator_Isotropic']]], - ['set_5ftop_5fqueue_8',['set_top_queue',['../class_seeds___pool.html#af2a613ae8e3acd93667292399fe925fc',1,'Seeds_Pool']]], - ['spoil_5fqueue_9',['spoil_queue',['../class_seeds___pool.html#ac134287c9c4d234dbc2e73b5aa2db96b',1,'Seeds_Pool']]], - ['squared_5feuclidean_5fdistance_10',['squared_euclidean_distance',['../_util_8h.html#a4cbf9d2aae5e1f86e108538e5baa10f8',1,'Util.h']]], - ['subgraph_11',['Subgraph',['../class_subgraph.html#ad7ef3fa10ed764d28f653451e52c4897',1,'Subgraph']]] + ['search_0',['search',['../classcomma_1_1_tree.html#acbf7f4e37693578e32f675680b0859ca',1,'comma::Tree']]], + ['second_1',['second',['../classcomma_1_1_priority___pair.html#a68586e6c5930aee091998935b657028e',1,'comma::Priority_Pair']]], + ['seeds_5fpool_2',['Seeds_Pool',['../classcomma_1_1_seeds___pool.html#a1493c48d699131945ffbd173104c900c',1,'comma::Seeds_Pool']]], + ['seeds_5fpool_5fboundary_5fpriority_3',['Seeds_Pool_Boundary_Priority',['../classcomma_1_1_seeds___pool___boundary___priority.html#a849b5e49938159a291940d3e5fbb13f2',1,'comma::Seeds_Pool_Boundary_Priority']]], + ['seeds_5fpool_5fneighbourhood_5fpriority_4',['Seeds_Pool_Neighbourhood_Priority',['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a4ca303915819a28c8688b3391ade65ba',1,'comma::Seeds_Pool_Neighbourhood_Priority']]], + ['select_5fbest_5fcc_5fto_5fagglomerate_5',['select_best_cc_to_agglomerate',['../classcomma_1_1_coarse___cell___container.html#a7211f3bedde3f2f93044cbacd3e47c19',1,'comma::Coarse_Cell_Container']]], + ['select_5fbest_5fcc_5fto_5fagglomerate_5fwhole_6',['select_best_cc_to_agglomerate_whole',['../classcomma_1_1_coarse___cell___container.html#a06433ef8fe9388f3e640f3d8bfdf7c27',1,'comma::Coarse_Cell_Container']]], + ['set_5fagglomeration_5fparameter_7',['set_agglomeration_parameter',['../classcomma_1_1_agglomerator___isotropic.html#a674697dbdd54e42b6f8a37e60e5874b1',1,'comma::Agglomerator_Isotropic']]], + ['set_5ftop_5fqueue_8',['set_top_queue',['../classcomma_1_1_seeds___pool.html#ab973d98317537bd99b53956103e69ba8',1,'comma::Seeds_Pool']]], + ['spfullinitializator_9',['SPFullInitializator',['../structcomma_1_1_s_p_full_initializator.html#a1a40a546f44cdd9bec7f20516cabb05c',1,'comma::SPFullInitializator']]], + ['spinitializator_10',['SPInitializator',['../structcomma_1_1_s_p_initializator.html#a7d1760e2cc5a58d61717a777c3a2d283',1,'comma::SPInitializator']]], + ['spoil_5fqueue_11',['spoil_queue',['../classcomma_1_1_seeds___pool.html#ab8e4795e11961d437344ff026bdabf2f',1,'comma::Seeds_Pool']]], + ['sponepointinitializator_12',['SPOnePointInitializator',['../structcomma_1_1_s_p_one_point_initializator.html#ae24aec29ae1c72997a91bc99b9c8f6f5',1,'comma::SPOnePointInitializator']]], + ['squared_5feuclidean_5fdistance_13',['squared_euclidean_distance',['../namespacecomma.html#a39eb676bbec9475d7b0b5a6186b5f3d0',1,'comma']]], + ['subgraph_14',['Subgraph',['../classcomma_1_1_subgraph.html#a7abbe5057d801b3c44c0f3cd16dbfc56',1,'comma::Subgraph']]] ]; diff --git a/search/functions_f.js b/search/functions_f.js index ee608b7..799881c 100644 --- a/search/functions_f.js +++ b/search/functions_f.js @@ -1,7 +1,7 @@ var searchData= [ - ['tag_5fanisotropic_5fcells_0',['tag_anisotropic_cells',['../class_dual___graph.html#ab33e369fe1af55d0f913f64143d8c6ce',1,'Dual_Graph']]], - ['top_1',['top',['../class_queue.html#ac6f60c0282f64f3197d309e4f414da6f',1,'Queue']]], - ['transverse_2',['transverse',['../class_tree.html#a2ea9eda153ab0589b22d324e25ac8a8c',1,'Tree']]], - ['tree_3',['Tree',['../class_tree.html#ac75043a79cf9985ace5f340c311492a7',1,'Tree']]] + ['tag_5fanisotropic_5fcells_0',['tag_anisotropic_cells',['../classcomma_1_1_dual___graph.html#ae54c9474438da03527cc8eab80362cf3',1,'comma::Dual_Graph']]], + ['top_1',['top',['../classcomma_1_1_queue.html#a2f3e001cc9477b9ed8015bd2118702bf',1,'comma::Queue']]], + ['transverse_2',['transverse',['../classcomma_1_1_tree.html#aa8d121b22ac52df459f125da7b1c939b',1,'comma::Tree']]], + ['tree_3',['Tree',['../classcomma_1_1_tree.html#afa76cefe052c105cbdf5a89e6171e001',1,'comma::Tree']]] ]; diff --git a/search/namespaces_0.js b/search/namespaces_0.js new file mode 100644 index 0000000..bde6c11 --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['comma_0',['comma',['../namespacecomma.html',1,'']]] +]; diff --git a/search/pages_0.js b/search/pages_0.js index 3e65db8..ca5c0d7 100644 --- a/search/pages_0.js +++ b/search/pages_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['deprecated_20files_0',['Deprecated files',['../md__co_m_m_a_lib_deprecated__r_e_a_d_m_e.html',1,'']]] + ['deprecated_20files_0',['Deprecated files',['../md_include__co_m_m_a_deprecated__r_e_a_d_m_e.html',1,'']]] ]; diff --git a/search/related_0.js b/search/related_0.js index bb2249a..b6ba2bb 100644 --- a/search/related_0.js +++ b/search/related_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['operator_3c_0',['operator<',['../class_priority___pair.html#a6445c73468c4c111a2c73330395ae9c3',1,'Priority_Pair']]], - ['operator_3d_3d_1',['operator==',['../class_priority___pair.html#a310cd15c31749fbad8133e67993f0481',1,'Priority_Pair']]] + ['operator_3c_0',['operator<',['../classcomma_1_1_priority___pair.html#a6445c73468c4c111a2c73330395ae9c3',1,'comma::Priority_Pair']]], + ['operator_3d_3d_1',['operator==',['../classcomma_1_1_priority___pair.html#a310cd15c31749fbad8133e67993f0481',1,'comma::Priority_Pair']]] ]; diff --git a/search/searchdata.js b/search/searchdata.js index d4f26ee..6e01608 100644 --- a/search/searchdata.js +++ b/search/searchdata.js @@ -1,45 +1,48 @@ var indexSectionsWithContent = { - 0: "_abcdefgilmnopqrstuvw~", + 0: "_abcdefgilnopqrstuvw~", 1: "abcdgnpqst", - 2: "abcdnpqrstu", - 3: "abcdefgilnopqrstuvw~", - 4: "_dm", - 5: "abcdns", - 6: "c", - 7: "bceinprv", - 8: "o", - 9: "c", - 10: "dtw" + 2: "c", + 3: "abcdnpqrstu", + 4: "abcdefgilnopqrstuvw~", + 5: "_di", + 6: "abcdns", + 7: "c", + 8: "bceinprv", + 9: "o", + 10: "c", + 11: "dtw" }; var indexSectionNames = { 0: "all", 1: "classes", - 2: "files", - 3: "functions", - 4: "variables", - 5: "typedefs", - 6: "enums", - 7: "enumvalues", - 8: "related", - 9: "defines", - 10: "pages" + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "typedefs", + 7: "enums", + 8: "enumvalues", + 9: "related", + 10: "defines", + 11: "pages" }; var indexSectionLabels = { 0: "All", 1: "Classes", - 2: "Files", - 3: "Functions", - 4: "Variables", - 5: "Typedefs", - 6: "Enumerations", - 7: "Enumerator", - 8: "Friends", - 9: "Macros", - 10: "Pages" + 2: "Namespaces", + 3: "Files", + 4: "Functions", + 5: "Variables", + 6: "Typedefs", + 7: "Enumerations", + 8: "Enumerator", + 9: "Friends", + 10: "Macros", + 11: "Pages" }; diff --git a/search/typedefs_0.js b/search/typedefs_0.js index 4a65a11..4fbb7c3 100644 --- a/search/typedefs_0.js +++ b/search/typedefs_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['anisotropicline_0',['AnisotropicLine',['../class_agglomerator___anisotropic.html#a1f9699116b07859f52101dabe450b475',1,'Agglomerator_Anisotropic']]], - ['anisotropiclineptr_1',['AnisotropicLinePtr',['../class_agglomerator___anisotropic.html#af5d54b1e2a586ecb589251f64db47681',1,'Agglomerator_Anisotropic']]] + ['anisotropicline_0',['AnisotropicLine',['../classcomma_1_1_agglomerator___anisotropic.html#a9479673f4208b7edd7c0b8884a06c4b7',1,'comma::Agglomerator_Anisotropic']]], + ['anisotropiclineptr_1',['AnisotropicLinePtr',['../classcomma_1_1_agglomerator___anisotropic.html#a9de6a86962a319a3cd058000fade94e0',1,'comma::Agglomerator_Anisotropic']]] ]; diff --git a/search/typedefs_1.js b/search/typedefs_1.js index 8bfa3dd..b40aa07 100644 --- a/search/typedefs_1.js +++ b/search/typedefs_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['baseclass_0',['BaseClass',['../class_coarse___cell___subgraph.html#acf2adc2a72a1f59ad4c7cbd630186f18',1,'Coarse_Cell_Subgraph::BaseClass()'],['../class_subgraph.html#ace661b2b2465558589b6beabbfbe3d8c',1,'Subgraph::BaseClass()'],['../class_dual___graph.html#a66fb85f140bc4c7dd8c7af4b1976f6d9',1,'Dual_Graph::BaseClass()'],['../struct_s_p_full_initializator.html#aaaa1049d1803559770144bd222e895f0',1,'SPFullInitializator::BaseClass()'],['../struct_s_p_one_point_initializator.html#a557b7b2989b49ec5fd6d0a4c693ec703',1,'SPOnePointInitializator::BaseClass()']]] + ['baseclass_0',['BaseClass',['../classcomma_1_1_coarse___cell___subgraph.html#a05670da5aee0809bd88770c7ef9ee00a',1,'comma::Coarse_Cell_Subgraph::BaseClass()'],['../classcomma_1_1_subgraph.html#a769d2fcd1f0d69a5b2741bdec90d409d',1,'comma::Subgraph::BaseClass()'],['../classcomma_1_1_dual___graph.html#ab65d0e9268c98fd72916f2eb16ce4ab4',1,'comma::Dual_Graph::BaseClass()'],['../structcomma_1_1_s_p_full_initializator.html#a3e1e0581f3ad467d53f35e15f851c80d',1,'comma::SPFullInitializator::BaseClass()'],['../structcomma_1_1_s_p_one_point_initializator.html#a23df838a74c07f688109bb52065cee31',1,'comma::SPOnePointInitializator::BaseClass()']]] ]; diff --git a/search/typedefs_2.js b/search/typedefs_2.js index 2b6c0c7..b3ddd48 100644 --- a/search/typedefs_2.js +++ b/search/typedefs_2.js @@ -1,19 +1,15 @@ var searchData= [ - ['candidatescontainertype_0',['CandidatesContainerType',['../class_neighbourhood.html#ab702a531ecdd5f909011e98db309eae9',1,'Neighbourhood']]], - ['coarsecellptr_1',['CoarseCellPtr',['../class_coarse___cell___container.html#a319328848c99b14f01a0914710217371',1,'Coarse_Cell_Container']]], - ['coarsecelltype_2',['CoarseCellType',['../class_coarse___cell___container.html#a66f8c6355a3a99ac2f6487e86f17fc5c',1,'Coarse_Cell_Container']]], - ['commaindext_3',['CoMMAIndexT',['../_co_m_m_a_types_8h.html#a4e6760b3d864fac2baff57fd3e865326',1,'CoMMATypes.h']]], - ['commaintt_4',['CoMMAIntT',['../_co_m_m_a_types_8h.html#a2bdf0415b5394aa0a042816dcc3eb0b7',1,'CoMMATypes.h']]], - ['commapairfindfirstbasedtype_5',['CoMMAPairFindFirstBasedType',['../class_neighbourhood.html#ae06ab9e75b3e20ee885c4ccb59d4c01e',1,'Neighbourhood::CoMMAPairFindFirstBasedType()'],['../class_neighbourhood___extended.html#ae06ab9e75b3e20ee885c4ccb59d4c01e',1,'Neighbourhood_Extended::CoMMAPairFindFirstBasedType()'],['../class_neighbourhood___pure___front.html#ae06ab9e75b3e20ee885c4ccb59d4c01e',1,'Neighbourhood_Pure_Front::CoMMAPairFindFirstBasedType()']]], - ['commapairtype_6',['CoMMAPairType',['../struct_s_p_one_point_initializator.html#a900bdf529fbbd18e93f2769c35a87304',1,'SPOnePointInitializator::CoMMAPairType()'],['../class_seeds___pool___neighbourhood___priority.html#a9678e5bbd5f135398366fd74d95b925a',1,'Seeds_Pool_Neighbourhood_Priority::CoMMAPairType()'],['../class_seeds___pool___boundary___priority.html#a9678e5bbd5f135398366fd74d95b925a',1,'Seeds_Pool_Boundary_Priority::CoMMAPairType()'],['../class_neighbourhood___pure___front.html#a788b1672a154ea6e9d91d512ce4d4b70',1,'Neighbourhood_Pure_Front::CoMMAPairType()'],['../class_neighbourhood___extended.html#a788b1672a154ea6e9d91d512ce4d4b70',1,'Neighbourhood_Extended::CoMMAPairType()'],['../class_seeds___pool.html#a9678e5bbd5f135398366fd74d95b925a',1,'Seeds_Pool::CoMMAPairType()'],['../struct_s_p_initializator.html#a900bdf529fbbd18e93f2769c35a87304',1,'SPInitializator::CoMMAPairType()'],['../class_neighbourhood.html#a788b1672a154ea6e9d91d512ce4d4b70',1,'Neighbourhood::CoMMAPairType()'],['../class_dual___graph.html#afd3bb2bfafa15c8db3d2adae54137714',1,'Dual_Graph::CoMMAPairType()'],['../class_agglomerator___anisotropic.html#a11c37eea028c942be60e5c6a224449a0',1,'Agglomerator_Anisotropic::CoMMAPairType()']]], - ['commaqueuetype_7',['CoMMAQueueType',['../struct_s_p_initializator.html#a7cae6a0f08b656f912510a1c31327b99',1,'SPInitializator::CoMMAQueueType()'],['../class_seeds___pool.html#abc1107196890a26c678ce4e4aa3fb4cb',1,'Seeds_Pool::CoMMAQueueType()'],['../struct_s_p_full_initializator.html#a7cae6a0f08b656f912510a1c31327b99',1,'SPFullInitializator::CoMMAQueueType()'],['../struct_s_p_one_point_initializator.html#a7cae6a0f08b656f912510a1c31327b99',1,'SPOnePointInitializator::CoMMAQueueType()']]], - ['commasetofpairtype_8',['CoMMASetOfPairType',['../class_neighbourhood.html#a2732482bc200b9b8eceb1886ef51747d',1,'Neighbourhood::CoMMASetOfPairType()'],['../class_seeds___pool___neighbourhood___priority.html#a3d6ff9145c49b79610f4d7777dfdc342',1,'Seeds_Pool_Neighbourhood_Priority::CoMMASetOfPairType()'],['../class_seeds___pool___boundary___priority.html#a3d6ff9145c49b79610f4d7777dfdc342',1,'Seeds_Pool_Boundary_Priority::CoMMASetOfPairType()'],['../struct_s_p_full_initializator.html#a6fad2bcdb808aa5b9d076b6694de7046',1,'SPFullInitializator::CoMMASetOfPairType()'],['../class_neighbourhood___extended.html#a2732482bc200b9b8eceb1886ef51747d',1,'Neighbourhood_Extended::CoMMASetOfPairType()'],['../class_seeds___pool.html#a3d6ff9145c49b79610f4d7777dfdc342',1,'Seeds_Pool::CoMMASetOfPairType()'],['../struct_s_p_initializator.html#a6fad2bcdb808aa5b9d076b6694de7046',1,'SPInitializator::CoMMASetOfPairType()'],['../class_neighbourhood___pure___front.html#a2732482bc200b9b8eceb1886ef51747d',1,'Neighbourhood_Pure_Front::CoMMASetOfPairType()'],['../class_agglomerator___anisotropic.html#af5c47e43c784e7daef89c1f202dff74e',1,'Agglomerator_Anisotropic::CoMMASetOfPairType()'],['../class_dual___graph.html#a2e99aaad85e912fedd34f6c9686d3021',1,'Dual_Graph::CoMMASetOfPairType()']]], - ['commasignedindext_9',['CoMMASignedIndexT',['../_co_m_m_a_8cpp.html#a9fa394743ff7c80b26b62c15be20b7aa',1,'CoMMA.cpp']]], - ['commaweightt_10',['CoMMAWeightT',['../_co_m_m_a_types_8h.html#a7d17e2ec30fc9b0796135ca2bfced205',1,'CoMMATypes.h']]], - ['containerindexconstit_11',['ContainerIndexConstIt',['../class_graph.html#aad80e86de524b83ff2e582073fc6b950',1,'Graph']]], - ['containerindextype_12',['ContainerIndexType',['../class_dual___graph.html#abb8937d3bdb846254d3f63f0eb378dee',1,'Dual_Graph::ContainerIndexType()'],['../class_subgraph.html#abb8937d3bdb846254d3f63f0eb378dee',1,'Subgraph::ContainerIndexType()'],['../class_graph.html#abb8937d3bdb846254d3f63f0eb378dee',1,'Graph::ContainerIndexType()']]], - ['containerweightconstit_13',['ContainerWeightConstIt',['../class_graph.html#a4088baba0398cdc0e6a4f4083c54f840',1,'Graph']]], - ['containerweighttype_14',['ContainerWeightType',['../class_graph.html#ab70bf7df2dc00ac790e2854f8a2eef6a',1,'Graph::ContainerWeightType()'],['../class_subgraph.html#ab70bf7df2dc00ac790e2854f8a2eef6a',1,'Subgraph::ContainerWeightType()'],['../class_dual___graph.html#ab70bf7df2dc00ac790e2854f8a2eef6a',1,'Dual_Graph::ContainerWeightType()']]], - ['creatorbasetype_15',['CreatorBaseType',['../class_neighbourhood_extended_creator.html#a5d3b220e990ffb8f12d5937915b8b530',1,'NeighbourhoodExtendedCreator::CreatorBaseType()'],['../class_neighbourhood_pure_front_creator.html#ae382bc506c3b92487f915312b5843c26',1,'NeighbourhoodPureFrontCreator::CreatorBaseType()']]] + ['candidatescontainertype_0',['CandidatesContainerType',['../classcomma_1_1_neighbourhood.html#a777595766a1b44ada43638ab5844f98d',1,'comma::Neighbourhood']]], + ['coarsecellptr_1',['CoarseCellPtr',['../classcomma_1_1_coarse___cell___container.html#a4670588ea6b7292b0ef8760f589eece4',1,'comma::Coarse_Cell_Container']]], + ['coarsecelltype_2',['CoarseCellType',['../classcomma_1_1_coarse___cell___container.html#a909799f8910487259a0ebee59186b286',1,'comma::Coarse_Cell_Container']]], + ['commapairfindfirstbasedtype_3',['CoMMAPairFindFirstBasedType',['../classcomma_1_1_neighbourhood.html#a1bcc96dd1f011b683f94d6492de5c94b',1,'comma::Neighbourhood::CoMMAPairFindFirstBasedType()'],['../classcomma_1_1_neighbourhood___extended.html#a1bcc96dd1f011b683f94d6492de5c94b',1,'comma::Neighbourhood_Extended::CoMMAPairFindFirstBasedType()'],['../classcomma_1_1_neighbourhood___pure___front.html#a1bcc96dd1f011b683f94d6492de5c94b',1,'comma::Neighbourhood_Pure_Front::CoMMAPairFindFirstBasedType()']]], + ['commapairtype_4',['CoMMAPairType',['../classcomma_1_1_neighbourhood___pure___front.html#ae017bf1bdbf97533b6078628196daa0a',1,'comma::Neighbourhood_Pure_Front::CoMMAPairType()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a70eb9e8d60f84565604934f31b6c52a3',1,'comma::Seeds_Pool_Neighbourhood_Priority::CoMMAPairType()'],['../classcomma_1_1_seeds___pool___boundary___priority.html#a70eb9e8d60f84565604934f31b6c52a3',1,'comma::Seeds_Pool_Boundary_Priority::CoMMAPairType()'],['../structcomma_1_1_s_p_one_point_initializator.html#a1063dfdb4f126da363e38ecf9e3f741c',1,'comma::SPOnePointInitializator::CoMMAPairType()'],['../classcomma_1_1_neighbourhood___extended.html#ae017bf1bdbf97533b6078628196daa0a',1,'comma::Neighbourhood_Extended::CoMMAPairType()'],['../classcomma_1_1_seeds___pool.html#a70eb9e8d60f84565604934f31b6c52a3',1,'comma::Seeds_Pool::CoMMAPairType()'],['../structcomma_1_1_s_p_initializator.html#a1063dfdb4f126da363e38ecf9e3f741c',1,'comma::SPInitializator::CoMMAPairType()'],['../classcomma_1_1_neighbourhood.html#ae017bf1bdbf97533b6078628196daa0a',1,'comma::Neighbourhood::CoMMAPairType()'],['../classcomma_1_1_dual___graph.html#a9e4ca69b6d5fa9725246dfc96d85c112',1,'comma::Dual_Graph::CoMMAPairType()'],['../classcomma_1_1_agglomerator___anisotropic.html#a221bef52906b0fe45f9957ef52ac85d0',1,'comma::Agglomerator_Anisotropic::CoMMAPairType()']]], + ['commaqueuetype_5',['CoMMAQueueType',['../structcomma_1_1_s_p_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533',1,'comma::SPInitializator::CoMMAQueueType()'],['../classcomma_1_1_seeds___pool.html#abd24f8571c5608afb54cb4f52558635e',1,'comma::Seeds_Pool::CoMMAQueueType()'],['../structcomma_1_1_s_p_full_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533',1,'comma::SPFullInitializator::CoMMAQueueType()'],['../structcomma_1_1_s_p_one_point_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533',1,'comma::SPOnePointInitializator::CoMMAQueueType()']]], + ['commasetofpairtype_6',['CoMMASetOfPairType',['../classcomma_1_1_agglomerator___anisotropic.html#a9f4297614846f54366d4561a6428fa4d',1,'comma::Agglomerator_Anisotropic::CoMMASetOfPairType()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a9da3ca5fd578388aa227af993bb305cf',1,'comma::Seeds_Pool_Neighbourhood_Priority::CoMMASetOfPairType()'],['../classcomma_1_1_seeds___pool___boundary___priority.html#a9da3ca5fd578388aa227af993bb305cf',1,'comma::Seeds_Pool_Boundary_Priority::CoMMASetOfPairType()'],['../structcomma_1_1_s_p_full_initializator.html#adce25caf80707955d4f7a9c6e722d075',1,'comma::SPFullInitializator::CoMMASetOfPairType()'],['../classcomma_1_1_neighbourhood___pure___front.html#a848ff0040340a5b904dfb9c8306e1439',1,'comma::Neighbourhood_Pure_Front::CoMMASetOfPairType()'],['../classcomma_1_1_neighbourhood___extended.html#a848ff0040340a5b904dfb9c8306e1439',1,'comma::Neighbourhood_Extended::CoMMASetOfPairType()'],['../classcomma_1_1_seeds___pool.html#a9da3ca5fd578388aa227af993bb305cf',1,'comma::Seeds_Pool::CoMMASetOfPairType()'],['../structcomma_1_1_s_p_initializator.html#adce25caf80707955d4f7a9c6e722d075',1,'comma::SPInitializator::CoMMASetOfPairType()'],['../classcomma_1_1_neighbourhood.html#a848ff0040340a5b904dfb9c8306e1439',1,'comma::Neighbourhood::CoMMASetOfPairType()'],['../classcomma_1_1_dual___graph.html#ac83b5f3409ccd78654bc747f43e2d6d6',1,'comma::Dual_Graph::CoMMASetOfPairType()']]], + ['containerindexconstit_7',['ContainerIndexConstIt',['../classcomma_1_1_graph.html#a698f1f4f188f408a34625c656038636e',1,'comma::Graph']]], + ['containerindextype_8',['ContainerIndexType',['../classcomma_1_1_graph.html#ac24e8e9de0c15af027fe8d1ccd8304d4',1,'comma::Graph::ContainerIndexType()'],['../classcomma_1_1_subgraph.html#ac24e8e9de0c15af027fe8d1ccd8304d4',1,'comma::Subgraph::ContainerIndexType()'],['../classcomma_1_1_dual___graph.html#ac24e8e9de0c15af027fe8d1ccd8304d4',1,'comma::Dual_Graph::ContainerIndexType()']]], + ['containerweightconstit_9',['ContainerWeightConstIt',['../classcomma_1_1_graph.html#a33a60fc9c014fc5adb267d64e8f4b2bb',1,'comma::Graph']]], + ['containerweighttype_10',['ContainerWeightType',['../classcomma_1_1_graph.html#ab61394e58e9019e8d55320e3a2885115',1,'comma::Graph::ContainerWeightType()'],['../classcomma_1_1_subgraph.html#ab61394e58e9019e8d55320e3a2885115',1,'comma::Subgraph::ContainerWeightType()'],['../classcomma_1_1_dual___graph.html#ab61394e58e9019e8d55320e3a2885115',1,'comma::Dual_Graph::ContainerWeightType()']]], + ['creatorbasetype_11',['CreatorBaseType',['../classcomma_1_1_neighbourhood_extended_creator.html#ae2cbcfa4423cf20e5045a9530c5f9c80',1,'comma::NeighbourhoodExtendedCreator::CreatorBaseType()'],['../classcomma_1_1_neighbourhood_pure_front_creator.html#a5c84dd3fbf5c5b5e113261da07379ffb',1,'comma::NeighbourhoodPureFrontCreator::CreatorBaseType()']]] ]; diff --git a/search/typedefs_3.js b/search/typedefs_3.js index 5269bbe..b746994 100644 --- a/search/typedefs_3.js +++ b/search/typedefs_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['dualgraphptr_0',['DualGraphPtr',['../class_coarse___cell.html#a8be4bfb51fc40000cf941d264323f6b2',1,'Coarse_Cell::DualGraphPtr()'],['../class_coarse___cell___container.html#ae1f92ee786149dd1dccf1a63b9e6232e',1,'Coarse_Cell_Container::DualGraphPtr()'],['../class_coarse___cell___subgraph.html#a8be4bfb51fc40000cf941d264323f6b2',1,'Coarse_Cell_Subgraph::DualGraphPtr()']]] + ['dualgraphptr_0',['DualGraphPtr',['../classcomma_1_1_coarse___cell.html#a35ecf0c52bb9edbc441d78a43279ca30',1,'comma::Coarse_Cell::DualGraphPtr()'],['../classcomma_1_1_coarse___cell___container.html#a5051b74d460fe27476950f53a5fd2229',1,'comma::Coarse_Cell_Container::DualGraphPtr()'],['../classcomma_1_1_coarse___cell___subgraph.html#a35ecf0c52bb9edbc441d78a43279ca30',1,'comma::Coarse_Cell_Subgraph::DualGraphPtr()']]] ]; diff --git a/search/typedefs_4.js b/search/typedefs_4.js index e0c4cf0..5a9ea0b 100644 --- a/search/typedefs_4.js +++ b/search/typedefs_4.js @@ -1,9 +1,9 @@ var searchData= [ - ['neighbourhoodbasetype_0',['NeighbourhoodBaseType',['../class_neighbourhood___extended.html#a5f895ae7b37a44a28e7c4b1d92492946',1,'Neighbourhood_Extended::NeighbourhoodBaseType()'],['../class_neighbourhood___pure___front.html#a99d20edd1d58840dce2ea95153d8f346',1,'Neighbourhood_Pure_Front::NeighbourhoodBaseType()'],['../class_neighbourhood_creator.html#a694bd4a43d05d3f7d98b374f7217eaf2',1,'NeighbourhoodCreator::NeighbourhoodBaseType()'],['../class_neighbourhood_extended_creator.html#a694bd4a43d05d3f7d98b374f7217eaf2',1,'NeighbourhoodExtendedCreator::NeighbourhoodBaseType()'],['../class_neighbourhood_pure_front_creator.html#a694bd4a43d05d3f7d98b374f7217eaf2',1,'NeighbourhoodPureFrontCreator::NeighbourhoodBaseType()']]], - ['neighbourhoodcreatorbasetype_1',['NeighbourhoodCreatorBaseType',['../class_agglomerator___isotropic.html#aa245ac4c02bde4ca77f58385fbf98958',1,'Agglomerator_Isotropic']]], - ['neighbourhoodcreatorexttype_2',['NeighbourhoodCreatorExtType',['../class_agglomerator___isotropic.html#ac5499e103590911ed10b4f87eebc29a9',1,'Agglomerator_Isotropic']]], - ['neighbourhoodcreatorpftype_3',['NeighbourhoodCreatorPFType',['../class_agglomerator___isotropic.html#a03588cd463325589cb44471e3d980824',1,'Agglomerator_Isotropic']]], - ['neighbourhoodderivedtype_4',['NeighbourhoodDerivedType',['../class_neighbourhood_extended_creator.html#ae35290e079c36b28efff609a94476922',1,'NeighbourhoodExtendedCreator::NeighbourhoodDerivedType()'],['../class_neighbourhood_pure_front_creator.html#a52f10c48b22181c5d1f2784b958b705c',1,'NeighbourhoodPureFrontCreator::NeighbourhoodDerivedType()']]], - ['nodetype_5',['NodeType',['../class_tree.html#acc2d326e5727bc506094e726337210c9',1,'Tree']]] + ['neighbourhoodbasetype_0',['NeighbourhoodBaseType',['../classcomma_1_1_neighbourhood___extended.html#a7186ba352d92837fca975e90fd1b5013',1,'comma::Neighbourhood_Extended::NeighbourhoodBaseType()'],['../classcomma_1_1_neighbourhood___pure___front.html#a913459e984b1617005be9d6674e3bea9',1,'comma::Neighbourhood_Pure_Front::NeighbourhoodBaseType()'],['../classcomma_1_1_neighbourhood_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e',1,'comma::NeighbourhoodCreator::NeighbourhoodBaseType()'],['../classcomma_1_1_neighbourhood_extended_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e',1,'comma::NeighbourhoodExtendedCreator::NeighbourhoodBaseType()'],['../classcomma_1_1_neighbourhood_pure_front_creator.html#a76e90fed2c5cd61b8b08b64e0e498f4e',1,'comma::NeighbourhoodPureFrontCreator::NeighbourhoodBaseType()']]], + ['neighbourhoodcreatorbasetype_1',['NeighbourhoodCreatorBaseType',['../classcomma_1_1_agglomerator___isotropic.html#a88a36f50abb4794a7bfe1ce8caef5736',1,'comma::Agglomerator_Isotropic']]], + ['neighbourhoodcreatorexttype_2',['NeighbourhoodCreatorExtType',['../classcomma_1_1_agglomerator___isotropic.html#a73cb23502dc4cf7ae54bccfaa2f42e4a',1,'comma::Agglomerator_Isotropic']]], + ['neighbourhoodcreatorpftype_3',['NeighbourhoodCreatorPFType',['../classcomma_1_1_agglomerator___isotropic.html#ae94e68908b4b05b376d7429d6e6c85b7',1,'comma::Agglomerator_Isotropic']]], + ['neighbourhoodderivedtype_4',['NeighbourhoodDerivedType',['../classcomma_1_1_neighbourhood_extended_creator.html#a63b796c170a94ef0e6be980bff923465',1,'comma::NeighbourhoodExtendedCreator::NeighbourhoodDerivedType()'],['../classcomma_1_1_neighbourhood_pure_front_creator.html#a8594b34dfb4913c08cb825415cb7755e',1,'comma::NeighbourhoodPureFrontCreator::NeighbourhoodDerivedType()']]], + ['nodetype_5',['NodeType',['../classcomma_1_1_tree.html#aff9812ac9e33103d2651b0f8a9ba601a',1,'comma::Tree']]] ]; diff --git a/search/typedefs_5.js b/search/typedefs_5.js index 351e8a0..82c228c 100644 --- a/search/typedefs_5.js +++ b/search/typedefs_5.js @@ -1,6 +1,6 @@ var searchData= [ - ['seedspoolbasetype_0',['SeedsPoolBaseType',['../class_seeds___pool___boundary___priority.html#a607c4ab9284f6116d12e4356fe4702b6',1,'Seeds_Pool_Boundary_Priority::SeedsPoolBaseType()'],['../class_seeds___pool___neighbourhood___priority.html#a1fa4863f05ee5d83399275bfcd430e53',1,'Seeds_Pool_Neighbourhood_Priority::SeedsPoolBaseType()']]], - ['subgraphptr_1',['SubGraphPtr',['../class_coarse___cell___subgraph.html#ac834adecb0b435e9722eb1e138bdac76',1,'Coarse_Cell_Subgraph']]], - ['subgraphtype_2',['SubGraphType',['../class_coarse___cell___subgraph.html#ab1c363143bc71d7b35e942d44eac78ab',1,'Coarse_Cell_Subgraph']]] + ['seedspoolbasetype_0',['SeedsPoolBaseType',['../classcomma_1_1_seeds___pool___boundary___priority.html#a1d1c45f7e5b7803108d17ba4bdef0261',1,'comma::Seeds_Pool_Boundary_Priority::SeedsPoolBaseType()'],['../classcomma_1_1_seeds___pool___neighbourhood___priority.html#a66ebace9a08086690b4ea3a1965f2cd9',1,'comma::Seeds_Pool_Neighbourhood_Priority::SeedsPoolBaseType()']]], + ['subgraphptr_1',['SubGraphPtr',['../classcomma_1_1_coarse___cell___subgraph.html#ad5a7874698d85e8a75d1738a6257ab26',1,'comma::Coarse_Cell_Subgraph']]], + ['subgraphtype_2',['SubGraphType',['../classcomma_1_1_coarse___cell___subgraph.html#ab140e803b551ea792a8f004aceb54aed',1,'comma::Coarse_Cell_Subgraph']]] ]; diff --git a/search/variables_0.js b/search/variables_0.js index 5ffdb4b..30f85e3 100644 --- a/search/variables_0.js +++ b/search/variables_0.js @@ -1,64 +1,64 @@ var searchData= [ - ['_5faniso_5fneighbours_0',['_aniso_neighbours',['../class_agglomerator___anisotropic.html#ab0c44e5709cbe57ecab367f622e05eac',1,'Agglomerator_Anisotropic']]], - ['_5fcandidates_1',['_candidates',['../class_neighbourhood.html#ae40fea4817fd6c5603eb7b9bd6740b68',1,'Neighbourhood']]], - ['_5fcardinality_2',['_cardinality',['../class_subgraph.html#a7058ddca6eb8fb76a393dcbb55621072',1,'Subgraph::_cardinality()'],['../class_coarse___cell.html#a4d90745cd32adfe8298a840af8ed02c8',1,'Coarse_Cell::_cardinality()']]], - ['_5fcc_5fcounter_3',['_cc_counter',['../class_coarse___cell___container.html#aaedb1987672cc4859f2f6fe7e1ec8233',1,'Coarse_Cell_Container']]], - ['_5fcc_5fgraph_4',['_cc_graph',['../class_agglomerator.html#a7b47f55bf7c7edcab6589e4ff93f28d6',1,'Agglomerator::_cc_graph()'],['../class_coarse___cell___subgraph.html#a51ceea95e630f9bb05d09b4517c62444',1,'Coarse_Cell_Subgraph::_cc_graph()']]], - ['_5fccs_5',['_ccs',['../class_coarse___cell___container.html#acd55a3361f7870e4e3a6fecc0b722143',1,'Coarse_Cell_Container']]], - ['_5fcenters_6',['_centers',['../class_dual___graph.html#adee0ab6f08caf03b8acade0c9c7515c8',1,'Dual_Graph']]], - ['_5fcompactness_7',['_compactness',['../class_coarse___cell.html#a047166bfed95c800f5818571ad353d64',1,'Coarse_Cell::_compactness()'],['../class_subgraph.html#a542bd9e63de495030a058b1abe3c76b9',1,'Subgraph::_compactness()']]], - ['_5fcompute_5far_8',['_compute_AR',['../class_agglomerator.html#ad2d5d7d04112d5cf3b7e597cb9c3eca4',1,'Agglomerator::_compute_AR()'],['../class_dual___graph.html#a61237752c04eb7a93d5306c4ccf789af',1,'Dual_Graph::_compute_AR()']]], - ['_5fcur_5ftop_5fqueue_9',['_cur_top_queue',['../class_seeds___pool.html#a7397a981bac53b7356e8ca715ac99a52',1,'Seeds_Pool']]], - ['_5fdelayed_5fcc_10',['_delayed_cc',['../class_coarse___cell___container.html#a9ff233d4ed5041ea03911c235ea31cb1',1,'Coarse_Cell_Container']]], - ['_5fdimension_11',['_dimension',['../class_agglomerator.html#a80151a5a6c0e81861a6fe4b2f9fd5517',1,'Agglomerator::_dimension()'],['../class_neighbourhood___pure___front.html#a476e4cd4e4dec20336072c55504a1ed5',1,'Neighbourhood_Pure_Front::_dimension()']]], - ['_5ffather_12',['_father',['../class_node.html#ab606cdd496b5cead1175beccdd6bf9e2',1,'Node']]], - ['_5ffc_5f2_5fcc_13',['_fc_2_cc',['../class_coarse___cell___container.html#a424991a123832bea6e516b5e05498ab6',1,'Coarse_Cell_Container']]], - ['_5ffc_5fgraph_14',['_fc_graph',['../class_agglomerator.html#a38e7e1e9096ee706bcdd8571d85391f3',1,'Agglomerator::_fc_graph()'],['../class_coarse___cell___container.html#a9ae47860d515a99af0e0199f4d844473',1,'Coarse_Cell_Container::_fc_graph()'],['../class_coarse___cell.html#a9d0de841b50f912776594f0569e027ce',1,'Coarse_Cell::_fc_graph()']]], - ['_5ffc_5fiter_15',['_fc_iter',['../class_agglomerator___isotropic.html#aedc834cf0d9bb4af59452033b837120c',1,'Agglomerator_Isotropic']]], - ['_5fgoal_5fcard_16',['_goal_card',['../class_agglomerator.html#af86ca3a8b211b4b3aa0297598bbd6e2c',1,'Agglomerator']]], - ['_5fidx_17',['_idx',['../class_coarse___cell.html#ab4e9114443109a7cdd92baca0d0fad0a',1,'Coarse_Cell']]], - ['_5findex_18',['_index',['../class_node.html#a55da666a9ff1b5a264f6ed64b505ff5c',1,'Node']]], - ['_5finitializator_19',['_initializator',['../class_seeds___pool.html#acf803da96cb6760c6bf2d4fa5a8552ac',1,'Seeds_Pool']]], - ['_5fis_5fconnected_20',['_is_connected',['../class_coarse___cell___subgraph.html#a7a1792cefef0e843930729b039ae6fe0',1,'Coarse_Cell_Subgraph']]], - ['_5fis_5fconnectivity_5fup_5fto_5fdate_21',['_is_connectivity_up_to_date',['../class_coarse___cell___subgraph.html#adb35fdd9503dff948d1b6dc62a27d85d',1,'Coarse_Cell_Subgraph']]], - ['_5fis_5ffc_5fagglomerated_22',['_is_fc_agglomerated',['../class_coarse___cell___container.html#a7940da5753d067f786aead5b6bc7f792',1,'Coarse_Cell_Container']]], - ['_5fis_5fisotropic_23',['_is_isotropic',['../class_coarse___cell.html#a38bbb07dde775ec8b93e59d449f8496d',1,'Coarse_Cell::_is_isotropic()'],['../class_subgraph.html#a227bc4f69731cee95b7d931cc8cb401a',1,'Subgraph::_is_isotropic()']]], - ['_5fl_5fnb_5fof_5fcells_24',['_l_nb_of_cells',['../class_agglomerator.html#aad06993145e0a315a30438c1213358ef',1,'Agglomerator']]], - ['_5fl_5fof_5fseeds_25',['_l_of_seeds',['../class_seeds___pool.html#a958a26a313e6a7d11aeef6ecb506ee6f',1,'Seeds_Pool']]], - ['_5fleft_5fidx_26',['_left_idx',['../class_node.html#acb9869a5c79ec10452851f23a95b1f1e',1,'Node']]], - ['_5fleft_5fson_5fidx_27',['_left_son_idx',['../class_node.html#a27d40cf9fb43d5b7ef5e0cac50b7b9ed',1,'Node']]], - ['_5fm_5fcrs_5fcol_5find_28',['_m_CRS_Col_Ind',['../class_graph.html#a37918efd419ec9a1e9f4f21fbf3472c2',1,'Graph']]], - ['_5fm_5fcrs_5frow_5fptr_29',['_m_CRS_Row_Ptr',['../class_graph.html#aa1cafeb913e75f305f2ea42d1c08cdc3',1,'Graph']]], - ['_5fm_5fcrs_5fvalues_30',['_m_CRS_Values',['../class_graph.html#a6e8f302f604d04f448e633628de2c1ec',1,'Graph']]], - ['_5fmapa_31',['_mapA',['../class_bimap.html#a6be43beacb00b26c8e24958950a66b82',1,'Bimap']]], - ['_5fmapb_32',['_mapB',['../class_bimap.html#a433a7a0d989b19d687458f760bffa665',1,'Bimap']]], - ['_5fmapping_5fl_5fto_5fg_33',['_mapping_l_to_g',['../class_subgraph.html#ac0630065e5ee2ecaf565b5199d28ea24',1,'Subgraph']]], - ['_5fmax_5fcard_34',['_max_card',['../class_agglomerator.html#a4e39d5b4ef1fc4e0f6831b37e2f4f3d6',1,'Agglomerator']]], - ['_5fmin_5fcard_35',['_min_card',['../class_agglomerator.html#a0ac5f57bf96ca2504a7db6e6f9ed6fbf',1,'Agglomerator']]], - ['_5fmin_5fneighbourhood_36',['_min_neighbourhood',['../class_agglomerator.html#a383f9f3c19557031a4cfdbf5f9997557',1,'Agglomerator']]], - ['_5fn_5fbnd_5ffaces_37',['_n_bnd_faces',['../class_dual___graph.html#a12ebafe2c27293840b5b57e934a7bd6a',1,'Dual_Graph::_n_bnd_faces()'],['../class_seeds___pool.html#a3b7c154f4775ee5be6800bae7a564f99',1,'Seeds_Pool::_n_bnd_faces()']]], - ['_5fnb_5flines_38',['_nb_lines',['../class_agglomerator___anisotropic.html#a6aa2ebc6c7b6e70ca305219ad6836aa1',1,'Agglomerator_Anisotropic']]], - ['_5fnb_5fof_5fagglomerated_5ffc_39',['_nb_of_agglomerated_fc',['../class_coarse___cell___container.html#ad6364e5fed3a17cdbe68a52a205c836a',1,'Coarse_Cell_Container']]], - ['_5fneigh_5fcrtor_40',['_neigh_crtor',['../class_agglomerator___isotropic.html#abd429139ef36679e33a85e56d2b26d99',1,'Agglomerator_Isotropic']]], - ['_5fnumber_5fof_5fcells_41',['_number_of_cells',['../class_graph.html#a7e08c1758034942c58024c58690e8c30',1,'Graph']]], - ['_5fodd_5fline_5flength_42',['_odd_line_length',['../class_agglomerator___anisotropic.html#a59eae018fc07aada999110ca24597795',1,'Agglomerator_Anisotropic']]], - ['_5fpriority_5fweights_43',['_priority_weights',['../class_seeds___pool.html#a748320ddb30c58dd41c89f392e7692e7',1,'Seeds_Pool']]], - ['_5fq_5fneighs_5fw_5fweights_44',['_q_neighs_w_weights',['../class_neighbourhood___pure___front.html#a378d383cd5c63f3a5a3f2a739ec52e40',1,'Neighbourhood_Pure_Front']]], - ['_5fright_5fidx_45',['_right_idx',['../class_node.html#ab90e84725773f5a76757d45ac14df54d',1,'Node']]], - ['_5froot_46',['_root',['../class_tree.html#a76e1e482851604865ddcf4952b037846',1,'Tree']]], - ['_5fs_5fanisotropic_5fcompliant_5fcells_47',['_s_anisotropic_compliant_cells',['../class_dual___graph.html#a8283d424689ee579c7ae6ad8c5a49f36',1,'Dual_Graph']]], - ['_5fs_5ffc_48',['_s_fc',['../class_coarse___cell.html#a90c9c5cde7ccf85d11f5cfc98997368d',1,'Coarse_Cell::_s_fc()'],['../class_neighbourhood.html#a2f86c452a0c4f7642388e37a6a213e77',1,'Neighbourhood::_s_fc()']]], - ['_5fs_5fneighbours_5fof_5fseed_49',['_s_neighbours_of_seed',['../class_neighbourhood.html#a3ddbac48fd3e9644422f8268fe96f0bd',1,'Neighbourhood']]], - ['_5fseeds_5fpool_50',['_seeds_pool',['../class_agglomerator.html#ac0c848d78d09919644771d45b56acac1',1,'Agglomerator']]], - ['_5fshould_5fagglomerate_51',['_should_agglomerate',['../class_agglomerator___anisotropic.html#aa5fe90f46019de67520ebe04eaa08e07',1,'Agglomerator_Anisotropic']]], - ['_5fsing_5fcard_5fthresh_52',['_sing_card_thresh',['../class_coarse___cell___container.html#a40c1a7820ff7948cde2ac8cb189be0f5',1,'Coarse_Cell_Container']]], - ['_5fsingular_5fcc_53',['_singular_cc',['../class_coarse___cell___container.html#afc84ade812ac4538c434bd8ad5907a62',1,'Coarse_Cell_Container']]], - ['_5fsonc_54',['_sonc',['../class_node.html#a42dfa5fd9feef4fa4633b75d4b056f7e',1,'Node']]], - ['_5fthreshold_5fcard_55',['_threshold_card',['../class_agglomerator.html#a58a3b2a3576b7f6819e4226228bfe77f',1,'Agglomerator']]], - ['_5fv_5flines_56',['_v_lines',['../class_agglomerator___anisotropic.html#a650ab1acbe83f765d0314efb8f319cd0',1,'Agglomerator_Anisotropic']]], - ['_5fvisited_57',['_visited',['../class_graph.html#a0245c0b3d009235b3357b584cae21642',1,'Graph']]], - ['_5fvolume_58',['_volume',['../class_node.html#acecc90c44683ccf6f4fc02d285e6221e',1,'Node']]], - ['_5fvolumes_59',['_volumes',['../class_graph.html#a43a49b14a5c4dbde4d6e2f7dd2779b15',1,'Graph']]], - ['_5fweights_60',['_weights',['../class_neighbourhood.html#a7f6e92db94e65505a45de7d8a7a6947c',1,'Neighbourhood']]] + ['_5faniso_5fneighbours_0',['_aniso_neighbours',['../classcomma_1_1_agglomerator___anisotropic.html#ac26aae66c211f11a2cbc0d56f3a0a3a4',1,'comma::Agglomerator_Anisotropic']]], + ['_5fcandidates_1',['_candidates',['../classcomma_1_1_neighbourhood.html#a6ddd9f0975543a8c8843b415645abc69',1,'comma::Neighbourhood']]], + ['_5fcardinality_2',['_cardinality',['../classcomma_1_1_subgraph.html#a9af08fe78c28ad4dc06e6128b2aa07bb',1,'comma::Subgraph::_cardinality()'],['../classcomma_1_1_coarse___cell.html#a31f56dd630378c3ce67d5e155a50fb5a',1,'comma::Coarse_Cell::_cardinality()']]], + ['_5fcc_5fcounter_3',['_cc_counter',['../classcomma_1_1_coarse___cell___container.html#a5cd32093348aa15c437952de4fb50c20',1,'comma::Coarse_Cell_Container']]], + ['_5fcc_5fgraph_4',['_cc_graph',['../classcomma_1_1_agglomerator.html#a8451ab2bd5cb83611182ff63ee6df949',1,'comma::Agglomerator::_cc_graph()'],['../classcomma_1_1_coarse___cell___subgraph.html#a13e2b439ea8381b74bf91b1e1222fde2',1,'comma::Coarse_Cell_Subgraph::_cc_graph()']]], + ['_5fccs_5',['_ccs',['../classcomma_1_1_coarse___cell___container.html#a00994ecc5f6dae2f9ab6bb376e50931a',1,'comma::Coarse_Cell_Container']]], + ['_5fcenters_6',['_centers',['../classcomma_1_1_dual___graph.html#a49d4b45fcbf985e001a9137f38d8fd0d',1,'comma::Dual_Graph']]], + ['_5fcompactness_7',['_compactness',['../classcomma_1_1_coarse___cell.html#ab872db2f751d586c971943e25d9f0c65',1,'comma::Coarse_Cell::_compactness()'],['../classcomma_1_1_subgraph.html#a297656c72928fe5c7f9892a70595f973',1,'comma::Subgraph::_compactness()']]], + ['_5fcompute_5far_8',['_compute_AR',['../classcomma_1_1_agglomerator.html#ac8cfb2dbc276a34680c0f1fee2b3c390',1,'comma::Agglomerator::_compute_AR()'],['../classcomma_1_1_dual___graph.html#adbc7f2b85fe3771b78a1d485575ed4a3',1,'comma::Dual_Graph::_compute_AR()']]], + ['_5fcur_5ftop_5fqueue_9',['_cur_top_queue',['../classcomma_1_1_seeds___pool.html#ab12ee6a6886337d0a11eff12c9dcda9c',1,'comma::Seeds_Pool']]], + ['_5fdelayed_5fcc_10',['_delayed_cc',['../classcomma_1_1_coarse___cell___container.html#a3524485e16d28d4eda3cac529a882ae6',1,'comma::Coarse_Cell_Container']]], + ['_5fdimension_11',['_dimension',['../classcomma_1_1_agglomerator.html#abfae2aa7f2f81094f283990406492cc3',1,'comma::Agglomerator::_dimension()'],['../classcomma_1_1_neighbourhood___pure___front.html#abb29cb2a39fe869e98626c420b08531f',1,'comma::Neighbourhood_Pure_Front::_dimension()']]], + ['_5ffather_12',['_father',['../classcomma_1_1_node.html#a1392428dc13cfdbeca98c01003402b3f',1,'comma::Node']]], + ['_5ffc_5f2_5fcc_13',['_fc_2_cc',['../classcomma_1_1_coarse___cell___container.html#a4552eff1fb2fb15974b835d765b61e4b',1,'comma::Coarse_Cell_Container']]], + ['_5ffc_5fgraph_14',['_fc_graph',['../classcomma_1_1_agglomerator.html#a851078a996985840835428c7bef3c942',1,'comma::Agglomerator::_fc_graph()'],['../classcomma_1_1_coarse___cell___container.html#a86e1e85dcd0d95bfd49a267960d4ea58',1,'comma::Coarse_Cell_Container::_fc_graph()'],['../classcomma_1_1_coarse___cell.html#a910e720ead09571ffcae75f604e6b310',1,'comma::Coarse_Cell::_fc_graph()']]], + ['_5ffc_5fiter_15',['_fc_iter',['../classcomma_1_1_agglomerator___isotropic.html#a5d71e7a65e072879cdf53c3ebd29b655',1,'comma::Agglomerator_Isotropic']]], + ['_5fgoal_5fcard_16',['_goal_card',['../classcomma_1_1_agglomerator.html#acffaa9cdc55cd1affe6d3e2924f46f81',1,'comma::Agglomerator']]], + ['_5fidx_17',['_idx',['../classcomma_1_1_coarse___cell.html#a13151d1da32d3567c38227842ba1d19f',1,'comma::Coarse_Cell']]], + ['_5findex_18',['_index',['../classcomma_1_1_node.html#abb78e37b6c11686abeaf744f0e29ec2a',1,'comma::Node']]], + ['_5finitializator_19',['_initializator',['../classcomma_1_1_seeds___pool.html#ac1d8be5640d4c3de04958b4aa9e0e75f',1,'comma::Seeds_Pool']]], + ['_5fis_5fconnected_20',['_is_connected',['../classcomma_1_1_coarse___cell___subgraph.html#aa143ca9ef420d4794ddad99596f8e74f',1,'comma::Coarse_Cell_Subgraph']]], + ['_5fis_5fconnectivity_5fup_5fto_5fdate_21',['_is_connectivity_up_to_date',['../classcomma_1_1_coarse___cell___subgraph.html#a6b0355c909f3fa0124da54545c504977',1,'comma::Coarse_Cell_Subgraph']]], + ['_5fis_5ffc_5fagglomerated_22',['_is_fc_agglomerated',['../classcomma_1_1_coarse___cell___container.html#a7d4a556613699b7ab500717238bd7cf9',1,'comma::Coarse_Cell_Container']]], + ['_5fis_5fisotropic_23',['_is_isotropic',['../classcomma_1_1_coarse___cell.html#a39e720f43721fb92283e90641c884549',1,'comma::Coarse_Cell::_is_isotropic()'],['../classcomma_1_1_subgraph.html#a230d6568fd758a52709f60c1601662c8',1,'comma::Subgraph::_is_isotropic()']]], + ['_5fl_5fnb_5fof_5fcells_24',['_l_nb_of_cells',['../classcomma_1_1_agglomerator.html#a26017de7f4165439358cf9ad65c608ba',1,'comma::Agglomerator']]], + ['_5fl_5fof_5fseeds_25',['_l_of_seeds',['../classcomma_1_1_seeds___pool.html#a0d840ac2abaa80ac8d2e5ff80ca9984d',1,'comma::Seeds_Pool']]], + ['_5fleft_5fidx_26',['_left_idx',['../classcomma_1_1_node.html#aa27241e12cb061d59c589bd3364bea47',1,'comma::Node']]], + ['_5fleft_5fson_5fidx_27',['_left_son_idx',['../classcomma_1_1_node.html#a0bf32c66dc95f86917b1a5bcd59a0eb8',1,'comma::Node']]], + ['_5fm_5fcrs_5fcol_5find_28',['_m_CRS_Col_Ind',['../classcomma_1_1_graph.html#aa8d637d0718dbf470f51d8a7a07f3baa',1,'comma::Graph']]], + ['_5fm_5fcrs_5frow_5fptr_29',['_m_CRS_Row_Ptr',['../classcomma_1_1_graph.html#a708321a816653163524e7f261bbe4cbe',1,'comma::Graph']]], + ['_5fm_5fcrs_5fvalues_30',['_m_CRS_Values',['../classcomma_1_1_graph.html#a07cb0d55e652d04e3e7c83c02efa757e',1,'comma::Graph']]], + ['_5fmapa_31',['_mapA',['../classcomma_1_1_bimap.html#ad7078e25a5c856ca2921c4dc34f7cd16',1,'comma::Bimap']]], + ['_5fmapb_32',['_mapB',['../classcomma_1_1_bimap.html#aa15dba38c92794eedf5978c84a9b19e5',1,'comma::Bimap']]], + ['_5fmapping_5fl_5fto_5fg_33',['_mapping_l_to_g',['../classcomma_1_1_subgraph.html#a4ed3e10de29d6b5ffefd442abb5bd164',1,'comma::Subgraph']]], + ['_5fmax_5fcard_34',['_max_card',['../classcomma_1_1_agglomerator.html#ac9361db0f6352efc61cde4882c8e7f42',1,'comma::Agglomerator']]], + ['_5fmin_5fcard_35',['_min_card',['../classcomma_1_1_agglomerator.html#a6587a8cd2ccb77bde337efe69f232980',1,'comma::Agglomerator']]], + ['_5fmin_5fneighbourhood_36',['_min_neighbourhood',['../classcomma_1_1_agglomerator.html#aad1aaacca4a000d6ee819f9d36385f99',1,'comma::Agglomerator']]], + ['_5fn_5fbnd_5ffaces_37',['_n_bnd_faces',['../classcomma_1_1_dual___graph.html#aa791a6c06faf85eeab349adbb7010b7e',1,'comma::Dual_Graph::_n_bnd_faces()'],['../classcomma_1_1_seeds___pool.html#af94325238592b000a2549eccf7905f58',1,'comma::Seeds_Pool::_n_bnd_faces()']]], + ['_5fnb_5flines_38',['_nb_lines',['../classcomma_1_1_agglomerator___anisotropic.html#af3090efb008f7fd601afcad457be5294',1,'comma::Agglomerator_Anisotropic']]], + ['_5fnb_5fof_5fagglomerated_5ffc_39',['_nb_of_agglomerated_fc',['../classcomma_1_1_coarse___cell___container.html#a16e9f6a6002a7a3580b7f1d017a15b99',1,'comma::Coarse_Cell_Container']]], + ['_5fneigh_5fcrtor_40',['_neigh_crtor',['../classcomma_1_1_agglomerator___isotropic.html#a5c6f7d604d05f97dcf8c61ace4e49aef',1,'comma::Agglomerator_Isotropic']]], + ['_5fnumber_5fof_5fcells_41',['_number_of_cells',['../classcomma_1_1_graph.html#ad04e5b90c7fc132406dae34bb8f9fa49',1,'comma::Graph']]], + ['_5fodd_5fline_5flength_42',['_odd_line_length',['../classcomma_1_1_agglomerator___anisotropic.html#a231b51e38cfd45989b02fb7ea383e6a9',1,'comma::Agglomerator_Anisotropic']]], + ['_5fpriority_5fweights_43',['_priority_weights',['../classcomma_1_1_seeds___pool.html#a12a6662e2f8e508e852c76f36df1ff17',1,'comma::Seeds_Pool']]], + ['_5fq_5fneighs_5fw_5fweights_44',['_q_neighs_w_weights',['../classcomma_1_1_neighbourhood___pure___front.html#ab4f56f2ddccb9f209a1192f931062456',1,'comma::Neighbourhood_Pure_Front']]], + ['_5fright_5fidx_45',['_right_idx',['../classcomma_1_1_node.html#a00784e85c969362df47c971dfcd3a8f5',1,'comma::Node']]], + ['_5froot_46',['_root',['../classcomma_1_1_tree.html#a1807654696d35f467175dfae12ef3f8c',1,'comma::Tree']]], + ['_5fs_5fanisotropic_5fcompliant_5fcells_47',['_s_anisotropic_compliant_cells',['../classcomma_1_1_dual___graph.html#af16576287d20ef656d4d7fa3479f0bed',1,'comma::Dual_Graph']]], + ['_5fs_5ffc_48',['_s_fc',['../classcomma_1_1_coarse___cell.html#a90d3d1c06f292560c3d4c47c19c7931d',1,'comma::Coarse_Cell::_s_fc()'],['../classcomma_1_1_neighbourhood.html#aab45271f5bea1f6519cab6c069df7bac',1,'comma::Neighbourhood::_s_fc()']]], + ['_5fs_5fneighbours_5fof_5fseed_49',['_s_neighbours_of_seed',['../classcomma_1_1_neighbourhood.html#a357ce64ac4e6d2e9ff5e9e7e75157886',1,'comma::Neighbourhood']]], + ['_5fseeds_5fpool_50',['_seeds_pool',['../classcomma_1_1_agglomerator.html#acd76d69424ca63f9e726eccb31f26773',1,'comma::Agglomerator']]], + ['_5fshould_5fagglomerate_51',['_should_agglomerate',['../classcomma_1_1_agglomerator___anisotropic.html#a6f8e9378cb1709de43dedd5a1c3c6d5d',1,'comma::Agglomerator_Anisotropic']]], + ['_5fsing_5fcard_5fthresh_52',['_sing_card_thresh',['../classcomma_1_1_coarse___cell___container.html#a337440485655e84a57e8a7e9d1d3ca8f',1,'comma::Coarse_Cell_Container']]], + ['_5fsingular_5fcc_53',['_singular_cc',['../classcomma_1_1_coarse___cell___container.html#a08300d61da9f6559f580b29003e1f689',1,'comma::Coarse_Cell_Container']]], + ['_5fsonc_54',['_sonc',['../classcomma_1_1_node.html#aa73c0969d0ff731040bc3c684913c86c',1,'comma::Node']]], + ['_5fthreshold_5fcard_55',['_threshold_card',['../classcomma_1_1_agglomerator.html#a8d135285ab3126712b031a51cfa871b2',1,'comma::Agglomerator']]], + ['_5fv_5flines_56',['_v_lines',['../classcomma_1_1_agglomerator___anisotropic.html#aace7d0d96f2efb496df20b4f221d7872',1,'comma::Agglomerator_Anisotropic']]], + ['_5fvisited_57',['_visited',['../classcomma_1_1_graph.html#aec53729d369659cd15a85198a8d0595f',1,'comma::Graph']]], + ['_5fvolume_58',['_volume',['../classcomma_1_1_node.html#a1ab325d368510e673507beae3116e78e',1,'comma::Node']]], + ['_5fvolumes_59',['_volumes',['../classcomma_1_1_graph.html#ad7ed39610dc52059d435b5c94f099f7b',1,'comma::Graph']]], + ['_5fweights_60',['_weights',['../classcomma_1_1_neighbourhood.html#a0c2d7202d396da52d62d4b7463c5d947',1,'comma::Neighbourhood']]] ]; diff --git a/search/variables_1.js b/search/variables_1.js index f1d6508..b923b4e 100644 --- a/search/variables_1.js +++ b/search/variables_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['deviate_5fthresh_0',['deviate_thresh',['../_util_8h.html#a92bafb9d36c34646ee1bf8ec1c67f3c9',1,'Util.h']]] + ['deviate_5fthresh_0',['deviate_thresh',['../namespacecomma.html#a75164a303f92061683959fa690d67906',1,'comma']]] ]; diff --git a/search/variables_2.js b/search/variables_2.js index e5d24bf..1f8a6e5 100644 --- a/search/variables_2.js +++ b/search/variables_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['max_5fiter_0',['max_iter',['../_co_m_m_a_8h.html#a06c8f4babe70bb7080dba80cf0473b21',1,'CoMMA.h']]] + ['iter_5fagglo_5fmax_5fiter_0',['iter_agglo_max_iter',['../namespacecomma.html#ae843c64bc9e371bd460fe8d040c80e2b',1,'comma']]] ]; diff --git a/struct_custom_pair_greater_functor.js b/struct_custom_pair_greater_functor.js deleted file mode 100644 index 41365eb..0000000 --- a/struct_custom_pair_greater_functor.js +++ /dev/null @@ -1,4 +0,0 @@ -var struct_custom_pair_greater_functor = -[ - [ "operator()", "struct_custom_pair_greater_functor.html#a9ac240416deabfd8c145f46a835d672c", null ] -]; \ No newline at end of file diff --git a/struct_custom_pair_less_functor.js b/struct_custom_pair_less_functor.js deleted file mode 100644 index 67c0a02..0000000 --- a/struct_custom_pair_less_functor.js +++ /dev/null @@ -1,4 +0,0 @@ -var struct_custom_pair_less_functor = -[ - [ "operator()", "struct_custom_pair_less_functor.html#af2e849a34c258f2ce1f92fcd0c7bcc2a", null ] -]; \ No newline at end of file diff --git a/struct_pair_second_based_less_functor.js b/struct_pair_second_based_less_functor.js deleted file mode 100644 index 34f2baf..0000000 --- a/struct_pair_second_based_less_functor.js +++ /dev/null @@ -1,4 +0,0 @@ -var struct_pair_second_based_less_functor = -[ - [ "operator()", "struct_pair_second_based_less_functor.html#aadea5a66aac84faca65044194f80c2e3", null ] -]; \ No newline at end of file diff --git a/struct_s_p_full_initializator.html b/struct_s_p_full_initializator.html deleted file mode 100644 index 45f1000..0000000 --- a/struct_s_p_full_initializator.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - -CoMMA: SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Struct Template Reference - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    CoMMA 1.3.1 -
    -
    A geometric agglomerator for unstructured meshes
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Struct Template Reference
    -
    -
    - -

    Functor performing the full initialization of a seeds pool. - More...

    - -

    #include <Seeds_Pool.h>

    -
    -Inheritance diagram for SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    -
    -
    - - -SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
    - - - - - - - - - - - - - - - - - - - - - -

    -Public Types

    using BaseClass = SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Parent class. More...
     
    using CoMMAQueueType = deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    - Public Types inherited from SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMAQueueType = deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    - - - - - - - -

    -Public Member Functions

    void operator() (const vector< CoMMAWeightType > &priority_weights, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &q) override
     Initialize a queue of a seeds pool. More...
     
    virtual void operator() (const vector< CoMMAWeightType > &priority_weights, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &q)=0
     Initialize a queue of a seeds pool. More...
     
    -

    Detailed Description

    -
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    -struct SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Functor performing the full initialization of a seeds pool.

    -
    Template Parameters
    - - - - -
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    -
    -
    -

    Member Typedef Documentation

    - -

    ◆ BaseClass

    - -
    -
    -
    -template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    - - - - -
    using SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::BaseClass = SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    -
    - -

    Parent class.

    - -
    -
    - -

    ◆ CoMMAQueueType

    - -
    -
    -
    -template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    - - - - -
    using SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAQueueType = deque<CoMMAIndexType>
    -
    - -

    Type of queue which holds seeds.

    - -
    -
    - -

    ◆ CoMMASetOfPairType

    - -
    -
    -
    -template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    - - - - -
    using SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
    -
    - -

    Type of set of pairs.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::operator() (const vector< CoMMAWeightType > & priority_weights,
    const vector< CoMMAIntType > & n_bnd_faces,
    const CoMMAIntType max_bnd,
    CoMMAQueueTypeq 
    )
    -
    -inlineoverridevirtual
    -
    - -

    Initialize a queue of a seeds pool.

    -
    Parameters
    - - - - - -
    [in]priority_weightsWeights used to set the order of the seed to choose
    [in]n_bnd_facesVector telling how many boundary faces each cell has
    [in]max_bndReference value for boundary faces: only cells with boundaries higher than this are considered
    [out]qThe queue to build
    -
    -
    - -

    Implements SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/struct_s_p_full_initializator.js b/struct_s_p_full_initializator.js deleted file mode 100644 index 0492d18..0000000 --- a/struct_s_p_full_initializator.js +++ /dev/null @@ -1,7 +0,0 @@ -var struct_s_p_full_initializator = -[ - [ "BaseClass", "struct_s_p_full_initializator.html#aaaa1049d1803559770144bd222e895f0", null ], - [ "CoMMAQueueType", "struct_s_p_full_initializator.html#a7cae6a0f08b656f912510a1c31327b99", null ], - [ "CoMMASetOfPairType", "struct_s_p_full_initializator.html#a6fad2bcdb808aa5b9d076b6694de7046", null ], - [ "operator()", "struct_s_p_full_initializator.html#a380cf703f0fe0069a5f5c7dd0ead70c5", null ] -]; \ No newline at end of file diff --git a/struct_s_p_full_initializator.png b/struct_s_p_full_initializator.png deleted file mode 100644 index fad6bca..0000000 Binary files a/struct_s_p_full_initializator.png and /dev/null differ diff --git a/struct_s_p_initializator.html b/struct_s_p_initializator.html deleted file mode 100644 index 890c30f..0000000 --- a/struct_s_p_initializator.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - - -CoMMA: SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Struct Template Reference - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    CoMMA 1.3.1 -
    -
    A geometric agglomerator for unstructured meshes
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Struct Template Referenceabstract
    -
    -
    - -

    Functor performing the initialization of a seeds pool. - More...

    - -

    #include <Seeds_Pool.h>

    -
    -Inheritance diagram for SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    -
    -
    - - -SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > -SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
    - - - - - - - - - - - -

    -Public Types

    using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMAQueueType = deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    - - - - -

    -Public Member Functions

    virtual void operator() (const vector< CoMMAWeightType > &priority_weights, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &q)=0
     Initialize a queue of a seeds pool. More...
     
    -

    Detailed Description

    -
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    -struct SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Functor performing the initialization of a seeds pool.

    -
    Template Parameters
    - - - - -
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    -
    -
    -

    Member Typedef Documentation

    - -

    ◆ CoMMAPairType

    - -
    -
    -
    -template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    - - - - -
    using SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>
    -
    - -

    Type of pair.

    - -
    -
    - -

    ◆ CoMMAQueueType

    - -
    -
    -
    -template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    - - - - -
    using SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAQueueType = deque<CoMMAIndexType>
    -
    - -

    Type of queue which holds seeds.

    - -
    -
    - -

    ◆ CoMMASetOfPairType

    - -
    -
    -
    -template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    - - - - -
    using SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
    -
    - -

    Type of set of pairs.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    virtual void SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::operator() (const vector< CoMMAWeightType > & priority_weights,
    const vector< CoMMAIntType > & n_bnd_faces,
    const CoMMAIntType max_bnd,
    CoMMAQueueTypeq 
    )
    -
    -pure virtual
    -
    - -

    Initialize a queue of a seeds pool.

    -
    Parameters
    - - - - - -
    [in]priority_weightsWeights used to set the order of the seed to choose
    [in]n_bnd_facesVector telling how many boundary faces each cell has
    [in]max_bndReference value for boundary faces: only cells with boundaries higher than this are considered
    [out]qThe queue to build
    -
    -
    - -

    Implemented in SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/struct_s_p_initializator.js b/struct_s_p_initializator.js deleted file mode 100644 index a1509f6..0000000 --- a/struct_s_p_initializator.js +++ /dev/null @@ -1,7 +0,0 @@ -var struct_s_p_initializator = -[ - [ "CoMMAPairType", "struct_s_p_initializator.html#a900bdf529fbbd18e93f2769c35a87304", null ], - [ "CoMMAQueueType", "struct_s_p_initializator.html#a7cae6a0f08b656f912510a1c31327b99", null ], - [ "CoMMASetOfPairType", "struct_s_p_initializator.html#a6fad2bcdb808aa5b9d076b6694de7046", null ], - [ "operator()", "struct_s_p_initializator.html#a1d6d6649a4d47308166b97fe9a57714b", null ] -]; \ No newline at end of file diff --git a/struct_s_p_initializator.png b/struct_s_p_initializator.png deleted file mode 100644 index 31f5b71..0000000 Binary files a/struct_s_p_initializator.png and /dev/null differ diff --git a/struct_s_p_one_point_initializator.html b/struct_s_p_one_point_initializator.html deleted file mode 100644 index 2c06f4e..0000000 --- a/struct_s_p_one_point_initializator.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - -CoMMA: SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Struct Template Reference - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    CoMMA 1.3.1 -
    -
    A geometric agglomerator for unstructured meshes
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Struct Template Reference
    -
    -
    - -

    Functor performing the one-point initialization of a seeds pool. - More...

    - -

    #include <Seeds_Pool.h>

    -
    -Inheritance diagram for SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    -
    -
    - - -SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > - -
    - - - - - - - - - - - - - - - - - - - - - -

    -Public Types

    using BaseClass = SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Parent class. More...
     
    using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMAQueueType = deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    - Public Types inherited from SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    using CoMMAPairType = pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMAQueueType = deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    using CoMMASetOfPairType = set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    - - - - - - - -

    -Public Member Functions

    void operator() (const vector< CoMMAWeightType > &priority_weights, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &q) override
     Initialize a queue of a seeds pool. More...
     
    virtual void operator() (const vector< CoMMAWeightType > &priority_weights, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &q)=0
     Initialize a queue of a seeds pool. More...
     
    -

    Detailed Description

    -
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    -struct SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Functor performing the one-point initialization of a seeds pool.

    -
    Template Parameters
    - - - - -
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    -
    -
    -

    Member Typedef Documentation

    - -

    ◆ BaseClass

    - -
    -
    -
    -template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    - - - - -
    using SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::BaseClass = SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    -
    - -

    Parent class.

    - -
    -
    - -

    ◆ CoMMAPairType

    - -
    -
    -
    -template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    - - - - -
    using SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = pair<CoMMAIndexType, CoMMAWeightType>
    -
    - -

    Type of pair.

    - -
    -
    - -

    ◆ CoMMAQueueType

    - -
    -
    -
    -template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    - - - - -
    using SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAQueueType = deque<CoMMAIndexType>
    -
    - -

    Type of queue which holds seeds.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::operator() (const vector< CoMMAWeightType > & priority_weights,
    const vector< CoMMAIntType > & n_bnd_faces,
    const CoMMAIntType max_bnd,
    CoMMAQueueTypeq 
    )
    -
    -inlineoverridevirtual
    -
    - -

    Initialize a queue of a seeds pool.

    -
    Parameters
    - - - - - -
    [in]priority_weightsWeights used to set the order of the seed to choose
    [in]n_bnd_facesVector telling how many boundary faces each cell has
    [in]max_bndReference value for boundary faces: only cells with boundaries higher than this are considered
    [out]qThe queue to build
    -
    -
    - -

    Implements SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/struct_s_p_one_point_initializator.js b/struct_s_p_one_point_initializator.js deleted file mode 100644 index 122526b..0000000 --- a/struct_s_p_one_point_initializator.js +++ /dev/null @@ -1,7 +0,0 @@ -var struct_s_p_one_point_initializator = -[ - [ "BaseClass", "struct_s_p_one_point_initializator.html#a557b7b2989b49ec5fd6d0a4c693ec703", null ], - [ "CoMMAPairType", "struct_s_p_one_point_initializator.html#a900bdf529fbbd18e93f2769c35a87304", null ], - [ "CoMMAQueueType", "struct_s_p_one_point_initializator.html#a7cae6a0f08b656f912510a1c31327b99", null ], - [ "operator()", "struct_s_p_one_point_initializator.html#a8a7072b8a77ffff0c4d4f6911d97f359", null ] -]; \ No newline at end of file diff --git a/struct_s_p_one_point_initializator.png b/struct_s_p_one_point_initializator.png deleted file mode 100644 index 6f0f521..0000000 Binary files a/struct_s_p_one_point_initializator.png and /dev/null differ diff --git a/struct_custom_pair_less_functor-members.html b/structcomma_1_1_custom_pair_greater_functor-members.html similarity index 83% rename from struct_custom_pair_less_functor-members.html rename to structcomma_1_1_custom_pair_greater_functor-members.html index bc30a8a..a3e87a1 100644 --- a/struct_custom_pair_less_functor-members.html +++ b/structcomma_1_1_custom_pair_greater_functor-members.html @@ -65,7 +65,7 @@
    @@ -91,13 +91,13 @@
    -
    CustomPairLessFunctor< PairT > Member List
    +
    comma::CustomPairGreaterFunctor< PairT > Member List
    -

    This is the complete list of members for CustomPairLessFunctor< PairT >, including all inherited members.

    +

    This is the complete list of members for comma::CustomPairGreaterFunctor< PairT >, including all inherited members.

    - +
    operator()(const PairT &p, const PairT &q) constCustomPairLessFunctor< PairT >inline
    operator()(const PairT &left, const PairT &right) constcomma::CustomPairGreaterFunctor< PairT >inline
    diff --git a/struct_custom_pair_greater_functor.html b/structcomma_1_1_custom_pair_greater_functor.html similarity index 71% rename from struct_custom_pair_greater_functor.html rename to structcomma_1_1_custom_pair_greater_functor.html index 4903b82..b42df18 100644 --- a/struct_custom_pair_greater_functor.html +++ b/structcomma_1_1_custom_pair_greater_functor.html @@ -5,7 +5,7 @@ -CoMMA: CustomPairGreaterFunctor< PairT > Struct Template Reference +CoMMA: comma::CustomPairGreaterFunctor< PairT > Struct Template Reference @@ -65,7 +65,7 @@
    @@ -93,25 +93,25 @@
    -
    CustomPairGreaterFunctor< PairT > Struct Template Reference
    +List of all members
    +
    comma::CustomPairGreaterFunctor< PairT > Struct Template Reference

    Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones. - More...

    + More...

    #include <Util.h>

    - - - + + +

    Public Member Functions

    bool operator() (const PairT &p, const PairT &q) const
     Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones. More...
     
    bool operator() (const PairT &left, const PairT &right) const
     Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones. More...
     

    Detailed Description

    template<typename PairT>
    -struct CustomPairGreaterFunctor< PairT >

    Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones.

    +struct comma::CustomPairGreaterFunctor< PairT >

    Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones.

    Template Parameters
    @@ -119,8 +119,8 @@

    Member Function Documentation

    - -

    ◆ operator()()

    + +

    ◆ operator()()

    @@ -131,16 +131,16 @@

    PairTType for pairs
    - + - + - + @@ -158,24 +158,24 @@

    Parameters

    bool CustomPairGreaterFunctor< PairT >::operator() bool comma::CustomPairGreaterFunctor< PairT >::operator() ( const PairT & p, left,
    const PairT & q right 
    - - + +
    [in]pFirst pair
    [in]qSecond pair
    [in]leftFirst pair
    [in]rightSecond pair
    -
    Returns
    true if p.second > q.second or (p.second == q.second and p.first < q.first); false otherwise
    +
    Returns
    true if left.second > right.second or (left.second == right.second and left.first < right.first); false otherwise

    The documentation for this struct was generated from the following file:
    diff --git a/structcomma_1_1_custom_pair_greater_functor.js b/structcomma_1_1_custom_pair_greater_functor.js new file mode 100644 index 0000000..48494bc --- /dev/null +++ b/structcomma_1_1_custom_pair_greater_functor.js @@ -0,0 +1,4 @@ +var structcomma_1_1_custom_pair_greater_functor = +[ + [ "operator()", "structcomma_1_1_custom_pair_greater_functor.html#a3baa52044f47d100d5320843cd48aa9f", null ] +]; \ No newline at end of file diff --git a/struct_custom_pair_greater_functor-members.html b/structcomma_1_1_custom_pair_less_functor-members.html similarity index 83% rename from struct_custom_pair_greater_functor-members.html rename to structcomma_1_1_custom_pair_less_functor-members.html index b788de9..5151be5 100644 --- a/struct_custom_pair_greater_functor-members.html +++ b/structcomma_1_1_custom_pair_less_functor-members.html @@ -65,7 +65,7 @@
    @@ -91,13 +91,13 @@
    -
    CustomPairGreaterFunctor< PairT > Member List
    +
    comma::CustomPairLessFunctor< PairT > Member List
    -

    This is the complete list of members for CustomPairGreaterFunctor< PairT >, including all inherited members.

    +

    This is the complete list of members for comma::CustomPairLessFunctor< PairT >, including all inherited members.

    - +
    operator()(const PairT &p, const PairT &q) constCustomPairGreaterFunctor< PairT >inline
    operator()(const PairT &left, const PairT &right) constcomma::CustomPairLessFunctor< PairT >inline
    diff --git a/struct_custom_pair_less_functor.html b/structcomma_1_1_custom_pair_less_functor.html similarity index 71% rename from struct_custom_pair_less_functor.html rename to structcomma_1_1_custom_pair_less_functor.html index 4994a60..231f5b0 100644 --- a/struct_custom_pair_less_functor.html +++ b/structcomma_1_1_custom_pair_less_functor.html @@ -5,7 +5,7 @@ -CoMMA: CustomPairLessFunctor< PairT > Struct Template Reference +CoMMA: comma::CustomPairLessFunctor< PairT > Struct Template Reference @@ -65,7 +65,7 @@
    @@ -93,25 +93,25 @@
    -
    CustomPairLessFunctor< PairT > Struct Template Reference
    +List of all members
    +
    comma::CustomPairLessFunctor< PairT > Struct Template Reference

    Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones. - More...

    + More...

    #include <Util.h>

    - - - + + +

    Public Member Functions

    bool operator() (const PairT &p, const PairT &q) const
     Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones. More...
     
    bool operator() (const PairT &left, const PairT &right) const
     Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones. More...
     

    Detailed Description

    template<class PairT>
    -struct CustomPairLessFunctor< PairT >

    Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones.

    +struct comma::CustomPairLessFunctor< PairT >

    Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones.

    Template Parameters
    @@ -119,8 +119,8 @@

    Member Function Documentation

    - -

    ◆ operator()()

    + +

    ◆ operator()()

    @@ -131,16 +131,16 @@

    PairTType for pairs
    - + - + - + @@ -158,24 +158,24 @@

    Parameters

    bool CustomPairLessFunctor< PairT >::operator() bool comma::CustomPairLessFunctor< PairT >::operator() ( const PairT & p, left,
    const PairT & q right 
    - - + +
    [in]pFirst pair
    [in]qSecond pair
    [in]leftpair
    [in]rightSecond pair
    -
    Returns
    true if p.second < q.second or (p.second == q.second and p.first > q.first); false otherwise
    +
    Returns
    true if left.second < right.second or (left.second == right.second and left.first > right.first); false otherwise

    The documentation for this struct was generated from the following file:
    diff --git a/structcomma_1_1_custom_pair_less_functor.js b/structcomma_1_1_custom_pair_less_functor.js new file mode 100644 index 0000000..a55135d --- /dev/null +++ b/structcomma_1_1_custom_pair_less_functor.js @@ -0,0 +1,4 @@ +var structcomma_1_1_custom_pair_less_functor = +[ + [ "operator()", "structcomma_1_1_custom_pair_less_functor.html#a31e9586ccc427694e6621fee6a910109", null ] +]; \ No newline at end of file diff --git a/struct_pair_second_based_less_functor-members.html b/structcomma_1_1_pair_second_based_less_functor-members.html similarity index 83% rename from struct_pair_second_based_less_functor-members.html rename to structcomma_1_1_pair_second_based_less_functor-members.html index a61fc5f..30972ac 100644 --- a/struct_pair_second_based_less_functor-members.html +++ b/structcomma_1_1_pair_second_based_less_functor-members.html @@ -65,7 +65,7 @@
    @@ -91,13 +91,13 @@
    -
    PairSecondBasedLessFunctor< PairT > Member List
    +
    comma::PairSecondBasedLessFunctor< PairT > Member List
    -

    This is the complete list of members for PairSecondBasedLessFunctor< PairT >, including all inherited members.

    +

    This is the complete list of members for comma::PairSecondBasedLessFunctor< PairT >, including all inherited members.

    - +
    operator()(const PairT &p, const PairT &q) constPairSecondBasedLessFunctor< PairT >inline
    operator()(const PairT &left, const PairT &right) constcomma::PairSecondBasedLessFunctor< PairT >inline
    diff --git a/struct_pair_second_based_less_functor.html b/structcomma_1_1_pair_second_based_less_functor.html similarity index 71% rename from struct_pair_second_based_less_functor.html rename to structcomma_1_1_pair_second_based_less_functor.html index ebfe59d..bdc70d7 100644 --- a/struct_pair_second_based_less_functor.html +++ b/structcomma_1_1_pair_second_based_less_functor.html @@ -5,7 +5,7 @@ -CoMMA: PairSecondBasedLessFunctor< PairT > Struct Template Reference +CoMMA: comma::PairSecondBasedLessFunctor< PairT > Struct Template Reference @@ -65,7 +65,7 @@
    @@ -93,25 +93,25 @@
    -
    PairSecondBasedLessFunctor< PairT > Struct Template Reference
    +List of all members
    +
    comma::PairSecondBasedLessFunctor< PairT > Struct Template Reference

    Functor for pairs implementing a less operator based only on the second element of the pair. - More...

    + More...

    #include <Util.h>

    - - - + + +

    Public Member Functions

    bool operator() (const PairT &p, const PairT &q) const
     Functor for pairs implementing a less operator based only on the second element of the pair. More...
     
    bool operator() (const PairT &left, const PairT &right) const
     Functor for pairs implementing a less operator based only on the second element of the pair. More...
     

    Detailed Description

    template<typename PairT>
    -struct PairSecondBasedLessFunctor< PairT >

    Functor for pairs implementing a less operator based only on the second element of the pair.

    +struct comma::PairSecondBasedLessFunctor< PairT >

    Functor for pairs implementing a less operator based only on the second element of the pair.

    Template Parameters
    @@ -119,8 +119,8 @@

    Member Function Documentation

    - -

    ◆ operator()()

    + +

    ◆ operator()()

    @@ -131,16 +131,16 @@

    PairTType for pairs
    - + - + - + @@ -158,24 +158,24 @@

    Parameters

    bool PairSecondBasedLessFunctor< PairT >::operator() bool comma::PairSecondBasedLessFunctor< PairT >::operator() ( const PairT & p, left,
    const PairT & q right 
    - - + +
    [in]pFirst pair
    [in]qSecond pair
    [in]leftFirst pair
    [in]rightSecond pair
    -
    Returns
    true if p.second < q.second; false otherwise
    +
    Returns
    true if left.second < right.second; false otherwise

    The documentation for this struct was generated from the following file:
    diff --git a/structcomma_1_1_pair_second_based_less_functor.js b/structcomma_1_1_pair_second_based_less_functor.js new file mode 100644 index 0000000..50772b6 --- /dev/null +++ b/structcomma_1_1_pair_second_based_less_functor.js @@ -0,0 +1,4 @@ +var structcomma_1_1_pair_second_based_less_functor = +[ + [ "operator()", "structcomma_1_1_pair_second_based_less_functor.html#a6e502c50b4ff11d09764e2f95a331bd8", null ] +]; \ No newline at end of file diff --git a/class_neighbourhood_extended_creator-members.html b/structcomma_1_1_s_p_full_initializator-members.html similarity index 50% rename from class_neighbourhood_extended_creator-members.html rename to structcomma_1_1_s_p_full_initializator-members.html index a8e3a2a..40e9878 100644 --- a/class_neighbourhood_extended_creator-members.html +++ b/structcomma_1_1_s_p_full_initializator-members.html @@ -65,7 +65,7 @@
    @@ -91,17 +91,21 @@
    -
    NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    -

    This is the complete list of members for NeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    +

    This is the complete list of members for comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    - - - - - + + + + + + + + +
    clone(shared_ptr< NeighbourhoodBaseType > other) const overrideNeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    create(const unordered_set< CoMMAIndexType > &s_neighbours_of_seed, const vector< CoMMAWeightType > &priority_weights, const CoMMAIntType dimension) const overrideNeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    CreatorBaseType typedefNeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    NeighbourhoodBaseType typedefNeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    NeighbourhoodDerivedType typedefNeighbourhoodExtendedCreator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    BaseClass typedefcomma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAPairType typedefcomma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAQueueType typedefcomma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMASetOfPairType typedefcomma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    operator()(const std::vector< CoMMAWeightType > &priority_weights, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &queue) overridecomma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    SPFullInitializator()comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inline
    SPInitializator()=defaultcomma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ~SPFullInitializator() override=defaultcomma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ~SPInitializator()=defaultcomma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
    diff --git a/structcomma_1_1_s_p_full_initializator.html b/structcomma_1_1_s_p_full_initializator.html new file mode 100644 index 0000000..1b9f622 --- /dev/null +++ b/structcomma_1_1_s_p_full_initializator.html @@ -0,0 +1,362 @@ + + + + + + + +CoMMA: comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Struct Template Reference
    +
    +
    + +

    Functor performing the full initialization of a seeds pool. + More...

    + +

    #include <Seeds_Pool.h>

    +
    +Inheritance diagram for comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using BaseClass = SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Parent class. More...
     
    using CoMMAQueueType = std::deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    - Public Types inherited from comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMAQueueType = std::deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     SPFullInitializator ()
     Constructor. More...
     
     ~SPFullInitializator () override=default
     Destructor. More...
     
    void operator() (const std::vector< CoMMAWeightType > &priority_weights, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &queue) override
     Initialize a queue of a seeds pool. More...
     
    - Public Member Functions inherited from comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     SPInitializator ()=default
     Constructor. More...
     
    virtual ~SPInitializator ()=default
     Destructor. More...
     
    virtual void operator() (const std::vector< CoMMAWeightType > &priority_weights, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &queue)=0
     Initialize a queue of a seeds pool. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +struct comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Functor performing the full initialization of a seeds pool.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ BaseClass

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::BaseClass = SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Parent class.

    + +
    +
    + +

    ◆ CoMMAQueueType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAQueueType = std::deque<CoMMAIndexType>
    +
    + +

    Type of queue which holds seeds.

    + +
    +
    + +

    ◆ CoMMASetOfPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
    +
    + +

    Type of set of pairs.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ SPFullInitializator()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::SPFullInitializator ()
    +
    +inline
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ ~SPFullInitializator()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~SPFullInitializator ()
    +
    +overridedefault
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::operator() (const std::vector< CoMMAWeightType > & priority_weights,
    const std::vector< CoMMAIntType > & n_bnd_faces,
    const CoMMAIntType max_bnd,
    CoMMAQueueTypequeue 
    )
    +
    +inlineoverridevirtual
    +
    + +

    Initialize a queue of a seeds pool.

    +
    Parameters
    + + + + + +
    [in]priority_weightsWeights used to set the order of the seed to choose
    [in]n_bnd_facesVector telling how many boundary faces each cell has
    [in]max_bndReference value for boundary faces: only cells with boundaries higher than this are considered
    [out]queueThe queue to build
    +
    +
    + +

    Implements comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structcomma_1_1_s_p_full_initializator.js b/structcomma_1_1_s_p_full_initializator.js new file mode 100644 index 0000000..3a1a383 --- /dev/null +++ b/structcomma_1_1_s_p_full_initializator.js @@ -0,0 +1,9 @@ +var structcomma_1_1_s_p_full_initializator = +[ + [ "BaseClass", "structcomma_1_1_s_p_full_initializator.html#a3e1e0581f3ad467d53f35e15f851c80d", null ], + [ "CoMMAQueueType", "structcomma_1_1_s_p_full_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533", null ], + [ "CoMMASetOfPairType", "structcomma_1_1_s_p_full_initializator.html#adce25caf80707955d4f7a9c6e722d075", null ], + [ "SPFullInitializator", "structcomma_1_1_s_p_full_initializator.html#a1a40a546f44cdd9bec7f20516cabb05c", null ], + [ "~SPFullInitializator", "structcomma_1_1_s_p_full_initializator.html#a41002d642267555e928ce4979c27d2c0", null ], + [ "operator()", "structcomma_1_1_s_p_full_initializator.html#abc882b29c5dbe57f25390e6bb043e667", null ] +]; \ No newline at end of file diff --git a/structcomma_1_1_s_p_full_initializator.png b/structcomma_1_1_s_p_full_initializator.png new file mode 100644 index 0000000..684636b Binary files /dev/null and b/structcomma_1_1_s_p_full_initializator.png differ diff --git a/struct_s_p_one_point_initializator-members.html b/structcomma_1_1_s_p_initializator-members.html similarity index 60% rename from struct_s_p_one_point_initializator-members.html rename to structcomma_1_1_s_p_initializator-members.html index 0524339..8a14418 100644 --- a/struct_s_p_one_point_initializator-members.html +++ b/structcomma_1_1_s_p_initializator-members.html @@ -65,7 +65,7 @@
    @@ -91,17 +91,18 @@
    -
    SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    +
    comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Member List
    -

    This is the complete list of members for SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    +

    This is the complete list of members for comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, including all inherited members.

    - - - - - + + + + + +
    BaseClass typedefSPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAPairType typedefSPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAQueueType typedefSPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMASetOfPairType typedefSPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    operator()(const vector< CoMMAWeightType > &priority_weights, const vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &q) overrideSPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >inlinevirtual
    CoMMAPairType typedefcomma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMAQueueType typedefcomma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    CoMMASetOfPairType typedefcomma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    operator()(const std::vector< CoMMAWeightType > &priority_weights, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &queue)=0comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >pure virtual
    SPInitializator()=defaultcomma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    ~SPInitializator()=defaultcomma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >virtual
    diff --git a/structcomma_1_1_s_p_initializator.html b/structcomma_1_1_s_p_initializator.html new file mode 100644 index 0000000..1be4ccb --- /dev/null +++ b/structcomma_1_1_s_p_initializator.html @@ -0,0 +1,343 @@ + + + + + + + +CoMMA: comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Struct Template Referenceabstract
    +
    +
    + +

    Functor performing the initialization of a seeds pool. + More...

    + +

    #include <Seeds_Pool.h>

    +
    +Inheritance diagram for comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > +comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + +

    +Public Types

    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMAQueueType = std::deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    + + + + + + + + + + +

    +Public Member Functions

     SPInitializator ()=default
     Constructor. More...
     
    virtual ~SPInitializator ()=default
     Destructor. More...
     
    virtual void operator() (const std::vector< CoMMAWeightType > &priority_weights, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &queue)=0
     Initialize a queue of a seeds pool. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +struct comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Functor performing the initialization of a seeds pool.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ CoMMAPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>
    +
    + +

    Type of pair.

    + +
    +
    + +

    ◆ CoMMAQueueType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAQueueType = std::deque<CoMMAIndexType>
    +
    + +

    Type of queue which holds seeds.

    + +
    +
    + +

    ◆ CoMMASetOfPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMASetOfPairType = std::set<CoMMAPairType, CustomPairGreaterFunctor<CoMMAPairType> >
    +
    + +

    Type of set of pairs.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ SPInitializator()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::SPInitializator ()
    +
    +default
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ ~SPInitializator()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    virtual comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~SPInitializator ()
    +
    +virtualdefault
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    virtual void comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::operator() (const std::vector< CoMMAWeightType > & priority_weights,
    const std::vector< CoMMAIntType > & n_bnd_faces,
    const CoMMAIntType max_bnd,
    CoMMAQueueTypequeue 
    )
    +
    +pure virtual
    +
    + +

    Initialize a queue of a seeds pool.

    +
    Parameters
    + + + + + +
    [in]priority_weightsWeights used to set the order of the seed to choose
    [in]n_bnd_facesVector telling how many boundary faces each cell has
    [in]max_bndReference value for boundary faces: only cells with boundaries higher than this are considered
    [out]queueThe queue to build
    +
    +
    + +

    Implemented in comma::SPFullInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >, and comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structcomma_1_1_s_p_initializator.js b/structcomma_1_1_s_p_initializator.js new file mode 100644 index 0000000..4040689 --- /dev/null +++ b/structcomma_1_1_s_p_initializator.js @@ -0,0 +1,9 @@ +var structcomma_1_1_s_p_initializator = +[ + [ "CoMMAPairType", "structcomma_1_1_s_p_initializator.html#a1063dfdb4f126da363e38ecf9e3f741c", null ], + [ "CoMMAQueueType", "structcomma_1_1_s_p_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533", null ], + [ "CoMMASetOfPairType", "structcomma_1_1_s_p_initializator.html#adce25caf80707955d4f7a9c6e722d075", null ], + [ "SPInitializator", "structcomma_1_1_s_p_initializator.html#a7d1760e2cc5a58d61717a777c3a2d283", null ], + [ "~SPInitializator", "structcomma_1_1_s_p_initializator.html#a7b3eebdd5c01a9cc42e64458f409bed4", null ], + [ "operator()", "structcomma_1_1_s_p_initializator.html#ada8d7d7f0f4b41ae82f5b159bd001d5e", null ] +]; \ No newline at end of file diff --git a/structcomma_1_1_s_p_initializator.png b/structcomma_1_1_s_p_initializator.png new file mode 100644 index 0000000..889df36 Binary files /dev/null and b/structcomma_1_1_s_p_initializator.png differ diff --git a/structcomma_1_1_s_p_one_point_initializator-members.html b/structcomma_1_1_s_p_one_point_initializator-members.html new file mode 100644 index 0000000..9d1e948 --- /dev/null +++ b/structcomma_1_1_s_p_one_point_initializator-members.html @@ -0,0 +1,118 @@ + + + + + + + +CoMMA: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structcomma_1_1_s_p_one_point_initializator.html b/structcomma_1_1_s_p_one_point_initializator.html new file mode 100644 index 0000000..a46c4f3 --- /dev/null +++ b/structcomma_1_1_s_p_one_point_initializator.html @@ -0,0 +1,362 @@ + + + + + + + +CoMMA: comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CoMMA 1.3.1 +
    +
    A geometric agglomerator for unstructured meshes
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > Struct Template Reference
    +
    +
    + +

    Functor performing the one-point initialization of a seeds pool. + More...

    + +

    #include <Seeds_Pool.h>

    +
    +Inheritance diagram for comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >:
    +
    +
    + + +comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType > + +
    + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using BaseClass = SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     Parent class. More...
     
    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMAQueueType = std::deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    - Public Types inherited from comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
    using CoMMAPairType = std::pair< CoMMAIndexType, CoMMAWeightType >
     Type of pair. More...
     
    using CoMMAQueueType = std::deque< CoMMAIndexType >
     Type of queue which holds seeds. More...
     
    using CoMMASetOfPairType = std::set< CoMMAPairType, CustomPairGreaterFunctor< CoMMAPairType > >
     Type of set of pairs. More...
     
    + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     SPOnePointInitializator ()
     Constructor. More...
     
     ~SPOnePointInitializator () override=default
     Destructor. More...
     
    void operator() (const std::vector< CoMMAWeightType > &priority_weights, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &queue) override
     Initialize a queue of a seeds pool. More...
     
    - Public Member Functions inherited from comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >
     SPInitializator ()=default
     Constructor. More...
     
    virtual ~SPInitializator ()=default
     Destructor. More...
     
    virtual void operator() (const std::vector< CoMMAWeightType > &priority_weights, const std::vector< CoMMAIntType > &n_bnd_faces, const CoMMAIntType max_bnd, CoMMAQueueType &queue)=0
     Initialize a queue of a seeds pool. More...
     
    +

    Detailed Description

    +
    template<typename CoMMAIndexType, typename CoMMAWeightType, typename CoMMAIntType>
    +struct comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >

    Functor performing the one-point initialization of a seeds pool.

    +
    Template Parameters
    + + + + +
    CoMMAIndexTypethe CoMMA index type for the global index of the mesh
    CoMMAWeightTypethe CoMMA weight type for the weights (volume or area) of the nodes or edges of the Mesh
    CoMMAIntTypethe CoMMA type for integers
    +
    +
    +

    Member Typedef Documentation

    + +

    ◆ BaseClass

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::BaseClass = SPInitializator<CoMMAIndexType, CoMMAWeightType, CoMMAIntType>
    +
    + +

    Parent class.

    + +
    +
    + +

    ◆ CoMMAPairType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAPairType = std::pair<CoMMAIndexType, CoMMAWeightType>
    +
    + +

    Type of pair.

    + +
    +
    + +

    ◆ CoMMAQueueType

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + +
    using comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::CoMMAQueueType = std::deque<CoMMAIndexType>
    +
    + +

    Type of queue which holds seeds.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ SPOnePointInitializator()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::SPOnePointInitializator ()
    +
    +inline
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ ~SPOnePointInitializator()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + +
    comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::~SPOnePointInitializator ()
    +
    +overridedefault
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<typename CoMMAIndexType , typename CoMMAWeightType , typename CoMMAIntType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void comma::SPOnePointInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::operator() (const std::vector< CoMMAWeightType > & priority_weights,
    const std::vector< CoMMAIntType > & n_bnd_faces,
    const CoMMAIntType max_bnd,
    CoMMAQueueTypequeue 
    )
    +
    +inlineoverridevirtual
    +
    + +

    Initialize a queue of a seeds pool.

    +
    Parameters
    + + + + + +
    [in]priority_weightsWeights used to set the order of the seed to choose
    [in]n_bnd_facesVector telling how many boundary faces each cell has
    [in]max_bndReference value for boundary faces: only cells with boundaries higher than this are considered
    [out]queueThe queue to build
    +
    +
    + +

    Implements comma::SPInitializator< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structcomma_1_1_s_p_one_point_initializator.js b/structcomma_1_1_s_p_one_point_initializator.js new file mode 100644 index 0000000..583f1b6 --- /dev/null +++ b/structcomma_1_1_s_p_one_point_initializator.js @@ -0,0 +1,9 @@ +var structcomma_1_1_s_p_one_point_initializator = +[ + [ "BaseClass", "structcomma_1_1_s_p_one_point_initializator.html#a23df838a74c07f688109bb52065cee31", null ], + [ "CoMMAPairType", "structcomma_1_1_s_p_one_point_initializator.html#a1063dfdb4f126da363e38ecf9e3f741c", null ], + [ "CoMMAQueueType", "structcomma_1_1_s_p_one_point_initializator.html#af37c7a9b3ee56a3b52cfdb501dcd4533", null ], + [ "SPOnePointInitializator", "structcomma_1_1_s_p_one_point_initializator.html#ae24aec29ae1c72997a91bc99b9c8f6f5", null ], + [ "~SPOnePointInitializator", "structcomma_1_1_s_p_one_point_initializator.html#a549cb8f8d1080026044644bd9ccf3a24", null ], + [ "operator()", "structcomma_1_1_s_p_one_point_initializator.html#a50828abe38c5d16833c9d7fd5a407c9c", null ] +]; \ No newline at end of file diff --git a/structcomma_1_1_s_p_one_point_initializator.png b/structcomma_1_1_s_p_one_point_initializator.png new file mode 100644 index 0000000..0767930 Binary files /dev/null and b/structcomma_1_1_s_p_one_point_initializator.png differ diff --git a/template_helpers_8h.html b/template_helpers_8h.html index 57e4dd2..bdaff4c 100644 --- a/template_helpers_8h.html +++ b/template_helpers_8h.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/deprecated/templateHelpers.h File Reference +CoMMA: include/CoMMA/deprecated/templateHelpers.h File Reference @@ -92,6 +92,7 @@
    templateHelpers.h File Reference
    @@ -99,67 +100,24 @@

    Go to the source code of this file.

    + + + +

    +Namespaces

    namespace  comma
     
    - - - - + + + +

    Functions

    template<bool condition, typename typeA , typename typeB >
    void fill_value (typeA &A, typeB &B)
     Assign from type to another only if a compile-time condition is verified. More...
     
    template<bool condition, typename typeA , typename typeB >
    void comma::fill_value (typeA &a, typeB &b)
     Assign from type to another only if a compile-time condition is verified. More...
     
    -

    Function Documentation

    - -

    ◆ fill_value()

    - -
    -
    -
    -template<bool condition, typename typeA , typename typeB >
    - - - - - - - - - - - - - - - - - - -
    void fill_value (typeA & A,
    typeB & B 
    )
    -
    - -

    Assign from type to another only if a compile-time condition is verified.

    -
    Template Parameters
    - - - - -
    conditionBoolean telling if the assignment should be done. It has to be a constexpr
    typeAType of the destination of the assignment
    typeBType of the source of the assignment
    -
    -
    -
    Parameters
    - - - -
    [in]ADestination of the assignment
    [in]BSource of the assignment
    -
    -
    - -
    -
    diff --git a/template_helpers_8h.js b/template_helpers_8h.js index 928543a..f5789a0 100644 --- a/template_helpers_8h.js +++ b/template_helpers_8h.js @@ -1,4 +1,4 @@ var template_helpers_8h = [ - [ "fill_value", "template_helpers_8h.html#af8b229731dfc00cd8a557ef50078b87f", null ] + [ "fill_value", "template_helpers_8h.html#a18179379fcc2bb56e6b89c7b43e249c2", null ] ]; \ No newline at end of file diff --git a/template_helpers_8h_source.html b/template_helpers_8h_source.html index 674397c..c41fb88 100644 --- a/template_helpers_8h_source.html +++ b/template_helpers_8h_source.html @@ -5,7 +5,7 @@ -CoMMA: CoMMA_lib/deprecated/templateHelpers.h Source File +CoMMA: include/CoMMA/deprecated/templateHelpers.h Source File @@ -100,7 +100,7 @@
    4/*
    5 * CoMMA
    6 *
    -
    7 * Copyright © 2023 ONERA
    +
    7 * Copyright © 2024 ONERA
    8 *
    9 * Authors: Nicolas Lantos, Alberto Remigi, and Riccardo Milani
    10 * Contributors: Karim Anemiche
    @@ -110,19 +110,24 @@
    14 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
    15 */
    16
    -
    27template<bool condition, typename typeA, typename typeB>
    -
    28void fill_value(typeA &A, typeB &B) {
    -
    29 if constexpr (condition) { A = B; }
    -
    30}
    -
    31
    -
    32#endif
    -
    void fill_value(typeA &A, typeB &B)
    Assign from type to another only if a compile-time condition is verified.
    Definition: templateHelpers.h:28
    +
    17namespace comma {
    +
    18
    +
    29template<bool condition, typename typeA, typename typeB>
    +
    30void fill_value(typeA &a, typeB &b) {
    +
    31 if constexpr (condition) { a = b; }
    +
    32}
    +
    33
    +
    34} // end namespace comma
    +
    35
    +
    36#endif
    +
    Definition: Agglomerator.h:34
    +
    void fill_value(typeA &a, typeB &b)
    Assign from type to another only if a compile-time condition is verified.
    Definition: templateHelpers.h:30
    diff --git a/todo.html b/todo.html index f7f0d88..0b53f43 100644 --- a/todo.html +++ b/todo.html @@ -95,7 +95,7 @@
    -
    Member Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::build_anisotropic_lines (const vector< CoMMAWeightType > &priority_weights, const CoMMAWeightType threshold_anisotropy)
    +
    Member comma::Agglomerator_Anisotropic< CoMMAIndexType, CoMMAWeightType, CoMMAIntType >::build_anisotropic_lines (const std::vector< CoMMAWeightType > &priority_weights, const CoMMAWeightType threshold_anisotropy)
    Not properly efficient. We risk to do twice the operations (we overwrite the seed). This is not proper