From 254882b768d2ce378a6514169bee257a2532a4c3 Mon Sep 17 00:00:00 2001
From: Ian Bell <ian.bell@nist.gov>
Date: Wed, 25 Jan 2023 15:23:05 -0500
Subject: [PATCH] Add dp/dT to C++ interface

---
 include/teqp/cpp/teqpcpp.hpp    | 1 +
 interface/CPP/teqp_impl_VLE.cpp | 6 ++++++
 interface/CPP/teqpcpp.cpp       | 1 +
 3 files changed, 8 insertions(+)

diff --git a/include/teqp/cpp/teqpcpp.hpp b/include/teqp/cpp/teqpcpp.hpp
index ca0cac4..b198123 100644
--- a/include/teqp/cpp/teqpcpp.hpp
+++ b/include/teqp/cpp/teqpcpp.hpp
@@ -125,6 +125,7 @@ namespace teqp {
             virtual std::tuple<double, double> extrapolate_from_critical(const double Tc, const double rhoc, const double Tgiven) const = 0;
             virtual std::tuple<EArrayd, EMatrixd> get_pure_critical_conditions_Jacobian(const double T, const double rho, int alternative_pure_index=-1, int alternative_length=2) const  = 0;
             virtual EArray2 pure_VLE_T(const double T, const double rhoL, const double rhoV, int maxiter) const = 0;
+            virtual double dpsatdT_pure(const double T, const double rhoL, const double rhoV) 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;
diff --git a/interface/CPP/teqp_impl_VLE.cpp b/interface/CPP/teqp_impl_VLE.cpp
index 017d761..91be45d 100644
--- a/interface/CPP/teqp_impl_VLE.cpp
+++ b/interface/CPP/teqp_impl_VLE.cpp
@@ -50,3 +50,9 @@ EArray2 MI::pure_VLE_T(const double T, const double rhoL, const double rhoV, int
         return teqp::pure_VLE_T(model, T, rhoL, rhoV, maxiter);
     }, m_model);
 }
+
+double MI::dpsatdT_pure(const double T, const double rhoL, const double rhoV) const {
+    return std::visit([&](const auto& model) {
+        return teqp::dpsatdT_pure(model, T, rhoL, rhoV);
+    }, m_model);
+}
diff --git a/interface/CPP/teqpcpp.cpp b/interface/CPP/teqpcpp.cpp
index d23eaa9..11e268b 100644
--- a/interface/CPP/teqpcpp.cpp
+++ b/interface/CPP/teqpcpp.cpp
@@ -84,6 +84,7 @@ namespace teqp {
             double get_neff(const double T, const double rho, const EArrayd& molefracs) const override;
 
             EArray2 pure_VLE_T(const double T, const double rhoL, const double rhoV, int maxiter) const override;
+            double dpsatdT_pure(const double T, const double rhoL, const double rhoV) const override;
             std::tuple<EArrayd, EArrayd> get_drhovecdp_Tsat(const double T, const REArrayd& rhovecL, const REArrayd& rhovecV) const override;
             std::tuple<EArrayd, EArrayd> get_drhovecdT_psat(const double T, const REArrayd& rhovecL, const REArrayd& rhovecV) const override;
             double get_dpsat_dTsat_isopleth(const double T, const REArrayd& rhovecL, const REArrayd& rhovecV) const override;
-- 
GitLab