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 417 by chrisfen, Thu Mar 10 15:10:24 2005 UTC vs.
Revision 749 by tim, Wed Nov 16 23:10:02 2005 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 >    double 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 >
145 >    std::cout << currentSnapshot_->getTime()<< ": \n";  
146    }
141  
142 }
147  
148 < void VelocityVerletIntegrator::postStep() {
148 >  void VelocityVerletIntegrator::postStep() {
149 >
150 >    //save snapshot
151 >    info_->getSnapshotManager()->advance();
152    
153 <  //save snapshot
154 <  info_->getSnapshotManager()->advance();
153 >    //increase time
154 >    currentSnapshot_->increaseTime(dt);        
155    
156 <  //increase time
157 <  currentSnapshot_->increaseTime(dt);        
158 <  
159 <  if (needVelocityScaling) {
160 <    if (currentSnapshot_->getTime() >= currThermal) {
154 <      velocitizer_->velocitize(targetScalingTemp);
155 <      currThermal += thermalTime;
156 >    if (needVelocityScaling) {
157 >      if (currentSnapshot_->getTime() >= currThermal) {
158 >        velocitizer_->velocitize(targetScalingTemp);
159 >        currThermal += thermalTime;
160 >      }
161      }
157  }
162    
163 <  if (currentSnapshot_->getTime() >= currSample) {
164 <    dumpWriter->writeDumpAndEor();
163 >    if (currentSnapshot_->getTime() >= currSample) {
164 >      dumpWriter->writeDumpAndEor();
165      
166 <    if (simParams->getUseSolidThermInt())
167 <      restWriter->writeZangle();
166 >      if (simParams->getUseSolidThermInt())
167 >        restWriter->writeZangle();
168      
169 <    currSample += sampleTime;
170 <  }
169 >      currSample += sampleTime;
170 >    }
171    
172 <  if (currentSnapshot_->getTime() >= currStatus) {
173 <    //save statistics, before writeStat,  we must save statistics
174 <    thermo.saveStat();
175 <    saveConservedQuantity();
176 <    statWriter->writeStat(currentSnapshot_->statData);
172 >    if (currentSnapshot_->getTime() >= currStatus) {
173 >      //save statistics, before writeStat,  we must save statistics
174 >      thermo.saveStat();
175 >      saveConservedQuantity();
176 >      statWriter->writeStat(currentSnapshot_->statData);
177      
178 <    needPotential = false;
179 <    needStress = false;
180 <    currStatus += statusTime;
181 <  }
178 >      needPotential = false;
179 >      needStress = false;
180 >      currStatus += statusTime;
181 >    }
182 >
183 >      if (needReset && currentSnapshot_->getTime() >= currReset) {    
184 >        resetIntegrator();
185 >        currReset += resetTime;
186 >      }
187    
188 <  
180 < }
188 >  }
189  
190  
191 < void VelocityVerletIntegrator::finalize() {
192 <  dumpWriter->writeEor();
191 >  void VelocityVerletIntegrator::finalize() {
192 >    dumpWriter->writeEor();
193    
194 <  if (simParams->getUseSolidThermInt()) {
195 <    restWriter->writeZangle();
196 <    delete restWriter;
197 <    restWriter = NULL;
198 <  }
194 >    if (simParams->getUseSolidThermInt()) {
195 >      restWriter->writeZangle();
196 >      delete restWriter;
197 >      restWriter = NULL;
198 >    }
199    
200 <  delete dumpWriter;
201 <  delete statWriter;
200 >    delete dumpWriter;
201 >    delete statWriter;
202    
203 <  dumpWriter = NULL;
204 <  statWriter = NULL;
203 >    dumpWriter = NULL;
204 >    statWriter = NULL;
205    
206 < }
206 >  }
207  
208 < void VelocityVerletIntegrator::integrateStep() {
208 >  void VelocityVerletIntegrator::integrateStep() {
209    
210 <  moveA();
211 <  calcForce(needPotential, needStress);
212 <  moveB();
213 < }
210 >    moveA();
211 >    calcForce(needPotential, needStress);
212 >    moveB();
213 >  }
214  
215  
216 < void VelocityVerletIntegrator::calcForce(bool needPotential,
217 <                                         bool needStress) {
218 <  forceMan_->calcForces(needPotential, needStress);
219 < }
216 >  void VelocityVerletIntegrator::calcForce(bool needPotential,
217 >                                           bool needStress) {
218 >    forceMan_->calcForces(needPotential, needStress);
219 >  }
220  
221 < DumpWriter* VelocityVerletIntegrator::createDumpWriter() {
222 <  return new DumpWriter(info_);
223 < }
221 >  DumpWriter* VelocityVerletIntegrator::createDumpWriter() {
222 >    return new DumpWriter(info_);
223 >  }
224  
225 < StatWriter* VelocityVerletIntegrator::createStatWriter() {
226 <  // if solidThermInt is true, add extra information to the statfile
227 <  if (simParams->getUseSolidThermInt()){
228 <    StatsBitSet mask;
229 <    mask.set(Stats::TIME);
230 <    mask.set(Stats::TOTAL_ENERGY);
231 <    mask.set(Stats::POTENTIAL_ENERGY);
232 <    mask.set(Stats::KINETIC_ENERGY);
233 <    mask.set(Stats::TEMPERATURE);
234 <    mask.set(Stats::PRESSURE);
235 <    mask.set(Stats::CONSERVED_QUANTITY);
236 <    mask.set(Stats::VRAW);
237 <    mask.set(Stats::VHARM);
238 <    return new StatWriter(info_->getStatFileName(), mask);
225 >  StatWriter* VelocityVerletIntegrator::createStatWriter() {
226 >
227 >    std::string statFileFormatString = simParams->getStatFileFormat();
228 >    StatsBitSet mask = parseStatFileFormat(statFileFormatString);
229 >    
230 >    // if solidThermInt is true, add extra information to the statfile
231 >    if (simParams->getUseSolidThermInt()){
232 >      mask.set(Stats::VRAW);
233 >      mask.set(Stats::VHARM);
234 >    }
235 >
236 >    if (simParams->havePrintPressureTensor() && simParams->getPrintPressureTensor()){
237 >        mask.set(Stats::PRESSURE_TENSOR_X);
238 >        mask.set(Stats::PRESSURE_TENSOR_Y);
239 >        mask.set(Stats::PRESSURE_TENSOR_Z);
240 >    }
241 >    
242 >     return new StatWriter(info_->getStatFileName(), mask);
243    }
232  
233  return new StatWriter(info_->getStatFileName());
234 }
244  
245 < RestWriter* VelocityVerletIntegrator::createRestWriter(){
246 <  return new RestWriter(info_);
247 < }
245 >  RestWriter* VelocityVerletIntegrator::createRestWriter(){
246 >    return new RestWriter(info_);
247 >  }
248  
249  
250   } //end namespace oopse

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines