ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/integrators/LangevinHullDynamics.cpp
(Generate patch)

Comparing trunk/src/integrators/LangevinHullDynamics.cpp (file contents):
Revision 1526 by kstocke1, Wed Nov 24 17:40:12 2010 UTC vs.
Revision 1879 by gezelter, Sun Jun 16 15:15: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).          
39 < * [4]  Vardeman & Gezelter, in progress (2009).                        
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   */
42  
43   /**
44   * @file LangevinDynamics.cpp
45   * @author tlin
46   * @date 11/08/2004
46 * @time 15:13am
47   * @version 1.0
48   */
49  
# Line 53 | Line 53 | namespace OpenMD {
53   #include "integrators/LangevinHullForceManager.hpp"
54   namespace OpenMD {
55  
56  
56     LangevinHullDynamics::LangevinHullDynamics(SimInfo* info) : VelocityVerletIntegrator(info){
57      setForceManager(new LangevinHullForceManager(info));
58    }
# Line 62 | Line 61 | namespace OpenMD {
61      SimInfo::MoleculeIterator i;
62      Molecule::IntegrableObjectIterator  j;
63      Molecule* mol;
64 <    StuntDouble* integrableObject;
64 >    StuntDouble* sd;
65      Vector3d vel;
66      Vector3d pos;
67      Vector3d frc;
# Line 70 | Line 69 | namespace OpenMD {
69      Vector3d ji;
70      RealType mass;
71      
72 <    for (mol = info_->beginMolecule(i); mol != NULL; mol = info_->nextMolecule(i)) {
73 <      for (integrableObject = mol->beginIntegrableObject(j); integrableObject != NULL;
75 <           integrableObject = mol->nextIntegrableObject(j)) {
72 >    for (mol = info_->beginMolecule(i); mol != NULL;
73 >         mol = info_->nextMolecule(i)) {
74  
75 <        vel =integrableObject->getVel();
76 <        pos = integrableObject->getPos();
77 <        frc = integrableObject->getFrc();
78 <        mass = integrableObject->getMass();
75 >      for (sd = mol->beginIntegrableObject(j); sd != NULL;
76 >           sd = mol->nextIntegrableObject(j)) {
77 >
78 >        vel = sd->getVel();
79 >        pos = sd->getPos();
80 >        frc = sd->getFrc();
81 >        mass = sd->getMass();
82                  
83          // velocity half step
84          vel += (dt2 /mass * PhysicalConstants::energyConvert) * frc;
# Line 85 | Line 86 | namespace OpenMD {
86          // position whole step
87          pos += dt * vel;
88  
89 <        integrableObject->setVel(vel);
90 <        integrableObject->setPos(pos);
89 >        sd->setVel(vel);
90 >        sd->setPos(pos);
91  
92 <        if (integrableObject->isDirectional()){
92 >        if (sd->isDirectional()){
93  
94            // get and convert the torque to body frame
95  
96 <          Tb = integrableObject->lab2Body(integrableObject->getTrq());
96 >          Tb = sd->lab2Body(sd->getTrq());
97  
98            // get the angular momentum, and propagate a half step
99  
100 <          ji = integrableObject->getJ();
100 >          ji = sd->getJ();
101  
102            ji += (dt2  * PhysicalConstants::energyConvert) * Tb;
103  
104 <          rotAlgo->rotate(integrableObject, ji, dt);
104 >          rotAlgo_->rotate(sd, ji, dt);
105  
106 <          integrableObject->setJ(ji);
106 >          sd->setJ(ji);
107          }
108  
109              
110        }
111      } //end for(mol = info_->beginMolecule(i))
112      
113 <    rattle->constraintA();
114 <    
113 >    flucQ_->moveA();
114 >    rattle_->constraintA();
115    }    
116  
117    void LangevinHullDynamics::moveB(){
118      SimInfo::MoleculeIterator i;
119      Molecule::IntegrableObjectIterator  j;
120      Molecule* mol;
121 <    StuntDouble* integrableObject;
121 >    StuntDouble* sd;
122      Vector3d vel;
123      Vector3d frc;
124      Vector3d Tb;
125      Vector3d ji;
126      RealType mass;
127      
128 <    for (mol = info_->beginMolecule(i); mol != NULL; mol = info_->nextMolecule(i)) {
129 <      for (integrableObject = mol->beginIntegrableObject(j); integrableObject != NULL;
129 <           integrableObject = mol->nextIntegrableObject(j)) {
128 >    for (mol = info_->beginMolecule(i); mol != NULL;
129 >         mol = info_->nextMolecule(i)) {
130  
131 <        vel =integrableObject->getVel();
132 <        frc = integrableObject->getFrc();
133 <        mass = integrableObject->getMass();
131 >      for (sd = mol->beginIntegrableObject(j); sd != NULL;
132 >           sd = mol->nextIntegrableObject(j)) {
133 >
134 >        vel = sd->getVel();
135 >        frc = sd->getFrc();
136 >        mass = sd->getMass();
137                  
138          // velocity half step
139          vel += (dt2 /mass * PhysicalConstants::energyConvert) * frc;
140                  
141 <        integrableObject->setVel(vel);
141 >        sd->setVel(vel);
142  
143 <        if (integrableObject->isDirectional()){
143 >        if (sd->isDirectional()){
144  
145            // get and convert the torque to body frame
146  
147 <          Tb = integrableObject->lab2Body(integrableObject->getTrq());
147 >          Tb = sd->lab2Body(sd->getTrq());
148  
149            // get the angular momentum, and propagate a half step
150  
151 <          ji = integrableObject->getJ();
151 >          ji = sd->getJ();
152  
153            ji += (dt2  * PhysicalConstants::energyConvert) * Tb;
154  
155 <          integrableObject->setJ(ji);
155 >          sd->setJ(ji);
156          }
157  
158              
159        }
160      } //end for(mol = info_->beginMolecule(i))
161    
162 <
163 <    rattle->constraintB();
161 <
162 >    flucQ_->moveB();
163 >    rattle_->constraintB();
164    }
165  
164
166    RealType LangevinHullDynamics::calcConservedQuantity() {
167      return 0.0;
168    }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines