Commit 08e8b206 authored by peastman's avatar peastman Committed by GitHub
Browse files

Merge pull request #1769 from peastman/loops

Use C++11 style loops
parents 55ee0b9f 083bc501
...@@ -277,9 +277,8 @@ double AmoebaReferenceVdwForce::calculateForceAndEnergy(int numParticles, ...@@ -277,9 +277,8 @@ double AmoebaReferenceVdwForce::calculateForceAndEnergy(int numParticles,
double sigmaI = sigmas[ii]; double sigmaI = sigmas[ii];
double epsilonI = epsilons[ii]; double epsilonI = epsilons[ii];
for (std::set<int>::const_iterator jj = allExclusions[ii].begin(); jj != allExclusions[ii].end(); jj++) { for (int jj : allExclusions[ii])
exclusions[*jj] = 1; exclusions[jj] = 1;
}
for (unsigned int jj = ii+1; jj < static_cast<unsigned int>(numParticles); jj++) { for (unsigned int jj = ii+1; jj < static_cast<unsigned int>(numParticles); jj++) {
if (exclusions[jj] == 0) { if (exclusions[jj] == 0) {
...@@ -310,9 +309,8 @@ double AmoebaReferenceVdwForce::calculateForceAndEnergy(int numParticles, ...@@ -310,9 +309,8 @@ double AmoebaReferenceVdwForce::calculateForceAndEnergy(int numParticles,
} }
} }
for (std::set<int>::const_iterator jj = allExclusions[ii].begin(); jj != allExclusions[ii].end(); jj++) { for (int jj : allExclusions[ii])
exclusions[*jj] = 0; exclusions[jj] = 0;
}
} }
return energy; return energy;
......
...@@ -287,8 +287,8 @@ static void check_finite_differences(vector<Vec3> analytic_forces, Context &cont ...@@ -287,8 +287,8 @@ static void check_finite_differences(vector<Vec3> analytic_forces, Context &cont
// Take a small step in the direction of the energy gradient and see whether the potential energy changes by the expected amount. // Take a small step in the direction of the energy gradient and see whether the potential energy changes by the expected amount.
double norm = 0.0; double norm = 0.0;
for (int i = 0; i < (int) analytic_forces.size(); ++i) for (auto& f : analytic_forces)
norm += analytic_forces[i].dot(analytic_forces[i]); norm += f.dot(f);
norm = std::sqrt(norm); norm = std::sqrt(norm);
const double stepSize = 1e-3; const double stepSize = 1e-3;
double step = 0.5*stepSize/norm; double step = 0.5*stepSize/norm;
......
...@@ -61,8 +61,8 @@ static void checkFiniteDifferences(vector<Vec3> forces, Context &context, vector ...@@ -61,8 +61,8 @@ static void checkFiniteDifferences(vector<Vec3> forces, Context &context, vector
// Take a small step in the direction of the energy gradient and see whether the potential energy changes by the expected amount. // Take a small step in the direction of the energy gradient and see whether the potential energy changes by the expected amount.
   
double norm = 0.0; double norm = 0.0;
for (int i = 0; i < (int) forces.size(); ++i) for (auto& f : forces)
norm += forces[i].dot(forces[i]); norm += f.dot(f);
norm = std::sqrt(norm); norm = std::sqrt(norm);
const double stepSize = 1e-3; const double stepSize = 1e-3;
double step = 0.5*stepSize/norm; double step = 0.5*stepSize/norm;
......
...@@ -72,10 +72,8 @@ void* AmoebaBondForceProxy::deserialize(const SerializationNode& node) const { ...@@ -72,10 +72,8 @@ void* AmoebaBondForceProxy::deserialize(const SerializationNode& node) const {
force->setAmoebaGlobalBondCubic(node.getDoubleProperty("cubic")); force->setAmoebaGlobalBondCubic(node.getDoubleProperty("cubic"));
force->setAmoebaGlobalBondQuartic(node.getDoubleProperty("quartic")); force->setAmoebaGlobalBondQuartic(node.getDoubleProperty("quartic"));
const SerializationNode& bonds = node.getChildNode("Bonds"); const SerializationNode& bonds = node.getChildNode("Bonds");
for (unsigned int ii = 0; ii < (int) bonds.getChildren().size(); ii++) { for (auto& bond : bonds.getChildren())
const SerializationNode& bond = bonds.getChildren()[ii];
force->addBond(bond.getIntProperty("p1"), bond.getIntProperty("p2"), bond.getDoubleProperty("d"), bond.getDoubleProperty("k")); force->addBond(bond.getIntProperty("p1"), bond.getIntProperty("p2"), bond.getDoubleProperty("d"), bond.getDoubleProperty("k"));
}
} }
catch (...) { catch (...) {
delete force; delete force;
......
...@@ -67,8 +67,7 @@ void* AmoebaStretchBendForceProxy::deserialize(const SerializationNode& node) co ...@@ -67,8 +67,7 @@ void* AmoebaStretchBendForceProxy::deserialize(const SerializationNode& node) co
if (version > 3) if (version > 3)
force->setUsesPeriodicBoundaryConditions(node.getBoolProperty("usesPeriodic")); force->setUsesPeriodicBoundaryConditions(node.getBoolProperty("usesPeriodic"));
const SerializationNode& bonds = node.getChildNode("StretchBendAngles"); const SerializationNode& bonds = node.getChildNode("StretchBendAngles");
for (unsigned int ii = 0; ii < (int) bonds.getChildren().size(); ii++) { for (auto& bond : bonds.getChildren()) {
const SerializationNode& bond = bonds.getChildren()[ii];
double k1, k2; double k1, k2;
if (version == 1) if (version == 1)
k1 = k2 = bond.getDoubleProperty("k"); k1 = k2 = bond.getDoubleProperty("k");
......
...@@ -515,8 +515,8 @@ CpuCalcPmeReciprocalForceKernel::~CpuCalcPmeReciprocalForceKernel() { ...@@ -515,8 +515,8 @@ CpuCalcPmeReciprocalForceKernel::~CpuCalcPmeReciprocalForceKernel() {
pthread_mutex_destroy(&lock); pthread_mutex_destroy(&lock);
pthread_cond_destroy(&startCondition); pthread_cond_destroy(&startCondition);
pthread_cond_destroy(&endCondition); pthread_cond_destroy(&endCondition);
for (int i = 0; i < (int) tempGrid.size(); i++) for (auto grid : tempGrid)
fftwf_free(tempGrid[i]); fftwf_free(grid);
if (complexGrid != NULL) if (complexGrid != NULL)
fftwf_free(complexGrid); fftwf_free(complexGrid);
if (hasCreatedPlan) { if (hasCreatedPlan) {
...@@ -552,8 +552,8 @@ void CpuCalcPmeReciprocalForceKernel::runMainThread() { ...@@ -552,8 +552,8 @@ void CpuCalcPmeReciprocalForceKernel::runMainThread() {
if (includeEnergy) { if (includeEnergy) {
threads.resumeThreads(); // Signal threads to compute energy. threads.resumeThreads(); // Signal threads to compute energy.
threads.waitForThreads(); threads.waitForThreads();
for (int i = 0; i < (int) threadEnergy.size(); i++) for (auto e : threadEnergy)
energy += threadEnergy[i]; energy += e;
} }
threads.resumeThreads(); // Signal threads to perform reciprocal convolution. threads.resumeThreads(); // Signal threads to perform reciprocal convolution.
threads.waitForThreads(); threads.waitForThreads();
...@@ -805,8 +805,8 @@ CpuCalcDispersionPmeReciprocalForceKernel::~CpuCalcDispersionPmeReciprocalForceK ...@@ -805,8 +805,8 @@ CpuCalcDispersionPmeReciprocalForceKernel::~CpuCalcDispersionPmeReciprocalForceK
pthread_mutex_destroy(&lock); pthread_mutex_destroy(&lock);
pthread_cond_destroy(&startCondition); pthread_cond_destroy(&startCondition);
pthread_cond_destroy(&endCondition); pthread_cond_destroy(&endCondition);
for (int i = 0; i < (int) tempGrid.size(); i++) for (auto grid : tempGrid)
fftwf_free(tempGrid[i]); fftwf_free(grid);
if (complexGrid != NULL) if (complexGrid != NULL)
fftwf_free(complexGrid); fftwf_free(complexGrid);
if (hasCreatedPlan) { if (hasCreatedPlan) {
...@@ -843,8 +843,8 @@ void CpuCalcDispersionPmeReciprocalForceKernel::runMainThread() { ...@@ -843,8 +843,8 @@ void CpuCalcDispersionPmeReciprocalForceKernel::runMainThread() {
if (includeEnergy) { if (includeEnergy) {
threads.resumeThreads(); // Signal threads to compute energy. threads.resumeThreads(); // Signal threads to compute energy.
threads.waitForThreads(); threads.waitForThreads();
for (int i = 0; i < (int) threadEnergy.size(); i++) for (auto e : threadEnergy)
energy += threadEnergy[i]; energy += e;
} }
threads.resumeThreads(); // Signal threads to perform reciprocal convolution. threads.resumeThreads(); // Signal threads to perform reciprocal convolution.
threads.waitForThreads(); threads.waitForThreads();
......
...@@ -267,8 +267,7 @@ void ReferenceIntegrateDrudeLangevinStepKernel::execute(ContextImpl& context, co ...@@ -267,8 +267,7 @@ void ReferenceIntegrateDrudeLangevinStepKernel::execute(ContextImpl& context, co
const double fscale = (1-vscale)/integrator.getFriction(); const double fscale = (1-vscale)/integrator.getFriction();
const double kT = BOLTZ*integrator.getTemperature(); const double kT = BOLTZ*integrator.getTemperature();
const double noisescale = sqrt(2*kT*integrator.getFriction())*sqrt(0.5*(1-vscale*vscale)/integrator.getFriction()); const double noisescale = sqrt(2*kT*integrator.getFriction())*sqrt(0.5*(1-vscale*vscale)/integrator.getFriction());
for (int i = 0; i < (int) normalParticles.size(); i++) { for (int index : normalParticles) {
int index = normalParticles[i];
double invMass = particleInvMass[index]; double invMass = particleInvMass[index];
if (invMass != 0.0) { if (invMass != 0.0) {
double sqrtInvMass = sqrt(invMass); double sqrtInvMass = sqrt(invMass);
......
...@@ -67,16 +67,12 @@ void* DrudeForceProxy::deserialize(const SerializationNode& node) const { ...@@ -67,16 +67,12 @@ void* DrudeForceProxy::deserialize(const SerializationNode& node) const {
DrudeForce* force = new DrudeForce(); DrudeForce* force = new DrudeForce();
try { try {
const SerializationNode& particles = node.getChildNode("Particles"); const SerializationNode& particles = node.getChildNode("Particles");
for (int i = 0; i < (int) particles.getChildren().size(); i++) { for (auto& particle : particles.getChildren())
const SerializationNode& particle = particles.getChildren()[i];
force->addParticle(particle.getIntProperty("p"), particle.getIntProperty("p1"), particle.getIntProperty("p2"), particle.getIntProperty("p3"), particle.getIntProperty("p4"), force->addParticle(particle.getIntProperty("p"), particle.getIntProperty("p1"), particle.getIntProperty("p2"), particle.getIntProperty("p3"), particle.getIntProperty("p4"),
particle.getDoubleProperty("charge"), particle.getDoubleProperty("polarizability"), particle.getDoubleProperty("a12"), particle.getDoubleProperty("a34")); particle.getDoubleProperty("charge"), particle.getDoubleProperty("polarizability"), particle.getDoubleProperty("a12"), particle.getDoubleProperty("a34"));
}
const SerializationNode& pairs = node.getChildNode("ScreenedPairs"); const SerializationNode& pairs = node.getChildNode("ScreenedPairs");
for (int i = 0; i < (int) pairs.getChildren().size(); i++) { for (auto& pair : pairs.getChildren())
const SerializationNode& pair = pairs.getChildren()[i];
force->addScreenedPair(pair.getIntProperty("p1"), pair.getIntProperty("p2"), pair.getDoubleProperty("thole")); force->addScreenedPair(pair.getIntProperty("p1"), pair.getIntProperty("p2"), pair.getDoubleProperty("thole"));
}
} }
catch (...) { catch (...) {
delete force; delete force;
......
...@@ -119,13 +119,13 @@ State RPMDIntegrator::getState(int copy, int types, bool enforcePeriodicBox, int ...@@ -119,13 +119,13 @@ State RPMDIntegrator::getState(int copy, int types, bool enforcePeriodicBox, int
const vector<vector<int> >& molecules = context->getMolecules(); const vector<vector<int> >& molecules = context->getMolecules();
Vec3 periodicBoxSize[3]; Vec3 periodicBoxSize[3];
state2.getPeriodicBoxVectors(periodicBoxSize[0], periodicBoxSize[1], periodicBoxSize[2]); state2.getPeriodicBoxVectors(periodicBoxSize[0], periodicBoxSize[1], periodicBoxSize[2]);
for (int i = 0; i < (int) molecules.size(); i++) { for (auto& mol : molecules) {
// Find the molecule center. // Find the molecule center.
Vec3 center; Vec3 center;
for (int j = 0; j < (int) molecules[i].size(); j++) for (int j : mol)
center += refPos[molecules[i][j]]; center += refPos[j];
center *= 1.0/molecules[i].size(); center *= 1.0/mol.size();
// Find the displacement to move it into the first periodic box. // Find the displacement to move it into the first periodic box.
Vec3 diff; Vec3 diff;
...@@ -134,8 +134,8 @@ State RPMDIntegrator::getState(int copy, int types, bool enforcePeriodicBox, int ...@@ -134,8 +134,8 @@ State RPMDIntegrator::getState(int copy, int types, bool enforcePeriodicBox, int
diff += periodicBoxSize[0]*floor((center[0]-diff[0])/periodicBoxSize[0][0]); diff += periodicBoxSize[0]*floor((center[0]-diff[0])/periodicBoxSize[0][0]);
// Translate all the particles in the molecule. // Translate all the particles in the molecule.
for (int j = 0; j < (int) molecules[i].size(); j++) { for (int j : mol) {
Vec3& pos = positions[molecules[i][j]]; Vec3& pos = positions[j];
pos -= diff; pos -= diff;
} }
} }
...@@ -188,9 +188,8 @@ void RPMDIntegrator::step(int steps) { ...@@ -188,9 +188,8 @@ void RPMDIntegrator::step(int steps) {
context->getOwner().setPositions(p); context->getOwner().setPositions(p);
isFirstStep = false; isFirstStep = false;
} }
vector<ForceImpl*>& forceImpls = context->getForceImpls(); for (auto impl : context->getForceImpls()) {
for (int i = 0; i < (int) forceImpls.size(); i++) { RPMDUpdater* updater = dynamic_cast<RPMDUpdater*>(impl);
RPMDUpdater* updater = dynamic_cast<RPMDUpdater*>(forceImpls[i]);
if (updater != NULL) if (updater != NULL)
updater->updateRPMDState(*context); updater->updateRPMDState(*context);
} }
......
...@@ -116,9 +116,9 @@ void CudaIntegrateRPMDStepKernel::initialize(const System& system, const RPMDInt ...@@ -116,9 +116,9 @@ void CudaIntegrateRPMDStepKernel::initialize(const System& system, const RPMDInt
groupsNotContracted = -1; groupsNotContracted = -1;
const map<int, int>& contractions = integrator.getContractions(); const map<int, int>& contractions = integrator.getContractions();
int maxContractedCopies = 0; int maxContractedCopies = 0;
for (map<int, int>::const_iterator iter = contractions.begin(); iter != contractions.end(); ++iter) { for (auto& c : contractions) {
int group = iter->first; int group = c.first;
int copies = iter->second; int copies = c.second;
if (group < 0 || group > 31) if (group < 0 || group > 31)
throw OpenMMException("RPMDIntegrator: Force group must be between 0 and 31"); throw OpenMMException("RPMDIntegrator: Force group must be between 0 and 31");
if (copies < 0 || copies > numCopies) if (copies < 0 || copies > numCopies)
...@@ -166,8 +166,8 @@ void CudaIntegrateRPMDStepKernel::initialize(const System& system, const RPMDInt ...@@ -166,8 +166,8 @@ void CudaIntegrateRPMDStepKernel::initialize(const System& system, const RPMDInt
// Create kernels for doing contractions. // Create kernels for doing contractions.
for (map<int, int>::const_iterator iter = groupsByCopies.begin(); iter != groupsByCopies.end(); ++iter) { for (auto& g : groupsByCopies) {
int copies = iter->first; int copies = g.first;
replacements.clear(); replacements.clear();
replacements["NUM_CONTRACTED_COPIES"] = cu.intToString(copies); replacements["NUM_CONTRACTED_COPIES"] = cu.intToString(copies);
replacements["POS_SCALE"] = cu.doubleToString(1.0/numCopies); replacements["POS_SCALE"] = cu.doubleToString(1.0/numCopies);
...@@ -267,9 +267,9 @@ void CudaIntegrateRPMDStepKernel::computeForces(ContextImpl& context) { ...@@ -267,9 +267,9 @@ void CudaIntegrateRPMDStepKernel::computeForces(ContextImpl& context) {
// Now loop over contractions and compute forces from them. // Now loop over contractions and compute forces from them.
for (map<int, int>::const_iterator iter = groupsByCopies.begin(); iter != groupsByCopies.end(); ++iter) { for (auto& g : groupsByCopies) {
int copies = iter->first; int copies = g.first;
int groupFlags = iter->second; int groupFlags = g.second;
// Find the contracted positions. // Find the contracted positions.
......
...@@ -96,9 +96,9 @@ void OpenCLIntegrateRPMDStepKernel::initialize(const System& system, const RPMDI ...@@ -96,9 +96,9 @@ void OpenCLIntegrateRPMDStepKernel::initialize(const System& system, const RPMDI
groupsNotContracted = -1; groupsNotContracted = -1;
const map<int, int>& contractions = integrator.getContractions(); const map<int, int>& contractions = integrator.getContractions();
int maxContractedCopies = 0; int maxContractedCopies = 0;
for (map<int, int>::const_iterator iter = contractions.begin(); iter != contractions.end(); ++iter) { for (auto& c : contractions) {
int group = iter->first; int group = c.first;
int copies = iter->second; int copies = c.second;
if (group < 0 || group > 31) if (group < 0 || group > 31)
throw OpenMMException("RPMDIntegrator: Force group must be between 0 and 31"); throw OpenMMException("RPMDIntegrator: Force group must be between 0 and 31");
if (copies < 0 || copies > numCopies) if (copies < 0 || copies > numCopies)
...@@ -146,8 +146,8 @@ void OpenCLIntegrateRPMDStepKernel::initialize(const System& system, const RPMDI ...@@ -146,8 +146,8 @@ void OpenCLIntegrateRPMDStepKernel::initialize(const System& system, const RPMDI
// Create kernels for doing contractions. // Create kernels for doing contractions.
for (map<int, int>::const_iterator iter = groupsByCopies.begin(); iter != groupsByCopies.end(); ++iter) { for (auto& g : groupsByCopies) {
int copies = iter->first; int copies = g.first;
replacements.clear(); replacements.clear();
replacements["NUM_CONTRACTED_COPIES"] = cl.intToString(copies); replacements["NUM_CONTRACTED_COPIES"] = cl.intToString(copies);
replacements["POS_SCALE"] = cl.doubleToString(1.0/numCopies); replacements["POS_SCALE"] = cl.doubleToString(1.0/numCopies);
...@@ -182,8 +182,8 @@ void OpenCLIntegrateRPMDStepKernel::initializeKernels(ContextImpl& context) { ...@@ -182,8 +182,8 @@ void OpenCLIntegrateRPMDStepKernel::initializeKernels(ContextImpl& context) {
copyFromContextKernel.setArg<cl::Buffer>(3, velocities->getDeviceBuffer()); copyFromContextKernel.setArg<cl::Buffer>(3, velocities->getDeviceBuffer());
copyFromContextKernel.setArg<cl::Buffer>(4, cl.getPosq().getDeviceBuffer()); copyFromContextKernel.setArg<cl::Buffer>(4, cl.getPosq().getDeviceBuffer());
copyFromContextKernel.setArg<cl::Buffer>(6, cl.getAtomIndexArray().getDeviceBuffer()); copyFromContextKernel.setArg<cl::Buffer>(6, cl.getAtomIndexArray().getDeviceBuffer());
for (map<int, int>::const_iterator iter = groupsByCopies.begin(); iter != groupsByCopies.end(); ++iter) { for (auto& g : groupsByCopies) {
int copies = iter->first; int copies = g.first;
positionContractionKernels[copies].setArg<cl::Buffer>(0, positions->getDeviceBuffer()); positionContractionKernels[copies].setArg<cl::Buffer>(0, positions->getDeviceBuffer());
positionContractionKernels[copies].setArg<cl::Buffer>(1, contractedPositions->getDeviceBuffer()); positionContractionKernels[copies].setArg<cl::Buffer>(1, contractedPositions->getDeviceBuffer());
forceContractionKernels[copies].setArg<cl::Buffer>(0, forces->getDeviceBuffer()); forceContractionKernels[copies].setArg<cl::Buffer>(0, forces->getDeviceBuffer());
...@@ -286,9 +286,9 @@ void OpenCLIntegrateRPMDStepKernel::computeForces(ContextImpl& context) { ...@@ -286,9 +286,9 @@ void OpenCLIntegrateRPMDStepKernel::computeForces(ContextImpl& context) {
copyToContextKernel.setArg<cl::Buffer>(2, contractedPositions->getDeviceBuffer()); copyToContextKernel.setArg<cl::Buffer>(2, contractedPositions->getDeviceBuffer());
copyFromContextKernel.setArg<cl::Buffer>(1, contractedForces->getDeviceBuffer()); copyFromContextKernel.setArg<cl::Buffer>(1, contractedForces->getDeviceBuffer());
copyFromContextKernel.setArg<cl::Buffer>(5, contractedPositions->getDeviceBuffer()); copyFromContextKernel.setArg<cl::Buffer>(5, contractedPositions->getDeviceBuffer());
for (map<int, int>::const_iterator iter = groupsByCopies.begin(); iter != groupsByCopies.end(); ++iter) { for (auto& g : groupsByCopies) {
int copies = iter->first; int copies = g.first;
int groupFlags = iter->second; int groupFlags = g.second;
// Find the contracted positions. // Find the contracted positions.
......
...@@ -55,9 +55,9 @@ static vector<Vec3>& extractForces(ContextImpl& context) { ...@@ -55,9 +55,9 @@ static vector<Vec3>& extractForces(ContextImpl& context) {
ReferenceIntegrateRPMDStepKernel::~ReferenceIntegrateRPMDStepKernel() { ReferenceIntegrateRPMDStepKernel::~ReferenceIntegrateRPMDStepKernel() {
if (fft != NULL) if (fft != NULL)
fftpack_destroy(fft); fftpack_destroy(fft);
for (map<int, fftpack*>::const_iterator iter = contractionFFT.begin(); iter != contractionFFT.end(); ++iter) for (auto& c : contractionFFT)
if (iter->second != NULL) if (c.second != NULL)
fftpack_destroy(iter->second); fftpack_destroy(c.second);
} }
void ReferenceIntegrateRPMDStepKernel::initialize(const System& system, const RPMDIntegrator& integrator) { void ReferenceIntegrateRPMDStepKernel::initialize(const System& system, const RPMDIntegrator& integrator) {
...@@ -79,9 +79,9 @@ void ReferenceIntegrateRPMDStepKernel::initialize(const System& system, const RP ...@@ -79,9 +79,9 @@ void ReferenceIntegrateRPMDStepKernel::initialize(const System& system, const RP
groupsNotContracted = -1; groupsNotContracted = -1;
const map<int, int>& contractions = integrator.getContractions(); const map<int, int>& contractions = integrator.getContractions();
int maxContractedCopies = 0; int maxContractedCopies = 0;
for (map<int, int>::const_iterator iter = contractions.begin(); iter != contractions.end(); ++iter) { for (auto& c : contractions) {
int group = iter->first; int group = c.first;
int copies = iter->second; int copies = c.second;
if (group < 0 || group > 31) if (group < 0 || group > 31)
throw OpenMMException("RPMDIntegrator: Force group must be between 0 and 31"); throw OpenMMException("RPMDIntegrator: Force group must be between 0 and 31");
if (copies < 0 || copies > numCopies) if (copies < 0 || copies > numCopies)
...@@ -290,9 +290,9 @@ void ReferenceIntegrateRPMDStepKernel::computeForces(ContextImpl& context, const ...@@ -290,9 +290,9 @@ void ReferenceIntegrateRPMDStepKernel::computeForces(ContextImpl& context, const
// Now loop over contractions and compute forces from them. // Now loop over contractions and compute forces from them.
for (map<int, int>::const_iterator iter = groupsByCopies.begin(); iter != groupsByCopies.end(); ++iter) { for (auto& g : groupsByCopies) {
int copies = iter->first; int copies = g.first;
int groupFlags = iter->second; int groupFlags = g.second;
fftpack* shortFFT = contractionFFT[copies]; fftpack* shortFFT = contractionFFT[copies];
// Find the contracted positions. // Find the contracted positions.
......
...@@ -52,8 +52,8 @@ void CMAPTorsionForceProxy::serialize(const void* object, SerializationNode& nod ...@@ -52,8 +52,8 @@ void CMAPTorsionForceProxy::serialize(const void* object, SerializationNode& nod
vector<double> energy; vector<double> energy;
force.getMapParameters(i, size, energy); force.getMapParameters(i, size, energy);
SerializationNode& map = maps.createChildNode("Map").setIntProperty("size", size); SerializationNode& map = maps.createChildNode("Map").setIntProperty("size", size);
for (int i = 0; i < (int) energy.size(); i++) for (auto e : energy)
map.createChildNode("Energy").setDoubleProperty("e", energy[i]); map.createChildNode("Energy").setDoubleProperty("e", e);
} }
SerializationNode& torsions = node.createChildNode("Torsions"); SerializationNode& torsions = node.createChildNode("Torsions");
for (int i = 0; i < force.getNumTorsions(); i++) { for (int i = 0; i < force.getNumTorsions(); i++) {
...@@ -73,8 +73,7 @@ void* CMAPTorsionForceProxy::deserialize(const SerializationNode& node) const { ...@@ -73,8 +73,7 @@ void* CMAPTorsionForceProxy::deserialize(const SerializationNode& node) const {
if (version > 1) if (version > 1)
force->setUsesPeriodicBoundaryConditions(node.getBoolProperty("usesPeriodic")); force->setUsesPeriodicBoundaryConditions(node.getBoolProperty("usesPeriodic"));
const SerializationNode& maps = node.getChildNode("Maps"); const SerializationNode& maps = node.getChildNode("Maps");
for (int i = 0; i < (int) maps.getChildren().size(); i++) { for (auto& map : maps.getChildren()) {
const SerializationNode& map = maps.getChildren()[i];
int size = map.getIntProperty("size"); int size = map.getIntProperty("size");
if (size*size != map.getChildren().size()) if (size*size != map.getChildren().size())
throw OpenMMException("Wrong number of values specified for CMAP"); throw OpenMMException("Wrong number of values specified for CMAP");
...@@ -84,11 +83,9 @@ void* CMAPTorsionForceProxy::deserialize(const SerializationNode& node) const { ...@@ -84,11 +83,9 @@ void* CMAPTorsionForceProxy::deserialize(const SerializationNode& node) const {
force->addMap(size, energy); force->addMap(size, energy);
} }
const SerializationNode& torsions = node.getChildNode("Torsions"); const SerializationNode& torsions = node.getChildNode("Torsions");
for (int i = 0; i < (int) torsions.getChildren().size(); i++) { for (auto& torsion : torsions.getChildren())
const SerializationNode& torsion = torsions.getChildren()[i];
force->addTorsion(torsion.getIntProperty("map"), torsion.getIntProperty("a1"), torsion.getIntProperty("a2"), torsion.getIntProperty("a3"), torsion.getIntProperty("a4"), force->addTorsion(torsion.getIntProperty("map"), torsion.getIntProperty("a1"), torsion.getIntProperty("a2"), torsion.getIntProperty("a3"), torsion.getIntProperty("a4"),
torsion.getIntProperty("b1"), torsion.getIntProperty("b2"), torsion.getIntProperty("b3"), torsion.getIntProperty("b4")); torsion.getIntProperty("b1"), torsion.getIntProperty("b2"), torsion.getIntProperty("b3"), torsion.getIntProperty("b4"));
}
} }
catch (...) { catch (...) {
delete force; delete force;
......
...@@ -85,26 +85,19 @@ void* CustomAngleForceProxy::deserialize(const SerializationNode& node) const { ...@@ -85,26 +85,19 @@ void* CustomAngleForceProxy::deserialize(const SerializationNode& node) const {
if (version > 1) if (version > 1)
force->setUsesPeriodicBoundaryConditions(node.getBoolProperty("usesPeriodic")); force->setUsesPeriodicBoundaryConditions(node.getBoolProperty("usesPeriodic"));
const SerializationNode& perAngleParams = node.getChildNode("PerAngleParameters"); const SerializationNode& perAngleParams = node.getChildNode("PerAngleParameters");
for (int i = 0; i < (int) perAngleParams.getChildren().size(); i++) { for (auto& parameter : perAngleParams.getChildren())
const SerializationNode& parameter = perAngleParams.getChildren()[i];
force->addPerAngleParameter(parameter.getStringProperty("name")); force->addPerAngleParameter(parameter.getStringProperty("name"));
}
const SerializationNode& globalParams = node.getChildNode("GlobalParameters"); const SerializationNode& globalParams = node.getChildNode("GlobalParameters");
for (int i = 0; i < (int) globalParams.getChildren().size(); i++) { for (auto& parameter : globalParams.getChildren())
const SerializationNode& parameter = globalParams.getChildren()[i];
force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default")); force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default"));
}
if (version > 2) { if (version > 2) {
const SerializationNode& energyDerivs = node.getChildNode("EnergyParameterDerivatives"); const SerializationNode& energyDerivs = node.getChildNode("EnergyParameterDerivatives");
for (int i = 0; i < (int) energyDerivs.getChildren().size(); i++) { for (auto& parameter : energyDerivs.getChildren())
const SerializationNode& parameter = energyDerivs.getChildren()[i];
force->addEnergyParameterDerivative(parameter.getStringProperty("name")); force->addEnergyParameterDerivative(parameter.getStringProperty("name"));
}
} }
const SerializationNode& angles = node.getChildNode("Angles"); const SerializationNode& angles = node.getChildNode("Angles");
vector<double> params(force->getNumPerAngleParameters()); vector<double> params(force->getNumPerAngleParameters());
for (int i = 0; i < (int) angles.getChildren().size(); i++) { for (auto& angle : angles.getChildren()) {
const SerializationNode& angle = angles.getChildren()[i];
for (int j = 0; j < (int) params.size(); j++) { for (int j = 0; j < (int) params.size(); j++) {
stringstream key; stringstream key;
key << "param"; key << "param";
......
...@@ -85,26 +85,19 @@ void* CustomBondForceProxy::deserialize(const SerializationNode& node) const { ...@@ -85,26 +85,19 @@ void* CustomBondForceProxy::deserialize(const SerializationNode& node) const {
if (version > 1) if (version > 1)
force->setUsesPeriodicBoundaryConditions(node.getBoolProperty("usesPeriodic")); force->setUsesPeriodicBoundaryConditions(node.getBoolProperty("usesPeriodic"));
const SerializationNode& perBondParams = node.getChildNode("PerBondParameters"); const SerializationNode& perBondParams = node.getChildNode("PerBondParameters");
for (int i = 0; i < (int) perBondParams.getChildren().size(); i++) { for (auto& parameter : perBondParams.getChildren())
const SerializationNode& parameter = perBondParams.getChildren()[i];
force->addPerBondParameter(parameter.getStringProperty("name")); force->addPerBondParameter(parameter.getStringProperty("name"));
}
const SerializationNode& globalParams = node.getChildNode("GlobalParameters"); const SerializationNode& globalParams = node.getChildNode("GlobalParameters");
for (int i = 0; i < (int) globalParams.getChildren().size(); i++) { for (auto& parameter : globalParams.getChildren())
const SerializationNode& parameter = globalParams.getChildren()[i];
force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default")); force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default"));
}
if (version > 2) { if (version > 2) {
const SerializationNode& energyDerivs = node.getChildNode("EnergyParameterDerivatives"); const SerializationNode& energyDerivs = node.getChildNode("EnergyParameterDerivatives");
for (int i = 0; i < (int) energyDerivs.getChildren().size(); i++) { for (auto& parameter : energyDerivs.getChildren())
const SerializationNode& parameter = energyDerivs.getChildren()[i];
force->addEnergyParameterDerivative(parameter.getStringProperty("name")); force->addEnergyParameterDerivative(parameter.getStringProperty("name"));
}
} }
const SerializationNode& bonds = node.getChildNode("Bonds"); const SerializationNode& bonds = node.getChildNode("Bonds");
vector<double> params(force->getNumPerBondParameters()); vector<double> params(force->getNumPerBondParameters());
for (int i = 0; i < (int) bonds.getChildren().size(); i++) { for (auto& bond : bonds.getChildren()) {
const SerializationNode& bond = bonds.getChildren()[i];
for (int j = 0; j < (int) params.size(); j++) { for (int j = 0; j < (int) params.size(); j++) {
stringstream key; stringstream key;
key << "param"; key << "param";
......
...@@ -108,39 +108,31 @@ void* CustomCentroidBondForceProxy::deserialize(const SerializationNode& node) c ...@@ -108,39 +108,31 @@ void* CustomCentroidBondForceProxy::deserialize(const SerializationNode& node) c
if (version > 1) if (version > 1)
force->setUsesPeriodicBoundaryConditions(node.getBoolProperty("usesPeriodic")); force->setUsesPeriodicBoundaryConditions(node.getBoolProperty("usesPeriodic"));
const SerializationNode& perBondParams = node.getChildNode("PerBondParameters"); const SerializationNode& perBondParams = node.getChildNode("PerBondParameters");
for (int i = 0; i < (int) perBondParams.getChildren().size(); i++) { for (auto& parameter : perBondParams.getChildren())
const SerializationNode& parameter = perBondParams.getChildren()[i];
force->addPerBondParameter(parameter.getStringProperty("name")); force->addPerBondParameter(parameter.getStringProperty("name"));
}
const SerializationNode& globalParams = node.getChildNode("GlobalParameters"); const SerializationNode& globalParams = node.getChildNode("GlobalParameters");
for (int i = 0; i < (int) globalParams.getChildren().size(); i++) { for (auto& parameter : globalParams.getChildren())
const SerializationNode& parameter = globalParams.getChildren()[i];
force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default")); force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default"));
}
if (version > 2) { if (version > 2) {
const SerializationNode& energyDerivs = node.getChildNode("EnergyParameterDerivatives"); const SerializationNode& energyDerivs = node.getChildNode("EnergyParameterDerivatives");
for (int i = 0; i < (int) energyDerivs.getChildren().size(); i++) { for (auto& parameter : energyDerivs.getChildren())
const SerializationNode& parameter = energyDerivs.getChildren()[i];
force->addEnergyParameterDerivative(parameter.getStringProperty("name")); force->addEnergyParameterDerivative(parameter.getStringProperty("name"));
}
} }
const SerializationNode& groups = node.getChildNode("Groups"); const SerializationNode& groups = node.getChildNode("Groups");
for (int i = 0; i < (int) groups.getChildren().size(); i++) { for (auto& group : groups.getChildren()) {
const SerializationNode& group = groups.getChildren()[i];
vector<int> particles; vector<int> particles;
vector<double> weights; vector<double> weights;
for (int j = 0; j < (int) group.getChildren().size(); j++) { for (auto& child : group.getChildren()) {
particles.push_back(group.getChildren()[j].getIntProperty("p")); particles.push_back(child.getIntProperty("p"));
if (group.getChildren()[j].hasProperty("weight")) if (child.hasProperty("weight"))
weights.push_back(group.getChildren()[j].getDoubleProperty("weight")); weights.push_back(child.getDoubleProperty("weight"));
} }
force->addGroup(particles, weights); force->addGroup(particles, weights);
} }
const SerializationNode& bonds = node.getChildNode("Bonds"); const SerializationNode& bonds = node.getChildNode("Bonds");
vector<int> bondGroups(force->getNumGroupsPerBond()); vector<int> bondGroups(force->getNumGroupsPerBond());
vector<double> params(force->getNumPerBondParameters()); vector<double> params(force->getNumPerBondParameters());
for (int i = 0; i < (int) bonds.getChildren().size(); i++) { for (auto& bond : bonds.getChildren()) {
const SerializationNode& bond = bonds.getChildren()[i];
for (int j = 0; j < (int) bondGroups.size(); j++) { for (int j = 0; j < (int) bondGroups.size(); j++) {
stringstream key; stringstream key;
key << "g"; key << "g";
...@@ -156,8 +148,7 @@ void* CustomCentroidBondForceProxy::deserialize(const SerializationNode& node) c ...@@ -156,8 +148,7 @@ void* CustomCentroidBondForceProxy::deserialize(const SerializationNode& node) c
force->addBond(bondGroups, params); force->addBond(bondGroups, params);
} }
const SerializationNode& functions = node.getChildNode("Functions"); const SerializationNode& functions = node.getChildNode("Functions");
for (int i = 0; i < (int) functions.getChildren().size(); i++) { for (auto& function : functions.getChildren()) {
const SerializationNode& function = functions.getChildren()[i];
if (function.hasProperty("type")) { if (function.hasProperty("type")) {
force->addTabulatedFunction(function.getStringProperty("name"), function.decodeObject<TabulatedFunction>()); force->addTabulatedFunction(function.getStringProperty("name"), function.decodeObject<TabulatedFunction>());
} }
...@@ -166,8 +157,8 @@ void* CustomCentroidBondForceProxy::deserialize(const SerializationNode& node) c ...@@ -166,8 +157,8 @@ void* CustomCentroidBondForceProxy::deserialize(const SerializationNode& node) c
const SerializationNode& valuesNode = function.getChildNode("Values"); const SerializationNode& valuesNode = function.getChildNode("Values");
vector<double> values; vector<double> values;
for (int j = 0; j < (int) valuesNode.getChildren().size(); j++) for (auto& child : valuesNode.getChildren())
values.push_back(valuesNode.getChildren()[j].getDoubleProperty("v")); values.push_back(child.getDoubleProperty("v"));
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")));
} }
} }
......
...@@ -95,27 +95,20 @@ void* CustomCompoundBondForceProxy::deserialize(const SerializationNode& node) c ...@@ -95,27 +95,20 @@ void* CustomCompoundBondForceProxy::deserialize(const SerializationNode& node) c
if (version > 1) if (version > 1)
force->setUsesPeriodicBoundaryConditions(node.getBoolProperty("usesPeriodic")); force->setUsesPeriodicBoundaryConditions(node.getBoolProperty("usesPeriodic"));
const SerializationNode& perBondParams = node.getChildNode("PerBondParameters"); const SerializationNode& perBondParams = node.getChildNode("PerBondParameters");
for (int i = 0; i < (int) perBondParams.getChildren().size(); i++) { for (auto& parameter : perBondParams.getChildren())
const SerializationNode& parameter = perBondParams.getChildren()[i];
force->addPerBondParameter(parameter.getStringProperty("name")); force->addPerBondParameter(parameter.getStringProperty("name"));
}
const SerializationNode& globalParams = node.getChildNode("GlobalParameters"); const SerializationNode& globalParams = node.getChildNode("GlobalParameters");
for (int i = 0; i < (int) globalParams.getChildren().size(); i++) { for (auto& parameter : globalParams.getChildren())
const SerializationNode& parameter = globalParams.getChildren()[i];
force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default")); force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default"));
}
if (version > 2) { if (version > 2) {
const SerializationNode& energyDerivs = node.getChildNode("EnergyParameterDerivatives"); const SerializationNode& energyDerivs = node.getChildNode("EnergyParameterDerivatives");
for (int i = 0; i < (int) energyDerivs.getChildren().size(); i++) { for (auto& parameter : energyDerivs.getChildren())
const SerializationNode& parameter = energyDerivs.getChildren()[i];
force->addEnergyParameterDerivative(parameter.getStringProperty("name")); force->addEnergyParameterDerivative(parameter.getStringProperty("name"));
}
} }
const SerializationNode& bonds = node.getChildNode("Bonds"); const SerializationNode& bonds = node.getChildNode("Bonds");
vector<int> particles(force->getNumParticlesPerBond()); vector<int> particles(force->getNumParticlesPerBond());
vector<double> params(force->getNumPerBondParameters()); vector<double> params(force->getNumPerBondParameters());
for (int i = 0; i < (int) bonds.getChildren().size(); i++) { for (auto& bond : bonds.getChildren()) {
const SerializationNode& bond = bonds.getChildren()[i];
for (int j = 0; j < (int) particles.size(); j++) { for (int j = 0; j < (int) particles.size(); j++) {
stringstream key; stringstream key;
key << "p"; key << "p";
...@@ -131,8 +124,7 @@ void* CustomCompoundBondForceProxy::deserialize(const SerializationNode& node) c ...@@ -131,8 +124,7 @@ void* CustomCompoundBondForceProxy::deserialize(const SerializationNode& node) c
force->addBond(particles, params); force->addBond(particles, params);
} }
const SerializationNode& functions = node.getChildNode("Functions"); const SerializationNode& functions = node.getChildNode("Functions");
for (int i = 0; i < (int) functions.getChildren().size(); i++) { for (auto& function : functions.getChildren()) {
const SerializationNode& function = functions.getChildren()[i];
if (function.hasProperty("type")) { if (function.hasProperty("type")) {
force->addTabulatedFunction(function.getStringProperty("name"), function.decodeObject<TabulatedFunction>()); force->addTabulatedFunction(function.getStringProperty("name"), function.decodeObject<TabulatedFunction>());
} }
...@@ -141,8 +133,8 @@ void* CustomCompoundBondForceProxy::deserialize(const SerializationNode& node) c ...@@ -141,8 +133,8 @@ void* CustomCompoundBondForceProxy::deserialize(const SerializationNode& node) c
const SerializationNode& valuesNode = function.getChildNode("Values"); const SerializationNode& valuesNode = function.getChildNode("Values");
vector<double> values; vector<double> values;
for (int j = 0; j < (int) valuesNode.getChildren().size(); j++) for (auto& child : valuesNode.getChildren())
values.push_back(valuesNode.getChildren()[j].getDoubleProperty("v")); values.push_back(child.getDoubleProperty("v"));
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")));
} }
} }
......
...@@ -77,19 +77,14 @@ void* CustomExternalForceProxy::deserialize(const SerializationNode& node) const ...@@ -77,19 +77,14 @@ void* CustomExternalForceProxy::deserialize(const SerializationNode& node) const
CustomExternalForce* force = new CustomExternalForce(node.getStringProperty("energy")); CustomExternalForce* force = new CustomExternalForce(node.getStringProperty("energy"));
force->setForceGroup(node.getIntProperty("forceGroup", 0)); force->setForceGroup(node.getIntProperty("forceGroup", 0));
const SerializationNode& perParticleParams = node.getChildNode("PerParticleParameters"); const SerializationNode& perParticleParams = node.getChildNode("PerParticleParameters");
for (int i = 0; i < (int) perParticleParams.getChildren().size(); i++) { for (auto& parameter : perParticleParams.getChildren())
const SerializationNode& parameter = perParticleParams.getChildren()[i];
force->addPerParticleParameter(parameter.getStringProperty("name")); force->addPerParticleParameter(parameter.getStringProperty("name"));
}
const SerializationNode& globalParams = node.getChildNode("GlobalParameters"); const SerializationNode& globalParams = node.getChildNode("GlobalParameters");
for (int i = 0; i < (int) globalParams.getChildren().size(); i++) { for (auto& parameter : globalParams.getChildren())
const SerializationNode& parameter = globalParams.getChildren()[i];
force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default")); force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default"));
}
const SerializationNode& particles = node.getChildNode("Particles"); const SerializationNode& particles = node.getChildNode("Particles");
vector<double> params(force->getNumPerParticleParameters()); vector<double> params(force->getNumPerParticleParameters());
for (int i = 0; i < (int) particles.getChildren().size(); i++) { for (auto& particle : particles.getChildren()) {
const SerializationNode& particle = particles.getChildren()[i];
for (int j = 0; j < (int) params.size(); j++) { for (int j = 0; j < (int) params.size(); j++) {
stringstream key; stringstream key;
key << "param"; key << "param";
......
...@@ -107,36 +107,25 @@ void* CustomGBForceProxy::deserialize(const SerializationNode& node) const { ...@@ -107,36 +107,25 @@ void* CustomGBForceProxy::deserialize(const SerializationNode& node) const {
force->setNonbondedMethod((CustomGBForce::NonbondedMethod) node.getIntProperty("method")); force->setNonbondedMethod((CustomGBForce::NonbondedMethod) node.getIntProperty("method"));
force->setCutoffDistance(node.getDoubleProperty("cutoff")); force->setCutoffDistance(node.getDoubleProperty("cutoff"));
const SerializationNode& perParticleParams = node.getChildNode("PerParticleParameters"); const SerializationNode& perParticleParams = node.getChildNode("PerParticleParameters");
for (int i = 0; i < (int) perParticleParams.getChildren().size(); i++) { for (auto& parameter : perParticleParams.getChildren())
const SerializationNode& parameter = perParticleParams.getChildren()[i];
force->addPerParticleParameter(parameter.getStringProperty("name")); force->addPerParticleParameter(parameter.getStringProperty("name"));
}
const SerializationNode& globalParams = node.getChildNode("GlobalParameters"); const SerializationNode& globalParams = node.getChildNode("GlobalParameters");
for (int i = 0; i < (int) globalParams.getChildren().size(); i++) { for (auto& parameter : globalParams.getChildren())
const SerializationNode& parameter = globalParams.getChildren()[i];
force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default")); force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default"));
}
if (version > 1) { if (version > 1) {
const SerializationNode& energyDerivs = node.getChildNode("EnergyParameterDerivatives"); const SerializationNode& energyDerivs = node.getChildNode("EnergyParameterDerivatives");
for (int i = 0; i < (int) energyDerivs.getChildren().size(); i++) { for (auto& parameter : energyDerivs.getChildren())
const SerializationNode& parameter = energyDerivs.getChildren()[i];
force->addEnergyParameterDerivative(parameter.getStringProperty("name")); force->addEnergyParameterDerivative(parameter.getStringProperty("name"));
}
} }
const SerializationNode& computedValues = node.getChildNode("ComputedValues"); const SerializationNode& computedValues = node.getChildNode("ComputedValues");
for (int i = 0; i < (int) computedValues.getChildren().size(); i++) { for (auto& value : computedValues.getChildren())
const SerializationNode& value = computedValues.getChildren()[i];
force->addComputedValue(value.getStringProperty("name"), value.getStringProperty("expression"), (CustomGBForce::ComputationType) value.getIntProperty("type")); force->addComputedValue(value.getStringProperty("name"), value.getStringProperty("expression"), (CustomGBForce::ComputationType) value.getIntProperty("type"));
}
const SerializationNode& energyTerms = node.getChildNode("EnergyTerms"); const SerializationNode& energyTerms = node.getChildNode("EnergyTerms");
for (int i = 0; i < (int) energyTerms.getChildren().size(); i++) { for (auto& term : energyTerms.getChildren())
const SerializationNode& term = energyTerms.getChildren()[i];
force->addEnergyTerm(term.getStringProperty("expression"), (CustomGBForce::ComputationType) term.getIntProperty("type")); force->addEnergyTerm(term.getStringProperty("expression"), (CustomGBForce::ComputationType) term.getIntProperty("type"));
}
const SerializationNode& particles = node.getChildNode("Particles"); const SerializationNode& particles = node.getChildNode("Particles");
vector<double> params(force->getNumPerParticleParameters()); vector<double> params(force->getNumPerParticleParameters());
for (int i = 0; i < (int) particles.getChildren().size(); i++) { for (auto& particle : particles.getChildren()) {
const SerializationNode& particle = particles.getChildren()[i];
for (int j = 0; j < (int) params.size(); j++) { for (int j = 0; j < (int) params.size(); j++) {
stringstream key; stringstream key;
key << "param"; key << "param";
...@@ -146,13 +135,10 @@ void* CustomGBForceProxy::deserialize(const SerializationNode& node) const { ...@@ -146,13 +135,10 @@ void* CustomGBForceProxy::deserialize(const SerializationNode& node) const {
force->addParticle(params); force->addParticle(params);
} }
const SerializationNode& exclusions = node.getChildNode("Exclusions"); const SerializationNode& exclusions = node.getChildNode("Exclusions");
for (int i = 0; i < (int) exclusions.getChildren().size(); i++) { for (auto& exclusion : exclusions.getChildren())
const SerializationNode& exclusion = exclusions.getChildren()[i];
force->addExclusion(exclusion.getIntProperty("p1"), exclusion.getIntProperty("p2")); force->addExclusion(exclusion.getIntProperty("p1"), exclusion.getIntProperty("p2"));
}
const SerializationNode& functions = node.getChildNode("Functions"); const SerializationNode& functions = node.getChildNode("Functions");
for (int i = 0; i < (int) functions.getChildren().size(); i++) { for (auto& function : functions.getChildren()) {
const SerializationNode& function = functions.getChildren()[i];
if (function.hasProperty("type")) { if (function.hasProperty("type")) {
force->addTabulatedFunction(function.getStringProperty("name"), function.decodeObject<TabulatedFunction>()); force->addTabulatedFunction(function.getStringProperty("name"), function.decodeObject<TabulatedFunction>());
} }
...@@ -161,8 +147,8 @@ void* CustomGBForceProxy::deserialize(const SerializationNode& node) const { ...@@ -161,8 +147,8 @@ void* CustomGBForceProxy::deserialize(const SerializationNode& node) const {
const SerializationNode& valuesNode = function.getChildNode("Values"); const SerializationNode& valuesNode = function.getChildNode("Values");
vector<double> values; vector<double> values;
for (int j = 0; j < (int) valuesNode.getChildren().size(); j++) for (auto& child : valuesNode.getChildren())
values.push_back(valuesNode.getChildren()[j].getDoubleProperty("v")); values.push_back(child.getDoubleProperty("v"));
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")));
} }
} }
......
...@@ -107,24 +107,17 @@ void* CustomHbondForceProxy::deserialize(const SerializationNode& node) const { ...@@ -107,24 +107,17 @@ void* CustomHbondForceProxy::deserialize(const SerializationNode& node) const {
force->setNonbondedMethod((CustomHbondForce::NonbondedMethod) node.getIntProperty("method")); force->setNonbondedMethod((CustomHbondForce::NonbondedMethod) node.getIntProperty("method"));
force->setCutoffDistance(node.getDoubleProperty("cutoff")); force->setCutoffDistance(node.getDoubleProperty("cutoff"));
const SerializationNode& perDonorParams = node.getChildNode("PerDonorParameters"); const SerializationNode& perDonorParams = node.getChildNode("PerDonorParameters");
for (int i = 0; i < (int) perDonorParams.getChildren().size(); i++) { for (auto& parameter : perDonorParams.getChildren())
const SerializationNode& parameter = perDonorParams.getChildren()[i];
force->addPerDonorParameter(parameter.getStringProperty("name")); force->addPerDonorParameter(parameter.getStringProperty("name"));
}
const SerializationNode& perAcceptorParams = node.getChildNode("PerAcceptorParameters"); const SerializationNode& perAcceptorParams = node.getChildNode("PerAcceptorParameters");
for (int i = 0; i < (int) perAcceptorParams.getChildren().size(); i++) { for (auto& parameter : perAcceptorParams.getChildren())
const SerializationNode& parameter = perAcceptorParams.getChildren()[i];
force->addPerAcceptorParameter(parameter.getStringProperty("name")); force->addPerAcceptorParameter(parameter.getStringProperty("name"));
}
const SerializationNode& globalParams = node.getChildNode("GlobalParameters"); const SerializationNode& globalParams = node.getChildNode("GlobalParameters");
for (int i = 0; i < (int) globalParams.getChildren().size(); i++) { for (auto& parameter : globalParams.getChildren())
const SerializationNode& parameter = globalParams.getChildren()[i];
force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default")); force->addGlobalParameter(parameter.getStringProperty("name"), parameter.getDoubleProperty("default"));
}
const SerializationNode& donors = node.getChildNode("Donors"); const SerializationNode& donors = node.getChildNode("Donors");
vector<double> params(force->getNumPerDonorParameters()); vector<double> params(force->getNumPerDonorParameters());
for (int i = 0; i < (int) donors.getChildren().size(); i++) { for (auto& donor : donors.getChildren()) {
const SerializationNode& donor = donors.getChildren()[i];
for (int j = 0; j < (int) params.size(); j++) { for (int j = 0; j < (int) params.size(); j++) {
stringstream key; stringstream key;
key << "param"; key << "param";
...@@ -135,8 +128,7 @@ void* CustomHbondForceProxy::deserialize(const SerializationNode& node) const { ...@@ -135,8 +128,7 @@ void* CustomHbondForceProxy::deserialize(const SerializationNode& node) const {
} }
const SerializationNode& acceptors = node.getChildNode("Acceptors"); const SerializationNode& acceptors = node.getChildNode("Acceptors");
params.resize(force->getNumPerAcceptorParameters()); params.resize(force->getNumPerAcceptorParameters());
for (int i = 0; i < (int) acceptors.getChildren().size(); i++) { for (auto& acceptor : acceptors.getChildren()) {
const SerializationNode& acceptor = acceptors.getChildren()[i];
for (int j = 0; j < (int) params.size(); j++) { for (int j = 0; j < (int) params.size(); j++) {
stringstream key; stringstream key;
key << "param"; key << "param";
...@@ -146,13 +138,10 @@ void* CustomHbondForceProxy::deserialize(const SerializationNode& node) const { ...@@ -146,13 +138,10 @@ void* CustomHbondForceProxy::deserialize(const SerializationNode& node) const {
force->addAcceptor(acceptor.getIntProperty("p1"), acceptor.getIntProperty("p2"), acceptor.getIntProperty("p3"), params); force->addAcceptor(acceptor.getIntProperty("p1"), acceptor.getIntProperty("p2"), acceptor.getIntProperty("p3"), params);
} }
const SerializationNode& exclusions = node.getChildNode("Exclusions"); const SerializationNode& exclusions = node.getChildNode("Exclusions");
for (int i = 0; i < (int) exclusions.getChildren().size(); i++) { for (auto& exclusion : exclusions.getChildren())
const SerializationNode& exclusion = exclusions.getChildren()[i];
force->addExclusion(exclusion.getIntProperty("donor"), exclusion.getIntProperty("acceptor")); force->addExclusion(exclusion.getIntProperty("donor"), exclusion.getIntProperty("acceptor"));
}
const SerializationNode& functions = node.getChildNode("Functions"); const SerializationNode& functions = node.getChildNode("Functions");
for (int i = 0; i < (int) functions.getChildren().size(); i++) { for (auto& function : functions.getChildren()) {
const SerializationNode& function = functions.getChildren()[i];
if (function.hasProperty("type")) { if (function.hasProperty("type")) {
force->addTabulatedFunction(function.getStringProperty("name"), function.decodeObject<TabulatedFunction>()); force->addTabulatedFunction(function.getStringProperty("name"), function.decodeObject<TabulatedFunction>());
} }
...@@ -161,8 +150,8 @@ void* CustomHbondForceProxy::deserialize(const SerializationNode& node) const { ...@@ -161,8 +150,8 @@ void* CustomHbondForceProxy::deserialize(const SerializationNode& node) const {
const SerializationNode& valuesNode = function.getChildNode("Values"); const SerializationNode& valuesNode = function.getChildNode("Values");
vector<double> values; vector<double> values;
for (int j = 0; j < (int) valuesNode.getChildren().size(); j++) for (auto& child : valuesNode.getChildren())
values.push_back(valuesNode.getChildren()[j].getDoubleProperty("v")); values.push_back(child.getDoubleProperty("v"));
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")));
} }
} }
......
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