ideal_gas.cpp
1 #include <cmath>
2 #include "ideal_gas.hpp"
3 #include "../../misc/universal_error.hpp"
4 
5 IdealGas::IdealGas(double AdiabaticIndex):
6  g_(AdiabaticIndex) {}
7 
8 double IdealGas::getAdiabaticIndex(void) const
9 {
10  return g_;
11 }
12 
13 double IdealGas::dp2e(double d, double p, tvector const& /*tracers*/, vector<string> const& /*tracernames*/) const
14 {
15  return p/d/(g_-1);
16 }
17 
18 double IdealGas::de2p(double d, double e, tvector const& /*tracers*/, vector<string> const& /*tracernames*/) const
19 {
20  if (e < 0)
21  throw UniversalError("Negative thermal energy");
22  return (g_-1)*e*d;
23 }
24 
25 namespace {
26  /*
27  UniversalError imaginary_speed_of_sound(double g,
28  double p,
29  double d)
30  {
31  UniversalError res("Speed of sound came out imaginary");
32  res.AddEntry("adiabatic index",g);
33  res.AddEntry("density",d);
34  res.AddEntry("pressure",p);
35  return res;
36  }
37  */
38 }
39 
40 double IdealGas::dp2c(double d, double p, tvector const& /*tracers*/, vector<string> const& /*tracernames*/) const
41 {
42  if (!(d > 0) || !(p > 0))
43  {
44  UniversalError eo("Bad cs");
45  eo.AddEntry("pressure", p);
46  eo.AddEntry("density", d);
47  throw eo;
48  }
49  assert(g_>0 && p>0 && d>0);
50  return sqrt(g_*p/d);
51 }
52 
53 double IdealGas::de2c(double d, double e, tvector const& tracers, vector<string> const& tracernames) const
54 {
55  double p = de2p(d, e, tracers,tracernames);
56  return sqrt(g_*p/d);
57 }
58 
59 double IdealGas::dp2s(double d, double p, tvector const& /*tracers*/, vector<string> const& /*tracernames*/) const
60 {
61  return p*pow(d,-g_);
62 }
63 
64 double IdealGas::sd2p(double s, double d, tvector const& /*tracers*/, vector<string> const& /*tracernames*/) const
65 {
66  assert(s>0 && d>0);
67  return s*pow(d,g_);
68 }
Ideal gas equation of state.
double dp2s(double d, double p, tvector const &tracers, vector< string > const &tracernames) const
Calculates the entropy per unit mass.
Definition: ideal_gas.cpp:59
std::vector< double > tvector
IdealGas(double AdiabaticIndex)
Class constructor.
Definition: ideal_gas.cpp:5
Container for error reports.
double getAdiabaticIndex(void) const
Returns the adiabatic index.
Definition: ideal_gas.cpp:8
double dp2e(double d, double p, tvector const &tracers, vector< string > const &tracernames) const
Calculates the thermal energy per unit mass.
Definition: ideal_gas.cpp:13
double dp2c(double d, double p, tvector const &tracers, vector< string > const &tracernames) const
Calculates the speed of sound.
Definition: ideal_gas.cpp:40
void AddEntry(std::string const &field, double value)
Adds an entry to the list.
double de2p(double d, double e, tvector const &tracers, vector< string > const &tracernames) const
Calculates the pressure.
Definition: ideal_gas.cpp:18
double sd2p(double s, double d, tvector const &tracers, vector< string > const &tracernames) const
Calculates the pressure from the netropy.
Definition: ideal_gas.cpp:64
double de2c(double d, double e, tvector const &tracers, vector< string > const &tracernames) const
Calculates the speed of sound.
Definition: ideal_gas.cpp:53