ideal_gas_SR.cpp
1 #include <cmath>
2 #include "ideal_gas_SR.hpp"
3 #include "../misc/universal_error.hpp"
4 
5 IdealGas_SR::IdealGas_SR(double AdiabaticIndex) :
6  g_(AdiabaticIndex) {}
7 
9 {
10  return g_;
11 }
12 
13 double IdealGas_SR::dp2e(double d, double p, tvector const& /*tracers*/, vector<string> const& /*tracernames*/) const
14 {
15  return p*g_/ (d*(g_ - 1));
16 }
17 
18 double IdealGas_SR::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 e*(g_ - 1)*d/g_;
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_SR::dp2c(double d, double p, tvector const& /*tracers*/, vector<string> const& /*tracernames*/) const
41 {
42  assert(g_ > 0 && p > 0 && d > 0);
43  return std::sqrt(g_*p / (d+p*g_/((g_-1))));
44 }
45 
46 double IdealGas_SR::de2c(double d, double e, tvector const& tracers, vector<string> const& tracernames) const
47 {
48  double p = de2p(d, e, tracers, tracernames);
49  return std::sqrt(g_*p / (d*(1+e)));
50 }
51 
52 double IdealGas_SR::dp2s(double d, double p, tvector const& /*tracers*/, vector<string> const& /*tracernames*/) const
53 {
54  return p * pow(d, -g_);
55 }
56 
57 double IdealGas_SR::sd2p(double s, double d, tvector const& /*tracers*/, vector<string> const& /*tracernames*/) const
58 {
59  assert(s > 0 && d > 0);
60  return s * pow(d, g_);
61 }
double dp2c(double d, double p, tvector const &tracers, vector< string > const &tracernames) const
Calculates the speed of sound.
double de2p(double d, double e, tvector const &tracers, vector< string > const &tracernames) const
Calculates the pressure.
double de2c(double d, double e, tvector const &tracers, vector< string > const &tracernames) const
Calculates the speed of sound.
std::vector< double > tvector
Container for error reports.
IdealGas_SR(double AdiabaticIndex)
Class constructor.
Definition: ideal_gas_SR.cpp:5
Ideal gas equation of state for relativity.
double sd2p(double s, double d, tvector const &tracers, vector< string > const &tracernames) const
Calculates the pressure from the netropy.
double dp2s(double d, double p, tvector const &tracers, vector< string > const &tracernames) const
Calculates the entropy per unit mass.
double dp2e(double d, double p, tvector const &tracers, vector< string > const &tracernames) const
Calculates the thermal energy per unit mass.
double getAdiabaticIndex(void) const
Returns the adiabatic index.
Definition: ideal_gas_SR.cpp:8