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

Comparing trunk/src/io/DumpReader.cpp (file contents):
Revision 1796 by gezelter, Mon Sep 10 18:38:44 2012 UTC vs.
Revision 1938 by gezelter, Thu Oct 31 15:32:17 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 43 | Line 43
43   #define _LARGEFILE_SOURCE64
44   #define _FILE_OFFSET_BITS 64
45  
46 + #ifdef IS_MPI
47 + #include <mpi.h>
48 + #endif
49 +
50   #include <sys/types.h>
51   #include <sys/stat.h>
52  
# Line 60 | Line 64
64   #include "utils/StringTokenizer.hpp"
65   #include "brains/Thermo.hpp"
66  
63 #ifdef IS_MPI
64 #include <mpi.h>
65 #endif
67  
67
68   namespace OpenMD {
69    
70    DumpReader::DumpReader(SimInfo* info, const std::string& filename)
# Line 128 | Line 128 | namespace OpenMD {
128    }
129    
130    void DumpReader::scanFile(void) {
131 <    int lineNo = 0;
131 >
132      std::streampos prevPos;
133      std::streampos  currPos;
134      
# Line 142 | Line 142 | namespace OpenMD {
142        bool foundOpenSnapshotTag = false;
143        bool foundClosedSnapshotTag = false;
144  
145 +      int lineNo = 0;
146        while(inFile_->getline(buffer, bufferSize)) {
147          ++lineNo;
148          
# Line 227 | Line 228 | namespace OpenMD {
228        needVel_ = false;
229      }
230      
231 <    if (storageLayout & DataStorage::dslAmat || storageLayout & DataStorage::dslElectroFrame) {
231 >    if (storageLayout & DataStorage::dslAmat ||
232 >        storageLayout & DataStorage::dslDipole ||
233 >        storageLayout & DataStorage::dslQuadrupole) {
234        needQuaternion_ = true;
235      } else {
236        needQuaternion_ = false;
# Line 525 | Line 528 | namespace OpenMD {
528  
529      StringTokenizer tokenizer(line);
530      int nTokens;
531 <    
531 >        
532      nTokens = tokenizer.countTokens();
533      
534      if (nTokens < 2) {  
# Line 557 | Line 560 | namespace OpenMD {
560      if (i >> siteIndex) {
561        // chew up this token and parse as an int:
562        siteIndex = tokenizer.nextTokenAsInt();
563 <      RigidBody* rb = static_cast<RigidBody*>(sd);
564 <      sd = rb->getAtoms()[siteIndex];
563 >
564 >      if (sd->isRigidBody()) {
565 >        RigidBody* rb = static_cast<RigidBody*>(sd);
566 >        sd = rb->getAtoms()[siteIndex];
567 >      }
568      }
569  
570      /**
# Line 645 | Line 651 | namespace OpenMD {
651  
652    void  DumpReader::readSiteData(std::istream& inputStream) {
653  
648    inputStream.getline(buffer, bufferSize);
654      std::string line(buffer);
650    
651    if (line.find("<SiteData>") == std::string::npos) {
652      // site data isn't required for a simulation, so skip
653      return;
654    }
655  
656 +    // We already found the starting <SiteData> tag or we wouldn't be
657 +    // here, so just start parsing until we get to the ending
658 +    // </SiteData> tag:
659 +    
660      while(inputStream.getline(buffer, bufferSize)) {
661        line = buffer;
662        

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines