conserved_3d.cpp
1 #include "conserved_3d.hpp"
2 
3 using std::size_t;
4 
6  mass(0), momentum(), energy(0), tracers() {}
7 
9  const Vector3D& momentum_i,
10  double energy_i):
11  mass(mass_i), momentum(momentum_i), energy(energy_i), tracers() {}
12 
14  const Vector3D& momentum_i,
15  double energy_i,
16  const vector<double>& tracers_i):
17  mass(mass_i), momentum(momentum_i),
18  energy(energy_i), tracers(tracers_i) {}
19 
20 namespace {
21  vector<double> operator*(double s, const vector<double>& v)
22  {
23  vector<double> res(v.size());
24  for(size_t i=0;i<v.size();++i)
25  res[i] = s*v[i];
26  return res;
27  }
28 
29  vector<double> operator/(const vector<double>& v,double s)
30  {
31  vector<double> res(v.size());
32  for(size_t i=0;i<v.size();++i)
33  res[i] = v[i]/s;
34  return res;
35  }
36 }
37 
39 {
40  mass -= diff.mass;
41  momentum -= diff.momentum;
42  energy -= diff.energy;
43  for(size_t i=0;i<tracers.size();++i)
44  tracers[i] -= diff.tracers[i];
45  return *this;
46 }
47 
49 {
50  mass += diff.mass;
51  momentum += diff.momentum;
52  energy += diff.energy;
53  for(size_t i=0;i<tracers.size();++i)
54  tracers[i] += diff.tracers[i];
55  return *this;
56 }
57 
58 Conserved3D operator*(double s, const Conserved3D& c)
59 {
60  return Conserved3D(s*c.mass,
61  s*c.momentum,
62  s*c.energy,
63  s*c.tracers);
64 }
65 
66 Conserved3D operator/(const Conserved3D& c, double s)
67 {
68  return Conserved3D(c.mass/s,
69  c.momentum/s,
70  c.energy/s,
71  c.tracers/s);
72 }
double energy
Energy.
Conserved3D & operator-=(const Conserved3D &diff)
Reduction operator.
3D Mathematical vector
Definition: Vector3D.hpp:15
Vector3D operator*(double d, Vector3D const &v)
Scalar product.
Definition: Vector3D.cpp:162
Vector3D operator/(Vector3D const &v, double d)
Scalar division.
Definition: Vector3D.cpp:176
Vector3D momentum
Momentum.
Conserved3D(void)
Class constructor (sets everything to zero)
Definition: conserved_3d.cpp:5
Conserved3D & operator+=(const Conserved3D &diff)
Addition operator.
vector< double > tracers
Tracers.
Conserved variables for a 3D computational cell.
Definition: conserved_3d.hpp:7
double mass
Mass.