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

Comparing trunk/src/integrators/VelocityVerletIntegrator.cpp (file contents):
Revision 471 by chrisfen, Tue Apr 12 14:24:29 2005 UTC vs.
Revision 963 by tim, Wed May 17 21:51:42 2006 UTC

# Line 1 | Line 1
1 < /*
1 > /*
2   * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
3   *
4   * The University of Notre Dame grants you ("Licensee") a
# Line 105 | Line 105 | namespace oopse {
105      
106      currSample = sampleTime + currentSnapshot_->getTime();
107      currStatus =  statusTime + currentSnapshot_->getTime();;
108 <    currThermal = thermalTime +  + currentSnapshot_->getTime();
108 >    currThermal = thermalTime + currentSnapshot_->getTime();
109 >    if (needReset) {
110 >      currReset = resetTime + currentSnapshot_->getTime();
111 >    }
112      needPotential = false;
113      needStress = false;      
114      
115 < }
115 >  }
116  
117 < void VelocityVerletIntegrator::doIntegrate() {
117 >  void VelocityVerletIntegrator::doIntegrate() {
118    
119    
120 <  initialize();
120 >    initialize();
121    
122 <  while (currentSnapshot_->getTime() < runTime) {
122 >    while (currentSnapshot_->getTime() < runTime) {
123      
124 <    preStep();
124 >      preStep();
125      
126 <    integrateStep();
126 >      integrateStep();
127      
128 <    postStep();
128 >      postStep();
129      
130 <  }
130 >    }
131    
132 <  finalize();
132 >    finalize();
133    
134 < }
134 >  }
135  
136  
137 < void VelocityVerletIntegrator::preStep() {
138 <  double difference = currentSnapshot_->getTime() + dt - currStatus;
137 >  void VelocityVerletIntegrator::preStep() {
138 >    RealType difference = currentSnapshot_->getTime() + dt - currStatus;
139    
140 <  if (difference > 0 || fabs(difference) < oopse::epsilon) {
141 <    needPotential = true;
142 <    needStress = true;  
140 >    if (difference > 0 || fabs(difference) < oopse::epsilon) {
141 >      needPotential = true;
142 >      needStress = true;  
143 >    }
144    }
141  
142 }
145  
146 < void VelocityVerletIntegrator::postStep() {
146 >  void VelocityVerletIntegrator::postStep() {
147 >
148 >    //save snapshot
149 >    info_->getSnapshotManager()->advance();
150    
151 <  //save snapshot
152 <  info_->getSnapshotManager()->advance();
151 >    //increase time
152 >    currentSnapshot_->increaseTime(dt);        
153    
154 <  //increase time
155 <  currentSnapshot_->increaseTime(dt);        
156 <  
157 <  if (needVelocityScaling) {
158 <    if (currentSnapshot_->getTime() >= currThermal) {
154 <      velocitizer_->velocitize(targetScalingTemp);
155 <      currThermal += thermalTime;
154 >    if (needVelocityScaling) {
155 >      if (currentSnapshot_->getTime() >= currThermal) {
156 >        velocitizer_->velocitize(targetScalingTemp);
157 >        currThermal += thermalTime;
158 >      }
159      }
157  }
160    
161 <  if (currentSnapshot_->getTime() >= currSample) {
162 <    dumpWriter->writeDumpAndEor();
161 >    if (currentSnapshot_->getTime() >= currSample) {
162 >      dumpWriter->writeDumpAndEor();
163      
164 <    if (simParams->getUseSolidThermInt())
165 <      restWriter->writeZangle();
164 >      if (simParams->getUseSolidThermInt())
165 >        restWriter->writeZangle();
166      
167 <    currSample += sampleTime;
168 <  }
167 >      currSample += sampleTime;
168 >    }
169    
170 <  if (currentSnapshot_->getTime() >= currStatus) {
171 <    //save statistics, before writeStat,  we must save statistics
172 <    thermo.saveStat();
173 <    saveConservedQuantity();
174 <    statWriter->writeStat(currentSnapshot_->statData);
170 >    if (currentSnapshot_->getTime() >= currStatus) {
171 >      //save statistics, before writeStat,  we must save statistics
172 >      thermo.saveStat();
173 >      saveConservedQuantity();
174 >      statWriter->writeStat(currentSnapshot_->statData);
175      
176 <    needPotential = false;
177 <    needStress = false;
178 <    currStatus += statusTime;
179 <  }
176 >      needPotential = false;
177 >      needStress = false;
178 >      currStatus += statusTime;
179 >    }
180 >
181 >      if (needReset && currentSnapshot_->getTime() >= currReset) {    
182 >        resetIntegrator();
183 >        currReset += resetTime;
184 >      }
185    
186 <  
180 < }
186 >  }
187  
188  
189 < void VelocityVerletIntegrator::finalize() {
190 <  dumpWriter->writeEor();
189 >  void VelocityVerletIntegrator::finalize() {
190 >    dumpWriter->writeEor();
191    
192 <  if (simParams->getUseSolidThermInt()) {
193 <    restWriter->writeZangle();
194 <    delete restWriter;
195 <    restWriter = NULL;
196 <  }
192 >    if (simParams->getUseSolidThermInt()) {
193 >      restWriter->writeZangle();
194 >      delete restWriter;
195 >      restWriter = NULL;
196 >    }
197    
198 <  delete dumpWriter;
199 <  delete statWriter;
198 >    delete dumpWriter;
199 >    delete statWriter;
200    
201 <  dumpWriter = NULL;
202 <  statWriter = NULL;
201 >    dumpWriter = NULL;
202 >    statWriter = NULL;
203    
204 < }
204 >  }
205  
206 < void VelocityVerletIntegrator::integrateStep() {
206 >  void VelocityVerletIntegrator::integrateStep() {
207    
208 <  moveA();
209 <  calcForce(needPotential, needStress);
210 <  moveB();
211 < }
208 >    moveA();
209 >    calcForce(needPotential, needStress);
210 >    moveB();
211 >  }
212  
213  
214 < void VelocityVerletIntegrator::calcForce(bool needPotential,
215 <                                         bool needStress) {
216 <  forceMan_->calcForces(needPotential, needStress);
217 < }
214 >  void VelocityVerletIntegrator::calcForce(bool needPotential,
215 >                                           bool needStress) {
216 >    forceMan_->calcForces(needPotential, needStress);
217 >  }
218  
219 < DumpWriter* VelocityVerletIntegrator::createDumpWriter() {
220 <  return new DumpWriter(info_);
221 < }
219 >  DumpWriter* VelocityVerletIntegrator::createDumpWriter() {
220 >    return new DumpWriter(info_);
221 >  }
222  
223 < StatWriter* VelocityVerletIntegrator::createStatWriter() {
224 <  // if solidThermInt is true, add extra information to the statfile
225 <  if (simParams->getUseSolidThermInt()){
226 <    StatsBitSet mask;
227 <    mask.set(Stats::TIME);
228 <    mask.set(Stats::TOTAL_ENERGY);
229 <    mask.set(Stats::POTENTIAL_ENERGY);
230 <    mask.set(Stats::KINETIC_ENERGY);
231 <    mask.set(Stats::TEMPERATURE);
232 <    mask.set(Stats::PRESSURE);
233 <    mask.set(Stats::VOLUME);
234 <    mask.set(Stats::CONSERVED_QUANTITY);
235 <    mask.set(Stats::VRAW);
236 <    mask.set(Stats::VHARM);
237 <    return new StatWriter(info_->getStatFileName(), mask);
223 >  StatWriter* VelocityVerletIntegrator::createStatWriter() {
224 >
225 >    std::string statFileFormatString = simParams->getStatFileFormat();
226 >    StatsBitSet mask = parseStatFileFormat(statFileFormatString);
227 >    
228 >    // if solidThermInt is true, add extra information to the statfile
229 >    if (simParams->getUseSolidThermInt()){
230 >      mask.set(Stats::VRAW);
231 >      mask.set(Stats::VHARM);
232 >    }
233 >
234 >    if (simParams->havePrintPressureTensor() && simParams->getPrintPressureTensor()){
235 >        mask.set(Stats::PRESSURE_TENSOR_X);
236 >        mask.set(Stats::PRESSURE_TENSOR_Y);
237 >        mask.set(Stats::PRESSURE_TENSOR_Z);
238 >    }
239 >    
240 >     return new StatWriter(info_->getStatFileName(), mask);
241    }
233  
234  return new StatWriter(info_->getStatFileName());
235 }
242  
243 < RestWriter* VelocityVerletIntegrator::createRestWriter(){
244 <  return new RestWriter(info_);
245 < }
243 >  RestWriter* VelocityVerletIntegrator::createRestWriter(){
244 >    return new RestWriter(info_);
245 >  }
246  
247  
248   } //end namespace oopse

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines