7 #ifndef MIXTURE_BINARY_PAIRS_H 8 #define MIXTURE_BINARY_PAIRS_H 11 #include "CoolPropFluid.h" 12 #include "crossplatform_shared_ptr.h" 16 typedef std::vector<std::vector<CoolPropDbl>> STLMatrix;
24 std::string get_reducing_function_name(
const std::string& CAS1,
const std::string& CAS2);
42 virtual void set_binary_interaction_double(
const std::size_t i,
const std::size_t j,
const std::string& parameter,
double value) = 0;
44 virtual double get_binary_interaction_double(
const std::size_t i,
const std::size_t j,
const std::string& parameter)
const = 0;
47 static shared_ptr<ReducingFunction>
factory(
const std::vector<CoolPropFluid*>& components, STLMatrix& F);
50 virtual CoolPropDbl
Tr(
const std::vector<CoolPropDbl>& x)
const = 0;
54 virtual CoolPropDbl
rhormolar(
const std::vector<CoolPropDbl>& x)
const = 0;
57 virtual CoolPropDbl dTr_dgammaT(
const std::vector<CoolPropDbl>& x)
const {
60 virtual CoolPropDbl dTr_dbetaT(
const std::vector<CoolPropDbl>& x)
const {
63 virtual CoolPropDbl drhormolar_dgammaV(
const std::vector<CoolPropDbl>& x)
const {
66 virtual CoolPropDbl drhormolar_dbetaV(
const std::vector<CoolPropDbl>& x)
const {
69 virtual CoolPropDbl d2Tr_dxidgammaT(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const {
72 virtual CoolPropDbl d2Tr_dxidbetaT(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const {
75 virtual CoolPropDbl d2rhormolar_dxidgammaV(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const {
78 virtual CoolPropDbl d2rhormolar_dxidbetaV(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const {
82 virtual CoolPropDbl d2rhormolardxi2__constxj(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const = 0;
83 virtual CoolPropDbl d2rhormolardxidxj(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
x_N_dependency_flag xN_flag)
const = 0;
84 virtual CoolPropDbl d3rhormolardxidxjdxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
86 virtual CoolPropDbl d2Trdxi2__constxj(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const = 0;
87 virtual CoolPropDbl d2Trdxidxj(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
x_N_dependency_flag xN_flag)
const = 0;
88 virtual CoolPropDbl d3Trdxidxjdxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
104 virtual CoolPropDbl d2_ndTrdni_dxj_dxk__constxi(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
123 virtual CoolPropDbl d2_ndrhorbardni_dxj_dxk__constxi(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
126 virtual CoolPropDbl ndrhorbardni__constnj(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
127 virtual CoolPropDbl ndTrdni__constnj(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
128 virtual CoolPropDbl PSI_rho(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
129 virtual CoolPropDbl d_PSI_rho_dxj(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
x_N_dependency_flag xN_flag)
const;
130 virtual CoolPropDbl d2_PSI_rho_dxj_dxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
132 virtual CoolPropDbl PSI_T(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
133 virtual CoolPropDbl d_PSI_T_dxj(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
x_N_dependency_flag xN_flag)
const;
134 virtual CoolPropDbl d2_PSI_T_dxj_dxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
159 GERG2008ReducingFunction(
const std::vector<CoolPropFluid>& pFluids,
const STLMatrix& beta_v,
const STLMatrix& gamma_v, STLMatrix beta_T,
160 const STLMatrix& gamma_T) {
161 this->pFluids = pFluids;
162 this->beta_v = beta_v;
163 this->gamma_v = gamma_v;
164 this->beta_T = beta_T;
165 this->gamma_T = gamma_T;
166 this->N = pFluids.size();
167 T_c.resize(N, std::vector<CoolPropDbl>(N, 0));
168 v_c.resize(N, std::vector<CoolPropDbl>(N, 0));
171 for (std::size_t i = 0; i < N; ++i) {
172 for (std::size_t j = 0; j < N; j++) {
173 T_c[i][j] = sqrt(pFluids[i].EOS().reduce.T * pFluids[j].EOS().reduce.T);
174 v_c[i][j] = 1.0 / 8.0 * pow(pow(pFluids[i].EOS().reduce.rhomolar, -1.0 / 3.0) + pow(pFluids[j].EOS().reduce.rhomolar, -1.0 / 3.0), 3);
176 Yc_T[i] = pFluids[i].EOS().reduce.T;
177 Yc_v[i] = 1 / pFluids[i].EOS().reduce.rhomolar;
191 if (i < 0 || i >= N) {
192 if (j < 0 || j >= N) {
193 throw ValueError(format(
"Both indices i [%d] and j [%d] are out of bounds. Must be between 0 and %d.", i, j, N-1));
195 throw ValueError(format(
"Index i [%d] is out of bounds. Must be between 0 and %d.", i, N-1));
197 }
else if (j < 0 || j >= N) {
198 throw ValueError(format(
"Index j [%d] is out of bounds. Must be between 0 and %d.", j, N-1));
200 beta_T[i][j] = betaT;
201 beta_T[j][i] = 1 / betaT;
202 gamma_T[i][j] = gammaT;
203 gamma_T[j][i] = gammaT;
204 beta_v[i][j] = betaV;
205 beta_v[j][i] = 1 / betaV;
206 gamma_v[i][j] = gammaV;
207 gamma_v[j][i] = gammaV;
213 if (i < 0 || i >= N) {
214 if (j < 0 || j >= N) {
215 throw ValueError(format(
"Both indices i [%d] and j [%d] are out of bounds. Must be between 0 and %d.", i, j, N-1));
217 throw ValueError(format(
"Index i [%d] is out of bounds. Must be between 0 and %d.", i, N-1));
219 }
else if (j < 0 || j >= N) {
220 throw ValueError(format(
"Index j [%d] is out of bounds. Must be between 0 and %d.", j, N-1));
222 if (parameter ==
"betaT") {
223 beta_T[i][j] = value;
224 beta_T[j][i] = 1 / value;
225 }
else if (parameter ==
"gammaT") {
226 gamma_T[i][j] = value;
227 gamma_T[j][i] = value;
228 }
else if (parameter ==
"betaV") {
229 beta_v[i][j] = value;
230 beta_v[j][i] = 1 / value;
231 }
else if (parameter ==
"gammaV") {
232 gamma_v[i][j] = value;
233 gamma_v[j][i] = value;
235 throw KeyError(format(
"This key [%s] is invalid to set_binary_interaction_double", parameter.c_str()));
240 if (parameter ==
"betaT") {
242 }
else if (parameter ==
"gammaT") {
243 return gamma_T[i][j];
244 }
else if (parameter ==
"betaV") {
246 }
else if (parameter ==
"gammaV") {
247 return gamma_v[i][j];
249 throw KeyError(format(
"This key [%s] is invalid to get_binary_interaction_double", parameter.c_str()));
256 CoolPropDbl
Tr(
const std::vector<CoolPropDbl>& x)
const;
261 CoolPropDbl dTr_dgammaT(
const std::vector<CoolPropDbl>& x)
const;
266 CoolPropDbl dTr_dbetaT(
const std::vector<CoolPropDbl>& x)
const;
270 CoolPropDbl d2Tr_dxidgammaT(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
274 CoolPropDbl d2Tr_dxidbetaT(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
285 CoolPropDbl d2Trdxi2__constxj(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
290 CoolPropDbl d2Trdxidxj(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
x_N_dependency_flag xN_flag)
const;
295 CoolPropDbl d3Trdxidxjdxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
x_N_dependency_flag xN_flag)
const;
301 CoolPropDbl dvrmolardxi__constxj(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
306 CoolPropDbl d2vrmolardxi2__constxj(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
311 CoolPropDbl d2vrmolardxidxj(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
x_N_dependency_flag xN_flag)
const;
316 CoolPropDbl d3vrmolardxidxjdxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
x_N_dependency_flag xN_flag)
const;
321 CoolPropDbl
rhormolar(
const std::vector<CoolPropDbl>& x)
const;
326 CoolPropDbl drhormolar_dgammaV(
const std::vector<CoolPropDbl>& x)
const;
331 CoolPropDbl drhormolar_dbetaV(
const std::vector<CoolPropDbl>& x)
const;
335 CoolPropDbl d2vrmolar_dxidgammaV(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
339 CoolPropDbl d2vrmolar_dxidbetaV(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
343 CoolPropDbl d2rhormolar_dxidbetaV(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
347 CoolPropDbl d2rhormolar_dxidgammaV(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
364 CoolPropDbl d2rhormolardxi2__constxj(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const;
372 CoolPropDbl d2rhormolardxidxj(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
x_N_dependency_flag xN_flag)
const;
376 CoolPropDbl d3rhormolardxidxjdxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
385 CoolPropDbl Yr(
const std::vector<CoolPropDbl>& x,
const STLMatrix& beta,
const STLMatrix& gamma,
const STLMatrix& Y_c_ij,
386 const std::vector<CoolPropDbl>& Yc)
const;
394 CoolPropDbl dYr_dgamma(
const std::vector<CoolPropDbl>& x,
const STLMatrix& beta,
const STLMatrix& gamma,
const STLMatrix& Y_c_ij,
395 const std::vector<CoolPropDbl>& Yc)
const;
399 CoolPropDbl dYr_dbeta(
const std::vector<CoolPropDbl>& x,
const STLMatrix& beta,
const STLMatrix& gamma,
const STLMatrix& Y_c_ij,
400 const std::vector<CoolPropDbl>& Yc)
const;
417 CoolPropDbl dYrdxi__constxj(
const std::vector<CoolPropDbl>& x, std::size_t i,
const STLMatrix& beta,
const STLMatrix& gamma,
418 const STLMatrix& Y_c_ij,
const std::vector<CoolPropDbl>& Yc,
x_N_dependency_flag xN_flag)
const;
422 CoolPropDbl d2Yrdxidgamma(
const std::vector<CoolPropDbl>& x, std::size_t i,
const STLMatrix& beta,
const STLMatrix& gamma,
423 const STLMatrix& Y_c_ij,
const std::vector<CoolPropDbl>& Yc,
x_N_dependency_flag xN_flag)
const;
426 CoolPropDbl d2Yrdxidbeta(
const std::vector<CoolPropDbl>& x, std::size_t i,
const STLMatrix& beta,
const STLMatrix& gamma,
const STLMatrix& Y_c_ij,
443 CoolPropDbl d2Yrdxi2__constxj(
const std::vector<CoolPropDbl>& x, std::size_t i,
const STLMatrix& beta,
const STLMatrix& gamma,
444 const STLMatrix& Y_c_ij,
const std::vector<CoolPropDbl>& Yc,
x_N_dependency_flag xN_flag)
const;
459 CoolPropDbl d2Yrdxidxj(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
const STLMatrix& beta,
const STLMatrix& gamma,
460 const STLMatrix& Y_c_ij,
const std::vector<CoolPropDbl>& Yc,
x_N_dependency_flag xN_flag)
const;
465 CoolPropDbl d3Yrdxidxjdxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
const STLMatrix& beta,
466 const STLMatrix& gamma,
const STLMatrix& Y_c_ij,
const std::vector<CoolPropDbl>& Yc,
x_N_dependency_flag xN_flag)
const;
474 const CoolPropDbl c_Y_ij(
const std::size_t i,
const std::size_t j,
const STLMatrix& beta,
const STLMatrix& gamma,
const STLMatrix& Y_c)
const;
480 CoolPropDbl f_Y_ij(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
const STLMatrix& beta)
const;
487 CoolPropDbl dfYkidxi__constxk(
const std::vector<CoolPropDbl>& x, std::size_t k, std::size_t i,
const STLMatrix& beta)
const;
494 CoolPropDbl dfYikdxi__constxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t k,
const STLMatrix& beta)
const;
500 CoolPropDbl d2fYkidxi2__constxk(
const std::vector<CoolPropDbl>& x, std::size_t k, std::size_t i,
const STLMatrix& beta)
const;
506 CoolPropDbl d2fYikdxi2__constxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t k,
const STLMatrix& beta)
const;
513 CoolPropDbl d2fYijdxidxj(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t k,
const STLMatrix& beta)
const;
520 CoolPropDbl d3fYijdxi2dxj(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
const STLMatrix& beta)
const;
526 CoolPropDbl d3fYijdxidxj2(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
const STLMatrix& beta)
const;
532 CoolPropDbl d3fYkidxi3__constxk(
const std::vector<CoolPropDbl>& x, std::size_t k, std::size_t i,
const STLMatrix& beta)
const;
538 CoolPropDbl d3fYikdxi3__constxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t k,
const STLMatrix& beta)
const;
550 double T_c, rhomolar_c;
559 void set_binary_interaction_double(
const std::size_t i,
const std::size_t j,
const std::string& parameter,
double value) {
562 double get_binary_interaction_double(
const std::size_t i,
const std::size_t j,
const std::string& parameter)
const {
567 CoolPropDbl
Tr(
const std::vector<CoolPropDbl>& x)
const {
588 CoolPropDbl
rhormolar(
const std::vector<CoolPropDbl>& x)
const {
604 CoolPropDbl
d3rhormolardxidxjdxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
609 CoolPropDbl dTr_dgammaT(
const std::vector<CoolPropDbl>& x)
const {
612 CoolPropDbl dTr_dbetaT(
const std::vector<CoolPropDbl>& x)
const {
615 CoolPropDbl drhormolar_dgammaV(
const std::vector<CoolPropDbl>& x)
const {
618 CoolPropDbl drhormolar_dbetaV(
const std::vector<CoolPropDbl>& x)
const {
622 CoolPropDbl d2Tr_dxidgammaT(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const {
625 CoolPropDbl d2Tr_dxidbetaT(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const {
628 CoolPropDbl d2rhormolar_dxidgammaV(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const {
631 CoolPropDbl d2rhormolar_dxidbetaV(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const {
646 virtual CoolPropDbl d_PSI_rho_dxj(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
x_N_dependency_flag xN_flag)
const {
649 virtual CoolPropDbl d2_PSI_rho_dxj_dxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
653 virtual CoolPropDbl PSI_T(
const std::vector<CoolPropDbl>& x, std::size_t i,
x_N_dependency_flag xN_flag)
const {
656 virtual CoolPropDbl d_PSI_T_dxj(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j,
x_N_dependency_flag xN_flag)
const {
659 virtual CoolPropDbl d2_PSI_T_dxj_dxk(
const std::vector<CoolPropDbl>& x, std::size_t i, std::size_t j, std::size_t k,
695 static void convert_to_GERG(std::vector<CoolPropFluid>& pFluids, std::size_t i, std::size_t j,
const Dictionary& d, CoolPropDbl& beta_T,
696 CoolPropDbl& beta_v, CoolPropDbl& gamma_T, CoolPropDbl& gamma_v) {
697 CoolPropDbl xi_ij = d.get_number(
"xi");
698 CoolPropDbl zeta_ij = d.get_number(
"zeta");
701 gamma_T = (pFluids[i].EOS().reduce.T + pFluids[j].EOS().reduce.T + xi_ij) / (2 * sqrt(pFluids[i].EOS().reduce.T * pFluids[j].EOS().reduce.T));
702 CoolPropDbl v_i = 1 / pFluids[i].EOS().reduce.rhomolar;
703 CoolPropDbl v_j = 1 / pFluids[j].EOS().reduce.rhomolar;
704 CoolPropDbl one_third = 1.0 / 3.0;
705 gamma_v = (v_i + v_j + zeta_ij) / (0.25 * pow(pow(v_i, one_third) + pow(v_j, one_third), 3));
CoolPropDbl d3Trdxidxjdxk(const std::vector< CoolPropDbl > &x, std::size_t i, std::size_t j, std::size_t k, x_N_dependency_flag xN_flag) const
The third derivative of reducing temperature with respect to component i, j and k mole fractions...
Definition: ReducingFunctions.h:583
virtual CoolPropDbl PSI_rho(const std::vector< CoolPropDbl > &x, std::size_t i, x_N_dependency_flag xN_flag) const
Note: this one is one, not zero.
Definition: ReducingFunctions.h:643
CoolPropDbl Tr(const std::vector< CoolPropDbl > &x) const
The reducing temperature.
Definition: ReducingFunctions.h:567
CoolPropDbl d2Trdxidxj(const std::vector< CoolPropDbl > &x, std::size_t i, std::size_t j, x_N_dependency_flag xN_flag) const
The second derivative of reducing temperature with respect to component i and j mole fractions...
Definition: ReducingFunctions.h:579
std::vector< CoolPropFluid > pFluids
List of fluids.
Definition: ReducingFunctions.h:156
CoolPropDbl drhormolardxi__constxj(const std::vector< CoolPropDbl > &x, std::size_t i, x_N_dependency_flag xN_flag) const
Derivative of the molar reducing density with respect to component i mole fraction.
Definition: ReducingFunctions.h:592
STLMatrix v_c
from GERG-2008
Definition: ReducingFunctions.h:148
x_N is an dependent variable, calculated by
Definition: ReducingFunctions.h:21
CoolPropDbl d2rhormolardxidxj(const std::vector< CoolPropDbl > &x, std::size_t i, std::size_t j, x_N_dependency_flag xN_flag) const
Derivative of the molar reducing density with respect to component i and j mole fractions.
Definition: ReducingFunctions.h:600
STLMatrix T_c
from GERG=2008
Definition: ReducingFunctions.h:149
Abstract base class for reducing function An abstract base class for the reducing function to allow f...
Definition: ReducingFunctions.h:31
CoolPropDbl dTrdxi__constxj(const std::vector< CoolPropDbl > &x, std::size_t i, x_N_dependency_flag xN_flag) const
The derivative of reducing temperature with respect to component i mole fraction. ...
Definition: ReducingFunctions.h:571
Definition: CoolPropTools.h:61
virtual CoolPropDbl rhormolar(const std::vector< CoolPropDbl > &x) const =0
The molar reducing density.
static shared_ptr< ReducingFunction > factory(const std::vector< CoolPropFluid *> &components, STLMatrix &F)
A factory function to generate the required reducing function.
CoolPropDbl d2rhormolardxi2__constxj(const std::vector< CoolPropDbl > &x, std::size_t i, x_N_dependency_flag xN_flag) const
Derivative of the molar reducing density with respect to component i mole fraction.
Definition: ReducingFunctions.h:596
static void convert_to_GERG(std::vector< CoolPropFluid > &pFluids, std::size_t i, std::size_t j, const Dictionary &d, CoolPropDbl &beta_T, CoolPropDbl &beta_v, CoolPropDbl &gamma_T, CoolPropDbl &gamma_v)
Set the coefficients based on reducing parameters loaded from JSON.
Definition: ReducingFunctions.h:695
virtual CoolPropDbl d_ndTrdni_dxj__constxi(const std::vector< CoolPropDbl > &x, std::size_t i, std::size_t j, x_N_dependency_flag xN_flag) const
GERG 2004 Monograph equation 7.56:
Definition: ReducingFunctions.cpp:5
Definition: Exceptions.h:45
CoolPropDbl d3rhormolardxidxjdxk(const std::vector< CoolPropDbl > &x, std::size_t i, std::size_t j, std::size_t k, x_N_dependency_flag xN_flag) const
Derivative of the molar reducing density with respect to component i, j, and k mole fractions...
Definition: ReducingFunctions.h:604
STLMatrix gamma_v
from GERG-2008
Definition: ReducingFunctions.h:151
virtual CoolPropDbl d_ndrhorbardni_dxj__constxi(const std::vector< CoolPropDbl > &x, std::size_t i, std::size_t j, x_N_dependency_flag xN_flag) const
GERG 2004 Monograph equation 7.55: If the are all independent Gernert, JPCRD, 2014, A28 If : .
Definition: ReducingFunctions.cpp:55
virtual CoolPropDbl dTrdxi__constxj(const std::vector< CoolPropDbl > &x, std::size_t i, x_N_dependency_flag xN_flag) const =0
The derivative of reduced temperature with respect to component i mole fraction.
STLMatrix beta_T
from GERG-2008
Definition: ReducingFunctions.h:152
void set_binary_interaction_double(const std::size_t i, const std::size_t j, double betaT, double gammaT, double betaV, double gammaV)
Set all beta and gamma values in one shot.
Definition: ReducingFunctions.h:189
~GERG2008ReducingFunction()
Default destructor.
Definition: ReducingFunctions.h:186
virtual CoolPropDbl drhormolardxi__constxj(const std::vector< CoolPropDbl > &x, std::size_t i, x_N_dependency_flag xN_flag) const =0
Derivative of the molar reducing density with respect to component i mole fraction.
std::vector< CoolPropDbl > Yc_v
Vector of critical molar volumes for all components.
Definition: ReducingFunctions.h:155
Reducing function converter for dry air and HFC blends.
Definition: ReducingFunctions.h:688
x_N is an independent variable, and not calculated by
Definition: ReducingFunctions.h:20
virtual double get_binary_interaction_double(const std::size_t i, const std::size_t j, const std::string ¶meter) const
Get a parameter.
Definition: ReducingFunctions.h:239
STLMatrix gamma_T
from GERG-2008
Definition: ReducingFunctions.h:153
CoolPropDbl rhormolar(const std::vector< CoolPropDbl > &x) const
The molar reducing density.
Definition: ReducingFunctions.h:588
std::vector< CoolPropDbl > Yc_T
Vector of critical temperatures for all components.
Definition: ReducingFunctions.h:154
The reducing function model of GERG-2008.
Definition: ReducingFunctions.h:143
x_N_dependency_flag
Definition: ReducingFunctions.h:18
This file contains flash routines in which the state is unknown, and a solver of some kind must be us...
Definition: AbstractState.h:19
virtual void set_binary_interaction_double(const std::size_t i, const std::size_t j, const std::string ¶meter, double value)
Set a parameter.
Definition: ReducingFunctions.h:211
STLMatrix beta_v
from GERG-2008
Definition: ReducingFunctions.h:150
CoolPropDbl d2Trdxi2__constxj(const std::vector< CoolPropDbl > &x, std::size_t i, x_N_dependency_flag xN_flag) const
The second derivative of reducing temperature with respect to component i mole fraction.
Definition: ReducingFunctions.h:575
A constant reducing function that does not vary with composition.
Definition: ReducingFunctions.h:546
virtual CoolPropDbl Tr(const std::vector< CoolPropDbl > &x) const =0
The reduced temperature.