mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-04-23 03:00:17 -04:00
* Shortcut VTPR when pure fluids, closes #1232 Also get use of the molar fraction as available as an argument in gE_R_RT
This commit is contained in:
@@ -35,11 +35,10 @@ public:
|
||||
UNIFAQ::UNIFAQMixture &get_unifaq() { return unifaq; }
|
||||
|
||||
/// Calculate the non-dimensionalized gE/RT term
|
||||
double gE_R_RT() {
|
||||
const std::vector<double> &z = unifaq.get_mole_fractions();
|
||||
double gE_R_RT(const std::vector<double> &x) {
|
||||
double summer = 0;
|
||||
for (std::size_t i = 0; i < z.size(); ++i) {
|
||||
summer += z[i] * unifaq.ln_gamma_R(i);
|
||||
for (std::size_t i = 0; i < x.size(); ++i) {
|
||||
summer += x[i] * unifaq.ln_gamma_R(i);
|
||||
}
|
||||
return summer;
|
||||
}
|
||||
@@ -53,23 +52,33 @@ public:
|
||||
}
|
||||
}
|
||||
double gE_R(double tau, const std::vector<double> &x, std::size_t itau) {
|
||||
if (itau == 0) {
|
||||
set_temperature(T_r / tau, x);
|
||||
return R_u*T_r/tau*gE_R_RT();
|
||||
if (x.size() == 1) {
|
||||
return 0.;
|
||||
}
|
||||
else {
|
||||
double dtau = 0.01*tau;
|
||||
return (gE_R(tau + dtau, x, itau - 1) - gE_R(tau - dtau, x, itau - 1)) / (2 * dtau);
|
||||
if (itau == 0) {
|
||||
set_temperature(T_r / tau, x);
|
||||
return R_u*T_r / tau*gE_R_RT(x);
|
||||
}
|
||||
else {
|
||||
double dtau = 0.01*tau;
|
||||
return (gE_R(tau + dtau, x, itau - 1) - gE_R(tau - dtau, x, itau - 1)) / (2 * dtau);
|
||||
}
|
||||
}
|
||||
}
|
||||
double d_gE_R_dxi(double tau, const std::vector<double> &x, std::size_t itau, std::size_t i, bool xN_independent) {
|
||||
if (itau == 0) {
|
||||
set_temperature(T_r / tau, x);
|
||||
return R_u*T_r/tau*d_gE_R_RT_dxi(x, i, xN_independent);
|
||||
if (x.size() == 1) {
|
||||
return 0.;
|
||||
}
|
||||
else {
|
||||
double dtau = 0.01*tau;
|
||||
return (d_gE_R_dxi(tau + dtau, x, itau - 1, i, xN_independent) - d_gE_R_dxi(tau - dtau, x, itau - 1, i, xN_independent)) / (2 * dtau);
|
||||
if (itau == 0) {
|
||||
set_temperature(T_r / tau, x);
|
||||
return R_u*T_r / tau*d_gE_R_RT_dxi(x, i, xN_independent);
|
||||
}
|
||||
else {
|
||||
double dtau = 0.01*tau;
|
||||
return (d_gE_R_dxi(tau + dtau, x, itau - 1, i, xN_independent) - d_gE_R_dxi(tau - dtau, x, itau - 1, i, xN_independent)) / (2 * dtau);
|
||||
}
|
||||
}
|
||||
}
|
||||
double am_term(double tau, const std::vector<double> &x, std::size_t itau) {
|
||||
|
||||
Reference in New Issue
Block a user