--- trunk/src/brains/Stats.cpp 2013/06/16 15:15:42 1879 +++ trunk/src/brains/Stats.cpp 2014/09/26 22:22:28 2022 @@ -201,6 +201,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 +280,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"; @@ -366,6 +382,14 @@ namespace OpenMD { } if (info_->getCalcBoxDipole()){ 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()) { @@ -460,6 +484,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 +517,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;