Commit 9701ed09 authored by Peter Eastman's avatar Peter Eastman
Browse files

Fixed problems related to RMSDForce

parent f08c1426
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
#include "openmm/OpenMMException.h" #include "openmm/OpenMMException.h"
#include "openmm/PeriodicTorsionForce.h" #include "openmm/PeriodicTorsionForce.h"
#include "openmm/RBTorsionForce.h" #include "openmm/RBTorsionForce.h"
#include "openmm/RMSDForce.h"
#include "openmm/State.h" #include "openmm/State.h"
#include "openmm/System.h" #include "openmm/System.h"
#include "openmm/TabulatedFunction.h" #include "openmm/TabulatedFunction.h"
......
...@@ -78,9 +78,9 @@ __kernel void computeRMSDForces(int numParticles, __global const real4* restrict ...@@ -78,9 +78,9 @@ __kernel void computeRMSDForces(int numParticles, __global const real4* restrict
int index = particles[i]; int index = particles[i];
real3 pos = posq[index].xyz - center; real3 pos = posq[index].xyz - center;
real3 refPos = referencePos[index].xyz; real3 refPos = referencePos[index].xyz;
real3 rotatedRef = (real3) (buffer[0]*refPos[0] + buffer[3]*refPos[1] + buffer[6]*refPos[2], real3 rotatedRef = (real3) (buffer[0]*refPos.x + buffer[3]*refPos.y + buffer[6]*refPos.z,
buffer[1]*refPos[0] + buffer[4]*refPos[1] + buffer[7]*refPos[2], buffer[1]*refPos.x + buffer[4]*refPos.y + buffer[7]*refPos.z,
buffer[2]*refPos[0] + buffer[5]*refPos[1] + buffer[8]*refPos[2]); buffer[2]*refPos.x + buffer[5]*refPos.y + buffer[8]*refPos.z);
forceBuffers[index].xyz -= (pos-rotatedRef)*scale; forceBuffers[index].xyz -= (pos-rotatedRef)*scale;
} }
} }
...@@ -453,5 +453,7 @@ UNITS = { ...@@ -453,5 +453,7 @@ UNITS = {
("DrudeSCFIntegrator", "getMinimizationErrorTolerance") : ("unit.kilojoules_per_mole/unit.nanometer", ()), ("DrudeSCFIntegrator", "getMinimizationErrorTolerance") : ("unit.kilojoules_per_mole/unit.nanometer", ()),
("RPMDIntegrator", "getContractions") : (None, ()), ("RPMDIntegrator", "getContractions") : (None, ()),
("RPMDIntegrator", "getTotalEnergy") : ("unit.kilojoules_per_mole", ()), ("RPMDIntegrator", "getTotalEnergy") : ("unit.kilojoules_per_mole", ()),
("RMSDForce", "getReferencePositions") : ("unit.nanometer", ()),
("RMSDForce", "getParticles") : (None, ()),
} }
...@@ -415,11 +415,14 @@ int Py_SequenceToVecVecVecDouble(PyObject* obj, std::vector<std::vector<std::vec ...@@ -415,11 +415,14 @@ int Py_SequenceToVecVecVecDouble(PyObject* obj, std::vector<std::vector<std::vec
$1 = &v; $1 = &v;
} }
%typemap(typecheck, precedence=SWIG_TYPECHECK_DOUBLE_ARRAY, fragment="Py_SequenceToVecVec3") const std::vector<Vec3>& { %typemap(typecheck, precedence=SWIG_TYPECHECK_DOUBLE_ARRAY, fragment="Py_SequenceToVecVec3") const std::vector<Vec3>& {
std::vector<double> v; std::vector<Vec3> v;
int res=0; int res=0;
res = Py_SequenceToVecVec3($input, v); res = Py_SequenceToVecVec3($input, v);
$1 = SWIG_IsOK(res); $1 = SWIG_IsOK(res);
} }
%typemap(out) const std::vector<Vec3>& {
$result = copyVVec3ToList(*$1);
}
// typemap for const vector<double> // typemap for const vector<double>
......
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