"plugins/amoeba/vscode:/vscode.git/clone" did not exist on "edbe6a8771ffd9f257ab2e071ed22abad759acbe"
Commit d0186cb2 authored by John Chodera (MSKCC)'s avatar John Chodera (MSKCC)
Browse files

Added missing serialization of PME parameters alpha, nx, ny, nz for NonbondedForce.

parent 6d036495
...@@ -51,6 +51,14 @@ void NonbondedForceProxy::serialize(const void* object, SerializationNode& node) ...@@ -51,6 +51,14 @@ void NonbondedForceProxy::serialize(const void* object, SerializationNode& node)
node.setDoubleProperty("ewaldTolerance", force.getEwaldErrorTolerance()); node.setDoubleProperty("ewaldTolerance", force.getEwaldErrorTolerance());
node.setDoubleProperty("rfDielectric", force.getReactionFieldDielectric()); node.setDoubleProperty("rfDielectric", force.getReactionFieldDielectric());
node.setIntProperty("dispersionCorrection", force.getUseDispersionCorrection()); node.setIntProperty("dispersionCorrection", force.getUseDispersionCorrection());
double alpha;
int nx, ny, nz;
force.getPMEParameters(alpha, nx, ny, nz);
node.setDoubleProperty("alpha", alpha);
node.setIntProperty("nx", nx);
node.setIntProperty("ny", ny);
node.setIntProperty("nz", nz);
node.setIntProperty("recipForceGroup", force.getReciprocalSpaceForceGroup());
SerializationNode& particles = node.createChildNode("Particles"); SerializationNode& particles = node.createChildNode("Particles");
for (int i = 0; i < force.getNumParticles(); i++) { for (int i = 0; i < force.getNumParticles(); i++) {
double charge, sigma, epsilon; double charge, sigma, epsilon;
...@@ -78,6 +86,14 @@ void* NonbondedForceProxy::deserialize(const SerializationNode& node) const { ...@@ -78,6 +86,14 @@ void* NonbondedForceProxy::deserialize(const SerializationNode& node) const {
force->setEwaldErrorTolerance(node.getDoubleProperty("ewaldTolerance")); force->setEwaldErrorTolerance(node.getDoubleProperty("ewaldTolerance"));
force->setReactionFieldDielectric(node.getDoubleProperty("rfDielectric")); force->setReactionFieldDielectric(node.getDoubleProperty("rfDielectric"));
force->setUseDispersionCorrection(node.getIntProperty("dispersionCorrection")); force->setUseDispersionCorrection(node.getIntProperty("dispersionCorrection"));
double alpha;
int nx, ny, nz;
alpha = node.getDoubleProperty("alpha");
nx = node.getIntProperty("nx");
ny = node.getIntProperty("ny");
nz = node.getIntProperty("nz");
force->setPMEParameters(alpha, nx, ny, nz);
force->setReciprocalSpaceForceGroup(node.getIntProperty("recipForceGroup"));
const SerializationNode& particles = node.getChildNode("Particles"); const SerializationNode& particles = node.getChildNode("Particles");
for (int i = 0; i < (int) particles.getChildren().size(); i++) { for (int i = 0; i < (int) particles.getChildren().size(); i++) {
const SerializationNode& particle = particles.getChildren()[i]; const SerializationNode& particle = particles.getChildren()[i];
......
...@@ -49,6 +49,9 @@ void testSerialization() { ...@@ -49,6 +49,9 @@ void testSerialization() {
force.setEwaldErrorTolerance(1e-3); force.setEwaldErrorTolerance(1e-3);
force.setReactionFieldDielectric(50.0); force.setReactionFieldDielectric(50.0);
force.setUseDispersionCorrection(false); force.setUseDispersionCorrection(false);
double alpha = 0.5;
int nx = 3, ny = 5, nz = 7;
force.setPMEParameters(alpha, nx, ny, nz);
force.addParticle(1, 0.1, 0.01); force.addParticle(1, 0.1, 0.01);
force.addParticle(0.5, 0.2, 0.02); force.addParticle(0.5, 0.2, 0.02);
force.addParticle(-0.5, 0.3, 0.03); force.addParticle(-0.5, 0.3, 0.03);
...@@ -72,6 +75,13 @@ void testSerialization() { ...@@ -72,6 +75,13 @@ void testSerialization() {
ASSERT_EQUAL(force.getReactionFieldDielectric(), force2.getReactionFieldDielectric()); ASSERT_EQUAL(force.getReactionFieldDielectric(), force2.getReactionFieldDielectric());
ASSERT_EQUAL(force.getUseDispersionCorrection(), force2.getUseDispersionCorrection()); ASSERT_EQUAL(force.getUseDispersionCorrection(), force2.getUseDispersionCorrection());
ASSERT_EQUAL(force.getNumParticles(), force2.getNumParticles()); ASSERT_EQUAL(force.getNumParticles(), force2.getNumParticles());
double alpha2;
int nx2, ny2, nz2;
force2.getPMEParameters(alpha2, nx2, ny2, nz2);
ASSERT_EQUAL(alpha, alpha2);
ASSERT_EQUAL(nx, nx2);
ASSERT_EQUAL(ny, ny2);
ASSERT_EQUAL(nz, nz2);
for (int i = 0; i < force.getNumParticles(); i++) { for (int i = 0; i < force.getNumParticles(); i++) {
double charge1, sigma1, epsilon1; double charge1, sigma1, epsilon1;
double charge2, sigma2, epsilon2; double charge2, sigma2, epsilon2;
......
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