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