"vscode:/vscode.git/clone" did not exist on "84f83034894e3eb2c10e3cc5838308ff1ce0f83e"
Commit 31d0d857 authored by Jason Swails's avatar Jason Swails
Browse files

Add tests for the new usesPeriodicBoundaryConditions API function to the

Reference platform.
parent 930fb6d6
...@@ -64,6 +64,8 @@ void testCMAPTorsions() { ...@@ -64,6 +64,8 @@ void testCMAPTorsions() {
periodic->addTorsion(0, 1, 2, 3, 2, M_PI/4, 1.5); periodic->addTorsion(0, 1, 2, 3, 2, M_PI/4, 1.5);
periodic->addTorsion(1, 2, 3, 4, 3, M_PI/3, 2.0); periodic->addTorsion(1, 2, 3, 4, 3, M_PI/3, 2.0);
system1.addForce(periodic); system1.addForce(periodic);
ASSERT(!periodic->usesPeriodicBoundaryConditions());
ASSERT(!system1.usesPeriodicBoundaryConditions());
System system2; System system2;
for (int i = 0; i < 5; i++) for (int i = 0; i < 5; i++)
system2.addParticle(1.0); system2.addParticle(1.0);
...@@ -81,6 +83,8 @@ void testCMAPTorsions() { ...@@ -81,6 +83,8 @@ void testCMAPTorsions() {
cmap->addMap(mapSize, mapEnergy); cmap->addMap(mapSize, mapEnergy);
cmap->addTorsion(0, 0, 1, 2, 3, 1, 2, 3, 4); cmap->addTorsion(0, 0, 1, 2, 3, 1, 2, 3, 4);
system2.addForce(cmap); system2.addForce(cmap);
ASSERT(!cmap->usesPeriodicBoundaryConditions());
ASSERT(!system2.usesPeriodicBoundaryConditions());
// Set the atoms in various positions, and verify that both systems give equal forces and energy. // Set the atoms in various positions, and verify that both systems give equal forces and energy.
......
...@@ -71,6 +71,8 @@ void testAngles() { ...@@ -71,6 +71,8 @@ void testAngles() {
parameters[1] = 0.5; parameters[1] = 0.5;
custom->addAngle(1, 2, 3, parameters); custom->addAngle(1, 2, 3, parameters);
customSystem.addForce(custom); customSystem.addForce(custom);
ASSERT(!custom->usesPeriodicBoundaryConditions());
ASSERT(!customSystem.usesPeriodicBoundaryConditions());
// Create an identical system using a HarmonicAngleForce. // Create an identical system using a HarmonicAngleForce.
......
...@@ -67,6 +67,8 @@ void testBonds() { ...@@ -67,6 +67,8 @@ void testBonds() {
parameters[1] = 0.7; parameters[1] = 0.7;
forceField->addBond(1, 2, parameters); forceField->addBond(1, 2, parameters);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 2, 0); positions[0] = Vec3(0, 2, 0);
......
...@@ -85,6 +85,8 @@ void testBond() { ...@@ -85,6 +85,8 @@ void testBond() {
parameters[5] = 1.3; parameters[5] = 1.3;
custom->addBond(particles, parameters); custom->addBond(particles, parameters);
customSystem.addForce(custom); customSystem.addForce(custom);
ASSERT(!custom->usesPeriodicBoundaryConditions());
ASSERT(!customSystem.usesPeriodicBoundaryConditions());
// Create an identical system using standard forces. // Create an identical system using standard forces.
......
...@@ -67,6 +67,8 @@ void testForce() { ...@@ -67,6 +67,8 @@ void testForce() {
parameters[1] = 3.0; parameters[1] = 3.0;
forceField->addParticle(2, parameters); forceField->addParticle(2, parameters);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 2, 0); positions[0] = Vec3(0, 2, 0);
......
...@@ -135,6 +135,17 @@ void testOBC(GBSAOBCForce::NonbondedMethod obcMethod, CustomGBForce::NonbondedMe ...@@ -135,6 +135,17 @@ void testOBC(GBSAOBCForce::NonbondedMethod obcMethod, CustomGBForce::NonbondedMe
custom->setNonbondedMethod(customMethod); custom->setNonbondedMethod(customMethod);
standardSystem.addForce(obc); standardSystem.addForce(obc);
customSystem.addForce(custom); customSystem.addForce(custom);
if (customMethod == CustomGBForce::CutoffPeriodic) {
ASSERT(custom->usesPeriodicBoundaryConditions());
ASSERT(obc->usesPeriodicBoundaryConditions());
ASSERT(standardSystem.usesPeriodicBoundaryConditions());
ASSERT(customSystem.usesPeriodicBoundaryConditions());
} else {
ASSERT(!custom->usesPeriodicBoundaryConditions());
ASSERT(!obc->usesPeriodicBoundaryConditions());
ASSERT(!standardSystem.usesPeriodicBoundaryConditions());
ASSERT(!customSystem.usesPeriodicBoundaryConditions());
}
VerletIntegrator integrator1(0.01); VerletIntegrator integrator1(0.01);
VerletIntegrator integrator2(0.01); VerletIntegrator integrator2(0.01);
Context context1(standardSystem, integrator1, platform); Context context1(standardSystem, integrator1, platform);
......
...@@ -83,6 +83,8 @@ void testHbond() { ...@@ -83,6 +83,8 @@ void testHbond() {
custom->addAcceptor(2, 3, 4, parameters); custom->addAcceptor(2, 3, 4, parameters);
custom->setCutoffDistance(10.0); custom->setCutoffDistance(10.0);
customSystem.addForce(custom); customSystem.addForce(custom);
ASSERT(!custom->usesPeriodicBoundaryConditions());
ASSERT(!customSystem.usesPeriodicBoundaryConditions());
// Create an identical system using HarmonicBondForce, HarmonicAngleForce, and PeriodicTorsionForce. // Create an identical system using HarmonicBondForce, HarmonicAngleForce, and PeriodicTorsionForce.
......
...@@ -63,6 +63,13 @@ void validateAxilrodTeller(CustomManyParticleForce* force, const vector<Vec3>& p ...@@ -63,6 +63,13 @@ void validateAxilrodTeller(CustomManyParticleForce* force, const vector<Vec3>& p
system.addParticle(1.0); system.addParticle(1.0);
system.setDefaultPeriodicBoxVectors(Vec3(boxSize, 0, 0), Vec3(0, boxSize, 0), Vec3(0, 0, boxSize)); system.setDefaultPeriodicBoxVectors(Vec3(boxSize, 0, 0), Vec3(0, boxSize, 0), Vec3(0, 0, boxSize));
system.addForce(force); system.addForce(force);
if (force->getNonbondedMethod() == CustomManyParticleForce::CutoffPeriodic) {
ASSERT(force->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
} else {
ASSERT(!force->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
}
VerletIntegrator integrator(0.001); VerletIntegrator integrator(0.001);
ReferencePlatform platform; ReferencePlatform platform;
Context context(system, integrator, platform); Context context(system, integrator, platform);
......
...@@ -184,6 +184,8 @@ void testCutoff() { ...@@ -184,6 +184,8 @@ void testCutoff() {
forceField->setNonbondedMethod(CustomNonbondedForce::CutoffNonPeriodic); forceField->setNonbondedMethod(CustomNonbondedForce::CutoffNonPeriodic);
forceField->setCutoffDistance(2.5); forceField->setCutoffDistance(2.5);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -213,6 +215,8 @@ void testPeriodic() { ...@@ -213,6 +215,8 @@ void testPeriodic() {
forceField->setCutoffDistance(2.0); forceField->setCutoffDistance(2.0);
system.setDefaultPeriodicBoxVectors(Vec3(4, 0, 0), Vec3(0, 4, 0), Vec3(0, 0, 4)); system.setDefaultPeriodicBoxVectors(Vec3(4, 0, 0), Vec3(0, 4, 0), Vec3(0, 0, 4));
system.addForce(forceField); system.addForce(forceField);
ASSERT(forceField->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -531,6 +535,8 @@ void testCoulombLennardJones() { ...@@ -531,6 +535,8 @@ void testCoulombLennardJones() {
customNonbonded->setNonbondedMethod(CustomNonbondedForce::NoCutoff); customNonbonded->setNonbondedMethod(CustomNonbondedForce::NoCutoff);
standardSystem.addForce(standardNonbonded); standardSystem.addForce(standardNonbonded);
customSystem.addForce(customNonbonded); customSystem.addForce(customNonbonded);
ASSERT(!customNonbonded->usesPeriodicBoundaryConditions());
ASSERT(!customSystem.usesPeriodicBoundaryConditions());
VerletIntegrator integrator1(0.01); VerletIntegrator integrator1(0.01);
VerletIntegrator integrator2(0.01); VerletIntegrator integrator2(0.01);
Context context1(standardSystem, integrator1, platform); Context context1(standardSystem, integrator1, platform);
......
...@@ -75,6 +75,8 @@ void testTorsions() { ...@@ -75,6 +75,8 @@ void testTorsions() {
parameters[1] = 2; parameters[1] = 2;
custom->addTorsion(1, 2, 3, 4, parameters); custom->addTorsion(1, 2, 3, 4, parameters);
customSystem.addForce(custom); customSystem.addForce(custom);
ASSERT(!custom->usesPeriodicBoundaryConditions());
ASSERT(!customSystem.usesPeriodicBoundaryConditions());
// Create an identical system using a PeriodicTorsionForce. // Create an identical system using a PeriodicTorsionForce.
......
...@@ -58,6 +58,8 @@ void testSingleParticle() { ...@@ -58,6 +58,8 @@ void testSingleParticle() {
GBSAOBCForce* forceField = new GBSAOBCForce(); GBSAOBCForce* forceField = new GBSAOBCForce();
forceField->addParticle(0.5, 0.15, 1); forceField->addParticle(0.5, 0.15, 1);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(1); vector<Vec3> positions(1);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -96,6 +98,8 @@ void testGlobalSettings() { ...@@ -96,6 +98,8 @@ void testGlobalSettings() {
forceField->setSolventDielectric(solventDielectric); forceField->setSolventDielectric(solventDielectric);
forceField->setSurfaceAreaEnergy(surfaceAreaEnergy); forceField->setSurfaceAreaEnergy(surfaceAreaEnergy);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(1); vector<Vec3> positions(1);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -136,22 +140,34 @@ void testCutoffAndPeriodic() { ...@@ -136,22 +140,34 @@ void testCutoffAndPeriodic() {
nonbonded->setNonbondedMethod(NonbondedForce::CutoffNonPeriodic); nonbonded->setNonbondedMethod(NonbondedForce::CutoffNonPeriodic);
gbsa->setNonbondedMethod(GBSAOBCForce::CutoffNonPeriodic); gbsa->setNonbondedMethod(GBSAOBCForce::CutoffNonPeriodic);
ASSERT(!nonbonded->usesPeriodicBoundaryConditions());
ASSERT(!gbsa->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
context.setPositions(positions); context.setPositions(positions);
State state1 = context.getState(State::Forces); State state1 = context.getState(State::Forces);
nonbonded->setNonbondedMethod(NonbondedForce::CutoffPeriodic); nonbonded->setNonbondedMethod(NonbondedForce::CutoffPeriodic);
gbsa->setNonbondedMethod(GBSAOBCForce::CutoffPeriodic); gbsa->setNonbondedMethod(GBSAOBCForce::CutoffPeriodic);
ASSERT(nonbonded->usesPeriodicBoundaryConditions());
ASSERT(gbsa->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
context.reinitialize(); context.reinitialize();
context.setPositions(positions); context.setPositions(positions);
State state2 = context.getState(State::Forces); State state2 = context.getState(State::Forces);
positions[1][0]+= boxSize; positions[1][0]+= boxSize;
nonbonded->setNonbondedMethod(NonbondedForce::CutoffNonPeriodic); nonbonded->setNonbondedMethod(NonbondedForce::CutoffNonPeriodic);
gbsa->setNonbondedMethod(GBSAOBCForce::CutoffNonPeriodic); gbsa->setNonbondedMethod(GBSAOBCForce::CutoffNonPeriodic);
ASSERT(!nonbonded->usesPeriodicBoundaryConditions());
ASSERT(!gbsa->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
context.reinitialize(); context.reinitialize();
context.setPositions(positions); context.setPositions(positions);
State state3 = context.getState(State::Forces); State state3 = context.getState(State::Forces);
nonbonded->setNonbondedMethod(NonbondedForce::CutoffPeriodic); nonbonded->setNonbondedMethod(NonbondedForce::CutoffPeriodic);
gbsa->setNonbondedMethod(GBSAOBCForce::CutoffPeriodic); gbsa->setNonbondedMethod(GBSAOBCForce::CutoffPeriodic);
ASSERT(nonbonded->usesPeriodicBoundaryConditions());
ASSERT(gbsa->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
context.reinitialize(); context.reinitialize();
context.setPositions(positions); context.setPositions(positions);
State state4 = context.getState(State::Forces); State state4 = context.getState(State::Forces);
......
...@@ -66,6 +66,8 @@ void testSingleParticle() { ...@@ -66,6 +66,8 @@ void testSingleParticle() {
double gamma = 1.0; double gamma = 1.0;
forceField->addParticle(charge, radius, gamma); forceField->addParticle(charge, radius, gamma);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(1); vector<Vec3> positions(1);
......
...@@ -60,6 +60,8 @@ void testAngles() { ...@@ -60,6 +60,8 @@ void testAngles() {
forceField->addAngle(0, 1, 2, PI_M/3, 1.1); forceField->addAngle(0, 1, 2, PI_M/3, 1.1);
forceField->addAngle(1, 2, 3, PI_M/2, 1.2); forceField->addAngle(1, 2, 3, PI_M/2, 1.2);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(4); vector<Vec3> positions(4);
positions[0] = Vec3(0, 1, 0); positions[0] = Vec3(0, 1, 0);
......
...@@ -59,6 +59,8 @@ void testBonds() { ...@@ -59,6 +59,8 @@ void testBonds() {
forceField->addBond(0, 1, 1.5, 0.8); forceField->addBond(0, 1, 1.5, 0.8);
forceField->addBond(1, 2, 1.2, 0.7); forceField->addBond(1, 2, 1.2, 0.7);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 2, 0); positions[0] = Vec3(0, 2, 0);
......
...@@ -59,6 +59,8 @@ void testCoulomb() { ...@@ -59,6 +59,8 @@ void testCoulomb() {
forceField->addParticle(0.5, 1, 0); forceField->addParticle(0.5, 1, 0);
forceField->addParticle(-1.5, 1, 0); forceField->addParticle(-1.5, 1, 0);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(2); vector<Vec3> positions(2);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -82,6 +84,8 @@ void testLJ() { ...@@ -82,6 +84,8 @@ void testLJ() {
forceField->addParticle(0, 1.2, 1); forceField->addParticle(0, 1.2, 1);
forceField->addParticle(0, 1.4, 2); forceField->addParticle(0, 1.4, 2);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(2); vector<Vec3> positions(2);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -201,6 +205,8 @@ void testCutoff() { ...@@ -201,6 +205,8 @@ void testCutoff() {
const double eps = 50.0; const double eps = 50.0;
forceField->setReactionFieldDielectric(eps); forceField->setReactionFieldDielectric(eps);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -252,6 +258,8 @@ void testCutoff14() { ...@@ -252,6 +258,8 @@ void testCutoff14() {
second14 = i; second14 = i;
} }
system.addForce(nonbonded); system.addForce(nonbonded);
ASSERT(!nonbonded->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(5); vector<Vec3> positions(5);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -333,6 +341,8 @@ void testPeriodic() { ...@@ -333,6 +341,8 @@ void testPeriodic() {
nonbonded->setCutoffDistance(cutoff); nonbonded->setCutoffDistance(cutoff);
system.setDefaultPeriodicBoxVectors(Vec3(4, 0, 0), Vec3(0, 4, 0), Vec3(0, 0, 4)); system.setDefaultPeriodicBoxVectors(Vec3(4, 0, 0), Vec3(0, 4, 0), Vec3(0, 0, 4));
system.addForce(nonbonded); system.addForce(nonbonded);
ASSERT(nonbonded->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -376,6 +386,8 @@ void testDispersionCorrection() { ...@@ -376,6 +386,8 @@ void testDispersionCorrection() {
nonbonded->setCutoffDistance(cutoff); nonbonded->setCutoffDistance(cutoff);
system.setDefaultPeriodicBoxVectors(Vec3(boxSize, 0, 0), Vec3(0, boxSize, 0), Vec3(0, 0, boxSize)); system.setDefaultPeriodicBoxVectors(Vec3(boxSize, 0, 0), Vec3(0, boxSize, 0), Vec3(0, 0, boxSize));
system.addForce(nonbonded); system.addForce(nonbonded);
ASSERT(nonbonded->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
// See if the correction has the correct value. // See if the correction has the correct value.
...@@ -435,6 +447,13 @@ void testSwitchingFunction(NonbondedForce::NonbondedMethod method) { ...@@ -435,6 +447,13 @@ void testSwitchingFunction(NonbondedForce::NonbondedMethod method) {
nonbonded->setSwitchingDistance(1.5); nonbonded->setSwitchingDistance(1.5);
nonbonded->setUseDispersionCorrection(false); nonbonded->setUseDispersionCorrection(false);
system.addForce(nonbonded); system.addForce(nonbonded);
if (method == NonbondedForce::PME) {
ASSERT(nonbonded->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
} else {
ASSERT(!nonbonded->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
}
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(2); vector<Vec3> positions(2);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
......
...@@ -59,6 +59,8 @@ void testPeriodicTorsions() { ...@@ -59,6 +59,8 @@ void testPeriodicTorsions() {
PeriodicTorsionForce* forceField = new PeriodicTorsionForce(); PeriodicTorsionForce* forceField = new PeriodicTorsionForce();
forceField->addTorsion(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);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(4); vector<Vec3> positions(4);
positions[0] = Vec3(0, 1, 0); positions[0] = Vec3(0, 1, 0);
......
...@@ -59,6 +59,8 @@ void testRBTorsions() { ...@@ -59,6 +59,8 @@ void testRBTorsions() {
RBTorsionForce* forceField = new RBTorsionForce(); RBTorsionForce* forceField = new RBTorsionForce();
forceField->addTorsion(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);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(4); vector<Vec3> positions(4);
positions[0] = Vec3(0, 1, 0); positions[0] = Vec3(0, 1, 0);
......
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