diff --git a/include/teqp/cpp/teqpcpp.hpp b/include/teqp/cpp/teqpcpp.hpp index 85f8bf953150f6869049f4467d544176f47d9f08..8f0252291248c550288f2c2c693735eaa0fc8e89 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 7799f66ee9a721d5ef1ba5dd1b11480b0a742f18..b2944adbb1eb291078578aa371807734cb93d2e5 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) {