| 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 |
|
|