From 7060aa0f189899de2f25c0753793d69f906f61d2 Mon Sep 17 00:00:00 2001 From: Ian Bell <ian.bell@nist.gov> Date: Thu, 3 Nov 2022 22:24:45 -0400 Subject: [PATCH] Some VLE derivatives --- include/teqp/cpp/teqpcpp.hpp | 5 +++++ interface/CPP/teqpcpp.cpp | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/teqp/cpp/teqpcpp.hpp b/include/teqp/cpp/teqpcpp.hpp index 85f8bf9..8f02522 100644 --- a/include/teqp/cpp/teqpcpp.hpp +++ b/include/teqp/cpp/teqpcpp.hpp @@ -124,6 +124,11 @@ namespace teqp { virtual std::tuple<double, double> extrapolate_from_critical(const double Tc, const double rhoc, const double Tgiven) const = 0; virtual EArray2 pure_VLE_T(const double T, const double rhoL, const double rhoV, int maxiter) const = 0; + virtual std::tuple<EArrayd, EArrayd> get_drhovecdp_Tsat(const double T, const REArrayd& rhovecL, const REArrayd& rhovecV) const = 0; + virtual std::tuple<EArrayd, EArrayd> get_drhovecdT_psat(const double T, const REArrayd& rhovecL, const REArrayd& rhovecV) const = 0; + virtual double get_dpsat_dTsat_isopleth(const double T, const REArrayd& rhovecL, const REArrayd& rhovecV) const = 0; + + }; // Generic JSON-based interface where the model description is encoded as JSON diff --git a/interface/CPP/teqpcpp.cpp b/interface/CPP/teqpcpp.cpp index 7799f66..b2944ad 100644 --- a/interface/CPP/teqpcpp.cpp +++ b/interface/CPP/teqpcpp.cpp @@ -161,6 +161,22 @@ namespace teqp { return tdx::template get_neff(model, T, rho, molefracs); }, m_model); } + + std::tuple<EArrayd, EArrayd> get_drhovecdp_Tsat(const double T, const REArrayd& rhovecL, const REArrayd& rhovecV) const override { + return std::visit([&](const auto& model) { + return teqp::get_drhovecdp_Tsat(model, T, rhovecL, rhovecV); + }, m_model); + } + std::tuple<EArrayd, EArrayd> get_drhovecdT_psat(const double T, const REArrayd& rhovecL, const REArrayd& rhovecV) const override { + return std::visit([&](const auto& model) { + return teqp::get_drhovecdT_psat(model, T, rhovecL, rhovecV); + }, m_model); + } + double get_dpsat_dTsat_isopleth(const double T, const REArrayd& rhovecL, const REArrayd& rhovecV) const override { + return std::visit([&](const auto& model) { + return teqp::get_dpsat_dTsat_isopleth(model, T, rhovecL, rhovecV); + }, m_model); + } }; std::shared_ptr<AbstractModel> make_model(const nlohmann::json& j) { -- GitLab