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