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
......@@ -68,7 +68,9 @@ void testBrookCoulomb( FILE* log ){
}
BrookPlatform platform( 32, "cal", log );
System system( numberOfParticles, 0 );
System system;
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator( 0, 0.1, 0.01 );
// int index, double charge, double radius, double depth
......@@ -136,7 +138,9 @@ void testBrookLJ( FILE* log ){
BrookPlatform platform( 32, "cal", log );
// ReferencePlatform platform;
System system( numberOfParticles, 0 );
System system;
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator( 0, 0.1, 0.01 );
// int index, double charge, double radius, double depth
......@@ -203,14 +207,16 @@ void testBrookExclusionsAnd14( FILE* log ){
BrookPlatform platform( 32, "cpu", log );
//ReferencePlatform platform;
System system( numberOfParticles, 0 );
System system;
LangevinIntegrator integrator( 0, 0.1, 0.01 );
// int index, double charge, double radius, double depth
NonbondedForce* nonbonded = new NonbondedForce();
for (int i = 0; i < numberOfParticles; i++)
for (int i = 0; i < numberOfParticles; 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));
......
......@@ -68,15 +68,19 @@ void testBrookPeriodicTorsions( FILE* log ){
}
BrookPlatform platform( 32, "cal", log );
System system( numberOfParticles, 0 );
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator( 0, 0.1, 0.01 );
// int numParticles, int numBonds, int numAngles, int numPeriodicTorsions, int numRBTorsions
PeriodicTorsionForce* forceField = new PeriodicTorsionForce( 1 );
PeriodicTorsionForce* forceField = new PeriodicTorsionForce();
// int index, int atom1, int atom2, int atom3, double angle, double k
forceField->setTorsionParameters(0, 0, 1, 2, 3, 2, PI_M/3, 1.1);
forceField->addTorsion(0, 1, 2, 3, 2, PI_M/3, 1.1);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
......
......@@ -69,11 +69,15 @@ void testBrookRBTorsions( FILE* log ){
BrookPlatform platform( 32, "cal", log );
//ReferencePlatform platform;
System system( numberOfParticles, 0 );
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator( 0, 0.1, 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);
......
......@@ -73,14 +73,14 @@ void testVerletSingleBond( FILE* log ){
BrookPlatform platform( 32, "cal", log );
System system( numberOfParticles, 0 );
system.setParticleMass(0, 2.0);
system.setParticleMass(1, 2.0);
System system;
system.addParticle(2.0);
system.addParticle(2.0);
VerletIntegrator integrator(0.001);
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);
// CMMotionRemover* remover = new CMMotionRemover();
......@@ -180,16 +180,16 @@ void testVerletConstraints( FILE* log ){
//ReferencePlatform platform;
BrookPlatform platform( 32, "cal", log );
System system(numParticles, numConstraints);
System system;
VerletIntegrator integrator(0.001);
integrator.setConstraintTolerance(1e-5);
NonbondedForce* forceField = new NonbondedForce();
for (int i = 0; i < numParticles; ++i) {
system.setParticleMass(i, mass );
system.addParticle(mass);
forceField->addParticle((i%2 == 0 ? 0.2 : -0.2), 0.5, 5.0);
}
for (int i = 0; i < numConstraints; ++i){
system.setConstraintParameters(i, 2*i, 2*i+1, 1.0);
system.addConstraint(2*i, 2*i+1, 1.0);
}
system.addForce(forceField);
......
......@@ -154,13 +154,15 @@ static OpenMMContext* testObcForceSetup( int numParticles, int brookContext, FIL
platform = new ReferencePlatform();
}
System* system = new System( numParticles, 0 );
System* system = new System();
for (int i = 0; i < numParticles; i++)
system.addParticle(1.0);
LangevinIntegrator* integrator = new LangevinIntegrator(0, 0.1, 0.01);
GBSAOBCForce* forceField = new GBSAOBCForce(numParticles);
GBSAOBCForce* forceField = new GBSAOBCForce();
for (int i = 0; i < numParticles; ++i){
// charge radius scalingFactor
forceField->setParticleParameters(i, i%2 == 0 ? -1 : 1, 0.15, 1);
forceField->addParticle(i%2 == 0 ? -1 : 1, 0.15, 1);
//forceField->setParticleParameters(i, i%2 == 0 ? -1 : 1, 1.5, 1);
}
system->addForce(forceField);
......@@ -280,8 +282,10 @@ static OpenMMContext* testObcForceFileSetup( std::string fileName, int brookCont
*numParticles = numberOfParticles;
lineCount++;
System* system = new System( *numParticles, 0 );
GBSAOBCForce* forceField = new GBSAOBCForce(numberOfParticles);
System* system = new System();
for (int i = 0; i < numberOfParticles; i++)
system.addParticle(1.0);
GBSAOBCForce* forceField = new GBSAOBCForce();
vector<Vec3> positions(numberOfParticles);
int index = 0;
......@@ -309,7 +313,7 @@ static OpenMMContext* testObcForceFileSetup( std::string fileName, int brookCont
positions[index++] = Vec3( coordX, coordY, coordZ );
// charge radius scalingFactor
forceField->setParticleParameters( i, charge, radius, scalingFactor );
forceField->addParticle( charge, radius, scalingFactor );
if( log ){
(void) fprintf( log, "%d [%.6f %.6f %.6f] q=%.6f rad=%.6f scl=%.6f bR=%.6f\n", i,
......@@ -431,11 +435,11 @@ void testObcSingleParticle( FILE* log ){
BrookPlatform platform( 32, "cal", log );
//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);
......@@ -468,11 +472,13 @@ void testObcEConsistentForce( FILE* log ){
//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);
......
......@@ -53,11 +53,11 @@ void testTemperature() {
const double temp = 100.0;
const double collisionFreq = 10.0;
CudaPlatform platform;
System system(numParticles, 0);
System system;
VerletIntegrator integrator(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);
......@@ -91,11 +91,11 @@ void testRandomSeed() {
const double temp = 100.0;
const double collisionFreq = 10.0;
CudaPlatform platform;
System system(numParticles, 0);
System system;
VerletIntegrator integrator(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);
......
......@@ -55,13 +55,13 @@ const double TOL = 1e-5;
void testSingleBond() {
CudaPlatform 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);
......@@ -92,13 +92,13 @@ void testTemperature() {
const int numBonds = numParticles-1;
const double temp = 10.0;
CudaPlatform 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);
......@@ -129,19 +129,19 @@ void testConstraints() {
const int numConstraints = 5;
const double temp = 20.0;
CudaPlatform platform;
System system(numParticles, numConstraints);
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);
}
system.setConstraintParameters(0, 0, 1, 1.0);
system.setConstraintParameters(1, 1, 2, 1.0);
system.setConstraintParameters(2, 2, 3, 1.0);
system.setConstraintParameters(3, 4, 5, 1.0);
system.setConstraintParameters(4, 6, 7, 1.0);
system.addConstraint(0, 1, 1.0);
system.addConstraint(1, 2, 1.0);
system.addConstraint(2, 3, 1.0);
system.addConstraint(4, 5, 1.0);
system.addConstraint(6, 7, 1.0);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(numParticles);
......@@ -176,11 +176,11 @@ void testRandomSeed() {
const double temp = 100.0;
const double collisionFreq = 10.0;
CudaPlatform 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);
......
......@@ -63,13 +63,13 @@ Vec3 calcCM(const vector<Vec3>& values, System& system) {
void testMotionRemoval(Integrator& integrator) {
const int numParticles = 8;
CudaPlatform platform;
System system(numParticles, 0);
HarmonicBondForce* bonds = new HarmonicBondForce(1);
bonds->setBondParameters(0, 2, 3, 2.0, 0.5);
System system;
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);
......
......@@ -56,7 +56,9 @@ const double TOL = 1e-5;
void testEwald() {
CudaPlatform 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);
......@@ -85,10 +87,13 @@ void testEwald() {
void testPeriodic() {
CudaPlatform platform;
System system(3, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator(0.0, 0.1, 0.01);
HarmonicBondForce* bonds = new HarmonicBondForce(1);
bonds->setBondParameters(0, 0, 1, 1, 0);
HarmonicBondForce* bonds = new HarmonicBondForce();
bonds->addBond(0, 1, 1, 0);
system.addForce(bonds);
NonbondedForce* nonbonded = new NonbondedForce();
nonbonded->addParticle(1.0, 1, 0);
......
......@@ -53,12 +53,12 @@ const double TOL = 1e-5;
void testSingleParticle() {
CudaPlatform platform;
System system(1, 0);
system.setParticleMass(0, 2.0);
System system;
system.addParticle(2.0);
LangevinIntegrator integrator(0, 0.1, 0.01);
GBSAOBCForce* gbsa = new GBSAOBCForce(1);
GBSAOBCForce* gbsa = new GBSAOBCForce();
NonbondedForce* nonbonded = new NonbondedForce();
gbsa->setParticleParameters(0, 0.5, 0.15, 1);
gbsa->addParticle( 0.5, 0.15, 1);
nonbonded->addParticle(0.5, 1, 0);
system.addForce(gbsa);
system.addForce(nonbonded);
......@@ -77,13 +77,15 @@ void testSingleParticle() {
void testCutoffAndPeriodic() {
CudaPlatform cuda;
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;
......@@ -128,13 +130,14 @@ void testCutoffAndPeriodic() {
void testForce(int numParticles, NonbondedForce::NonbondedMethod method) {
CudaPlatform cuda;
ReferencePlatform reference;
System system(numParticles, 0);
System system;
LangevinIntegrator integrator(0, 0.1, 0.01);
GBSAOBCForce* gbsa = new GBSAOBCForce(numParticles);
GBSAOBCForce* gbsa = new GBSAOBCForce();
NonbondedForce* nonbonded = new NonbondedForce();
for (int i = 0; i < numParticles; ++i) {
system.addParticle(1.0);
double charge = i%2 == 0 ? -1 : 1;
gbsa->setParticleParameters(i, charge, 0.15, 1);
gbsa->addParticle(charge, 0.15, 1);
nonbonded->addParticle(charge, 1, 0);
}
nonbonded->setNonbondedMethod(method);
......
......@@ -50,11 +50,15 @@ const double TOL = 1e-5;
void testAngles() {
CudaPlatform platform;
System system(4, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator(0.0, 0.1, 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() {
CudaPlatform platform;
System system(3, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator(0.0, 0.1, 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);
......
......@@ -52,12 +52,12 @@ const double TOL = 1e-5;
void testSingleBond() {
CudaPlatform 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;
CudaPlatform 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);
......@@ -134,19 +134,19 @@ void testConstraints() {
const int numConstraints = 5;
const double temp = 100.0;
CudaPlatform platform;
System system(numParticles, numConstraints);
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);
}
system.setConstraintParameters(0, 0, 1, 1.0);
system.setConstraintParameters(1, 1, 2, 1.0);
system.setConstraintParameters(2, 2, 3, 1.0);
system.setConstraintParameters(3, 4, 5, 1.0);
system.setConstraintParameters(4, 6, 7, 1.0);
system.addConstraint(0, 1, 1.0);
system.addConstraint(1, 2, 1.0);
system.addConstraint(2, 3, 1.0);
system.addConstraint(4, 5, 1.0);
system.addConstraint(6, 7, 1.0);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(numParticles);
......@@ -181,11 +181,11 @@ void testRandomSeed() {
const double temp = 100.0;
const double collisionFreq = 10.0;
CudaPlatform 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);
......
......@@ -56,7 +56,9 @@ const double TOL = 1e-5;
void testCoulomb() {
CudaPlatform platform;
System system(2, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator(0.0, 0.1, 0.01);
NonbondedForce* forceField = new NonbondedForce();
forceField->addParticle(0.5, 1, 0);
......@@ -77,7 +79,9 @@ void testCoulomb() {
void testLJ() {
CudaPlatform platform;
System system(2, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator(0.0, 0.1, 0.01);
NonbondedForce* forceField = new NonbondedForce();
forceField->addParticle(0, 1.2, 1);
......@@ -100,11 +104,13 @@ void testLJ() {
void testExclusionsAnd14() {
CudaPlatform platform;
System system(5, 0);
System system;
LangevinIntegrator integrator(0.0, 0.1, 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));
......@@ -185,7 +191,10 @@ void testExclusionsAnd14() {
void testCutoff() {
CudaPlatform platform;
System system(3, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator(0.0, 0.1, 0.01);
NonbondedForce* forceField = new NonbondedForce();
forceField->addParticle(1.0, 1, 0);
......@@ -218,12 +227,14 @@ void testCutoff() {
void testCutoff14() {
CudaPlatform platform;
System system(5, 0);
System system;
LangevinIntegrator integrator(0.0, 0.1, 0.01);
NonbondedForce* nonbonded = new NonbondedForce();
nonbonded->setNonbondedMethod(NonbondedForce::CutoffNonPeriodic);
for (int i = 0; i < 5; ++i)
for (int i = 0; i < 5; ++i) {
system.addParticle(1.0);
nonbonded->addParticle(0, 1.5, 0);
}
const double cutoff = 3.5;
nonbonded->setCutoffDistance(cutoff);
vector<pair<int, int> > bonds;
......@@ -313,7 +324,10 @@ void testCutoff14() {
void testPeriodic() {
CudaPlatform platform;
System system(3, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator(0.0, 0.1, 0.01);
NonbondedForce* nonbonded = new NonbondedForce();
nonbonded->addParticle(1.0, 1, 0);
......@@ -351,10 +365,12 @@ void testLargeSystem() {
const double tol = 1e-3;
CudaPlatform cuda;
ReferencePlatform reference;
System system(numParticles, 0);
System system;
for (int i = 0; i < numParticles; i++)
system.addParticle(1.0);
VerletIntegrator integrator(0.01);
NonbondedForce* nonbonded = new NonbondedForce();
HarmonicBondForce* bonds = new HarmonicBondForce(numMolecules);
HarmonicBondForce* bonds = new HarmonicBondForce();
vector<Vec3> positions(numParticles);
vector<Vec3> velocities(numParticles);
init_gen_rand(0);
......@@ -371,7 +387,7 @@ void testLargeSystem() {
positions[2*i+1] = Vec3(positions[2*i][0]+1.0, positions[2*i][1], positions[2*i][2]);
velocities[2*i] = Vec3(genrand_real2(), genrand_real2(), genrand_real2());
velocities[2*i+1] = Vec3(genrand_real2(), genrand_real2(), genrand_real2());
bonds->setBondParameters(i, 2*i, 2*i+1, 1.0, 0.1);
bonds->addBond(2*i, 2*i+1, 1.0, 0.1);
}
// Try with cutoffs but not periodic boundary conditions, and make sure the Cuda and Reference
......@@ -423,12 +439,13 @@ void testBlockInteractions(bool periodic) {
const double cutoff = 1.0;
const double boxSize = (periodic ? 5.1 : 1.1);
CudaPlatform cuda;
System system(numParticles, 0);
System system;
VerletIntegrator integrator(0.01);
NonbondedForce* nonbonded = new NonbondedForce();
vector<Vec3> positions(numParticles);
init_gen_rand(0);
for (int i = 0; i < numParticles; i++) {
system.addParticle(1.0);
nonbonded->addParticle(1.0, 0.2, 0.2);
positions[i] = Vec3(boxSize*(3*genrand_real2()-1), boxSize*(3*genrand_real2()-1), boxSize*(3*genrand_real2()-1));
}
......
......@@ -50,10 +50,14 @@ const double TOL = 1e-5;
void testPeriodicTorsions() {
CudaPlatform platform;
System system(4, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator(0.0, 0.1, 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() {
CudaPlatform platform;
System system(4, 0);
System system;
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
system.addParticle(1.0);
LangevinIntegrator integrator(0.0, 0.1, 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);
......
......@@ -53,20 +53,20 @@ void testConstraints() {
const int numConstraints = numMolecules*3;
const double temp = 100.0;
CudaPlatform platform;
System system(numParticles, numConstraints);
System system;
LangevinIntegrator integrator(temp, 2.0, 0.001);
integrator.setConstraintTolerance(1e-5);
NonbondedForce* forceField = new NonbondedForce();
for (int i = 0; i < numMolecules; ++i) {
system.setParticleMass(i*3, 16.0);
system.setParticleMass(i*3+1, 1.0);
system.setParticleMass(i*3+2, 1.0);
system.addParticle(16.0);
system.addParticle(1.0);
system.addParticle(1.0);
forceField->addParticle(-0.82, 0.317, 0.65);
forceField->addParticle(0.41, 1.0, 0.0);
forceField->addParticle(0.41, 1.0, 0.0);
system.setConstraintParameters(i*3, i*3, i*3+1, 0.1);
system.setConstraintParameters(i*3+1, i*3, i*3+2, 0.1);
system.setConstraintParameters(i*3+2, i*3+1, i*3+2, 0.163);
system.addConstraint(i*3, i*3+1, 0.1);
system.addConstraint(i*3, i*3+2, 0.1);
system.addConstraint(i*3+1, i*3+2, 0.163);
}
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
......
......@@ -49,7 +49,9 @@ template <class T, int WIDTH>
void testStream(Stream::DataType type, T scale) {
const int size = 100;
CudaPlatform platform;
System system(size, 0);
System system;
for (int i = 0; i < size; i++)
system.addParticle(1.0);
VerletIntegrator integrator(0.01);
OpenMMContext context(system, integrator, platform);
OpenMMContextImpl* impl = *reinterpret_cast<OpenMMContextImpl**>(&context);
......
......@@ -52,12 +52,12 @@ const double TOL = 1e-5;
void testSingleBond() {
CudaPlatform 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);
......@@ -90,19 +90,19 @@ void testConstraints() {
const int numConstraints = 5;
const double temp = 100.0;
CudaPlatform platform;
System system(numParticles, numConstraints);
System system;
VerletIntegrator integrator(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);
}
system.setConstraintParameters(0, 0, 1, 1.0);
system.setConstraintParameters(1, 1, 2, 1.0);
system.setConstraintParameters(2, 2, 3, 1.0);
system.setConstraintParameters(3, 4, 5, 1.0);
system.setConstraintParameters(4, 6, 7, 1.0);
system.addConstraint(0, 1, 1.0);
system.addConstraint(1, 2, 1.0);
system.addConstraint(2, 3, 1.0);
system.addConstraint(4, 5, 1.0);
system.addConstraint(6, 7, 1.0);
system.addForce(forceField);
OpenMMContext context(system, integrator, platform);
vector<Vec3> positions(numParticles);
......
......@@ -53,11 +53,11 @@ void testTemperature() {
const double temp = 100.0;
const double collisionFreq = 10.0;
ReferencePlatform platform;
System system(numParticles, 0);
System system;
VerletIntegrator integrator(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);
......@@ -91,11 +91,11 @@ void testRandomSeed() {
const double temp = 100.0;
const double collisionFreq = 10.0;
ReferencePlatform platform;
System system(numParticles, 0);
System system;
VerletIntegrator integrator(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);
......
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