From 98567db67dd96a994479d8b8d9bbddbd9a631200 Mon Sep 17 00:00:00 2001 From: Ian Bell Date: Sun, 10 May 2015 16:31:24 -0600 Subject: [PATCH] Implement PT flash with guesses in HEOS backend --- src/Backends/Helmholtz/FlashRoutines.cpp | 8 ++++++++ src/Backends/Helmholtz/FlashRoutines.h | 8 +++++++- src/Backends/Helmholtz/HelmholtzEOSMixtureBackend.cpp | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Backends/Helmholtz/FlashRoutines.cpp b/src/Backends/Helmholtz/FlashRoutines.cpp index 57e15274..403db599 100644 --- a/src/Backends/Helmholtz/FlashRoutines.cpp +++ b/src/Backends/Helmholtz/FlashRoutines.cpp @@ -458,6 +458,14 @@ void FlashRoutines::PQ_flash_with_guesses(HelmholtzEOSMixtureBackend &HEOS, cons HEOS._T = IO.T; } +void FlashRoutines::PT_flash_with_guesses(HelmholtzEOSMixtureBackend &HEOS, const GuessesStructure &guess) +{ + HEOS.solver_rho_Tp(HEOS.T(), HEOS.p(), guess.rhomolar); + // Load the other outputs + HEOS._phase = iphase_gas; // TODO: fix me once you know the state + HEOS._Q = -1; +} + void FlashRoutines::PT_Q_flash_mixtures(HelmholtzEOSMixtureBackend &HEOS, parameters other, CoolPropDbl value) { diff --git a/src/Backends/Helmholtz/FlashRoutines.h b/src/Backends/Helmholtz/FlashRoutines.h index f5d2722a..05f23cff 100644 --- a/src/Backends/Helmholtz/FlashRoutines.h +++ b/src/Backends/Helmholtz/FlashRoutines.h @@ -34,7 +34,13 @@ public: /// Flash for given pressure and (molar) quality with guess values provided /// @param HEOS The HelmholtzEOSMixtureBackend to be used - static void PQ_flash_with_guesses(HelmholtzEOSMixtureBackend &HEOS, const GuessesStructure &guess); + /// @param guess The GuessesStructure to be used + static void PQ_flash_with_guesses(HelmholtzEOSMixtureBackend &HEOS, const GuessesStructure &guess); + + /// Flash for given pressure and temperature with guess values provided for molar density + /// @param HEOS The HelmholtzEOSMixtureBackend to be used + /// @param guess The GuessesStructure to be used + static void PT_flash_with_guesses(HelmholtzEOSMixtureBackend &HEOS, const GuessesStructure &guess); /// Flash for given temperature and (molar) quality /// @param HEOS The HelmholtzEOSMixtureBackend to be used diff --git a/src/Backends/Helmholtz/HelmholtzEOSMixtureBackend.cpp b/src/Backends/Helmholtz/HelmholtzEOSMixtureBackend.cpp index 778fbfca..0cfdd5ec 100644 --- a/src/Backends/Helmholtz/HelmholtzEOSMixtureBackend.cpp +++ b/src/Backends/Helmholtz/HelmholtzEOSMixtureBackend.cpp @@ -971,6 +971,8 @@ void HelmholtzEOSMixtureBackend::update_with_guesses(CoolProp::input_pairs input { case PQ_INPUTS: _p = value1; _Q = value2; FlashRoutines::PQ_flash_with_guesses(*this, guesses); break; + case PT_INPUTS: + _p = value1; _T = value2; FlashRoutines::PT_flash_with_guesses(*this, guesses); break; default: throw ValueError(format("This pair of inputs [%s] is not yet supported", get_input_pair_short_desc(input_pair).c_str())); }