diff --git a/include/teqp/derivs.hpp b/include/teqp/derivs.hpp index 9fb166d415070385dca4f6a05c0a19f721158f21..1fdc90e8a17882bc1faf00838a5a81f20258fdd0 100644 --- a/include/teqp/derivs.hpp +++ b/include/teqp/derivs.hpp @@ -84,9 +84,15 @@ typename ContainerType::value_type get_Ar10(const Model& model, const TType T, c return -T*derivT([&model](const auto& T, const auto& rhovec) { return model.alphar(T, rhovec); }, T, rhovec); } +template <typename Model, typename TType, typename RhoType, typename MoleFracType> +auto get_Ar01(const Model& model, const TType &T, const RhoType &rho, const MoleFracType& molefrac) { + double h = 1e-100; + auto der = model.alphar(T, std::complex<double>(rho, h), molefrac).imag() / h; + return der*rho; +} + template <typename Model, typename TType, typename ContainerType> typename ContainerType::value_type get_Ar01(const Model& model, const TType T, const ContainerType& rhovec) { - auto rhotot_ = std::accumulate(std::begin(rhovec), std::end(rhovec), (decltype(rhovec[0]))0.0); decltype(rhovec[0] * T) Ar01 = 0.0; for (auto i = 0; i < rhovec.size(); ++i) {