ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/integrators/VelocityVerletIntegrator.cpp
(Generate patch)

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines