Cantera  2.0
RedlichKwong.h
1 #ifndef TPX_RK_H
2 #define TPX_RK_H
3 
4 #include "cantera/tpx/Sub.h"
5 #include <math.h>
6 
7 namespace tpx
8 {
9 
10 const double GasConstant = 8314.3;
11 
12 class RedlichKwong : public Substance
13 {
14 
15 public:
16 
17  RedlichKwong() : Substance() {
18  setParameters(1.0, 1.0, 1.0);
19  m_name = "Redlich-Kwong";
20  m_formula = "-";
21  }
22 
23  void setParameters(double Tc, double Pc, double MolWt) {
24  m_tcrit = Tc;
25  m_pcrit = Pc;
26  m_mw = MolWt;
27 
28  // compute the a and b parameters
29  m_a = 0.42748*GasConstant*GasConstant*m_tcrit*m_tcrit*sqrt(m_tcrit)/m_pcrit;
30  m_b = 0.08664*GasConstant*m_tcrit/m_pcrit;
31  }
32 
33  double a() {
34  return m_a;
35  }
36  double b() {
37  return m_b;
38  }
39 
40  // destructor
41  ~RedlichKwong() {}
42 
43  double MolWt() {
44  return m_mw;
45  }
46  double Tcrit() {
47  return m_tcrit;
48  }
49  double Pcrit() {
50  return m_pcrit;
51  }
52  double Vcrit() {
53  return 0.3592725*GasConstant*T/(m_mw*m_pcrit);
54  }
55  double Tmin() {
56  return 0.0;
57  }
58  double Tmax() {
59  return 1.0e10;
60  }
61  char* name() {
62  return (char*) m_name.c_str() ;
63  }
64  char* formula() {
65  return (char*) m_formula.c_str() ;
66  }
67 
68  double Pp();
69  double up();
70  double sp();
71  double Psat();
72  double dPsatdT();
73 
74  // compressibility
75  double z();
76 
77  // enthalpy departure
78  double hresid();
79 
80  // entropy departure
81  double sresid();
82 
83  double ldens();
84 
85 protected:
86 
87  double m_tcrit, m_pcrit, m_mw, m_a, m_b;
88  //double m_tmin, m_tmax;
89  //string m_name, m_formula;
90 
91 private:
92 
93 };
94 }
95 
96 #endif // ! TPX_RK_H