Commit 93900ab2 authored by Peter Eastman's avatar Peter Eastman
Browse files

Updated Amoeba plugin based on refactoring of reference platform

parent c27f5d1f
......@@ -25,7 +25,7 @@
#ifndef __AmoebaReferenceTorsionTorsionForce_H__
#define __AmoebaReferenceTorsionTorsionForce_H__
#include "SimTKUtilities/SimTKOpenMMRealType.h"
#include "SimTKUtilities/RealVec.h"
#include <vector>
// ---------------------------------------------------------------------------------------
......@@ -71,7 +71,7 @@ public:
--------------------------------------------------------------------------------------- */
RealOpenMM calculateForceAndEnergy( int numTorsionTorsions, RealOpenMM** posData,
RealOpenMM calculateForceAndEnergy( int numTorsionTorsions, std::vector<OpenMM::RealVec>& posData,
const std::vector<int>& particle1,
const std::vector<int>& particle2,
const std::vector<int>& particle3,
......@@ -80,7 +80,7 @@ public:
const std::vector<int>& chiralCheckAtom,
const std::vector<int>& gridIndices,
const std::vector< std::vector< std::vector< std::vector<RealOpenMM> > > >& torsionTorsionGrids,
RealOpenMM** forceData ) const;
std::vector<OpenMM::RealVec>& forceData ) const;
private:
......@@ -185,8 +185,8 @@ private:
--------------------------------------------------------------------------------------- */
int checkTorsionSign( const RealOpenMM* positionAtomA, const RealOpenMM* positionAtomB,
const RealOpenMM* positionAtomC, const RealOpenMM* positionAtomD ) const;
int checkTorsionSign( const OpenMM::RealVec& positionAtomA, const OpenMM::RealVec& positionAtomB,
const OpenMM::RealVec& positionAtomC, const OpenMM::RealVec& positionAtomD ) const;
/**---------------------------------------------------------------------------------------
......@@ -206,11 +206,11 @@ private:
--------------------------------------------------------------------------------------- */
RealOpenMM calculateTorsionTorsionIxn( const RealOpenMM* positionAtomA, const RealOpenMM* positionAtomB,
const RealOpenMM* positionAtomC, const RealOpenMM* positionAtomD,
const RealOpenMM* positionAtomE, const RealOpenMM* chiralCheckAtom,
RealOpenMM calculateTorsionTorsionIxn( const OpenMM::RealVec& positionAtomA, const OpenMM::RealVec& positionAtomB,
const OpenMM::RealVec& positionAtomC, const OpenMM::RealVec& positionAtomD,
const OpenMM::RealVec& positionAtomE, const OpenMM::RealVec* chiralCheckAtom,
const std::vector< std::vector< std::vector<RealOpenMM> > >& grid,
RealOpenMM** forces ) const;
OpenMM::RealVec* forces ) const;
};
......
......@@ -25,6 +25,9 @@
#include "AmoebaReferenceUreyBradleyForce.h"
#include "AmoebaReferenceForce.h"
using std::vector;
using OpenMM::RealVec;
/**---------------------------------------------------------------------------------------
Calculate Amoeba UB ixn (force and energy)
......@@ -41,10 +44,10 @@
--------------------------------------------------------------------------------------- */
RealOpenMM AmoebaReferenceUreyBradleyForce::calculateUreyBradleyIxn( const RealOpenMM* positionAtomA, const RealOpenMM* positionAtomB,
RealOpenMM AmoebaReferenceUreyBradleyForce::calculateUreyBradleyIxn( const RealVec& positionAtomA, const RealVec& positionAtomB,
RealOpenMM idealLength, RealOpenMM kForceConstant,
RealOpenMM cubicK, RealOpenMM quarticK,
RealOpenMM** forces ) const {
RealVec* forces ) const {
// ---------------------------------------------------------------------------------------
......@@ -85,21 +88,21 @@ RealOpenMM AmoebaReferenceUreyBradleyForce::calculateUreyBradleyIxn( const RealO
}
RealOpenMM AmoebaReferenceUreyBradleyForce::calculateForceAndEnergy( int numIxns,
RealOpenMM** particlePositions,
vector<RealVec>& particlePositions,
const std::vector<int>& particle1,
const std::vector<int>& particle2,
const std::vector<RealOpenMM>& length,
const std::vector<RealOpenMM>& kQuadratic,
RealOpenMM globalUreyBradleyCubic,
RealOpenMM globalUreyBradleyQuartic,
RealOpenMM** forceData ) const {
vector<RealVec>& forceData ) const {
RealOpenMM energy = 0.0;
for( int ii = 0; ii < numIxns; ii++ ){
int particle1Index = particle1[ii];
int particle2Index = particle2[ii];
RealOpenMM idealLength = length[ii];
RealOpenMM kForceConstant = kQuadratic[ii];
RealOpenMM* forces[2];
RealVec forces[2];
forces[0] = forceData[particle1Index];
forces[1] = forceData[particle2Index];
energy += calculateUreyBradleyIxn( particlePositions[particle1Index], particlePositions[particle2Index],
......
......@@ -25,7 +25,7 @@
#ifndef __AmoebaReferenceUreyBradleyForce_H__
#define __AmoebaReferenceUreyBradleyForce_H__
#include "SimTKUtilities/SimTKOpenMMRealType.h"
#include "SimTKUtilities/RealVec.h"
#include <vector>
// ---------------------------------------------------------------------------------------
......@@ -68,13 +68,13 @@ public:
--------------------------------------------------------------------------------------- */
RealOpenMM calculateForceAndEnergy( int numIxns, RealOpenMM** posData,
RealOpenMM calculateForceAndEnergy( int numIxns, std::vector<OpenMM::RealVec>& posData,
const std::vector<int>& particle1,
const std::vector<int>& particle2,
const std::vector<RealOpenMM>& length,
const std::vector<RealOpenMM>& kForce,
RealOpenMM cubic, RealOpenMM quartic,
RealOpenMM** forceData ) const;
std::vector<OpenMM::RealVec>& forceData ) const;
private:
......@@ -94,10 +94,10 @@ private:
--------------------------------------------------------------------------------------- */
RealOpenMM calculateUreyBradleyIxn( const RealOpenMM* positionAtomA, const RealOpenMM* positionAtomB,
RealOpenMM calculateUreyBradleyIxn( const OpenMM::RealVec& positionAtomA, const OpenMM::RealVec& positionAtomB,
RealOpenMM idealLength, RealOpenMM kForce,
RealOpenMM cubic, RealOpenMM quartic,
RealOpenMM** forces ) const;
OpenMM::RealVec* forces ) const;
};
......
......@@ -27,6 +27,9 @@
#include <algorithm>
#include <cctype>
using std::vector;
using OpenMM::RealVec;
AmoebaReferenceVdwForce::AmoebaReferenceVdwForce( ) : _nonbondedMethod(NoCutoff) {
setSigmaCombiningRule( "ARITHMETIC" );
......@@ -127,7 +130,7 @@ RealOpenMM AmoebaReferenceVdwForce::hhgEpsilonCombiningRule( RealOpenMM epsilonI
void AmoebaReferenceVdwForce::addReducedForce( unsigned int particleI, unsigned int particleIV,
RealOpenMM reduction, RealOpenMM sign,
Vec3& force, RealOpenMM** forces ) const {
Vec3& force, vector<RealVec>& forces ) const {
// ---------------------------------------------------------------------------------------
......@@ -197,14 +200,14 @@ RealOpenMM AmoebaReferenceVdwForce::calculatePairIxn( RealOpenMM combindedSigma,
}
RealOpenMM AmoebaReferenceVdwForce::calculateNoCutoffForceAndEnergy( int numParticles,
RealOpenMM** const particlePositions,
const vector<RealVec>& particlePositions,
const std::vector<int>& indexIVs,
const std::vector<int>& indexClasses,
const std::vector<RealOpenMM>& sigmas,
const std::vector<RealOpenMM>& epsilons,
const std::vector<RealOpenMM>& reductions,
const std::vector< std::vector<int> >& allExclusions,
RealOpenMM** forces ) const {
vector<RealVec>& forces ) const {
// ---------------------------------------------------------------------------------------
......@@ -282,14 +285,14 @@ RealOpenMM AmoebaReferenceVdwForce::calculateNoCutoffForceAndEnergy( int numPart
}
RealOpenMM AmoebaReferenceVdwForce::calculateForceAndEnergy( int numParticles,
RealOpenMM** const particlePositions,
const vector<RealVec>& particlePositions,
const std::vector<int>& indexIVs,
const std::vector<int>& indexClasses,
const std::vector<RealOpenMM>& sigmas,
const std::vector<RealOpenMM>& epsilons,
const std::vector<RealOpenMM>& reductions,
const std::vector< std::vector<int> >& allExclusions,
RealOpenMM** forces ) const {
vector<RealVec>& forces ) const {
if( getNonbondedMethod() == NoCutoff || 1 ){
......
......@@ -25,7 +25,7 @@
#ifndef __AmoebaReferenceVdwForce_H__
#define __AmoebaReferenceVdwForce_H__
#include "SimTKUtilities/SimTKOpenMMRealType.h"
#include "SimTKUtilities/RealVec.h"
#include "openmm/Vec3.h"
#include <string>
#include <vector>
......@@ -168,13 +168,13 @@ public:
--------------------------------------------------------------------------------------- */
RealOpenMM calculateForceAndEnergy( int numParticles, RealOpenMM** const particlePositions,
RealOpenMM calculateForceAndEnergy( int numParticles, const std::vector<OpenMM::RealVec>& particlePositions,
const std::vector<int>& indexIVs,
const std::vector<int>& indexClasses,
const std::vector<RealOpenMM>& sigmas, const std::vector<RealOpenMM>& epsilons,
const std::vector<RealOpenMM>& reductions,
const std::vector< std::vector<int> >& vdwExclusions,
RealOpenMM** forces ) const;
std::vector<OpenMM::RealVec>& forces ) const;
private:
......@@ -208,7 +208,7 @@ private:
void addReducedForce( unsigned int particleI, unsigned int particleIV,
RealOpenMM reduction, RealOpenMM sign,
Vec3& force, RealOpenMM** forces ) const;
Vec3& force, std::vector<OpenMM::RealVec>& forces ) const;
/**---------------------------------------------------------------------------------------
......@@ -246,13 +246,13 @@ private:
--------------------------------------------------------------------------------------- */
RealOpenMM calculateNoCutoffForceAndEnergy( int numParticles, RealOpenMM** const particlePositions,
RealOpenMM calculateNoCutoffForceAndEnergy( int numParticles, const std::vector<OpenMM::RealVec>& particlePositions,
const std::vector<int>& indexIVs,
const std::vector<int>& indexClasses,
const std::vector<RealOpenMM>& sigmas, const std::vector<RealOpenMM>& epsilons,
const std::vector<RealOpenMM>& reductions,
const std::vector< std::vector<int> >& vdwExclusions,
RealOpenMM** forces ) const;
std::vector<OpenMM::RealVec>& forces ) const;
};
......
......@@ -25,6 +25,9 @@
#include "AmoebaReferenceForce.h"
#include "AmoebaReferenceWcaDispersionForce.h"
using std::vector;
using OpenMM::RealVec;
AmoebaReferenceWcaDispersionForce::AmoebaReferenceWcaDispersionForce( RealOpenMM epso, RealOpenMM epsh, RealOpenMM rmino, RealOpenMM rminh,
RealOpenMM awater, RealOpenMM shctd, RealOpenMM dispoff, RealOpenMM slevy ) :
_epso(epso), _epsh(epsh), _rmino(rmino), _rminh(rminh), _awater(awater), _shctd(shctd), _dispoff(dispoff), _slevy(slevy) {
......@@ -32,8 +35,8 @@ AmoebaReferenceWcaDispersionForce::AmoebaReferenceWcaDispersionForce( RealOpenMM
RealOpenMM AmoebaReferenceWcaDispersionForce::calculatePairIxn( RealOpenMM radiusI, RealOpenMM radiusK,
const RealOpenMM* particleIPosition,
const RealOpenMM* particleJPosition,
const RealVec& particleIPosition,
const RealVec& particleJPosition,
const RealOpenMM* const intermediateValues,
Vec3& force ) const {
......@@ -252,11 +255,11 @@ RealOpenMM AmoebaReferenceWcaDispersionForce::calculatePairIxn( RealOpenMM radiu
}
RealOpenMM AmoebaReferenceWcaDispersionForce::calculateForceAndEnergy( int numParticles,
RealOpenMM** const particlePositions,
const vector<RealVec>& particlePositions,
const std::vector<RealOpenMM>& radii,
const std::vector<RealOpenMM>& epsilons,
RealOpenMM totalMaximumDispersionEnergy,
RealOpenMM** forces ) const {
vector<RealVec>& forces ) const {
// ---------------------------------------------------------------------------------------
......
......@@ -25,7 +25,7 @@
#ifndef __AmoebaReferenceWcaDispersionForce_H__
#define __AmoebaReferenceWcaDispersionForce_H__
#include "SimTKUtilities/SimTKOpenMMRealType.h"
#include "SimTKUtilities/RealVec.h"
#include "openmm/Vec3.h"
#include <string>
#include <vector>
......@@ -79,10 +79,10 @@ public:
--------------------------------------------------------------------------------------- */
RealOpenMM calculateForceAndEnergy( int numParticles, RealOpenMM** const particlePositions,
RealOpenMM calculateForceAndEnergy( int numParticles, const std::vector<OpenMM::RealVec>& particlePositions,
const std::vector<RealOpenMM>& radii,
const std::vector<RealOpenMM>& epsilons,
RealOpenMM totalMaximumDispersionEnergy, RealOpenMM** forces ) const;
RealOpenMM totalMaximumDispersionEnergy, std::vector<OpenMM::RealVec>& forces ) const;
private:
RealOpenMM _epso;
......@@ -112,7 +112,7 @@ private:
--------------------------------------------------------------------------------------- */
RealOpenMM calculatePairIxn( RealOpenMM radiusI, RealOpenMM radiusJ,
const RealOpenMM* particleIPosition, const RealOpenMM* particleJPosition,
const OpenMM::RealVec& particleIPosition, const OpenMM::RealVec& particleJPosition,
const RealOpenMM* const intermediateValues,
Vec3& force ) 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