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

Comparing trunk/src/applications/staticProps/NanoVolume.cpp (file contents):
Revision 1402 by chuckv, Fri Jan 8 17:15:27 2010 UTC vs.
Revision 1942 by gezelter, Tue Nov 5 18:33:42 2013 UTC

# Line 34 | Line 34
34   *                                                                      
35   * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).            
36   * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).          
37 < * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008).          
38 < * [4]  Vardeman & Gezelter, in progress (2009).                        
37 > * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).          
38 > * [4] Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).
39 > * [4] , Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). *
40   *
40 *
41   *  NanoVolume.cpp
42   *
43   *  Created by Charles F. Vardeman II on 14 Dec 2006.
44   *  @author  Charles F. Vardeman II
45 < *  @version $Id: NanoVolume.cpp,v 1.10 2009-11-25 20:01:59 gezelter Exp $
45 > *  @version $Id$
46   *
47   */
48  
49   #include "applications/staticProps/NanoVolume.hpp"
50 + #if defined(HAVE_QHULL)
51   #include "math/ConvexHull.hpp"
52   #include "math/AlphaHull.hpp"
53 + #endif
54   #include "utils/simError.h"
55   #include "io/DumpReader.hpp"
56   #include "primitives/Molecule.hpp"
# Line 59 | Line 61 | NanoVolume::NanoVolume(SimInfo* info,
61   NanoVolume::NanoVolume(SimInfo* info,
62                         const std::string& filename,
63                         const std::string& sele)
64 <  : StaticAnalyser(info, filename), selectionScript_(sele), evaluator_(info), seleMan_(info) {
64 >  : StaticAnalyser(info, filename), selectionScript_(sele), evaluator_(info),
65 >    seleMan_(info) {
66 >
67    setOutputName(getPrefix(filename) + ".avol");
68 +
69 +  osq.open(getOutputFileName().c_str());
70    
71    evaluator_.loadScriptString(sele);
72    if (!evaluator_.isDynamic()) {
73      seleMan_.setSelectionSet(evaluator_.evaluate());
74    }
75    frameCounter_ = 0;
70  totalVolume_ = 0.0;
76   }
77  
78   void NanoVolume::process() {
79   #if defined(HAVE_QHULL)
80    Molecule* mol;
76  Atom* atom;
81    RigidBody* rb;
78  int myIndex;
82    SimInfo::MoleculeIterator mi;
83    Molecule::RigidBodyIterator rbIter;
81  Molecule::AtomIterator ai;
84    StuntDouble* sd;
85    Vector3d vec;
86 <  int i,j;
86 >  int i;
87  
86 #ifdef HAVE_QHULL
87  // ConvexHull* thishull = new ConvexHull();
88    AlphaHull* thishull = new AlphaHull(2.0);
89 < #endif
90 <
89 >  //ConvexHull* thishull = new ConvexHull();
90 >  
91    DumpReader reader(info_, dumpFilename_);
92    int nFrames = reader.getNFrames();
93    frameCounter_ = 0;
# Line 98 | Line 98 | void NanoVolume::process() {
98      reader.readFrame(istep);
99      frameCounter_++;
100      currentSnapshot_ = info_->getSnapshotManager()->getCurrentSnapshot();
101 +    RealType time = currentSnapshot_->getTime();
102      
103      // Clear pos vector between each frame.
104      theAtoms_.clear();
# Line 106 | Line 107 | void NanoVolume::process() {
107        seleMan_.setSelectionSet(evaluator_.evaluate());
108      }
109      
110 <    // update the positions of atoms which belong to the rigidbodies
110 >    // update the positions of atoms which belong to the rigid bodies
111      
112      for (mol = info_->beginMolecule(mi); mol != NULL;
113           mol = info_->nextMolecule(mi)) {
# Line 119 | Line 120 | void NanoVolume::process() {
120      // outer loop is over the selected StuntDoubles:
121      
122      for (sd = seleMan_.beginSelected(i); sd != NULL;
123 <            sd = seleMan_.nextSelected(i)) {
124 <      
124 <     theAtoms_.push_back(sd);
125 <      myIndex = sd->getGlobalIndex();
126 <      
123 >         sd = seleMan_.nextSelected(i)) {      
124 >      theAtoms_.push_back(sd);      
125      }
126      
127 <    /*
127 >    /* variant below for signle atoms, not StuntDoubles:
128      for (mol = info_->beginMolecule(mi); mol != NULL;
129 <                 mol = info_->nextMolecule(mi)) {
130 <              for (atom = mol->beginAtom(ai); atom != NULL;
131 <                   atom = mol->nextAtom(ai)) {
132 <                     theAtoms_.push_back(atom);
133 <              }
134 <            }
129 >         mol = info_->nextMolecule(mi)) {
130 >      for (atom = mol->beginAtom(ai); atom != NULL;
131 >           atom = mol->nextAtom(ai)) {
132 >        theAtoms_.push_back(atom);
133 >      }
134 >    }
135      */
136 +
137      // Generate convex hull for this frame.
138      thishull->computeHull(theAtoms_);
139 <  //  totalVolume_ += hull->getVolume();                
141 <  }
142 <  //RealType avgVolume = totalVolume_/(RealType) frameCounter_;
143 <  //std::cout.precision(7);
144 <  //std::cout  << avgVolume << std::endl;
145 < /*
146 <  std::ofstream osq(getOutputFileName().c_str());
147 <  osq.precision(7);
148 <  if (osq.is_open()){
149 <      osq << avgVolume << std::endl;
139 >    RealType volume = thishull->getVolume();
140  
141 +    osq.precision(7);
142 +    if (osq.is_open()){
143 +      osq << time << "\t" << volume << std::endl;      
144 +    }
145    }
146    osq.close();
147 < */
147 >
148   #else
149    sprintf(painCave.errMsg, "NanoVolume: qhull support was not compiled in!\n");
150    painCave.isFatal = 1;
151    simError();  
158
152   #endif
153  
154   }

Comparing trunk/src/applications/staticProps/NanoVolume.cpp (property svn:keywords):
Revision 1402 by chuckv, Fri Jan 8 17:15:27 2010 UTC vs.
Revision 1942 by gezelter, Tue Nov 5 18:33:42 2013 UTC

# Line 0 | Line 1
1 + Author Id Revision Date

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines