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