.Simulation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Particle.h
1 #ifndef __PARTICLE_PARTICLE_H__
2 #define __PARTICLE_PARTICLE_H__
3 
4 #include <iostream>
5 
6 #include "rapidjson/prettywriter.h"
7 #include "rapidjson/document.h"
8 #include "../Vector/Vector.hpp"
9 
10 namespace MDSimulation
11 {
23  struct Particle
24  {
27  double Updated;
28  int Charge;
29  int Type;
35  Particle();
36 
47  Particle(const DoubleVector& position,
48  const DoubleVector& velocity,
49  const double updated,
50  const int type);
51 
56  Particle(const Particle& other);
57 
63  void UpdateParticle(const double currentTime);
64 
65  friend std::ostream& operator<<(std::ostream& stream, const Particle& particle);
66 
67  template <typename Writer>
68  void Serialize(Writer& pt) const;
69  };
70 
71  template <typename Writer>
72  void Particle::Serialize(Writer& writer) const
73  {
74  writer.StartObject();
75 
76  writer.String("Updated") , writer.Double(Updated);
77  writer.String("Charge") , writer.Integral(Charge);
78  writer.String("Type") , writer.Integral(Type);
79 
80  writer.String("Position");
81  writer.StartArray();
82  {
83  writer.Double(this->Position[0]);
84  writer.Double(this->Position[1]);
85  writer.Double(this->Position[2]);
86  }
87  writer.EndArray();
88 
89  writer.String("Velocity");
90  writer.StartArray();
91  {
92  writer.Double(this->Velocity[0]);
93  writer.Double(this->Velocity[1]);
94  writer.Double(this->Velocity[2]);
95  }
96  writer.EndArray();
97 
98  writer.EndObject();
99  }
100 }
101 
102 #endif /* __PARTICLE_H__ */
tvmet::Vector< double, 3UL > DoubleVector
Vector type for representing particle positions and velocities as double precision floating point val...
Definition: Vector.hpp:23
void UpdateParticle(const double currentTime)
Update the particle to the current system time.
Definition: Particle.cpp:33
DoubleVector Velocity
Velocity of the particle in simulation units.
Definition: Particle.h:26
double Updated
Time at which the simulation was last updated.
Definition: Particle.h:27
DoubleVector Position
Position of the particle in simulation units.
Definition: Particle.h:25
int Charge
Ionization level of the particle.
Definition: Particle.h:28
int Type
Index representing the element of the particle.
Definition: Particle.h:29
Particle()
Create a &quot;null&quot; particle with default values of zero.
Definition: Particle.cpp:16
Definition of a basic particle type.
Definition: Particle.h:23