ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/parallel/ForceMatrixDecomposition.cpp
(Generate patch)

Comparing branches/development/src/parallel/ForceMatrixDecomposition.cpp (file contents):
Revision 1787 by gezelter, Wed Aug 29 18:13:11 2012 UTC vs.
Revision 1850 by gezelter, Wed Feb 20 15:39:39 2013 UTC

# Line 35 | Line 35
35   *                                                                      
36   * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).            
37   * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).          
38 < * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008).          
38 > * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).          
39   * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).
40   * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
41   */
# Line 679 | Line 679 | namespace OpenMD {
679          snap_->atomData.density[i] += rho_tmp[i];
680      }
681  
682 +    // this isn't necessary if we don't have polarizable atoms, but
683 +    // we'll leave it here for now.
684      if (storageLayout_ & DataStorage::dslElectricField) {
685        
686        AtomPlanVectorRow->scatter(atomRowData.electricField,
# Line 686 | Line 688 | namespace OpenMD {
688        
689        int n = snap_->atomData.electricField.size();
690        vector<Vector3d> field_tmp(n, V3Zero);
691 <      AtomPlanVectorColumn->scatter(atomColData.electricField, field_tmp);
691 >      AtomPlanVectorColumn->scatter(atomColData.electricField,
692 >                                    field_tmp);
693        for (int i = 0; i < n; i++)
694          snap_->atomData.electricField[i] += field_tmp[i];
695      }
# Line 785 | Line 788 | namespace OpenMD {
788          snap_->atomData.flucQFrc[i] += fqfrc_tmp[i];
789              
790      }
791 +
792 +    if (storageLayout_ & DataStorage::dslElectricField) {
793 +
794 +      int nef = snap_->atomData.electricField.size();
795 +      vector<Vector3d> efield_tmp(nef, V3Zero);
796  
797 +      AtomPlanVectorRow->scatter(atomRowData.electricField, efield_tmp);
798 +      for (int i = 0; i < nef; i++) {
799 +        snap_->atomData.electricField[i] += efield_tmp[i];
800 +        efield_tmp[i] = 0.0;
801 +      }
802 +      
803 +      AtomPlanVectorColumn->scatter(atomColData.electricField, efield_tmp);
804 +      for (int i = 0; i < nef; i++)
805 +        snap_->atomData.electricField[i] += efield_tmp[i];
806 +    }
807 +
808 +
809      nLocal_ = snap_->getNumberOfAtoms();
810  
811      vector<potVec> pot_temp(nLocal_,
# Line 1042 | Line 1062 | namespace OpenMD {
1062     * the parallel decomposition.
1063     */
1064    bool ForceMatrixDecomposition::skipAtomPair(int atom1, int atom2, int cg1, int cg2) {
1065 <    int unique_id_1, unique_id_2, group1, group2;
1065 >    int unique_id_1, unique_id_2;
1066          
1067   #ifdef IS_MPI
1068      // in MPI, we have to look up the unique IDs for each atom
1069      unique_id_1 = AtomRowToGlobal[atom1];
1070      unique_id_2 = AtomColToGlobal[atom2];
1071 <    group1 = cgRowToGlobal[cg1];
1072 <    group2 = cgColToGlobal[cg2];
1071 >    // group1 = cgRowToGlobal[cg1];
1072 >    // group2 = cgColToGlobal[cg2];
1073   #else
1074      unique_id_1 = AtomLocalToGlobal[atom1];
1075      unique_id_2 = AtomLocalToGlobal[atom2];
1076 <    group1 = cgLocalToGlobal[cg1];
1077 <    group2 = cgLocalToGlobal[cg2];
1076 >    int group1 = cgLocalToGlobal[cg1];
1077 >    int group2 = cgLocalToGlobal[cg2];
1078   #endif  
1079  
1080      if (unique_id_1 == unique_id_2) return true;
# Line 1186 | Line 1206 | namespace OpenMD {
1206        idat.A2 = &(snap_->atomData.aMat[atom2]);
1207      }
1208  
1209 +    RealType ct = dot(idat.A1->getColumn(2), idat.A2->getColumn(2));
1210 +
1211      if (storageLayout_ & DataStorage::dslTorque) {
1212        idat.t1 = &(snap_->atomData.torque[atom1]);
1213        idat.t2 = &(snap_->atomData.torque[atom2]);
# Line 1305 | Line 1327 | namespace OpenMD {
1327   #endif
1328  
1329      RealType rList_ = (largestRcut_ + skinThickness_);
1308    RealType rl2 = rList_ * rList_;
1330      Snapshot* snap_ = sman_->getCurrentSnapshot();
1331      Mat3x3d Hmat = snap_->getHmat();
1332      Vector3d Hx = Hmat.getColumn(0);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines