| 40 |  | * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). | 
| 41 |  | */ | 
| 42 |  |  | 
| 43 | – | /** | 
| 44 | – | * @file Stats.cpp | 
| 45 | – | * @author tlin | 
| 46 | – | * @date 11/04/2004 | 
| 47 | – | * @time 14:26am | 
| 48 | – | * @version 1.0 | 
| 49 | – | */ | 
| 50 | – |  | 
| 43 |  | #include "brains/Stats.hpp" | 
| 44 |  | #include "brains/Thermo.hpp" | 
| 45 |  |  | 
| 46 |  | namespace OpenMD { | 
| 47 |  |  | 
| 48 | < | Stats::Stats(SimInfo* info) : isInit_(false), info_(info) { | 
| 48 | > | Stats::Stats(SimInfo* info) : info_(info), isInit_(false) { | 
| 49 |  |  | 
| 50 |  | if (!isInit_) { | 
| 51 |  | init(); | 
| 273 |  | data_[SYSTEM_DIPOLE] = system_dipole; | 
| 274 |  | statsMap_["SYSTEM_DIPOLE"] =  SYSTEM_DIPOLE; | 
| 275 |  |  | 
| 276 | + | StatsData system_quadrupole; | 
| 277 | + | system_quadrupole.units =  "C*m*m"; | 
| 278 | + | system_quadrupole.title =  "System Quadrupole"; | 
| 279 | + | system_quadrupole.dataType = "Mat3x3d"; | 
| 280 | + | system_quadrupole.accumulator = new MatrixAccumulator(); | 
| 281 | + | data_[SYSTEM_QUADRUPOLE] = system_quadrupole; | 
| 282 | + | statsMap_["SYSTEM_QUADRUPOLE"] =  SYSTEM_QUADRUPOLE; | 
| 283 | + |  | 
| 284 |  | StatsData tagged_pair_distance; | 
| 285 |  | tagged_pair_distance.units =  "Ang"; | 
| 286 |  | tagged_pair_distance.title =  "Tagged_Pair_Distance"; | 
| 374 |  | } | 
| 375 |  | if (info_->getCalcBoxDipole()){ | 
| 376 |  | statsMask_.set(SYSTEM_DIPOLE); | 
| 377 | + | } | 
| 378 | + |  | 
| 379 | + | // Why do we have both of these? | 
| 380 | + | if (simParams->getAccumulateBoxQuadrupole()) { | 
| 381 | + | statsMask_.set(SYSTEM_QUADRUPOLE); | 
| 382 |  | } | 
| 383 | + | if (info_->getCalcBoxQuadrupole()){ | 
| 384 | + | statsMask_.set(SYSTEM_QUADRUPOLE); | 
| 385 | + | } | 
| 386 |  |  | 
| 387 |  | if (simParams->havePrintHeatFlux()) { | 
| 388 |  | if (simParams->getPrintHeatFlux()){ | 
| 476 |  | case SYSTEM_DIPOLE: | 
| 477 |  | dynamic_cast<VectorAccumulator *>(data_[i].accumulator)->add(thermo.getSystemDipole()); | 
| 478 |  | break; | 
| 479 | + | case SYSTEM_QUADRUPOLE: | 
| 480 | + | dynamic_cast<MatrixAccumulator *>(data_[i].accumulator)->add(thermo.getSystemQuadrupole()); | 
| 481 | + | break; | 
| 482 |  | case HEATFLUX: | 
| 483 |  | dynamic_cast<VectorAccumulator *>(data_[i].accumulator)->add(thermo.getHeatFlux()); | 
| 484 |  | break; |