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

Comparing branches/development/src/brains/Stats.cpp (file contents):
Revision 1808 by gezelter, Mon Oct 22 20:42:10 2012 UTC vs.
Revision 1868 by gezelter, Tue Apr 30 15:56:54 2013 UTC

# Line 35 | Line 35
35   *                                                                      
36   * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).            
37   * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).          
38 < * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008).          
38 > * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).          
39   * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).
40   * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
41   */
# Line 44 | Line 44
44   * @file Stats.cpp
45   * @author tlin
46   * @date 11/04/2004
47 + * @time 14:26am
48   * @version 1.0
49   */
50  
# Line 194 | Line 195 | namespace OpenMD {
195  
196      StatsData hydrogenbonding_potential;
197      hydrogenbonding_potential.units =  "kcal/mol";
198 <    hydrogenbonding_potential.title =  "Metallic Potential";    
198 >    hydrogenbonding_potential.title =  "Hydrogen Bonding Potential";    
199      hydrogenbonding_potential.dataType = "RealType";
200      hydrogenbonding_potential.accumulator = new Accumulator();
201      data_[HYDROGENBONDING_POTENTIAL] = hydrogenbonding_potential;
# Line 311 | Line 312 | namespace OpenMD {
312      electronic_temperature.accumulator = new Accumulator();
313      data_[ELECTRONIC_TEMPERATURE] = electronic_temperature;
314      statsMap_["ELECTRONIC_TEMPERATURE"] = ELECTRONIC_TEMPERATURE;
315 +
316 +    StatsData com;
317 +    com.units =  "A";
318 +    com.title =  "Center of Mass";
319 +    com.dataType = "Vector3d";
320 +    com.accumulator = new VectorAccumulator();
321 +    data_[COM] = com;
322 +    statsMap_["COM"] =  COM;
323  
324 +    StatsData comVel;
325 +    comVel.units =  "A/fs";
326 +    comVel.title =  "Center of Mass Velocity";
327 +    comVel.dataType = "Vector3d";
328 +    comVel.accumulator = new VectorAccumulator();
329 +    data_[COM_VELOCITY] = comVel;
330 +    statsMap_["COM_VELOCITY"] =  COM_VELOCITY;
331 +
332 +    StatsData angMom;
333 +    angMom.units =  "amu A^2/fs";
334 +    angMom.title =  "Angular Momentum";
335 +    angMom.dataType = "Vector3d";
336 +    angMom.accumulator = new VectorAccumulator();
337 +    data_[ANGULAR_MOMENTUM] = angMom;
338 +    statsMap_["ANGULAR_MOMENTUM"] =  ANGULAR_MOMENTUM;
339 +
340      // Now, set some defaults in the mask:
341  
342      Globals* simParams = info_->getSimParams();
# Line 378 | Line 403 | namespace OpenMD {
403      }  
404    }
405  
406 +  Stats::~Stats() {
407 +    data_.clear();
408 +    statsMap_.clear();
409 +  }
410  
411    std::string Stats::getTitle(int index) {
412      assert(index >=0 && index < ENDINDEX);
# Line 403 | Line 432 | namespace OpenMD {
432        if (statsMask_[i]) {
433          switch (i) {
434          case TIME:
435 <          data_[i].accumulator->add(snap->getTime());
435 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getTime());
436            break;
437          case KINETIC_ENERGY:
438 <          data_[i].accumulator->add(thermo.getKinetic());
438 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getKinetic());
439            break;
440          case POTENTIAL_ENERGY:
441 <          data_[i].accumulator->add(thermo.getPotential());
441 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getPotential());
442            break;
443          case TOTAL_ENERGY:
444 <          data_[i].accumulator->add(thermo.getTotalEnergy());
444 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getTotalEnergy());
445            break;
446          case TEMPERATURE:
447 <          data_[i].accumulator->add(thermo.getTemperature());
447 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getTemperature());
448            break;
449          case PRESSURE:
450 <          data_[i].accumulator->add(thermo.getPressure());
450 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getPressure());
451            break;
452          case VOLUME:
453 <          data_[i].accumulator->add(thermo.getVolume());
453 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getVolume());
454            break;
455          case CONSERVED_QUANTITY:
456 <          data_[i].accumulator->add(snap->getConservedQuantity());
456 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getConservedQuantity());
457            break;
458          case PRESSURE_TENSOR:
459            dynamic_cast<MatrixAccumulator *>(data_[i].accumulator)->add(thermo.getPressureTensor());
# Line 436 | Line 465 | namespace OpenMD {
465            dynamic_cast<VectorAccumulator *>(data_[i].accumulator)->add(thermo.getHeatFlux());
466            break;
467          case HULLVOLUME:
468 <          data_[i].accumulator->add(thermo.getHullVolume());
468 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getHullVolume());
469            break;
470          case GYRVOLUME:
471 <          data_[i].accumulator->add(thermo.getGyrationalVolume());
471 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getGyrationalVolume());
472            break;
473          case TRANSLATIONAL_KINETIC:
474 <          data_[i].accumulator->add(thermo.getTranslationalKinetic());
474 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getTranslationalKinetic());
475            break;
476          case ROTATIONAL_KINETIC:
477 <          data_[i].accumulator->add(thermo.getRotationalKinetic());
477 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getRotationalKinetic());
478            break;
479          case LONG_RANGE_POTENTIAL:
480 <          data_[i].accumulator->add(snap->getLongRangePotential());
480 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getLongRangePotential());
481            break;
482          case VANDERWAALS_POTENTIAL:
483 <          data_[i].accumulator->add(snap->getLongRangePotentials()[VANDERWAALS_FAMILY]);
483 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getLongRangePotentials()[VANDERWAALS_FAMILY]);
484            break;
485          case ELECTROSTATIC_POTENTIAL:
486 <          data_[i].accumulator->add(snap->getLongRangePotentials()[ELECTROSTATIC_FAMILY]);
486 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getLongRangePotentials()[ELECTROSTATIC_FAMILY]);
487            break;
488          case METALLIC_POTENTIAL:
489 <          data_[i].accumulator->add(snap->getLongRangePotentials()[METALLIC_FAMILY]);
489 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getLongRangePotentials()[METALLIC_FAMILY]);
490            break;
491          case HYDROGENBONDING_POTENTIAL:
492 <          data_[i].accumulator->add(snap->getLongRangePotentials()[HYDROGENBONDING_FAMILY]);
492 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getLongRangePotentials()[HYDROGENBONDING_FAMILY]);
493            break;
494          case SHORT_RANGE_POTENTIAL:
495 <          data_[i].accumulator->add(snap->getShortRangePotential());
495 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getShortRangePotential());
496            break;
497          case BOND_POTENTIAL:
498 <          data_[i].accumulator->add(snap->getBondPotential());
498 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getBondPotential());
499            break;
500          case BEND_POTENTIAL:
501 <          data_[i].accumulator->add(snap->getBendPotential());
501 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getBendPotential());
502            break;
503          case DIHEDRAL_POTENTIAL:
504 <          data_[i].accumulator->add(snap->getTorsionPotential());
504 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getTorsionPotential());
505            break;
506          case INVERSION_POTENTIAL:
507 <          data_[i].accumulator->add(snap->getInversionPotential());
507 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getInversionPotential());
508            break;
509          case RAW_POTENTIAL:
510 <          data_[i].accumulator->add(snap->getRawPotential());
510 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getRawPotential());
511            break;
512          case RESTRAINT_POTENTIAL:
513 <          data_[i].accumulator->add(snap->getRestraintPotential());
513 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(snap->getRestraintPotential());
514            break;
515          case TAGGED_PAIR_DISTANCE:
516 <          data_[i].accumulator->add(thermo.getTaggedAtomPairDistance());
516 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getTaggedAtomPairDistance());
517            break;
518 +        case ELECTRONIC_TEMPERATURE:
519 +          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getElectronicTemperature());
520 +          break;
521 +        case COM:
522 +          dynamic_cast<VectorAccumulator *>(data_[i].accumulator)->add(thermo.getCom());
523 +          break;
524 +        case COM_VELOCITY:
525 +          dynamic_cast<VectorAccumulator *>(data_[i].accumulator)->add(thermo.getComVel());
526 +          break;
527 +        case ANGULAR_MOMENTUM:
528 +          dynamic_cast<VectorAccumulator *>(data_[i].accumulator)->add(thermo.getAngularMomentum());
529 +          break;
530            /*
531          case SHADOWH:
532 <          data_[i].accumulator->add(thermo.getShadowHamiltionian());
532 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getShadowHamiltionian());
533            break;
534          case HELFANDMOMENT:
535 <          data_[i].accumulator->add(thermo.getHelfandMoment());
535 >          dynamic_cast<Accumulator *>(data_[i].accumulator)->add(thermo.getHelfandMoment());
536            break;
537            */
497        case ELECTRONIC_TEMPERATURE:
498          data_[i].accumulator->add(thermo.getElectronicTemperature());
499          break;
538          }
539        }
540      }
# Line 505 | Line 543 | namespace OpenMD {
543    int Stats::getIntData(int index) {
544      assert(index >=0 && index < ENDINDEX);
545      RealType value;
546 <    data_[index].accumulator->getLastValue(value);
546 >    dynamic_cast<Accumulator *>(data_[index].accumulator)->getLastValue(value);
547      return (int) value;
548    }
549    RealType Stats::getRealData(int index) {
550      assert(index >=0 && index < ENDINDEX);
551      RealType value(0.0);
552 <    data_[index].accumulator->getLastValue(value);
552 >    dynamic_cast<Accumulator *>(data_[index].accumulator)->getLastValue(value);
553      return value;
554    }
555    Vector3d Stats::getVectorData(int index) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines