--- trunk/src/brains/Stats.cpp 2013/08/07 15:24:16 1925 +++ trunk/src/brains/Stats.cpp 2014/12/02 22:11:04 2046 @@ -40,14 +40,6 @@ * [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" @@ -281,6 +273,14 @@ namespace OpenMD { 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"; tagged_pair_distance.title = "Tagged_Pair_Distance"; @@ -376,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); @@ -468,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;