From 3168f15efc59fce16e908dcb071d476db6e8fc6c Mon Sep 17 00:00:00 2001 From: Ian Bell Date: Sun, 1 Jun 2014 19:46:30 +0200 Subject: [PATCH] Implemented dDelta3; test passes Signed-off-by: Ian Bell --- include/Helmholtz.h | 2 +- src/Helmholtz.cpp | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/include/Helmholtz.h b/include/Helmholtz.h index 016da1f6..fc54bf4f 100644 --- a/include/Helmholtz.h +++ b/include/Helmholtz.h @@ -307,7 +307,7 @@ public: long double dDelta2(const long double &tau, const long double &delta) throw(); long double dDelta_dTau(const long double &tau, const long double &delta) throw(); long double dTau2(const long double &tau, const long double &delta) throw(); - long double dDelta3(const long double &tau, const long double &delta) throw() {return _HUGE;}; // TODO: calculate this derivative + long double dDelta3(const long double &tau, const long double &delta) throw(); long double dDelta2_dTau(const long double &tau, const long double &delta) throw(); long double dDelta_dTau2(const long double &tau, const long double &delta) throw(); long double dTau3(const long double &tau, const long double &delta) throw(); diff --git a/src/Helmholtz.cpp b/src/Helmholtz.cpp index e69eaaec..e2ceb487 100644 --- a/src/Helmholtz.cpp +++ b/src/Helmholtz.cpp @@ -577,6 +577,26 @@ long double ResidualHelmholtzGERG2008Gaussian::dDelta2(const long double &tau, c } return std::accumulate(s.begin(), s.end(), 0.0); }; +long double ResidualHelmholtzGERG2008Gaussian::dDelta3(const long double &tau, const long double &delta) throw() +{ + /** + Term derived in sympy using + + from sympy import * + n_i, d_i, t_i, tau, delta, eta, gamma, beta, epsilon = symbols('n_i, d_i, t_i, tau, delta, eta, gamma, beta, epsilon') + psi = exp(-eta*(delta-epsilon)**2-beta*(delta-gamma)) + I = n_i*delta**d_i*tau**t_i*psi + ccode(simplify(diff(I,delta,3))) + + */ + for (std::size_t i=0; i