| 59 |  | nLocal_ = snap_->getNumberOfAtoms(); | 
| 60 |  |  | 
| 61 |  | nGroups_ = info_->getNLocalCutoffGroups(); | 
| 62 | – | cerr << "in dId, nGroups = " << nGroups_ << "\n"; | 
| 62 |  | // gather the information for atomtype IDs (atids): | 
| 63 |  | idents = info_->getIdentArray(); | 
| 64 |  | AtomLocalToGlobal = info_->getGlobalAtomIndices(); | 
| 65 |  | cgLocalToGlobal = info_->getGlobalGroupIndices(); | 
| 66 |  | vector<int> globalGroupMembership = info_->getGlobalGroupMembership(); | 
| 67 | + |  | 
| 68 |  | massFactors = info_->getMassFactors(); | 
| 69 |  |  | 
| 70 |  | PairList excludes = info_->getExcludedInteractions(); | 
| 226 |  | } | 
| 227 |  |  | 
| 228 |  | void ForceMatrixDecomposition::createGtypeCutoffMap() { | 
| 229 | < |  | 
| 229 | > |  | 
| 230 |  | RealType tol = 1e-6; | 
| 231 |  | RealType rc; | 
| 232 |  | int atid; | 
| 304 |  | vector<RealType> groupCutoff(nGroups_, 0.0); | 
| 305 |  | groupToGtype.resize(nGroups_); | 
| 306 |  |  | 
| 307 | – | cerr << "nGroups = " << nGroups_ << "\n"; | 
| 307 |  | for (int cg1 = 0; cg1 < nGroups_; cg1++) { | 
| 308 |  |  | 
| 309 |  | groupCutoff[cg1] = 0.0; | 
| 332 |  | } | 
| 333 |  | #endif | 
| 334 |  |  | 
| 336 | – | cerr << "gTypeCutoffs.size() = " << gTypeCutoffs.size() << "\n"; | 
| 335 |  | // Now we find the maximum group cutoff value present in the simulation | 
| 336 |  |  | 
| 337 |  | RealType groupMax = *max_element(gTypeCutoffs.begin(), gTypeCutoffs.end()); | 
| 452 |  | atomRowData.functionalDerivative.end(), 0.0); | 
| 453 |  | fill(atomColData.functionalDerivative.begin(), | 
| 454 |  | atomColData.functionalDerivative.end(), 0.0); | 
| 455 | + | } | 
| 456 | + |  | 
| 457 | + | if (storageLayout_ & DataStorage::dslSkippedCharge) { | 
| 458 | + | fill(atomRowData.skippedCharge.begin(), atomRowData.skippedCharge.end(), 0.0); | 
| 459 | + | fill(atomColData.skippedCharge.begin(), atomColData.skippedCharge.end(), 0.0); | 
| 460 |  | } | 
| 461 |  |  | 
| 462 |  | #else | 
| 477 |  | if (storageLayout_ & DataStorage::dslFunctionalDerivative) { | 
| 478 |  | fill(snap_->atomData.functionalDerivative.begin(), | 
| 479 |  | snap_->atomData.functionalDerivative.end(), 0.0); | 
| 480 | + | } | 
| 481 | + | if (storageLayout_ & DataStorage::dslSkippedCharge) { | 
| 482 | + | fill(snap_->atomData.skippedCharge.begin(), | 
| 483 | + | snap_->atomData.skippedCharge.end(), 0.0); | 
| 484 |  | } | 
| 485 |  | #endif | 
| 486 |  |  | 
| 698 |  | #ifdef IS_MPI | 
| 699 |  | return massFactorsRow[atom1]; | 
| 700 |  | #else | 
| 694 | – | cerr << "mfs = " << massFactors.size() << " atom1 = " << atom1 << "\n"; | 
| 701 |  | return massFactors[atom1]; | 
| 702 |  | #endif | 
| 703 |  | } | 
| 883 |  | snap_->atomData.force[atom1] += *(idat.f1); | 
| 884 |  | snap_->atomData.force[atom2] -= *(idat.f1); | 
| 885 |  | #endif | 
| 886 | < |  | 
| 886 | > |  | 
| 887 |  | } | 
| 888 |  |  | 
| 889 |  |  |