Commit 7a6f4b2f authored by peastman's avatar peastman
Browse files

Cleanup to the recent serialization code changes

parent 436d542d
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for * * Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. * * Medical Research, grant U54 GM072970. See https://simtk.org. *
* * * *
* Portions copyright (c) 2010 Stanford University and the Authors. * * Portions copyright (c) 2010-2014 Stanford University and the Authors. *
* Authors: Peter Eastman * * Authors: Peter Eastman *
* Contributors: * * Contributors: *
* * * *
...@@ -102,7 +102,7 @@ void* CustomNonbondedForceProxy::deserialize(const SerializationNode& node) cons ...@@ -102,7 +102,7 @@ void* CustomNonbondedForceProxy::deserialize(const SerializationNode& node) cons
try { try {
CustomNonbondedForce* force = new CustomNonbondedForce(node.getStringProperty("energy")); CustomNonbondedForce* force = new CustomNonbondedForce(node.getStringProperty("energy"));
force->setNonbondedMethod((CustomNonbondedForce::NonbondedMethod) node.getIntProperty("method")); force->setNonbondedMethod((CustomNonbondedForce::NonbondedMethod) node.getIntProperty("method"));
force->setCutoffDistance(node.getDoubleProperty("cutoff", 1.0)); force->setCutoffDistance(node.getDoubleProperty("cutoff"));
force->setUseSwitchingFunction(node.getBoolProperty("useSwitchingFunction", false)); force->setUseSwitchingFunction(node.getBoolProperty("useSwitchingFunction", false));
force->setSwitchingDistance(node.getDoubleProperty("switchingDistance", -1.0)); force->setSwitchingDistance(node.getDoubleProperty("switchingDistance", -1.0));
force->setUseLongRangeCorrection(node.getBoolProperty("useLongRangeCorrection", false)); force->setUseLongRangeCorrection(node.getBoolProperty("useLongRangeCorrection", false));
...@@ -149,8 +149,12 @@ void* CustomNonbondedForceProxy::deserialize(const SerializationNode& node) cons ...@@ -149,8 +149,12 @@ void* CustomNonbondedForceProxy::deserialize(const SerializationNode& node) cons
force->addTabulatedFunction(function.getStringProperty("name"), new Continuous1DFunction(values, function.getDoubleProperty("min"), function.getDoubleProperty("max"))); force->addTabulatedFunction(function.getStringProperty("name"), new Continuous1DFunction(values, function.getDoubleProperty("min"), function.getDoubleProperty("max")));
} }
} }
// Catch exceptions if InteractionGroups node is missing, in order to give backwards compatibility. bool hasInteractionGroups = false; // Older files will be missing this block.
try{ for (int i = 0; i < (int) node.getChildren().size(); i++) {
if (node.getChildren()[i].getName() == "InteractionGroups")
hasInteractionGroups = true;
}
if (hasInteractionGroups) {
const SerializationNode& interactionGroups = node.getChildNode("InteractionGroups"); const SerializationNode& interactionGroups = node.getChildNode("InteractionGroups");
for (int i = 0; i < (int) interactionGroups.getChildren().size(); i++) { for (int i = 0; i < (int) interactionGroups.getChildren().size(); i++) {
const SerializationNode& interactionGroup = interactionGroups.getChildren()[i]; const SerializationNode& interactionGroup = interactionGroups.getChildren()[i];
...@@ -166,8 +170,6 @@ void* CustomNonbondedForceProxy::deserialize(const SerializationNode& node) cons ...@@ -166,8 +170,6 @@ void* CustomNonbondedForceProxy::deserialize(const SerializationNode& node) cons
set2.insert(set2node.getChildren()[j].getIntProperty("index")); set2.insert(set2node.getChildren()[j].getIntProperty("index"));
force->addInteractionGroup(set1, set2); force->addInteractionGroup(set1, set2);
} }
} catch (...) {
// do nothing to allow backwards-compatibility
} }
return force; return force;
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for * * Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. * * Medical Research, grant U54 GM072970. See https://simtk.org. *
* * * *
* Portions copyright (c) 2010 Stanford University and the Authors. * * Portions copyright (c) 2010-2014 Stanford University and the Authors. *
* Authors: Peter Eastman * * Authors: Peter Eastman *
* Contributors: * * Contributors: *
* * * *
...@@ -80,20 +80,18 @@ void* NonbondedForceProxy::deserialize(const SerializationNode& node) const { ...@@ -80,20 +80,18 @@ void* NonbondedForceProxy::deserialize(const SerializationNode& node) const {
NonbondedForce* force = new NonbondedForce(); NonbondedForce* force = new NonbondedForce();
try { try {
force->setNonbondedMethod((NonbondedForce::NonbondedMethod) node.getIntProperty("method")); force->setNonbondedMethod((NonbondedForce::NonbondedMethod) node.getIntProperty("method"));
force->setCutoffDistance(node.getDoubleProperty("cutoff",1.0)); force->setCutoffDistance(node.getDoubleProperty("cutoff"));
force->setUseSwitchingFunction(node.getBoolProperty("useSwitchingFunction",false)); force->setUseSwitchingFunction(node.getBoolProperty("useSwitchingFunction", false));
force->setSwitchingDistance(node.getDoubleProperty("switchingDistance",-1.0)); force->setSwitchingDistance(node.getDoubleProperty("switchingDistance", -1.0));
force->setEwaldErrorTolerance(node.getDoubleProperty("ewaldTolerance",5e-4)); force->setEwaldErrorTolerance(node.getDoubleProperty("ewaldTolerance"));
force->setReactionFieldDielectric(node.getDoubleProperty("rfDielectric",78.3)); force->setReactionFieldDielectric(node.getDoubleProperty("rfDielectric"));
force->setUseDispersionCorrection(node.getIntProperty("dispersionCorrection",true)); force->setUseDispersionCorrection(node.getIntProperty("dispersionCorrection"));
double alpha; double alpha = node.getDoubleProperty("alpha", 0.0);
int nx, ny, nz; int nx = node.getIntProperty("nx", 0);
alpha = node.getDoubleProperty("alpha",0.0); int ny = node.getIntProperty("ny", 0);
nx = node.getIntProperty("nx",0); int nz = node.getIntProperty("nz", 0);
ny = node.getIntProperty("ny",0);
nz = node.getIntProperty("nz",0);
force->setPMEParameters(alpha, nx, ny, nz); force->setPMEParameters(alpha, nx, ny, nz);
force->setReciprocalSpaceForceGroup(node.getIntProperty("recipForceGroup",-1)); force->setReciprocalSpaceForceGroup(node.getIntProperty("recipForceGroup", -1));
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];
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for * * Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. * * Medical Research, grant U54 GM072970. See https://simtk.org. *
* * * *
* Portions copyright (c) 2010 Stanford University and the Authors. * * Portions copyright (c) 2010-2014 Stanford University and the Authors. *
* Authors: Peter Eastman * * Authors: Peter Eastman *
* Contributors: * * Contributors: *
* * * *
...@@ -66,6 +66,7 @@ void testSerialization() { ...@@ -66,6 +66,7 @@ void testSerialization() {
std::set<int> set1, set2; std::set<int> set1, set2;
set1.insert(0); set1.insert(0);
set2.insert(1); set2.insert(1);
set2.insert(2);
force.addInteractionGroup(set1, set2); force.addInteractionGroup(set1, set2);
// Serialize and then deserialize it. // Serialize and then deserialize it.
......
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