--- branches/development/src/optimization/StatusFunction.hpp 2012/06/05 18:02:44 1741 +++ trunk/src/optimization/StatusFunction.hpp 2013/06/16 15:15:42 1879 @@ -2,42 +2,54 @@ #define OPTIMIZATION_STATUSFUNCTION_HPP #include "config.h" #include "io/DumpWriter.hpp" +#include "brains/Stats.hpp" #include "io/StatWriter.hpp" namespace OpenMD { class StatusFunction { public: virtual ~StatusFunction() {} - virtual void writeStatus() { std::cerr << "doing status\n"; } + virtual void writeStatus(int functionCount, int gradientCount, const DynamicVector& x, RealType f) { std::cerr << "doing status\n"; } }; //! No status class NoStatus : public StatusFunction { public: - virtual void writeStatus() {}; + virtual void writeStatus(int functionCount, int gradientCount, const DynamicVector& x, RealType f) {}; }; class DumpStatusFunction : public StatusFunction { public: DumpStatusFunction(SimInfo* info) : StatusFunction(), info_(info) { + stats = new Stats(info_); dumpWriter = new DumpWriter(info_); - StatsBitSet mask; + Stats::StatsBitSet mask; mask.set(Stats::TIME); mask.set(Stats::POTENTIAL_ENERGY); - statWriter = new StatWriter(info_->getStatFileName(), mask); + stats->setStatsMask(mask); + statWriter = new StatWriter(info_->getStatFileName(), stats); } - virtual void writeStatus() { + virtual void writeStatus(int functionCount, int gradientCount, const DynamicVector& x, RealType f) { Snapshot* curSnapshot =info_->getSnapshotManager()->getCurrentSnapshot(); - info_->getSnapshotManager()->advance(); + curSnapshot->setTime(functionCount); + + stats->collectStats(); + statWriter->writeStat(); + dumpWriter->writeDumpAndEor(); - statWriter->writeStat(curSnapshot->statData); } + ~DumpStatusFunction() { + delete stats; + delete dumpWriter; + delete statWriter; + } private: SimInfo* info_; + Stats* stats; DumpWriter* dumpWriter; - StatWriter* statWriter; + StatWriter* statWriter; };