Dune Core Modules (2.9.0)

parameters.hh
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) DUNE Project contributors, see file LICENSE.md in module root
2 // SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
3 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
4 // vi: set et ts=4 sw=2 sts=2:
5 #ifndef DUNE_AMG_PARAMETERS_HH
6 #define DUNE_AMG_PARAMETERS_HH
7 
8 #include <cstddef>
9 
10 namespace Dune
11 {
12  namespace Amg
13  {
31  {
32  public:
35  : alpha_(1.0/3.0), beta_(1.0E-5)
36  {}
37 
42  void setBeta(double b)
43  {
44  beta_ = b;
45  }
46 
52  double beta() const
53  {
54  return beta_;
55  }
56 
61  void setAlpha(double a)
62  {
63  alpha_ = a;
64  }
65 
70  double alpha() const
71  {
72  return alpha_;
73  }
74 
75  private:
76  double alpha_, beta_;
77  };
78 
84  {
85  public:
96  : maxDistance_(2), minAggregateSize_(4), maxAggregateSize_(6),
97  connectivity_(15), skipiso_(false)
98  {}
99 
109  void setDefaultValuesIsotropic(std::size_t dim, std::size_t diameter=2)
110  {
111  maxDistance_=diameter-1;
112  std::size_t csize=1;
113 
114  for(; dim>0; dim--) {
115  csize*=diameter;
116  maxDistance_+=diameter-1;
117  }
118  minAggregateSize_=csize;
119  maxAggregateSize_=static_cast<std::size_t>(csize*1.5);
120  }
121 
132  void setDefaultValuesAnisotropic(std::size_t dim,std::size_t diameter=2)
133  {
134  setDefaultValuesIsotropic(dim, diameter);
135  maxDistance_+=dim-1;
136  }
144  std::size_t maxDistance() const { return maxDistance_;}
145 
154  void setMaxDistance(std::size_t distance) { maxDistance_ = distance;}
155 
161  bool skipIsolated() const
162  {
163  return skipiso_;
164  }
165 
171  void setSkipIsolated(bool skip)
172  {
173  skipiso_=skip;
174  }
175 
180  std::size_t minAggregateSize() const { return minAggregateSize_;}
181 
188  void setMinAggregateSize(std::size_t size){ minAggregateSize_=size;}
189 
194  std::size_t maxAggregateSize() const { return maxAggregateSize_;}
195 
202  void setMaxAggregateSize(std::size_t size){ maxAggregateSize_ = size;}
203 
211  std::size_t maxConnectivity() const { return connectivity_;}
212 
220  void setMaxConnectivity(std::size_t connectivity){ connectivity_ = connectivity;}
221 
222  private:
223  std::size_t maxDistance_, minAggregateSize_, maxAggregateSize_, connectivity_;
224  bool skipiso_;
225 
226  };
227 
228 
238  noAccu = 0,
249  };
250 
251 
252 
253 
258  {
259  public:
263  void setMaxLevel(int l)
264  {
265  maxLevel_ = l;
266  }
270  int maxLevel() const
271  {
272  return maxLevel_;
273  }
274 
278  void setCoarsenTarget(int nodes)
279  {
280  coarsenTarget_ = nodes;
281  }
282 
286  int coarsenTarget() const
287  {
288  return coarsenTarget_;
289  }
290 
296  void setMinCoarsenRate(double rate)
297  {
298  minCoarsenRate_ = rate;
299  }
300 
304  double minCoarsenRate() const
305  {
306  return minCoarsenRate_;
307  }
308 
313  {
314  return accumulate_;
315  }
320  {
321  accumulate_=accu;
322  }
323 
324  void setAccumulate(bool accu){
325  accumulate_=accu ? successiveAccu : noAccu;
326  }
333  {
334  dampingFactor_ = d;
335  }
336 
343  {
344  return dampingFactor_;
345  }
357  double prolongDamp=1.6, AccumulationMode accumulate=successiveAccu)
358  : maxLevel_(maxLevel), coarsenTarget_(coarsenTarget), minCoarsenRate_(minCoarsenRate),
359  dampingFactor_(prolongDamp), accumulate_( accumulate)
360  {}
361 
362  private:
366  int maxLevel_;
370  int coarsenTarget_;
374  double minCoarsenRate_;
378  double dampingFactor_;
383  AccumulationMode accumulate_;
384  };
385 
393  {
394  public:
401  void setDebugLevel(int level)
402  {
403  debugLevel_ = level;
404  }
405 
411  int debugLevel() const
412  {
413  return debugLevel_;
414  }
415 
420  void setNoPreSmoothSteps(std::size_t steps)
421  {
422  preSmoothSteps_=steps;
423  }
428  std::size_t getNoPreSmoothSteps() const
429  {
430  return preSmoothSteps_;
431  }
432 
437  void setNoPostSmoothSteps(std::size_t steps)
438  {
439  postSmoothSteps_=steps;
440  }
445  std::size_t getNoPostSmoothSteps() const
446  {
447  return postSmoothSteps_;
448  }
449 
453  void setGamma(std::size_t gamma)
454  {
455  gamma_=gamma;
456  }
460  std::size_t getGamma() const
461  {
462  return gamma_;
463  }
464 
469  void setAdditive(bool additive)
470  {
471  additive_=additive;
472  }
473 
478  bool getAdditive() const
479  {
480  return additive_;
481  }
482 
493  Parameters(int maxLevel=100, int coarsenTarget=1000, double minCoarsenRate=1.2,
494  double prolongDamp=1.6, AccumulationMode accumulate=successiveAccu)
496  , debugLevel_(2), preSmoothSteps_(2), postSmoothSteps_(2), gamma_(1),
497  additive_(false)
498  {}
499  private:
500  int debugLevel_;
501  std::size_t preSmoothSteps_;
502  std::size_t postSmoothSteps_;
503  std::size_t gamma_;
504  bool additive_;
505  };
506 
507  } //namespace AMG
508 
509 } //namespace Dune
510 #endif
Parameters needed for the aggregation process.
Definition: parameters.hh:84
Parameters for the complete coarsening process.
Definition: parameters.hh:258
Parameters needed to check whether a node depends on another.
Definition: parameters.hh:31
All parameters for AMG.
Definition: parameters.hh:393
void setDefaultValuesAnisotropic(std::size_t dim, std::size_t diameter=2)
Sets reasonable default values for an anisotropic problem.
Definition: parameters.hh:132
void setAdditive(bool additive)
Set whether to use additive multigrid.
Definition: parameters.hh:469
void setSkipIsolated(bool skip)
Set whether isolated aggregates will not be represented on the coarse level.
Definition: parameters.hh:171
void setProlongationDampingFactor(double d)
Set the damping factor for the prolongation.
Definition: parameters.hh:332
double alpha() const
Get the scaling value for marking connections as strong. Default value is 1/3.
Definition: parameters.hh:70
void setMaxAggregateSize(std::size_t size)
Set the maximum number of nodes a aggregate is allowed to have.
Definition: parameters.hh:202
void setMinCoarsenRate(double rate)
Set the minimum coarsening rate to be achieved in each coarsening.
Definition: parameters.hh:296
double minCoarsenRate() const
Get the minimum coarsening rate to be achieved.
Definition: parameters.hh:304
std::size_t maxAggregateSize() const
Get the maximum number of nodes a aggregate is allowed to have.
Definition: parameters.hh:194
void setAlpha(double a)
Set the scaling value for marking connections as strong. Default value is 1/3.
Definition: parameters.hh:61
double beta() const
Get the threshold for marking nodes as isolated. The default value is 1.0E-5.
Definition: parameters.hh:52
std::size_t maxConnectivity() const
Get the maximum number of connections a aggregate is allowed to have.
Definition: parameters.hh:211
int coarsenTarget() const
Get the maximum number of unknowns allowed on the coarsest level.
Definition: parameters.hh:286
void setAccumulate(AccumulationMode accu)
Set whether he data should be accumulated on fewer processes on coarser levels.
Definition: parameters.hh:319
double getProlongationDampingFactor() const
Get the damping factor for the prolongation.
Definition: parameters.hh:342
AccumulationMode accumulate() const
Whether the data should be accumulated on fewer processes on coarser levels.
Definition: parameters.hh:312
void setMaxConnectivity(std::size_t connectivity)
Set the maximum number of connections a aggregate is allowed to have.
Definition: parameters.hh:220
std::size_t minAggregateSize() const
Get the minimum number of nodes a aggregate has to consist of.
Definition: parameters.hh:180
bool getAdditive() const
Get whether to use additive multigrid.
Definition: parameters.hh:478
void setMaxLevel(int l)
Set the maximum number of levels allowed in the hierarchy.
Definition: parameters.hh:263
void setDebugLevel(int level)
Set the debugging level.
Definition: parameters.hh:401
std::size_t getGamma() const
Get the value of gamma; 1 for V-cycle, 2 for W-cycle.
Definition: parameters.hh:460
void setNoPostSmoothSteps(std::size_t steps)
Set the number of postsmoothing steps to apply.
Definition: parameters.hh:437
std::size_t getNoPreSmoothSteps() const
Get the number of presmoothing steps to apply.
Definition: parameters.hh:428
DependencyParameters()
Constructor.
Definition: parameters.hh:34
void setMinAggregateSize(std::size_t size)
Set the minimum number of nodes a aggregate has to consist of.
Definition: parameters.hh:188
int maxLevel() const
Get the maximum number of levels allowed in the hierarchy.
Definition: parameters.hh:270
void setDefaultValuesIsotropic(std::size_t dim, std::size_t diameter=2)
Sets reasonable default values for an isotropic problem.
Definition: parameters.hh:109
AggregationParameters()
Constructor.
Definition: parameters.hh:95
bool skipIsolated() const
Whether isolated aggregates will not be represented on the coarse level.
Definition: parameters.hh:161
Parameters(int maxLevel=100, int coarsenTarget=1000, double minCoarsenRate=1.2, double prolongDamp=1.6, AccumulationMode accumulate=successiveAccu)
Constructor.
Definition: parameters.hh:493
void setCoarsenTarget(int nodes)
Set the maximum number of unknowns allowed on the coarsest level.
Definition: parameters.hh:278
void setNoPreSmoothSteps(std::size_t steps)
Set the number of presmoothing steps to apply.
Definition: parameters.hh:420
AccumulationMode
Identifiers for the different accumulation modes.
Definition: parameters.hh:232
void setBeta(double b)
Set threshold for marking nodes as isolated. The default value is 1.0E-5.
Definition: parameters.hh:42
std::size_t maxDistance() const
Get the maximal distance allowed between two nodes in a aggregate.
Definition: parameters.hh:144
CoarseningParameters(int maxLevel=100, int coarsenTarget=1000, double minCoarsenRate=1.2, double prolongDamp=1.6, AccumulationMode accumulate=successiveAccu)
Constructor.
Definition: parameters.hh:356
void setGamma(std::size_t gamma)
Set the value of gamma; 1 for V-cycle, 2 for W-cycle.
Definition: parameters.hh:453
void setMaxDistance(std::size_t distance)
Set the maximal distance allowed between two nodes in a aggregate.
Definition: parameters.hh:154
int debugLevel() const
Get the debugging Level.
Definition: parameters.hh:411
std::size_t getNoPostSmoothSteps() const
Get the number of postsmoothing steps to apply.
Definition: parameters.hh:445
@ atOnceAccu
Accumulate data to one process at once.
Definition: parameters.hh:244
@ noAccu
No data accumulution.
Definition: parameters.hh:238
@ successiveAccu
Successively accumulate to fewer processes.
Definition: parameters.hh:248
Dune namespace.
Definition: alignedallocator.hh:13
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (Apr 27, 22:29, 2024)