| 55 |
|
void ForceMatrixDecomposition::distributeInitialData() { |
| 56 |
|
snap_ = sman_->getCurrentSnapshot(); |
| 57 |
|
storageLayout_ = sman_->getStorageLayout(); |
| 58 |
+ |
ff_ = info_->getForceField(); |
| 59 |
|
nLocal_ = snap_->getNumberOfAtoms(); |
| 60 |
|
nGroups_ = snap_->getNumberOfCutoffGroups(); |
| 61 |
|
|
| 62 |
|
// gather the information for atomtype IDs (atids): |
| 63 |
< |
vector<int> identsLocal = info_->getIdentArray(); |
| 63 |
> |
identsLocal = info_->getIdentArray(); |
| 64 |
|
AtomLocalToGlobal = info_->getGlobalAtomIndices(); |
| 65 |
|
cgLocalToGlobal = info_->getGlobalGroupIndices(); |
| 66 |
|
vector<int> globalGroupMembership = info_->getGlobalGroupMembership(); |
| 148 |
|
skipsForRowAtom.clear(); |
| 149 |
|
skipsForRowAtom.reserve(nAtomsInRow_); |
| 150 |
|
for (int i = 0; i < nAtomsInRow_; i++) { |
| 151 |
< |
int iglob = AtomColToGlobal[i]; |
| 151 |
> |
int iglob = AtomRowToGlobal[i]; |
| 152 |
|
for (int j = 0; j < nAtomsInCol_; j++) { |
| 153 |
< |
int jglob = AtomRowToGlobal[j]; |
| 153 |
> |
int jglob = AtomColToGlobal[j]; |
| 154 |
|
if (excludes.hasPair(iglob, jglob)) |
| 155 |
|
skipsForRowAtom[i].push_back(j); |
| 156 |
|
} |
| 159 |
|
toposForRowAtom.clear(); |
| 160 |
|
toposForRowAtom.reserve(nAtomsInRow_); |
| 161 |
|
for (int i = 0; i < nAtomsInRow_; i++) { |
| 162 |
< |
int iglob = AtomColToGlobal[i]; |
| 162 |
> |
int iglob = AtomRowToGlobal[i]; |
| 163 |
|
int nTopos = 0; |
| 164 |
|
for (int j = 0; j < nAtomsInCol_; j++) { |
| 165 |
< |
int jglob = AtomRowToGlobal[j]; |
| 165 |
> |
int jglob = AtomColToGlobal[j]; |
| 166 |
|
if (oneTwo.hasPair(iglob, jglob)) { |
| 167 |
|
toposForRowAtom[i].push_back(j); |
| 168 |
|
topoDistRow[i][nTopos] = 1; |
| 541 |
|
InteractionData idat; |
| 542 |
|
|
| 543 |
|
#ifdef IS_MPI |
| 544 |
+ |
|
| 545 |
+ |
idat.atypes = make_pair( ff_->getAtomType(identsRow[atom1]), |
| 546 |
+ |
ff_->getAtomType(identsCol[atom2]) ); |
| 547 |
+ |
|
| 548 |
|
if (storageLayout_ & DataStorage::dslAmat) { |
| 549 |
|
idat.A1 = &(atomRowData.aMat[atom1]); |
| 550 |
|
idat.A2 = &(atomColData.aMat[atom2]); |
| 571 |
|
} |
| 572 |
|
|
| 573 |
|
#else |
| 574 |
+ |
|
| 575 |
+ |
idat.atypes = make_pair( ff_->getAtomType(identsLocal[atom1]), |
| 576 |
+ |
ff_->getAtomType(identsLocal[atom2]) ); |
| 577 |
+ |
|
| 578 |
|
if (storageLayout_ & DataStorage::dslAmat) { |
| 579 |
|
idat.A1 = &(snap_->atomData.aMat[atom1]); |
| 580 |
|
idat.A2 = &(snap_->atomData.aMat[atom2]); |
| 607 |
|
|
| 608 |
|
InteractionData idat; |
| 609 |
|
#ifdef IS_MPI |
| 610 |
+ |
idat.atypes = make_pair( ff_->getAtomType(identsRow[atom1]), |
| 611 |
+ |
ff_->getAtomType(identsCol[atom2]) ); |
| 612 |
+ |
|
| 613 |
|
if (storageLayout_ & DataStorage::dslElectroFrame) { |
| 614 |
|
idat.eFrame1 = &(atomRowData.electroFrame[atom1]); |
| 615 |
|
idat.eFrame2 = &(atomColData.electroFrame[atom2]); |
| 623 |
|
idat.t2 = &(atomColData.force[atom2]); |
| 624 |
|
} |
| 625 |
|
#else |
| 626 |
+ |
idat.atypes = make_pair( ff_->getAtomType(identsLocal[atom1]), |
| 627 |
+ |
ff_->getAtomType(identsLocal[atom2]) ); |
| 628 |
+ |
|
| 629 |
|
if (storageLayout_ & DataStorage::dslElectroFrame) { |
| 630 |
|
idat.eFrame1 = &(snap_->atomData.electroFrame[atom1]); |
| 631 |
|
idat.eFrame2 = &(snap_->atomData.electroFrame[atom2]); |
| 638 |
|
idat.t1 = &(snap_->atomData.force[atom1]); |
| 639 |
|
idat.t2 = &(snap_->atomData.force[atom2]); |
| 640 |
|
} |
| 641 |
< |
#endif |
| 627 |
< |
|
| 641 |
> |
#endif |
| 642 |
|
} |
| 643 |
|
|
| 630 |
– |
|
| 631 |
– |
|
| 632 |
– |
|
| 644 |
|
/* |
| 645 |
|
* buildNeighborList |
| 646 |
|
* |