Shortcut VTPR when pure fluids, solves #1232 (#1239)

* 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:
JonWel
2016-09-19 03:02:04 +02:00
committed by Ian Bell
parent 5fc1d9f51a
commit 30d44be01e

View File

@@ -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) {