GLAMERDOC++
Gravitational Lensing Code Library
particle_types.h
Go to the documentation of this file.
1 //
2 // particle_types.h
3 // GLAMER
4 //
5 // Created by Ben Metcalf on 12/11/2018.
6 //
10 #ifndef particle_types_h
11 #define particle_types_h
12 
13 #include "point.h"
14 
32 enum class SimFileFormat {
33  glmb
37  ,csv3
38  ,csv4
39  ,csv5
40  ,csv6
41  ,gadget2
42  ,ascii
43 };
44 
45 // Atomic data class for simulation particles with individual sizes and masses
46 template<typename T = float>
47 struct ParticleType{
48  T &operator[](int i){return x[i];}
49  const T &operator[](int i) const {return x[i];}
50  T *operator*(){return x;}
51  T x[3];
52 
53  float Mass;
54  float Size;
55  int type;
56 
57  float size(){return Size;}
58  float mass(){return Mass;}
59 };
60 
61 // Atomic data class for simulation particles with individual sizes, masses and velocities
62 template<typename T = float>
63 struct ParticleTypeV{
64  T &operator[](int i){return x[i];}
65  const T &operator[](int i) const {return x[i];}
66  T *operator*(){return x;}
67  T x[3];
68 
69  T v[3];
70 
71  float Mass;
72  float Size;
73  int type;
74 
75  float size(){return Size;}
76  float mass(){return Mass;}
77 };
78 
81  float &operator[](int i){return x[i];}
82  const float &operator[](int i) const {return x[i];}
83  float *operator*(){return x;}
84  float x[3];
85 
86  static float Mass;
87  static float Size;
88 
89  float size(){return ParticleTypeSimple::Size;}
90  float mass(){return ParticleTypeSimple::Mass;}
91 };
92 
95  float &operator[](int i){return x[i];}
96  const float &operator[](int i) const {return x[i];}
97  float *operator*(){return x;}
98  float x[2];
99 
100  float Mass;
101  float Size;
102 
103  float size(){return Size;}
104  float mass(){return Mass;}
105 };
106 
108 struct StarType{
109  double &operator[](int i){return x[i];}
110  const double &operator[](int i) const {return x[i];}
111  Point_3d<> operator*(){return x;}
112  Point_3d<> x;
113  float Mass;
114 
115  float mass() const {return Mass;}
116  static float size() {return 0;}
117 };
118 
119 
120 #endif /* particle_types_h */
SimFileFormat::csv3
@ csv3
see above
SimFileFormat::gadget2
@ gadget2
Gadget 2 output file format.
StarType
Atomic data class for stars with different masses.
Definition: particle_types.h:108
SimFileFormat::ascii
@ ascii
the original ascii GLAMER format.
SimFileFormat::csv6
@ csv6
see above
SimFileFormat::glmb
@ glmb
SimFileFormat::csv4
@ csv4
see above
SimFileFormat::csv5
@ csv5
see above
ParticleType2D
Atomic data class for simulation particles of the same size and mass.
Definition: particle_types.h:94
ParticleTypeSimple
Atomic data class for simulation particles of the same size and mass.
Definition: particle_types.h:80
Point_3d
Class for representing points or vectors in 3 dimensions. Not that the dereferencing operator is over...
Definition: point.h:932
SimFileFormat
SimFileFormat
Definition: particle_types.h:32