--- trunk/src/brains/Stats.cpp 2013/06/16 15:15:42 1879 +++ trunk/src/brains/Stats.cpp 2015/03/07 21:41:51 2071 @@ -40,20 +40,12 @@ * [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). */ -/** - * @file Stats.cpp - * @author tlin - * @date 11/04/2004 - * @time 14:26am - * @version 1.0 - */ - #include "brains/Stats.hpp" #include "brains/Thermo.hpp" namespace OpenMD { - Stats::Stats(SimInfo* info) : isInit_(false), info_(info) { + Stats::Stats(SimInfo* info) : info_(info), isInit_(false) { if (!isInit_) { init(); @@ -201,6 +193,14 @@ namespace OpenMD { data_[HYDROGENBONDING_POTENTIAL] = hydrogenbonding_potential; statsMap_["HYDROGENBONDING_POTENTIAL"] = HYDROGENBONDING_POTENTIAL; + StatsData reciprocal_potential; + reciprocal_potential.units = "kcal/mol"; + reciprocal_potential.title = "Reciprocal Space Potential"; + reciprocal_potential.dataType = "RealType"; + reciprocal_potential.accumulator = new Accumulator(); + data_[RECIPROCAL_POTENTIAL] = reciprocal_potential; + statsMap_["RECIPROCAL_POTENTIAL"] = RECIPROCAL_POTENTIAL; + StatsData short_range_potential; short_range_potential.units = "kcal/mol"; short_range_potential.title = "Short Range Potential"; @@ -272,6 +272,14 @@ namespace OpenMD { system_dipole.accumulator = new VectorAccumulator(); data_[SYSTEM_DIPOLE] = system_dipole; statsMap_["SYSTEM_DIPOLE"] = SYSTEM_DIPOLE; + + StatsData system_quadrupole; + system_quadrupole.units = "C*m*m"; + system_quadrupole.title = "System Quadrupole"; + system_quadrupole.dataType = "Mat3x3d"; + system_quadrupole.accumulator = new MatrixAccumulator(); + data_[SYSTEM_QUADRUPOLE] = system_quadrupole; + statsMap_["SYSTEM_QUADRUPOLE"] = SYSTEM_QUADRUPOLE; StatsData tagged_pair_distance; tagged_pair_distance.units = "Ang"; @@ -368,6 +376,14 @@ namespace OpenMD { statsMask_.set(SYSTEM_DIPOLE); } + // Why do we have both of these? + if (simParams->getAccumulateBoxQuadrupole()) { + statsMask_.set(SYSTEM_QUADRUPOLE); + } + if (info_->getCalcBoxQuadrupole()){ + statsMask_.set(SYSTEM_QUADRUPOLE); + } + if (simParams->havePrintHeatFlux()) { if (simParams->getPrintHeatFlux()){ statsMask_.set(HEATFLUX); @@ -460,6 +476,9 @@ namespace OpenMD { case SYSTEM_DIPOLE: dynamic_cast(data_[i].accumulator)->add(thermo.getSystemDipole()); break; + case SYSTEM_QUADRUPOLE: + dynamic_cast(data_[i].accumulator)->add(thermo.getSystemQuadrupole()); + break; case HEATFLUX: dynamic_cast(data_[i].accumulator)->add(thermo.getHeatFlux()); break; @@ -490,6 +509,9 @@ namespace OpenMD { case HYDROGENBONDING_POTENTIAL: dynamic_cast(data_[i].accumulator)->add(snap->getLongRangePotentials()[HYDROGENBONDING_FAMILY]); break; + case RECIPROCAL_POTENTIAL: + dynamic_cast(data_[i].accumulator)->add(snap->getReciprocalPotential()); + break; case SHORT_RANGE_POTENTIAL: dynamic_cast(data_[i].accumulator)->add(snap->getShortRangePotential()); break;