mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-01-14 16:38:00 -05:00
Fix ideal-gas Helmholtz energy derivatives
Add ratio of gas constants, as in GERG approach
This commit is contained in:
@@ -3083,31 +3083,34 @@ CoolPropDbl HelmholtzEOSMixtureBackend::calc_alpha0_deriv_nocache(const int nTau
|
||||
std::size_t N = mole_fractions.size();
|
||||
CoolPropDbl summer = 0;
|
||||
CoolPropDbl tau_i, delta_i, rho_ci, T_ci;
|
||||
CoolPropDbl Rmix = gas_constant();
|
||||
for (unsigned int i = 0; i < N; ++i){
|
||||
|
||||
rho_ci = get_fluid_constant(i, irhomolar_critical);
|
||||
T_ci = get_fluid_constant(i, iT_critical);
|
||||
CoolPropDbl Rcomponent = components[i].EOS().R_u;
|
||||
tau_i = T_ci*tau/Tr;
|
||||
delta_i = delta*rhor/rho_ci;
|
||||
CoolPropDbl Rratio = Rcomponent/Rmix;
|
||||
|
||||
if (nTau == 0 && nDelta == 0){
|
||||
double logxi = (std::abs(mole_fractions[i]) > DBL_EPSILON) ? log(mole_fractions[i]) : 0;
|
||||
summer += mole_fractions[i]*(components[i].EOS().base0(tau_i, delta_i) + logxi);
|
||||
summer += mole_fractions[i]*Rratio*(components[i].EOS().base0(tau_i, delta_i) + logxi);
|
||||
}
|
||||
else if (nTau == 0 && nDelta == 1){
|
||||
summer += mole_fractions[i]*rhor/rho_ci*components[i].EOS().dalpha0_dDelta(tau_i, delta_i);
|
||||
summer += mole_fractions[i]*Rratio*rhor/rho_ci*components[i].EOS().dalpha0_dDelta(tau_i, delta_i);
|
||||
}
|
||||
else if (nTau == 1 && nDelta == 0){
|
||||
summer += mole_fractions[i]*T_ci/Tr*components[i].EOS().dalpha0_dTau(tau_i, delta_i);
|
||||
summer += mole_fractions[i]*Rratio*T_ci/Tr*components[i].EOS().dalpha0_dTau(tau_i, delta_i);
|
||||
}
|
||||
else if (nTau == 0 && nDelta == 2){
|
||||
summer += mole_fractions[i]*pow(rhor/rho_ci,2)*components[i].EOS().d2alpha0_dDelta2(tau_i, delta_i);
|
||||
summer += mole_fractions[i]*Rratio*pow(rhor/rho_ci,2)*components[i].EOS().d2alpha0_dDelta2(tau_i, delta_i);
|
||||
}
|
||||
else if (nTau == 1 && nDelta == 1){
|
||||
summer += mole_fractions[i]*rhor/rho_ci*T_ci/Tr*components[i].EOS().d2alpha0_dDelta_dTau(tau_i, delta_i);
|
||||
summer += mole_fractions[i]*Rratio*rhor/rho_ci*T_ci/Tr*components[i].EOS().d2alpha0_dDelta_dTau(tau_i, delta_i);
|
||||
}
|
||||
else if (nTau == 2 && nDelta == 0){
|
||||
summer += mole_fractions[i]*pow(T_ci/Tr,2)*components[i].EOS().d2alpha0_dTau2(tau_i, delta_i);
|
||||
summer += mole_fractions[i]*Rratio*pow(T_ci/Tr,2)*components[i].EOS().d2alpha0_dTau2(tau_i, delta_i);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user