Commit ebde14b7 authored by Chengwen Liu's avatar Chengwen Liu
Browse files

Added 2 args for EpsilonRule

parent 7a791b94
...@@ -142,18 +142,18 @@ std::string AmoebaReferenceVdwForce::getEpsilonCombiningRule() const { ...@@ -142,18 +142,18 @@ std::string AmoebaReferenceVdwForce::getEpsilonCombiningRule() const {
return _epsilonCombiningRule; return _epsilonCombiningRule;
} }
double AmoebaReferenceVdwForce::arithmeticEpsilonCombiningRule(double epsilonI, double epsilonJ) const { double AmoebaReferenceVdwForce::arithmeticEpsilonCombiningRule(double epsilonI, double epsilonJ, double sigmaI, double sigmaJ) const {
return 0.5*(epsilonI + epsilonJ); return 0.5*(epsilonI + epsilonJ);
} }
double AmoebaReferenceVdwForce::geometricEpsilonCombiningRule(double epsilonI, double epsilonJ) const { double AmoebaReferenceVdwForce::geometricEpsilonCombiningRule(double epsilonI, double epsilonJ, double sigmaI, double sigmaJ) const {
return sqrt(epsilonI*epsilonJ); return sqrt(epsilonI*epsilonJ);
} }
double AmoebaReferenceVdwForce::harmonicEpsilonCombiningRule(double epsilonI, double epsilonJ) const { double AmoebaReferenceVdwForce::harmonicEpsilonCombiningRule(double epsilonI, double epsilonJ, double sigmaI, double sigmaJ) const {
return (epsilonI != 0.0 && epsilonJ != 0.0) ? 2.0*(epsilonI*epsilonJ)/(epsilonI + epsilonJ) : 0.0; return (epsilonI != 0.0 && epsilonJ != 0.0) ? 2.0*(epsilonI*epsilonJ)/(epsilonI + epsilonJ) : 0.0;
} }
double AmoebaReferenceVdwForce::whEpsilonCombiningRule(double sigmaI, double sigmaJ, double epsilonI, double epsilonJ) const { double AmoebaReferenceVdwForce::whEpsilonCombiningRule(double epsilonI, double epsilonJ, double sigmaI, double sigmaJ) const {
double sigmaI3 = sigmaI * sigmaI * sigmaI; double sigmaI3 = sigmaI * sigmaI * sigmaI;
double sigmaJ3 = sigmaJ * sigmaJ * sigmaJ; double sigmaJ3 = sigmaJ * sigmaJ * sigmaJ;
double sigmaI6 = sigmaI3 * sigmaI3; double sigmaI6 = sigmaI3 * sigmaI3;
...@@ -162,7 +162,7 @@ double AmoebaReferenceVdwForce::whEpsilonCombiningRule(double sigmaI, double sig ...@@ -162,7 +162,7 @@ double AmoebaReferenceVdwForce::whEpsilonCombiningRule(double sigmaI, double sig
return (epsilonI != 0.0 && epsilonJ != 0.0) ? 2.0*eps_s*sigmaI3*sigmaJ3/(sigmaI6+sigmaJ6) : 0.0; return (epsilonI != 0.0 && epsilonJ != 0.0) ? 2.0*eps_s*sigmaI3*sigmaJ3/(sigmaI6+sigmaJ6) : 0.0;
} }
double AmoebaReferenceVdwForce::hhgEpsilonCombiningRule(double epsilonI, double epsilonJ) const { double AmoebaReferenceVdwForce::hhgEpsilonCombiningRule(double epsilonI, double epsilonJ, double sigmaI, double sigmaJ) const {
double denominator = sqrt(epsilonI) + sqrt(epsilonJ); double denominator = sqrt(epsilonI) + sqrt(epsilonJ);
return (epsilonI != 0.0 && epsilonJ != 0.0) ? 4.0*(epsilonI*epsilonJ)/(denominator*denominator) : 0.0; return (epsilonI != 0.0 && epsilonJ != 0.0) ? 4.0*(epsilonI*epsilonJ)/(denominator*denominator) : 0.0;
} }
......
...@@ -34,6 +34,7 @@ namespace OpenMM { ...@@ -34,6 +34,7 @@ namespace OpenMM {
class AmoebaReferenceVdwForce; class AmoebaReferenceVdwForce;
typedef double (AmoebaReferenceVdwForce::*CombiningFunction)(double x, double y) const; typedef double (AmoebaReferenceVdwForce::*CombiningFunction)(double x, double y) const;
typedef double (AmoebaReferenceVdwForce::*CombiningFunctionEpsilon)(double x, double y, double z, double w) const;
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
...@@ -248,12 +249,12 @@ private: ...@@ -248,12 +249,12 @@ private:
double geometricSigmaCombiningRule(double sigmaI, double sigmaJ) const; double geometricSigmaCombiningRule(double sigmaI, double sigmaJ) const;
double cubicMeanSigmaCombiningRule(double sigmaI, double sigmaJ) const; double cubicMeanSigmaCombiningRule(double sigmaI, double sigmaJ) const;
CombiningFunction _combineEpsilons; CombiningFunctionEpsilon _combineEpsilons;
double arithmeticEpsilonCombiningRule(double epsilonI, double epsilonJ) const; double arithmeticEpsilonCombiningRule(double epsilonI, double epsilonJ, double sigmaI, double sigmaJ) const;
double geometricEpsilonCombiningRule(double epsilonI, double epsilonJ) const; double geometricEpsilonCombiningRule(double epsilonI, double epsilonJ, double sigmaI, double sigmaJ) const;
double harmonicEpsilonCombiningRule(double epsilonI, double epsilonJ) const; double harmonicEpsilonCombiningRule(double epsilonI, double epsilonJ, double sigmaI, double sigmaJ) const;
double whEpsilonCombiningRule(double sigmaI, double sigmaJ, double epsilonI, double epsilonJ) const; double whEpsilonCombiningRule(double epsilonI, double epsilonJ, double sigmaI, double sigmaJ) const;
double hhgEpsilonCombiningRule(double epsilonI, double epsilonJ) const; double hhgEpsilonCombiningRule(double epsilonI, double epsilonJ, double sigmaI, double sigmaJ) const;
/**--------------------------------------------------------------------------------------- /**---------------------------------------------------------------------------------------
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment