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 1941 by gezelter, Sun Jun 16 15:15:42 2013 UTC vs.
Revision 1942 by gezelter, Tue Nov 5 18:33:42 2013 UTC

# Line 61 | 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;
72  totalVolume_ = 0.0;
76   }
77  
78   void NanoVolume::process() {
79   #if defined(HAVE_QHULL)
80    Molecule* mol;
78  Atom* atom;
81    RigidBody* rb;
80  int myIndex;
82    SimInfo::MoleculeIterator mi;
83    Molecule::RigidBodyIterator rbIter;
83  Molecule::AtomIterator ai;
84    StuntDouble* sd;
85    Vector3d vec;
86 <  int i,j;
86 >  int i;
87  
88 <   //ConvexHull* thishull = new ConvexHull();
89 <   AlphaHull* thishull = new AlphaHull(2.0);
90 <
88 >  AlphaHull* thishull = new AlphaHull(2.0);
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;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines