ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/integrators/VelocityVerletIntegrator.cpp
(Generate patch)

Comparing branches/development/src/integrators/VelocityVerletIntegrator.cpp (file contents):
Revision 1715 by gezelter, Tue May 22 21:55:31 2012 UTC vs.
Revision 1773 by gezelter, Tue Aug 7 18:26:40 2012 UTC

# Line 98 | Line 98 | namespace OpenMD {
98      progressBar = new ProgressBar();
99  
100      //save statistics, before writeStat,  we must save statistics
101    thermo.saveStat();
101      saveConservedQuantity();
102 <    if (simParams->getUseRNEMD())
102 >    stats->collectStats();
103 >
104 >    if (simParams->getRNEMDParameters()->getUseRNEMD())
105        rnemd_->getStarted();
106  
107 <    statWriter->writeStat(currentSnapshot_->statData);
107 >    statWriter->writeStat();
108      
109 <    currSample = sampleTime + currentSnapshot_->getTime();
110 <    currStatus =  statusTime + currentSnapshot_->getTime();
111 <    currThermal = thermalTime + currentSnapshot_->getTime();
109 >    currSample = sampleTime + snap->getTime();
110 >    currStatus =  statusTime + snap->getTime();
111 >    currThermal = thermalTime + snap->getTime();
112      if (needReset) {
113 <      currReset = resetTime + currentSnapshot_->getTime();
113 >      currReset = resetTime + snap->getTime();
114      }
115 <    if (simParams->getUseRNEMD()){
116 <      currRNEMD = RNEMD_exchangeTime + currentSnapshot_->getTime();
115 >    if (simParams->getRNEMDParameters()->getUseRNEMD()){
116 >      currRNEMD = RNEMD_exchangeTime + snap->getTime();
117      }
118      needPotential = false;
119      needStress = false;      
# Line 123 | Line 124 | namespace OpenMD {
124    
125      initialize();
126    
127 <    while (currentSnapshot_->getTime() < runTime) {    
127 >    while (snap->getTime() < runTime) {    
128        preStep();    
129        integrateStep();    
130        postStep();      
# Line 133 | Line 134 | namespace OpenMD {
134  
135  
136    void VelocityVerletIntegrator::preStep() {
137 <    RealType difference = currentSnapshot_->getTime() + dt - currStatus;
137 >    RealType difference = snap->getTime() + dt - currStatus;
138    
139      if (difference > 0 || fabs(difference) < OpenMD::epsilon) {
140        needPotential = true;
# Line 147 | Line 148 | namespace OpenMD {
148      info_->getSnapshotManager()->advance();
149    
150      //increase time
151 <    currentSnapshot_->increaseTime(dt);        
151 >    snap->increaseTime(dt);        
152    
153      if (needVelocityScaling) {
154 <      if (currentSnapshot_->getTime() >= currThermal) {
154 >      if (snap->getTime() >= currThermal) {
155          velocitizer_->velocitize(targetScalingTemp);
156          currThermal += thermalTime;
157        }
158      }
159      if (useRNEMD) {
160 <      if (currentSnapshot_->getTime() >= currRNEMD) {
160 >      if (snap->getTime() >= currRNEMD) {
161          rnemd_->doRNEMD();
162          currRNEMD += RNEMD_exchangeTime;
163        }
164        rnemd_->collectData();
165      }
166      
167 <    if (currentSnapshot_->getTime() >= currSample) {
167 >    if (snap->getTime() >= currSample) {
168        dumpWriter->writeDumpAndEor();
169        
170        currSample += sampleTime;
171      }
172      
173 <    if (currentSnapshot_->getTime() >= currStatus) {
173 >    if (snap->getTime() >= currStatus) {
174        //save statistics, before writeStat,  we must save statistics
175 <      thermo.saveStat();
175 >      stats->collectStats();
176        saveConservedQuantity();
177  
178 <      if (simParams->getUseRNEMD()) {
179 <        rnemd_->getStatus();
178 >      if (simParams->getRNEMDParameters()->getUseRNEMD()) {
179 >        rnemd_->writeOutputFile();
180        }
181  
182 <      statWriter->writeStat(currentSnapshot_->statData);
182 >      statWriter->writeStat();
183  
184 <      progressBar->setStatus(currentSnapshot_->getTime(), runTime);
184 >      progressBar->setStatus(snap->getTime(), runTime);
185        progressBar->update();
186  
187        needPotential = false;
# Line 188 | Line 189 | namespace OpenMD {
189        currStatus += statusTime;
190      }
191      
192 <    if (needReset && currentSnapshot_->getTime() >= currReset) {    
192 >    if (needReset && snap->getTime() >= currReset) {    
193        resetIntegrator();
194        currReset += resetTime;
195      }        
# Line 197 | Line 198 | namespace OpenMD {
198  
199    void VelocityVerletIntegrator::finalize() {
200      dumpWriter->writeEor();
201 +    rnemd_->writeOutputFile();
202    
203      delete dumpWriter;
204      delete statWriter;
# Line 215 | Line 217 | namespace OpenMD {
217  
218    void VelocityVerletIntegrator::calcForce() {
219      forceMan_->calcForces();
220 +    flucQ_->applyConstraints();
221    }
222  
223    DumpWriter* VelocityVerletIntegrator::createDumpWriter() {
# Line 222 | Line 225 | namespace OpenMD {
225    }
226  
227    StatWriter* VelocityVerletIntegrator::createStatWriter() {
225
226    std::string statFileFormatString = simParams->getStatFileFormat();
227    StatsBitSet mask = parseStatFileFormat(statFileFormatString);
228  
229    // if we're doing a thermodynamic integration, we'll want the raw
230    // potential as well as the full potential:
231
232
233    if (simParams->getUseThermodynamicIntegration())
234      mask.set(Stats::VRAW);
235
236    // if we've got restraints turned on, we'll also want a report of the
237    // total harmonic restraints
238    if (simParams->getUseRestraints()){
239      mask.set(Stats::VHARM);
240    }
241
242    if (simParams->havePrintPressureTensor() &&
243        simParams->getPrintPressureTensor()){
244      mask.set(Stats::PRESSURE_TENSOR_XX);
245      mask.set(Stats::PRESSURE_TENSOR_XY);
246      mask.set(Stats::PRESSURE_TENSOR_XZ);
247      mask.set(Stats::PRESSURE_TENSOR_YX);
248      mask.set(Stats::PRESSURE_TENSOR_YY);
249      mask.set(Stats::PRESSURE_TENSOR_YZ);
250      mask.set(Stats::PRESSURE_TENSOR_ZX);
251      mask.set(Stats::PRESSURE_TENSOR_ZY);
252      mask.set(Stats::PRESSURE_TENSOR_ZZ);
253    }
228      
229 <    if (simParams->getAccumulateBoxDipole()) {
230 <      mask.set(Stats::BOX_DIPOLE_X);
257 <      mask.set(Stats::BOX_DIPOLE_Y);
258 <      mask.set(Stats::BOX_DIPOLE_Z);
259 <    }
260 <  
261 <    if (simParams->haveTaggedAtomPair() && simParams->havePrintTaggedPairDistance()) {
262 <      if (simParams->getPrintTaggedPairDistance()) {
263 <        mask.set(Stats::TAGGED_PAIR_DISTANCE);
264 <      }
265 <    }
266 <
267 <    if (simParams->getUseRNEMD()) {
268 <      mask.set(Stats::RNEMD_EXCHANGE_TOTAL);
269 <    }
229 >    stats = new Stats(info_);
230 >    statWriter = new StatWriter(info_->getStatFileName(), stats);
231      
232 <
272 <    return new StatWriter(info_->getStatFileName(), mask);
232 >    return statWriter;
233    }
234  
275
235   } //end namespace OpenMD

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines