MercuryDPM  Alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MercuryBase.h File Reference
#include <ostream>
#include <iostream>
#include <stdlib.h>
#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

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 

Definition at line 85 of file MercuryBase.h.

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 

Definition at line 45 of file MercuryBase.h.

46 {
48 };

Function Documentation

std::ostream& operator<< ( std::ostream &  os,
HGridMethod  h 
)
inline

Definition at line 50 of file MercuryBase.h.

References BOTTOMUP.

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

Definition at line 90 of file MercuryBase.h.

References EXPONENTIAL, LINEAR, and OLDHGRID.

91 {
92  if (h==OLDHGRID)
93  return os << "OLDHGRID";
94  else if (h==LINEAR)
95  return os << "LINEAR";
96  else if (h==EXPONENTIAL)
97  return os << "EXPONENTIAL";
98  else
99  return os << "USER";
100 }
std::istream& operator>> ( std::istream &  is,
HGridMethod h 
)
inline

Definition at line 58 of file MercuryBase.h.

References BOTTOMUP, ERROR, logger, and TOPDOWN.

59 {
60  std::string s;
61  is >> s;
62  if (s=="BOTTOMUP")
63  h=BOTTOMUP;
64  else if (s=="TOPDOWN")
65  h=TOPDOWN;
66  else
67  {
68  logger(ERROR, "HGridMethod could not be read: %", s);
69  }
70  return is;
71 }
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
LL< Log::ERROR > ERROR
Error log level.
Definition: Logger.cc:51
std::istream& operator>> ( std::istream &  is,
HGridDistribution h 
)
inline

Definition at line 102 of file MercuryBase.h.

References EXPONENTIAL, LINEAR, OLDHGRID, and USER.

103 {
104  std::string s;
105  is >> s;
106  if (s=="OLDHGRID")
107  h=OLDHGRID;
108  else if (s=="LINEAR")
109  h=LINEAR;
110  else if (s=="EXPONENTIAL")
111  h=EXPONENTIAL;
112  else if (s=="USER")
113  h=USER;
114  else {
115  std::cerr << "HGridMethod could not be read: " << s << std::endl;
116  exit(-1);
117  }
118  return is;
119 }