From 50fd6b11987967c0839b228830c5410023d5e4e1 Mon Sep 17 00:00:00 2001
From: Ian Bell <ian.bell@nist.gov>
Date: Wed, 3 Aug 2022 14:10:47 -0400
Subject: [PATCH] Simplify the Aig00 case

---
 include/teqp/derivs.hpp        | 14 ++++++++++++--
 interface/pybind11_wrapper.cpp | 18 +++++-------------
 2 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/include/teqp/derivs.hpp b/include/teqp/derivs.hpp
index a893c3b..38d0cbf 100644
--- a/include/teqp/derivs.hpp
+++ b/include/teqp/derivs.hpp
@@ -213,7 +213,12 @@ struct TDXDerivatives {
     template<int iT, int iD, ADBackends be>
     static auto get_Arxy(const Model& model, const Scalar& T, const Scalar& rho, const VectorType& molefrac) {
         auto wrapper = AlphaCallWrapper<0, decltype(model)>(model);
-        return get_Agenxy<iT, iD, be>(wrapper, T, rho, molefrac);
+        if constexpr (iT == 0 && iD == 0) {
+            return wrapper.alpha(T, rho, molefrac);
+        }
+        else {
+            return get_Agenxy<iT, iD, be>(wrapper, T, rho, molefrac);
+        }
     }
 
     /**
@@ -227,7 +232,12 @@ struct TDXDerivatives {
     template<int iT, int iD, ADBackends be>
     static auto get_Aigxy(const Model& model, const Scalar& T, const Scalar& rho, const VectorType& molefrac) {
         auto wrapper = AlphaCallWrapper<1, decltype(model)>(model);
-        return get_Agenxy<iT, iD, be>(wrapper, T, rho, molefrac);
+        if constexpr (iT == 0 && iD == 0) {
+            return wrapper.alpha(T, rho, molefrac);
+        }
+        else {
+            return get_Agenxy<iT, iD, be>(wrapper, T, rho, molefrac);
+        }
     }
 
     template<ADBackends be = ADBackends::autodiff>
diff --git a/interface/pybind11_wrapper.cpp b/interface/pybind11_wrapper.cpp
index 4df8dec..c9bafa4 100644
--- a/interface/pybind11_wrapper.cpp
+++ b/interface/pybind11_wrapper.cpp
@@ -21,19 +21,11 @@ template<typename Model, int iT, int iD, typename Class>
 void add_ig_deriv_impl(Class& cls) {
     using idx = TDXDerivatives<Model>;
     using RAX = Eigen::Ref<Eigen::ArrayXd>;
-    if constexpr (iT == 0 && iD == 0){
-        cls.def("get_Aig00", 
-            [](const Model& m, const double T, const double rho, const RAX molefrac) { return AlphaCallWrapper<1, decltype(m)>(m).alpha(T, rho, molefrac); }, 
-            py::arg("T"), py::arg("rho"), py::arg("molefrac").noconvert()
-        );
-    }
-    else{
-        const std::string fname = "get_Aig" + std::to_string(iT) + std::to_string(iD);
-        cls.def(fname.c_str(), 
-            [](const Model& m, const double T, const double rho, const RAX molefrac) { return idx::template get_Aigxy<iT, iD, ADBackends::autodiff>(m, T, rho, molefrac); }, 
-            py::arg("T"), py::arg("rho"), py::arg("molefrac").noconvert()
-        );
-    }
+    const std::string fname = "get_Aig" + std::to_string(iT) + std::to_string(iD);
+    cls.def(fname.c_str(),
+        [](const Model& m, const double T, const double rho, const RAX molefrac) { return idx::template get_Aigxy<iT, iD, ADBackends::autodiff>(m, T, rho, molefrac); },
+        py::arg("T"), py::arg("rho"), py::arg("molefrac").noconvert()
+    );
 }
 
 template<typename Model, typename Class>
-- 
GitLab