From 62196b0c55ee28890a17a00729c9cdc640d98057 Mon Sep 17 00:00:00 2001 From: Giovanni Bussi <giovanni.bussi@gmail.com> Date: Mon, 9 Dec 2013 21:17:45 +0100 Subject: [PATCH] Using faster switching functions in coordination and dhenergy Coordination is now faster by approx 15% when using even NN, even MM and d0=0 --- src/colvar/Coordination.cpp | 2 +- src/colvar/CoordinationBase.cpp | 2 +- src/colvar/DHEnergy.cpp | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/colvar/Coordination.cpp b/src/colvar/Coordination.cpp index ffc9b28bc..8de701f19 100644 --- a/src/colvar/Coordination.cpp +++ b/src/colvar/Coordination.cpp @@ -106,7 +106,7 @@ CoordinationBase(ao) double Coordination::pairing(double distance,double&dfunc,unsigned i,unsigned j)const{ (void) i; // avoid warnings (void) j; // avoid warnings - return switchingFunction.calculate(distance,dfunc); + return switchingFunction.calculateSqr(distance,dfunc); } } diff --git a/src/colvar/CoordinationBase.cpp b/src/colvar/CoordinationBase.cpp index b16dbcb3b..0b9b6546b 100644 --- a/src/colvar/CoordinationBase.cpp +++ b/src/colvar/CoordinationBase.cpp @@ -156,7 +156,7 @@ void CoordinationBase::calculate() } double dfunc=0.; - ncoord += pairing(distance.modulo(), dfunc,i0,i1); + ncoord += pairing(distance.modulo2(), dfunc,i0,i1); deriv[i0] = deriv[i0] + (-dfunc)*distance ; deriv[i1] = deriv[i1] + dfunc*distance ; diff --git a/src/colvar/DHEnergy.cpp b/src/colvar/DHEnergy.cpp index 9dac10453..204540566 100644 --- a/src/colvar/DHEnergy.cpp +++ b/src/colvar/DHEnergy.cpp @@ -118,7 +118,8 @@ constant(0.0) log<<" Bibliography "<<plumed.cite("Do, Carloni, Varani and Bussi, J. Chem. Theory Comput. 9, 1720 (2013)")<<" \n"; } -double DHEnergy::pairing(double distance,double&dfunc,unsigned i,unsigned j)const{ +double DHEnergy::pairing(double distance2,double&dfunc,unsigned i,unsigned j)const{ + double distance=std::sqrt(distance2); if(getAbsoluteIndex(i)==getAbsoluteIndex(j)){ dfunc=0.0; return 0.0; -- GitLab