| 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(); | 
| 71 |  | PairList oneTwo = info_->getOneTwoInteractions(); | 
| 72 |  | PairList oneThree = info_->getOneThreeInteractions(); | 
| 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 |  |  | 
| 306 | – | cerr << "nGroups = " << nGroups_ << "\n"; | 
| 307 |  | for (int cg1 = 0; cg1 < nGroups_; cg1++) { | 
| 308 |  |  | 
| 309 |  | groupCutoff[cg1] = 0.0; | 
| 332 |  | } | 
| 333 |  | #endif | 
| 334 |  |  | 
| 335 | – | 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 | 
| 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 |  |  | 
| 487 |  | } | 
| 883 |  | snap_->atomData.force[atom1] += *(idat.f1); | 
| 884 |  | snap_->atomData.force[atom2] -= *(idat.f1); | 
| 885 |  | #endif | 
| 886 | < |  | 
| 886 | > |  | 
| 887 |  | } | 
| 888 |  |  | 
| 889 |  |  | 
| 890 |  | void ForceMatrixDecomposition::fillSkipData(InteractionData &idat, | 
| 891 |  | int atom1, int atom2) { | 
| 884 | – | // Still Missing:: skippedCharge fill must be added to DataStorage | 
| 892 |  | #ifdef IS_MPI | 
| 893 |  | idat.atypes = make_pair( ff_->getAtomType(identsRow[atom1]), | 
| 894 |  | ff_->getAtomType(identsCol[atom2]) ); | 
| 897 |  | idat.eFrame1 = &(atomRowData.electroFrame[atom1]); | 
| 898 |  | idat.eFrame2 = &(atomColData.electroFrame[atom2]); | 
| 899 |  | } | 
| 900 | + |  | 
| 901 |  | if (storageLayout_ & DataStorage::dslTorque) { | 
| 902 |  | idat.t1 = &(atomRowData.torque[atom1]); | 
| 903 |  | idat.t2 = &(atomColData.torque[atom2]); | 
| 904 |  | } | 
| 905 | + |  | 
| 906 | + | if (storageLayout_ & DataStorage::dslSkippedCharge) { | 
| 907 | + | idat.skippedCharge1 = &(atomRowData.skippedCharge[atom1]); | 
| 908 | + | idat.skippedCharge2 = &(atomColData.skippedCharge[atom2]); | 
| 909 | + | } | 
| 910 |  | #else | 
| 911 |  | idat.atypes = make_pair( ff_->getAtomType(idents[atom1]), | 
| 912 |  | ff_->getAtomType(idents[atom2]) ); | 
| 915 |  | idat.eFrame1 = &(snap_->atomData.electroFrame[atom1]); | 
| 916 |  | idat.eFrame2 = &(snap_->atomData.electroFrame[atom2]); | 
| 917 |  | } | 
| 918 | + |  | 
| 919 |  | if (storageLayout_ & DataStorage::dslTorque) { | 
| 920 |  | idat.t1 = &(snap_->atomData.torque[atom1]); | 
| 921 |  | idat.t2 = &(snap_->atomData.torque[atom2]); | 
| 922 |  | } | 
| 923 | + |  | 
| 924 | + | if (storageLayout_ & DataStorage::dslSkippedCharge) { | 
| 925 | + | idat.skippedCharge1 = &(snap_->atomData.skippedCharge[atom1]); | 
| 926 | + | idat.skippedCharge2 = &(snap_->atomData.skippedCharge[atom2]); | 
| 927 | + | } | 
| 928 |  | #endif | 
| 929 |  | } | 
| 930 |  |  |