From c04dd4f6d60af7f389b28bec864d5bfdd99338e1 Mon Sep 17 00:00:00 2001 From: Massimiliano Bonomi <massimiliano.bonomi@gmail.com> Date: Sun, 18 Mar 2018 14:17:25 +0100 Subject: [PATCH] fix Q switch function derivatives for large distances (cherry picked from commit ae6c8ee498c081aa7372c2f6ec77a770ed5cf08a) --- src/tools/SwitchingFunction.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tools/SwitchingFunction.cpp b/src/tools/SwitchingFunction.cpp index dd64f0ffc..de3662fe6 100644 --- a/src/tools/SwitchingFunction.cpp +++ b/src/tools/SwitchingFunction.cpp @@ -392,8 +392,9 @@ double SwitchingFunction::calculate(double distance,double&dfunc)const { } else if(type==nativeq) { double rdist2 = beta*(distance - lambda * ref); double exprdist=exp(rdist2); + double exprmdist=1.0/exprdist; result=1./(1.+exprdist); - dfunc=-exprdist/(1.+exprdist)/(1.+exprdist); + dfunc=-1.0/(exprmdist+1.0)/(1.+exprdist); } else if(type==gaussian) { result=exp(-0.5*rdist*rdist); dfunc=-rdist*result; -- GitLab