23#include <boost/algorithm/string.hpp>
24#include <boost/format.hpp>
34template <
typename JobContainer>
36 libint2::initialize();
39 std::unique_ptr<JobOperator> master = std::unique_ptr<JobOperator>(
42 master->getLogger().setMultithreading(
true);
43 master->getLogger().setPreface(
Log::info,
"\nMST INF");
44 master->getLogger().setPreface(
Log::error,
"\nMST ERR");
45 master->getLogger().setPreface(
Log::warning,
"\nMST WAR");
46 master->getLogger().setPreface(
Log::debug,
"\nMST DBG");
47 progObs_->InitFromProgFile(progFile, *(master.get()));
50 std::vector<std::unique_ptr<JobOperator>> jobOps;
53 jobOps.push_back(std::unique_ptr<JobOperator>(
62 std::cout << std::endl;
70 jobOps[id]->WaitDone();
74 for (
Index id = 0;
id < nThreads_;
id++) {
75 std::cout << std::endl << (jobOps[id]->getLogger()) << std::flush;
82 progObs_->SyncWithProgFile(*(master.get()));
87template <
typename JobContainer>
91 Job *job =
master_.progObs_->RequestNextJob(*
this);
97 this->
master_.progObs_->ReportJobDone(*job, res, *
this);
102template <
typename JobContainer>
105 std::cout <<
"\n... ... Initialized with " <<
nThreads_ <<
" threads.\n";
109 std::cout <<
"\n... ... Using " <<
openmp_threads_ <<
" openmp threads for "
116template <
typename JobContainer>
120 Logger &log = thread.getLogger();
125 (boost::format(
"\nT%1$02d INF ...") % thread.getId()).str());
127 (boost::format(
"\nT%1$02d ERR ...") % thread.getId()).str());
129 (boost::format(
"\nT%1$02d WAR ...") % thread.getId()).str());
131 (boost::format(
"\nT%1$02d DBG ...") % thread.getId()).str());
ProgObserver< std::vector< Job > > * progObs_
Logger is used for thread-safe output of messages.
void setPreface(Log::Level level, const std::string &preface)
void setReportLevel(Log::Level ReportLevel)
void setMultithreading(bool maverick)
ParallelXJobCalc< std::vector< Job > > & master_
void Run() override
Run() executes the actual code.
typename std::vector< Job >::value_type Job
void ParseCommonOptions(const tools::Property &options)
typename Job::JobResult Result
virtual void CustomizeLogger(QMThread &thread)
bool Evaluate(const Topology &top) final
Container for segments and box and atoms.
void setMaxThreads(Index)
Charge transport classes.
Provides a means for comparing floating point numbers.
static Level current_level