From 5dcf810f0b0388bd654317edbc6a242e4fd21045 Mon Sep 17 00:00:00 2001 From: Ian Bell Date: Thu, 18 Sep 2014 19:16:52 +0200 Subject: [PATCH] Added cp0 and dpdT|rho for REFPROP backend for use in PDSim Signed-off-by: Ian Bell --- .../REFPROP/REFPROPMixtureBackend.cpp | 20 +++++++++++++++++++ src/Backends/REFPROP/REFPROPMixtureBackend.h | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/src/Backends/REFPROP/REFPROPMixtureBackend.cpp b/src/Backends/REFPROP/REFPROPMixtureBackend.cpp index be068859..e79a5227 100644 --- a/src/Backends/REFPROP/REFPROPMixtureBackend.cpp +++ b/src/Backends/REFPROP/REFPROPMixtureBackend.cpp @@ -770,6 +770,26 @@ void REFPROPMixtureBackend::calc_phase_envelope(const std::string &type) &ierr, herr, errormessagelength); // Error message if (ierr > 0) { throw ValueError(format("%s",herr).c_str()); } } +long double REFPROPMixtureBackend::calc_cpmolar_idealgas(void) +{ + double rho_mol_L = 0.001*_rhomolar; + double p0, e0, h0, s0, cv0, cp0, w0, A0, G0; + THERM0dll(&_T,&rho_mol_L,&(mole_fractions[0]),&p0,&e0,&h0,&s0,&cv0,&cp0,&w0,&A0,&G0); + return static_cast(cp0); +} +long double REFPROPMixtureBackend::calc_first_partial_deriv(parameters Of, parameters Wrt, parameters Constant) +{ + if (Of == iP && Wrt == iT && (Constant == iDmolar || Constant == iDmass)) + { + double rho_mol_L = 0.001*_rhomolar; + double dpt; + DPDTdll(&_T, &rho_mol_L, &(mole_fractions[0]), &dpt); + return static_cast(dpt*1000); + } + else{ + throw ValueError(format("These derivative terms are not supported")); + } +} void REFPROPMixtureBackend::update(CoolProp::input_pairs input_pair, double value1, double value2) { diff --git a/src/Backends/REFPROP/REFPROPMixtureBackend.h b/src/Backends/REFPROP/REFPROPMixtureBackend.h index 43b6bc4c..525e15cf 100644 --- a/src/Backends/REFPROP/REFPROPMixtureBackend.h +++ b/src/Backends/REFPROP/REFPROPMixtureBackend.h @@ -55,6 +55,10 @@ public: /// Returns true if REFPROP is supported on this platform bool REFPROP_supported(void); + + long double calc_cpmolar_idealgas(void); + + long double calc_first_partial_deriv(parameters Of, parameters Wrt, parameters Constant); /// Set the fluids in REFPROP DLL by calling the SETUPdll function /**