--- branches/development/src/optimization/StatusFunction.hpp 2012/06/05 18:02:44 1741 +++ branches/development/src/optimization/StatusFunction.hpp 2012/06/07 12:53:46 1750 @@ -8,36 +8,42 @@ 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) { + DumpStatusFunction(SimInfo* info) : StatusFunction(), info_(info), thermo(info) { dumpWriter = new DumpWriter(info_); StatsBitSet mask; mask.set(Stats::TIME); mask.set(Stats::POTENTIAL_ENERGY); statWriter = new StatWriter(info_->getStatFileName(), mask); } - virtual void writeStatus() { + virtual void writeStatus(int functionCount, int gradientCount, const DynamicVector& x, RealType f) { Snapshot* curSnapshot =info_->getSnapshotManager()->getCurrentSnapshot(); - info_->getSnapshotManager()->advance(); + thermo.saveStat(); + curSnapshot->setTime(functionCount); dumpWriter->writeDumpAndEor(); statWriter->writeStat(curSnapshot->statData); } + ~DumpStatusFunction() { + delete dumpWriter; + delete statWriter; + } private: SimInfo* info_; DumpWriter* dumpWriter; StatWriter* statWriter; + Thermo thermo; };