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

Comparing branches/development/src/nonbonded/Electrostatic.cpp (file contents):
Revision 1822 by gezelter, Tue Jan 8 15:29:03 2013 UTC vs.
Revision 1825 by gezelter, Wed Jan 9 19:27:52 2013 UTC

# Line 106 | Line 106 | namespace OpenMD {
106      angstromToM_ = 1.0e-10;
107      debyeToCm_ = 3.33564095198e-30;
108      
109 <    // number of points for electrostatic splines
110 <    np_ = 1000;
109 >    // Default number of points for electrostatic splines
110 >    np_ = 140;
111      
112      // variables to handle different summation methods for long-range
113      // electrostatics:
# Line 246 | Line 246 | namespace OpenMD {
246        b3c = (5.0 * b2c + pow(2.0*a2, 3) * expTerm * invArootPi) / r2;
247        b4c = (7.0 * b3c + pow(2.0*a2, 4) * expTerm * invArootPi) / r2;
248        b5c = (9.0 * b4c + pow(2.0*a2, 5) * expTerm * invArootPi) / r2;
249 <      selfMult_ = b0c  +  2.0 * a2 * invArootPi;
249 >      selfMult_ = b0c + a2 * invArootPi;
250      } else {
251        a2 = 0.0;
252        b0c = 1.0 / r;
# Line 279 | Line 279 | namespace OpenMD {
279      // working variables for Taylor expansion:
280      RealType rmRc, rmRc2, rmRc3, rmRc4;
281  
282 +    // Approximate using splines using a maximum of 0.1 Angstroms
283 +    // between points.
284 +    int nptest = int((cutoffRadius_ + 2.0) / 0.1);
285 +    np_ = (np_ > nptest) ? np_ : nptest;
286 +  
287      // Add a 2 angstrom safety window to deal with cutoffGroups that
288      // have charged atoms longer than the cutoffRadius away from each
289      // other.  Splining is almost certainly the best choice here.
# Line 685 | Line 690 | namespace OpenMD {
690      Vector3d D_a, D_b;  // Dipoles (space-fixed)
691      Mat3x3d  Q_a, Q_b;  // Quadrupoles (space-fixed)
692  
693 <    RealType ri, ri2, ri3, ri4;                  // Distance utility scalars
693 >    RealType ri;                                 // Distance utility scalar
694      RealType rdDa, rdDb;                         // Dipole utility scalars
695      Vector3d rxDa, rxDb;                         // Dipole utility vectors
696      RealType rdQar, rdQbr, trQa, trQb;           // Quadrupole utility scalars
# Line 730 | Line 735 | namespace OpenMD {
735  
736      ri = 1.0 /  *(idat.rij);
737      Vector3d rhat =  *(idat.d)  * ri;
733    ri2 = ri * ri;
738        
739      // logicals
740  
# Line 1088 | Line 1092 | namespace OpenMD {
1092          *(idat.t2) += *(idat.sw) * indirect_Tb;
1093      }
1094      return;
1095 <  }  
1095 >  }
1096      
1097    void Electrostatic::calcSelfCorrection(SelfData &sdat) {
1098  
# Line 1131 | Line 1135 | namespace OpenMD {
1135        
1136      case esm_SHIFTED_FORCE:
1137      case esm_SHIFTED_POTENTIAL:
1138 <      if (i_is_Charge) {        
1139 <        self = -0.5 * selfMult_ * C_a * (C_a + *(sdat.skippedCharge)) * pre11_;
1138 >      if (i_is_Charge) {
1139 >        self = - selfMult_ * C_a * (C_a + *(sdat.skippedCharge)) * pre11_;
1140          (*(sdat.pot))[ELECTROSTATIC_FAMILY] += self;
1141        }
1142        break;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines