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 1782 by gezelter, Wed Aug 22 02:28:28 2012 UTC vs.
Revision 2071 by gezelter, Sat Mar 7 21:41:51 2015 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 58 | 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 66 | 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      }
# Line 94 | Line 96 | namespace OpenMD {
96    void MoLocator::calcRef( void ){
97      AtomStamp* currAtomStamp;
98      RigidBodyStamp* rbStamp;
97    unsigned int nAtoms;
98    int nRigidBodies;
99      std::vector<RealType> mass;
100      Vector3d coor;
101      Vector3d refMolCom;  
102    int nAtomsInRb;
102      RealType totMassInRb;
103      RealType currAtomMass;
104      RealType molMass;
105      
106 <    nAtoms= myStamp->getNAtoms();
107 <    nRigidBodies = myStamp->getNRigidBodies();
106 >    std::size_t nAtoms= myStamp->getNAtoms();
107 >    std::size_t nRigidBodies = myStamp->getNRigidBodies();
108      
109 <    for(unsigned int i = 0; i < nAtoms; i++){
109 >    for(std::size_t i = 0; i < nAtoms; i++){
110        
111        currAtomStamp = myStamp->getAtomStamp(i);
112        
113        if( !currAtomStamp->havePosition() ){
114          sprintf( painCave.errMsg,
115 <                 "MoLocator error.\n"
116 <                 "  Component %s, atom %s does not have a position specified.\n"
117 <                 "  This means MoLocator cannot initalize it's position.\n",
115 >                 "MoLocator::calcRef error.\n"
116 >                 "\tComponent %s, atom %s does not have a position specified.\n"
117 >                 "\tThis means MoLocator cannot initalize it's position.\n",
118                   myStamp->getName().c_str(),
119                   currAtomStamp->getType().c_str());
120          
# Line 138 | Line 137 | namespace OpenMD {
137        }
138      }
139      
140 <    for(int i = 0; i < nRigidBodies; i++){
140 >    for(std::size_t i = 0; i < nRigidBodies; i++){
141        
142        rbStamp = myStamp->getRigidBodyStamp(i);
143 <      nAtomsInRb = rbStamp->getNMembers();
143 >      std::size_t nAtomsInRb = rbStamp->getNMembers();
144        
145        coor.x() = 0.0;
146        coor.y() = 0.0;
147        coor.z() = 0.0;
148        totMassInRb = 0.0;
149        
150 <      for(int j = 0; j < nAtomsInRb; j++){
150 >      for(std::size_t j = 0; j < nAtomsInRb; j++){
151          
152          currAtomStamp = myStamp->getAtomStamp(rbStamp->getMemberAt(j));
153          currAtomMass = getAtomMass(currAtomStamp->getType(), myFF);
# Line 171 | Line 170 | namespace OpenMD {
170      refMolCom.y() = 0;
171      refMolCom.z() = 0;
172      
173 <    for(int i = 0; i < nIntegrableObjects; i++){
173 >    for(std::size_t i = 0; i < nIntegrableObjects; i++){
174        refMolCom += refCoords[i] * mass[i];
175        molMass += mass[i];
176      }
177      
178      refMolCom /= molMass;
179      
180 <    //move the reference center of mass to (0,0,0) and adjust the reference coordinate
181 <    //of the integrabel objects
182 <    for(int i = 0; i < nIntegrableObjects; i++)
180 >    //move the reference center of mass to (0,0,0) and adjust the
181 >    //reference coordinate of the integrabel objects
182 >    for(std::size_t i = 0; i < nIntegrableObjects; i++)
183        refCoords[i] -= refMolCom;
184    }
185    
186 <  RealType getAtomMass(const std::string& at, ForceField* myFF) {
186 >  RealType MoLocator::getAtomMass(const std::string& at, ForceField* myFF) {
187      RealType mass;
188      AtomType* atomType= myFF->getAtomType(at);
189      if (atomType != NULL) {
190 <      mass =     atomType->getMass();
190 >      mass = atomType->getMass();
191      } else {
192        mass = 0.0;
193        std::cerr << "Can not find AtomType: " << at << std::endl;
# Line 196 | Line 195 | namespace OpenMD {
195      return mass;
196    }
197    
198 <  RealType getMolMass(MoleculeStamp *molStamp, ForceField *myFF) {
198 >  RealType MoLocator::getMolMass(MoleculeStamp *molStamp, ForceField *myFF) {
199      unsigned int nAtoms;
200      RealType totMass = 0;
201      nAtoms = molStamp->getNAtoms();
202      
203 <    for(unsigned int i = 0; i < nAtoms; i++) {
203 >    for(std::size_t i = 0; i < nAtoms; i++) {
204        AtomStamp *currAtomStamp = molStamp->getAtomStamp(i);
205        totMass += getAtomMass(currAtomStamp->getType(), myFF);        
206      }
207      return totMass;
208    }
209 <  RotMat3x3d latVec2RotMat(const Vector3d& lv){
209 >
210 >  RotMat3x3d MoLocator::latVec2RotMat(const Vector3d& lv){
211      
212      RealType theta =acos(lv[2]);
213      RealType phi = atan2(lv[1], lv[0]);
214      RealType psi = 0;
215      
216 <    return RotMat3x3d(phi, theta, psi);
217 <    
216 >    return RotMat3x3d(phi, theta, psi);    
217    }
218   }
219  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines