"platforms/cpu/include/CpuNonbondedForceVec4.h" did not exist on "0843c5f34651bf49f418f5336a9b7bafc2b8f89a"
Commit 64493da6 authored by Peter Eastman's avatar Peter Eastman
Browse files

Modified the API for lots of classes so that the number of...

Modified the API for lots of classes so that the number of particles/bonds/etc. need not be specified in the constructor.
parent 29e3fa57
......@@ -52,13 +52,13 @@ const double TOL = 1e-5;
void testSingleBond() {
ReferencePlatform platform;
System system(2, 0);
system.setParticleMass(0, 2.0);
system.setParticleMass(1, 2.0);
System system;
system.addParticle(2.0);
system.addParticle(2.0);
double dt = 0.01;
BrownianIntegrator integrator(0, 0.1, dt);
HarmonicBondForce* forceField = new HarmonicBondForce(1);
forceField->setBondParameters(0, 0, 1, 1.5, 1);
HarmonicBondForce* forceField = new HarmonicBondForce();
forceField->addBond(0, 1, 1.5, 1);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(2);
......@@ -89,14 +89,14 @@ void testTemperature() {
const int numBonds = numParticles-1;
const double temp = 10.0;
ReferencePlatform platform;
System system(numParticles, 0);
System system;
BrownianIntegrator integrator(temp, 2.0, 0.01);
HarmonicBondForce* forceField = new HarmonicBondForce(numBonds);
HarmonicBondForce* forceField = new HarmonicBondForce();
for (int i = 0; i < numParticles; ++i) {
system.setParticleMass(i, 2.0);
system.addParticle(2.0);
}
for (int i = 0; i < numBonds; ++i)
forceField->setBondParameters(i, i, i+1, 1.0, 5.0);
forceField->addBond(i, i+1, 1.0, 5.0);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(numParticles);
......@@ -126,16 +126,16 @@ void testConstraints() {
const int numParticles = 8;
const double temp = 100.0;
ReferencePlatform platform;
System system(numParticles, numParticles-1);
System system;
BrownianIntegrator integrator(temp, 2.0, 0.001);
integrator.setConstraintTolerance(1e-5);
NonbondedForce* forceField = new NonbondedForce();
for (int i = 0; i < numParticles; ++i) {
system.setParticleMass(i, 10.0);
system.addParticle(10.0);
forceField->addParticle((i%2 == 0 ? 0.2 : -0.2), 0.5, 5.0);
}
for (int i = 0; i < numParticles-1; ++i)
system.setConstraintParameters(i, i, i+1, 1.0);
system.addConstraint(i, i+1, 1.0);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(numParticles);
......@@ -167,11 +167,11 @@ void testRandomSeed() {
const double temp = 100.0;
const double collisionFreq = 10.0;
ReferencePlatform platform;
System system(numParticles, 0);
System system;
BrownianIntegrator integrator(temp, 2.0, 0.001);
NonbondedForce* forceField = new NonbondedForce();
for (int i = 0; i < numParticles; ++i) {
system.setParticleMass(i, 2.0);
system.addParticle(2.0);
forceField->addParticle((i%2 == 0 ? 1.0 : -1.0), 1.0, 5.0);
}
system.addForce(forceField);
......
......@@ -64,14 +64,14 @@ void testMotionRemoval() {
const double temp = 100.0;
const double collisionFreq = 10.0;
ReferencePlatform platform;
System system(numParticles, 0);
System system;
VerletIntegrator integrator(0.01);
HarmonicBondForce* bonds = new HarmonicBondForce(1);
bonds->setBondParameters(0, 2, 3, 2.0, 0.5);
HarmonicBondForce* bonds = new HarmonicBondForce();
bonds->addBond(2, 3, 2.0, 0.5);
system.addForce(bonds);
NonbondedForce* nonbonded = new NonbondedForce();
for (int i = 0; i < numParticles; ++i) {
system.setParticleMass(i, i+1);
system.addParticle(i+1);
nonbonded->addParticle((i%2 == 0 ? 1.0 : -1.0), 1.0, 5.0);
}
system.addForce(nonbonded);
......
......@@ -51,7 +51,9 @@ const double TOL = 1e-5;
void testEwald() {
ReferencePlatform platform;
System system(2, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
VerletIntegrator integrator(0.01);
NonbondedForce* nonbonded = new NonbondedForce();
nonbonded->addParticle(1.0, 1, 0);
......
......@@ -52,11 +52,11 @@ const double TOL = 1e-5;
void testSingleParticle() {
ReferencePlatform platform;
System system(1, 0);
system.setParticleMass(0, 2.0);
System system;
system.addParticle(2.0);
LangevinIntegrator integrator(0, 0.1, 0.01);
GBSAOBCForce* forceField = new GBSAOBCForce(1);
forceField->setParticleParameters(0, 0.5, 0.15, 1);
GBSAOBCForce* forceField = new GBSAOBCForce();
forceField->addParticle(0.5, 0.15, 1);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(1);
......@@ -73,13 +73,15 @@ void testSingleParticle() {
void testCutoffAndPeriodic() {
ReferencePlatform platform;
System system(2, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator(0, 0.1, 0.01);
GBSAOBCForce* gbsa = new GBSAOBCForce(2);
GBSAOBCForce* gbsa = new GBSAOBCForce();
NonbondedForce* nonbonded = new NonbondedForce();
gbsa->setParticleParameters(0, -1, 0.15, 1);
gbsa->addParticle(-1, 0.15, 1);
nonbonded->addParticle(-1, 1, 0);
gbsa->setParticleParameters(1, 1, 0.15, 1);
gbsa->addParticle(1, 0.15, 1);
nonbonded->addParticle(1, 1, 0);
const double cutoffDistance = 3.0;
const double boxSize = 10.0;
......@@ -124,11 +126,13 @@ void testCutoffAndPeriodic() {
void testForce() {
ReferencePlatform platform;
const int numParticles = 10;
System system(numParticles, 0);
System system;
LangevinIntegrator integrator(0, 0.1, 0.01);
GBSAOBCForce* forceField = new GBSAOBCForce(numParticles);
for (int i = 0; i < numParticles; ++i)
forceField->setParticleParameters(i, i%2 == 0 ? -1 : 1, 0.15, 1);
GBSAOBCForce* forceField = new GBSAOBCForce();
for (int i = 0; i < numParticles; ++i) {
system.addParticle(1.0);
forceField->addParticle(i%2 == 0 ? -1 : 1, 0.15, 1);
}
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
......
......@@ -54,16 +54,16 @@ const double TOL = 1e-5;
void testSingleParticle() {
ReferencePlatform platform;
System system(1, 0);
system.setParticleMass(0, 2.0);
System system;
system.addParticle(2.0);
LangevinIntegrator integrator(0, 0.1, 0.01);
GBVIForce* forceField = new GBVIForce(1);
GBVIForce* forceField = new GBVIForce();
double charge = 0.0;
double radius = 0.15;
double gamma = 1.0;
forceField->setParticleParameters(0, charge, radius, gamma);
forceField->addParticle(charge, radius, gamma);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
......@@ -143,22 +143,22 @@ void testEnergyEthane() {
ReferencePlatform platform;
const int numParticles = 8;
System system(numParticles, 0);
System system;
LangevinIntegrator integrator(0, 0.1, 0.01);
//void HarmonicBondForce::getBondParameters(int index, int& particle1, int& particle2, double& length, double& k)
double C_HBondDistance = 0.1097;
double C_CBondDistance = 0.1504;
HarmonicBondForce* bonds = new HarmonicBondForce(7);
bonds->setBondParameters(0, 0, 1, C_HBondDistance, 0.0);
bonds->setBondParameters(1, 2, 1, C_HBondDistance, 0.0);
bonds->setBondParameters(2, 3, 1, C_HBondDistance, 0.0);
HarmonicBondForce* bonds = new HarmonicBondForce();
bonds->addBond(0, 1, C_HBondDistance, 0.0);
bonds->addBond(2, 1, C_HBondDistance, 0.0);
bonds->addBond(3, 1, C_HBondDistance, 0.0);
bonds->setBondParameters(3, 1, 4, C_CBondDistance, 0.0);
bonds->addBond(1, 4, C_CBondDistance, 0.0);
bonds->setBondParameters(4, 5, 4, C_HBondDistance, 0.0);
bonds->setBondParameters(5, 6, 4, C_HBondDistance, 0.0);
bonds->setBondParameters(6, 7, 4, C_HBondDistance, 0.0);
bonds->addBond(5, 4, C_HBondDistance, 0.0);
bonds->addBond(6, 4, C_HBondDistance, 0.0);
bonds->addBond(7, 4, C_HBondDistance, 0.0);
system.addForce(bonds);
......@@ -182,20 +182,22 @@ void testEnergyEthane() {
int VI = 1;
if( VI ){
(void) fprintf( stderr, "Applying GB/VI\n" );
GBVIForce* forceField = new GBVIForce(numParticles);
GBVIForce* forceField = new GBVIForce();
for( int i = 0; i < numParticles; i++ ){
forceField->setParticleParameters(i, H_charge, H_radius, H_gamma);
system.addParticle(1.0);
forceField->addParticle( H_charge, H_radius, H_gamma);
}
forceField->setParticleParameters(1, C_charge, C_radius, C_gamma);
forceField->setParticleParameters(4, C_charge, C_radius, C_gamma);
system.addForce(forceField);
} else {
(void) fprintf( stderr, "Applying GBSA OBC\n" );
GBSAOBCForce* forceField = new GBSAOBCForce(numParticles);
GBSAOBCForce* forceField = new GBSAOBCForce();
double H_scale = 0.85;
double C_scale = 0.72;
for( int i = 0; i < numParticles; i++ ){
forceField->setParticleParameters(i, H_charge, H_radius, H_scale );
system.addParticle(1.0);
forceField->addParticle(H_charge, H_radius, H_scale );
}
forceField->setParticleParameters(1, C_charge, C_radius, C_scale);
forceField->setParticleParameters(4, C_charge, C_radius, C_scale);
......@@ -266,13 +268,15 @@ void testEnergyTwoParticle() {
ReferencePlatform platform;
const int numParticles = 2;
System system(numParticles, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator(0, 0.1, 0.01);
//void HarmonicBondForce::getBondParameters(int index, int& particle1, int& particle2, double& length, double& k)
double C_HBondDistance = 3.0;
HarmonicBondForce* bonds = new HarmonicBondForce(1);
bonds->setBondParameters(0, 0, 1, C_HBondDistance, 0.0);
HarmonicBondForce* bonds = new HarmonicBondForce();
bonds->addBond(0, 1, C_HBondDistance, 0.0);
system.addForce(bonds);
double C_radius, C_gamma, C_charge, H_radius, H_gamma, H_charge;
......@@ -298,15 +302,15 @@ void testEnergyTwoParticle() {
int VI = 1;
if( VI ){
(void) fprintf( stderr, "Applying GB/VI\n" );
GBVIForce* forceField = new GBVIForce(numParticles);
forceField->setParticleParameters(0, H_charge, H_radius, H_gamma);
forceField->setParticleParameters(1, C_charge, C_radius, C_gamma);
GBVIForce* forceField = new GBVIForce();
forceField->addParticle(H_charge, H_radius, H_gamma);
forceField->addParticle(C_charge, C_radius, C_gamma);
system.addForce(forceField);
} else {
(void) fprintf( stderr, "Applying GBSA OBC\n" );
GBSAOBCForce* forceField = new GBSAOBCForce(numParticles);
forceField->setParticleParameters(0, H_charge, H_radius, 1.0);
forceField->setParticleParameters(1, C_charge, C_radius, 1.0);
GBSAOBCForce* forceField = new GBSAOBCForce();
forceField->addParticle(H_charge, H_radius, 1.0);
forceField->addParticle(C_charge, C_radius, 1.0);
system.addForce(forceField);
}
......
......@@ -50,11 +50,15 @@ const double TOL = 1e-5;
void testAngles() {
ReferencePlatform platform;
System system(4, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
VerletIntegrator integrator(0.01);
HarmonicAngleForce* forceField = new HarmonicAngleForce(2);
forceField->setAngleParameters(0, 0, 1, 2, PI_M/3, 1.1);
forceField->setAngleParameters(1, 1, 2, 3, PI_M/2, 1.2);
HarmonicAngleForce* forceField = new HarmonicAngleForce();
forceField->addAngle(0, 1, 2, PI_M/3, 1.1);
forceField->addAngle(1, 2, 3, PI_M/2, 1.2);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(4);
......
......@@ -50,11 +50,14 @@ const double TOL = 1e-5;
void testBonds() {
ReferencePlatform platform;
System system(3, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
VerletIntegrator integrator(0.01);
HarmonicBondForce* forceField = new HarmonicBondForce(2);
forceField->setBondParameters(0, 0, 1, 1.5, 0.8);
forceField->setBondParameters(1, 1, 2, 1.2, 0.7);
HarmonicBondForce* forceField = new HarmonicBondForce();
forceField->addBond(0, 1, 1.5, 0.8);
forceField->addBond(1, 2, 1.2, 0.7);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(3);
......
......@@ -48,9 +48,9 @@ const double TOL = 1e-5;
void testCalcKE() {
ReferencePlatform platform;
System system(4, 0);
System system;
for (int i = 0; i < 4; ++i)
system.setParticleMass(i, i+1);
system.addParticle(i+1);
VerletIntegrator integrator(0.01);
OpenMMContext context(system, integrator, platform);
vector<Vec3> velocities(4);
......
......@@ -52,12 +52,12 @@ const double TOL = 1e-5;
void testSingleBond() {
ReferencePlatform platform;
System system(2, 0);
system.setParticleMass(0, 2.0);
system.setParticleMass(1, 2.0);
System system;
system.addParticle(2.0);
system.addParticle(2.0);
LangevinIntegrator integrator(0, 0.1, 0.01);
HarmonicBondForce* forceField = new HarmonicBondForce(1);
forceField->setBondParameters(0, 0, 1, 1.5, 1);
HarmonicBondForce* forceField = new HarmonicBondForce();
forceField->addBond(0, 1, 1.5, 1);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(2);
......@@ -98,11 +98,11 @@ void testTemperature() {
const int numParticles = 8;
const double temp = 100.0;
ReferencePlatform platform;
System system(numParticles, 0);
System system;
LangevinIntegrator integrator(temp, 2.0, 0.01);
NonbondedForce* forceField = new NonbondedForce();
for (int i = 0; i < numParticles; ++i) {
system.setParticleMass(i, 2.0);
system.addParticle(2.0);
forceField->addParticle((i%2 == 0 ? 1.0 : -1.0), 1.0, 5.0);
}
system.addForce(forceField);
......@@ -133,16 +133,16 @@ void testConstraints() {
const int numParticles = 8;
const double temp = 100.0;
ReferencePlatform platform;
System system(numParticles, numParticles-1);
System system;
LangevinIntegrator integrator(temp, 2.0, 0.01);
integrator.setConstraintTolerance(1e-5);
NonbondedForce* forceField = new NonbondedForce();
for (int i = 0; i < numParticles; ++i) {
system.setParticleMass(i, 10.0);
system.addParticle(10.0);
forceField->addParticle((i%2 == 0 ? 0.2 : -0.2), 0.5, 5.0);
}
for (int i = 0; i < numParticles-1; ++i)
system.setConstraintParameters(i, i, i+1, 1.0);
system.addConstraint(i, i+1, 1.0);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(numParticles);
......@@ -174,11 +174,11 @@ void testRandomSeed() {
const double temp = 100.0;
const double collisionFreq = 10.0;
ReferencePlatform platform;
System system(numParticles, 0);
System system;
LangevinIntegrator integrator(temp, 2.0, 0.01);
NonbondedForce* forceField = new NonbondedForce();
for (int i = 0; i < numParticles; ++i) {
system.setParticleMass(i, 2.0);
system.addParticle(2.0);
forceField->addParticle((i%2 == 0 ? 1.0 : -1.0), 1.0, 5.0);
}
system.addForce(forceField);
......
......@@ -51,7 +51,9 @@ const double TOL = 1e-5;
void testCoulomb() {
ReferencePlatform platform;
System system(2, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
VerletIntegrator integrator(0.01);
NonbondedForce* forceField = new NonbondedForce();
forceField->addParticle(0.5, 1, 0);
......@@ -72,7 +74,9 @@ void testCoulomb() {
void testLJ() {
ReferencePlatform platform;
System system(2, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
VerletIntegrator integrator(0.01);
NonbondedForce* forceField = new NonbondedForce();
forceField->addParticle(0, 1.2, 1);
......@@ -95,11 +99,13 @@ void testLJ() {
void testExclusionsAnd14() {
ReferencePlatform platform;
System system(5, 0);
System system;
VerletIntegrator integrator(0.01);
NonbondedForce* nonbonded = new NonbondedForce();
for (int i = 0; i < 5; i++)
for (int i = 0; i < 5; i++) {
system.addParticle(1.0);
nonbonded->addParticle(0, 1.5, 0);
}
vector<pair<int, int> > bonds;
bonds.push_back(pair<int, int>(0, 1));
bonds.push_back(pair<int, int>(1, 2));
......@@ -181,7 +187,10 @@ void testExclusionsAnd14() {
void testCutoff() {
ReferencePlatform platform;
System system(3, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
VerletIntegrator integrator(0.01);
NonbondedForce* forceField = new NonbondedForce();
forceField->addParticle(1.0, 1, 0);
......@@ -214,11 +223,13 @@ void testCutoff() {
void testCutoff14() {
ReferencePlatform platform;
System system(5, 0);
System system;
VerletIntegrator integrator(0.01);
NonbondedForce* nonbonded = new NonbondedForce();
for (int i = 0; i < 5; i++)
for (int i = 0; i < 5; i++) {
system.addParticle(1.0);
nonbonded->addParticle(0, 1.5, 0);
}
nonbonded->setNonbondedMethod(NonbondedForce::CutoffNonPeriodic);
const double cutoff = 3.5;
nonbonded->setCutoffDistance(cutoff);
......@@ -309,7 +320,10 @@ void testCutoff14() {
void testPeriodic() {
ReferencePlatform platform;
System system(3, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
VerletIntegrator integrator(0.01);
NonbondedForce* nonbonded = new NonbondedForce();
nonbonded->addParticle(1.0, 1, 0);
......
......@@ -50,10 +50,14 @@ const double TOL = 1e-5;
void testPeriodicTorsions() {
ReferencePlatform platform;
System system(4, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
VerletIntegrator integrator(0.01);
PeriodicTorsionForce* forceField = new PeriodicTorsionForce(1);
forceField->setTorsionParameters(0, 0, 1, 2, 3, 2, PI_M/3, 1.1);
PeriodicTorsionForce* forceField = new PeriodicTorsionForce();
forceField->addTorsion(0, 1, 2, 3, 2, PI_M/3, 1.1);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(4);
......
......@@ -50,10 +50,14 @@ const double TOL = 1e-5;
void testRBTorsions() {
ReferencePlatform platform;
System system(4, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
VerletIntegrator integrator(0.01);
RBTorsionForce* forceField = new RBTorsionForce(1);
forceField->setTorsionParameters(0, 0, 1, 2, 3, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6);
RBTorsionForce* forceField = new RBTorsionForce();
forceField->addTorsion(0, 1, 2, 3, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(4);
......
......@@ -52,12 +52,12 @@ const double TOL = 1e-5;
void testSingleBond() {
ReferencePlatform platform;
System system(2, 0);
system.setParticleMass(0, 2.0);
system.setParticleMass(1, 2.0);
System system;
system.addParticle(2.0);
system.addParticle(2.0);
VerletIntegrator integrator(0.01);
HarmonicBondForce* forceField = new HarmonicBondForce(1);
forceField->setBondParameters(0, 0, 1, 1.5, 1);
HarmonicBondForce* forceField = new HarmonicBondForce();
forceField->addBond(0, 1, 1.5, 1);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(2);
......@@ -89,16 +89,16 @@ void testConstraints() {
const int numParticles = 8;
const double temp = 100.0;
ReferencePlatform platform;
System system(numParticles, numParticles-1);
System system;
VerletIntegrator integrator(0.002);
integrator.setConstraintTolerance(1e-5);
NonbondedForce* forceField = new NonbondedForce();
for (int i = 0; i < numParticles; ++i) {
system.setParticleMass(i, 10.0);
system.addParticle(10.0);
forceField->addParticle((i%2 == 0 ? 0.2 : -0.2), 0.5, 5.0);
}
for (int i = 0; i < numParticles-1; ++i)
system.setConstraintParameters(i, i, i+1, 1.0);
system.addConstraint(i, i+1, 1.0);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(numParticles);
......
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