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

Comparing branches/development/src/perturbations/ElectricField.cpp (file contents):
Revision 1839 by gezelter, Fri Jan 25 15:21:04 2013 UTC vs.
Revision 1875 by gezelter, Fri May 17 14:41:42 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 77 | Line 77 | namespace OpenMD {
77      Vector3d trq;
78      Vector3d EFfrc;                            
79      Vector3d pos;
80    RealType chrg;
81    RealType pot, fieldPot;
82    RealType chrgToKcal = 23.0609;
83    RealType debyeToKcal = 4.8018969509;
84    bool isCharge;
80  
81      if (doElectricField) {
82 <      fieldPot = 0.0;
82 >      const RealType chrgToKcal = 23.0609;
83 >      const RealType debyeToKcal = 4.8018969509;
84 >      RealType pot;
85 >      RealType fieldPot = 0.0;
86  
87 <      for (mol = info_->beginMolecule(i); mol != NULL; mol = info_->nextMolecule(i)) {      
87 >      for (mol = info_->beginMolecule(i); mol != NULL;
88 >           mol = info_->nextMolecule(i)) {      
89 >
90          for (atom = mol->beginAtom(j); atom != NULL;
91               atom = mol->nextAtom(j)) {
92          isCharge = false;
93          chrg = 0.0;
92  
93 <          atom->addElectricField(EF * chrgToKcal);
94 <
95 <          FixedChargeAdapter fca = FixedChargeAdapter(atom->getAtomType());
93 >          bool isCharge = false;
94 >          RealType chrg = 0.0;
95 >          
96 >          AtomType* atype = atom->getAtomType();
97 >          
98 >          if (atype->isElectrostatic()) {
99 >            atom->addElectricField(EF * chrgToKcal);
100 >          }
101 >          
102 >          FixedChargeAdapter fca = FixedChargeAdapter(atype);
103            if ( fca.isFixedCharge() ) {
104              isCharge = true;
105              chrg = fca.getCharge();
106            }
107            
108 <          FluctuatingChargeAdapter fqa = FluctuatingChargeAdapter(atom->getAtomType());
108 >          FluctuatingChargeAdapter fqa = FluctuatingChargeAdapter(atype);
109            if ( fqa.isFluctuatingCharge() ) {
110              isCharge = true;
111              chrg += atom->getFlucQPos();
# Line 119 | Line 124 | namespace OpenMD {
124              fieldPot += pot;
125            }
126              
127 <          MultipoleAdapter ma = MultipoleAdapter(atom->getAtomType());
127 >          MultipoleAdapter ma = MultipoleAdapter(atype);
128            if (ma.isDipole() ) {
129              Vector3d dipole = atom->getDipole();
130              dipole *= debyeToKcal;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines