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

Comparing trunk/src/utils/MoLocator.cpp (file contents):
Revision 1442 by gezelter, Mon May 10 17:28:26 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   #include <iostream>
# Line 57 | Line 58 | namespace OpenMD {
58      calcRef();
59    }
60    
61 <  void MoLocator::placeMol( const Vector3d& offset, const Vector3d& ort, Molecule* mol){
61 >  void MoLocator::placeMol( const Vector3d& offset, const Vector3d& ort,
62 >                            Molecule* mol) {
63  
64      Vector3d newCoor;
65      Vector3d curRefCoor;  
# Line 65 | Line 67 | namespace OpenMD {
67      
68      if(mol->getNIntegrableObjects() != nIntegrableObjects){
69        sprintf( painCave.errMsg,
70 <               "MoLocator error.\n"
71 <               "  The number of integrable objects of MoleculeStamp is not the same as  that of Molecule\n");
70 >               "MoLocator::placeMol error.\n"
71 >               "\tThe number of integrable objects of MoleculeStamp is not\n"
72 >               "\tthe same as that of Molecule\n");
73        painCave.isFatal = 1;
74        simError();
75      }
76      
77      Molecule::IntegrableObjectIterator ii;
78 <    StuntDouble* integrableObject;
78 >    StuntDouble* sd;
79      int i;
80 <    for (integrableObject = mol->beginIntegrableObject(ii), i = 0; integrableObject != NULL;
81 <         integrableObject = mol->nextIntegrableObject(ii), ++i) {
80 >    for (sd = mol->beginIntegrableObject(ii), i = 0; sd != NULL;
81 >         sd = mol->nextIntegrableObject(ii), ++i) {
82        
83        newCoor = rotMat * refCoords[i];
84        newCoor += offset;
85      
86 <      integrableObject->setPos(newCoor);
87 <      integrableObject->setVel(V3Zero);
86 >      sd->setPos(newCoor);
87 >      sd->setVel(V3Zero);
88        
89 <      if(integrableObject->isDirectional()){
90 <        integrableObject->setA(rotMat * integrableObject->getA());
91 <        integrableObject->setJ(V3Zero);  
89 >      if(sd->isDirectional()){
90 >        sd->setA(rotMat * sd->getA());
91 >        sd->setJ(V3Zero);  
92        }        
93      }
94    }
# Line 93 | Line 96 | namespace OpenMD {
96    void MoLocator::calcRef( void ){
97      AtomStamp* currAtomStamp;
98      RigidBodyStamp* rbStamp;
99 <    int nAtoms;
99 >    unsigned int nAtoms;
100      int nRigidBodies;
101      std::vector<RealType> mass;
102      Vector3d coor;
# Line 106 | Line 109 | namespace OpenMD {
109      nAtoms= myStamp->getNAtoms();
110      nRigidBodies = myStamp->getNRigidBodies();
111      
112 <    for(size_t i=0; i<nAtoms; i++){
112 >    for(unsigned int i = 0; i < nAtoms; i++){
113        
114        currAtomStamp = myStamp->getAtomStamp(i);
115        
116        if( !currAtomStamp->havePosition() ){
117          sprintf( painCave.errMsg,
118 <                 "MoLocator error.\n"
119 <                 "  Component %s, atom %s does not have a position specified.\n"
120 <                 "  This means MoLocator cannot initalize it's position.\n",
118 >                 "MoLocator::calcRef error.\n"
119 >                 "\tComponent %s, atom %s does not have a position specified.\n"
120 >                 "\tThis means MoLocator cannot initalize it's position.\n",
121                   myStamp->getName().c_str(),
122                   currAtomStamp->getType().c_str());
123          
# Line 177 | Line 180 | namespace OpenMD {
180      
181      refMolCom /= molMass;
182      
183 <    //move the reference center of mass to (0,0,0) and adjust the reference coordinate
184 <    //of the integrabel objects
183 >    //move the reference center of mass to (0,0,0) and adjust the
184 >    //reference coordinate of the integrabel objects
185      for(int i = 0; i < nIntegrableObjects; i++)
186        refCoords[i] -= refMolCom;
187    }
188    
189 <  RealType getAtomMass(const std::string& at, ForceField* myFF) {
189 >  RealType MoLocator::getAtomMass(const std::string& at, ForceField* myFF) {
190      RealType mass;
191      AtomType* atomType= myFF->getAtomType(at);
192      if (atomType != NULL) {
# Line 195 | Line 198 | namespace OpenMD {
198      return mass;
199    }
200    
201 <  RealType getMolMass(MoleculeStamp *molStamp, ForceField *myFF) {
202 <    int nAtoms;
201 >  RealType MoLocator::getMolMass(MoleculeStamp *molStamp, ForceField *myFF) {
202 >    unsigned int nAtoms;
203      RealType totMass = 0;
204      nAtoms = molStamp->getNAtoms();
205      
206 <    for(size_t i = 0; i < nAtoms; i++) {
206 >    for(unsigned int i = 0; i < nAtoms; i++) {
207        AtomStamp *currAtomStamp = molStamp->getAtomStamp(i);
208        totMass += getAtomMass(currAtomStamp->getType(), myFF);        
209      }
210      return totMass;
211    }
212 <  RotMat3x3d latVec2RotMat(const Vector3d& lv){
212 >
213 >  RotMat3x3d MoLocator::latVec2RotMat(const Vector3d& lv){
214      
215      RealType theta =acos(lv[2]);
216      RealType phi = atan2(lv[1], lv[0]);
217      RealType psi = 0;
218      
219 <    return RotMat3x3d(phi, theta, psi);
216 <    
219 >    return RotMat3x3d(phi, theta, psi);    
220    }
221   }
222  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines