523 |
|
atomRowData.skippedCharge.end(), 0.0); |
524 |
|
fill(atomColData.skippedCharge.begin(), |
525 |
|
atomColData.skippedCharge.end(), 0.0); |
526 |
+ |
} |
527 |
+ |
|
528 |
+ |
if (storageLayout_ & DataStorage::dslElectricField) { |
529 |
+ |
fill(atomRowData.electricField.begin(), |
530 |
+ |
atomRowData.electricField.end(), V3Zero); |
531 |
+ |
fill(atomColData.electricField.begin(), |
532 |
+ |
atomColData.electricField.end(), V3Zero); |
533 |
+ |
} |
534 |
+ |
if (storageLayout_ & DataStorage::dslFlucQForce) { |
535 |
+ |
fill(atomRowData.flucQFrc.begin(), atomRowData.flucQFrc.end(), |
536 |
+ |
0.0); |
537 |
+ |
fill(atomColData.flucQFrc.begin(), atomColData.flucQFrc.end(), |
538 |
+ |
0.0); |
539 |
|
} |
540 |
|
|
541 |
|
#endif |
550 |
|
fill(snap_->atomData.density.begin(), |
551 |
|
snap_->atomData.density.end(), 0.0); |
552 |
|
} |
553 |
+ |
|
554 |
|
if (storageLayout_ & DataStorage::dslFunctional) { |
555 |
|
fill(snap_->atomData.functional.begin(), |
556 |
|
snap_->atomData.functional.end(), 0.0); |
557 |
|
} |
558 |
+ |
|
559 |
|
if (storageLayout_ & DataStorage::dslFunctionalDerivative) { |
560 |
|
fill(snap_->atomData.functionalDerivative.begin(), |
561 |
|
snap_->atomData.functionalDerivative.end(), 0.0); |
562 |
|
} |
563 |
+ |
|
564 |
|
if (storageLayout_ & DataStorage::dslSkippedCharge) { |
565 |
|
fill(snap_->atomData.skippedCharge.begin(), |
566 |
|
snap_->atomData.skippedCharge.end(), 0.0); |
567 |
|
} |
568 |
< |
|
568 |
> |
|
569 |
> |
if (storageLayout_ & DataStorage::dslElectricField) { |
570 |
> |
fill(snap_->atomData.electricField.begin(), |
571 |
> |
snap_->atomData.electricField.end(), V3Zero); |
572 |
> |
} |
573 |
|
} |
574 |
|
|
575 |
|
|
609 |
|
atomColData.electroFrame); |
610 |
|
} |
611 |
|
|
612 |
+ |
// if needed, gather the atomic fluctuating charge values |
613 |
+ |
if (storageLayout_ & DataStorage::dslFlucQPosition) { |
614 |
+ |
AtomPlanRealRow->gather(snap_->atomData.flucQPos, |
615 |
+ |
atomRowData.flucQPos); |
616 |
+ |
AtomPlanRealColumn->gather(snap_->atomData.flucQPos, |
617 |
+ |
atomColData.flucQPos); |
618 |
+ |
} |
619 |
+ |
|
620 |
|
#endif |
621 |
|
} |
622 |
|
|
639 |
|
for (int i = 0; i < n; i++) |
640 |
|
snap_->atomData.density[i] += rho_tmp[i]; |
641 |
|
} |
642 |
+ |
|
643 |
+ |
if (storageLayout_ & DataStorage::dslElectricField) { |
644 |
+ |
|
645 |
+ |
AtomPlanVectorRow->scatter(atomRowData.electricField, |
646 |
+ |
snap_->atomData.electricField); |
647 |
+ |
|
648 |
+ |
int n = snap_->atomData.electricField.size(); |
649 |
+ |
vector<Vector3d> field_tmp(n, V3Zero); |
650 |
+ |
AtomPlanVectorColumn->scatter(atomColData.electricField, field_tmp); |
651 |
+ |
for (int i = 0; i < n; i++) |
652 |
+ |
snap_->atomData.electricField[i] += field_tmp[i]; |
653 |
+ |
} |
654 |
|
#endif |
655 |
|
} |
656 |
|
|
730 |
|
|
731 |
|
} |
732 |
|
|
733 |
+ |
if (storageLayout_ & DataStorage::dslFlucQForce) { |
734 |
+ |
|
735 |
+ |
int nq = snap_->atomData.flucQFrc.size(); |
736 |
+ |
vector<RealType> fqfrc_tmp(nq, 0.0); |
737 |
+ |
|
738 |
+ |
AtomPlanRealRow->scatter(atomRowData.flucQFrc, fqfrc_tmp); |
739 |
+ |
for (int i = 0; i < nq; i++) { |
740 |
+ |
snap_->atomData.flucQFrc[i] += fqfrc_tmp[i]; |
741 |
+ |
fqfrc_tmp[i] = 0.0; |
742 |
+ |
} |
743 |
+ |
|
744 |
+ |
AtomPlanRealColumn->scatter(atomColData.flucQFrc, fqfrc_tmp); |
745 |
+ |
for (int i = 0; i < nq; i++) |
746 |
+ |
snap_->atomData.flucQFrc[i] += fqfrc_tmp[i]; |
747 |
+ |
|
748 |
+ |
} |
749 |
+ |
|
750 |
|
nLocal_ = snap_->getNumberOfAtoms(); |
751 |
|
|
752 |
|
vector<potVec> pot_temp(nLocal_, |
1068 |
|
|
1069 |
|
atomRowData.force[atom1] += *(idat.f1); |
1070 |
|
atomColData.force[atom2] -= *(idat.f1); |
1071 |
+ |
|
1072 |
+ |
// should particle pot be done here also? |
1073 |
|
#else |
1074 |
|
pairwisePot += *(idat.pot); |
1075 |
|
|
1076 |
|
snap_->atomData.force[atom1] += *(idat.f1); |
1077 |
|
snap_->atomData.force[atom2] -= *(idat.f1); |
1078 |
+ |
|
1079 |
+ |
if (idat.doParticlePot) { |
1080 |
+ |
snap_->atomData.particlePot[atom1] += *(idat.vpair) * *(idat.sw); |
1081 |
+ |
snap_->atomData.particlePot[atom2] -= *(idat.vpair) * *(idat.sw); |
1082 |
+ |
} |
1083 |
+ |
|
1084 |
|
#endif |
1085 |
|
|
1086 |
|
} |