MercuryBase.h File Reference
#include <iostream>
#include "DPMBase.h"
#include "HGrid.h"

Go to the source code of this file.

Classes

class  MercuryBase
 This is the base class for both Mercury2D and Mercury3D. Note the actually abstract grid is defined in the class Grid defined below. More...
 

Enumerations

enum  HGridMethod { BOTTOMUP , TOPDOWN }
 Enum class that indicates how particles in different levels (cross level checking) of the HGrid are checked for interactions. More...
 
enum  HGridDistribution { OLDHGRID , LINEAR , EXPONENTIAL , USER }
 Enum that indicates what the ratio of the size of the cells in different levels is. More...
 

Functions

std::ostream & operator<< (std::ostream &os, HGridMethod h)
 
std::istream & operator>> (std::istream &is, HGridMethod &h)
 
std::ostream & operator<< (std::ostream &os, HGridDistribution h)
 
std::istream & operator>> (std::istream &is, HGridDistribution &h)
 

Enumeration Type Documentation

◆ HGridDistribution

Enum that indicates what the ratio of the size of the cells in different levels is.

The options for the distribution of cell-sizes are:

  • OLDHGRID Each cell is twice as big as the one below it, for example (1, 2, 4, 8, ...).
  • LINEAR The difference between the cell sizes at each level is the same, for example (1, 2, 3, 4, ...).
  • EXPONENTIAL Each cell size is a constant factor c > 1 bigger than the one below it, for example with c = 3, (1, 3, 9, 27, ...).
  • USER The cell sizes are defined by the user.
Enumerator
OLDHGRID 
LINEAR 
EXPONENTIAL 
USER 
84 {
86 };
@ OLDHGRID
Definition: MercuryBase.h:85
@ EXPONENTIAL
Definition: MercuryBase.h:85
@ LINEAR
Definition: MercuryBase.h:85
@ USER
Definition: MercuryBase.h:85

◆ HGridMethod

Enum class that indicates how particles in different levels (cross level checking) of the HGrid are checked for interactions.

With this enum class, one can choose how they want to check particles in different levels for interactions, so called cross-level checking BOTTOMUP means that small particles are inserted into the coarser HGrid-level, TOPDOWN means that big particles are inserted into a finer HGrid-level when checking for interactions.

Enumerator
BOTTOMUP 
TOPDOWN 
44 {
46 };
@ BOTTOMUP
Definition: MercuryBase.h:45
@ TOPDOWN
Definition: MercuryBase.h:45

Function Documentation

◆ operator<<() [1/2]

std::ostream& operator<< ( std::ostream &  os,
HGridDistribution  h 
)
inline
89 {
90  if (h == OLDHGRID)
91  return os << "OLDHGRID";
92  else if (h == LINEAR)
93  return os << "LINEAR";
94  else if (h == EXPONENTIAL)
95  return os << "EXPONENTIAL";
96  else
97  return os << "USER";
98 }

References EXPONENTIAL, LINEAR, and OLDHGRID.

◆ operator<<() [2/2]

std::ostream& operator<< ( std::ostream &  os,
HGridMethod  h 
)
inline
49 {
50  if (h == BOTTOMUP)
51  return os << "BOTTOMUP";
52  else
53  return os << "TOPDOWN";
54 }

References BOTTOMUP.

◆ operator>>() [1/2]

std::istream& operator>> ( std::istream &  is,
HGridDistribution h 
)
inline
101 {
102  std::string s;
103  is >> s;
104  if (s == "OLDHGRID")
105  h = OLDHGRID;
106  else if (s == "LINEAR")
107  h = LINEAR;
108  else if (s == "EXPONENTIAL")
109  h = EXPONENTIAL;
110  else if (s == "USER")
111  h = USER;
112  else
113  {
114  logger(ERROR,"HGridDistribution could not be read: %",s);
115  }
116  return is;
117 }
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
LL< Log::ERROR > ERROR
Error log level.
Definition: Logger.cc:53

References ERROR, EXPONENTIAL, LINEAR, logger, OLDHGRID, and USER.

◆ operator>>() [2/2]

std::istream& operator>> ( std::istream &  is,
HGridMethod h 
)
inline
57 {
58  std::string s;
59  is >> s;
60  if (s == "BOTTOMUP")
61  h = BOTTOMUP;
62  else if (s == "TOPDOWN")
63  h = TOPDOWN;
64  else
65  {
66  logger(ERROR, "HGridMethod could not be read: %", s);
67  }
68  return is;
69 }

References BOTTOMUP, ERROR, logger, and TOPDOWN.