1#ifndef RPG_MC_MOVE_MANAGER_TPP
2#define RPG_MC_MOVE_MANAGER_TPP
12#include <rpg/fts/montecarlo/McMoveManager.h>
13#include <rpg/fts/montecarlo/McMoveFactory.h>
14#include <rpg/fts/montecarlo/McSimulator.h>
15#include <util/random/Random.h>
29 simulatorPtr_(&simulator),
31 randomPtr_(&simulator.random())
58 probabilities_.allocate(
size());
59 double totalProbability = 0.0;
61 for (iMove = 0; iMove <
size(); ++iMove) {
62 probabilities_[iMove] = (*this)[iMove].probability();
63 totalProbability += probabilities_[iMove];
67 for (iMove = 0; iMove <
size(); ++iMove) {
68 probabilities_[iMove] = probabilities_[iMove]/totalProbability;
69 (*this)[iMove].setProbability(probabilities_[iMove]);
79 for (
int iMove = 0; iMove <
size(); ++iMove) {
80 (*this)[iMove].setup();
91 iMove = randomPtr_->drawFrom(&probabilities_[0],
size());
92 return (*
this)[iMove];
101 for (
int i=0; i<
size(); i++) {
112 for (
int i=0; i<
size(); i++) {
113 (*this)[i].outputTimers(out);
123 for (
int i=0; i<
size(); i++) {
124 (*this)[i].clearTimers();
134 for (
int i=0; i<
size(); i++) {
148 for (
int i=0; i<
size(); i++) {
Factory for subclasses of McMove.
void output() const
Output statistics for all moves.
void setup()
Initialize at beginning of system run.
void outputTimers(std::ostream &out) const
Log output timing results.
virtual void readParameters(std::istream &in)
Read instructions for creating McMove objects.
void clearTimers()
Clear timers.
McMove< D > & chooseMove()
Choose an McMove at random, using specified probabilities.
bool needsDc()
Decide whether any move needs to store dc fields.
McMoveManager(McSimulator< D > &simulator, System< D > &system)
Constructor.
~McMoveManager()
Destructor.
bool needsCc()
Decide whether any move needs to store cc fields.
McMove is an abstract base class for Monte Carlo moves.
Monte-Carlo simulation coordinator.
Main class, representing one complete system.
virtual Factory< McMove< D > > * newDefaultFactory() const
Manager(bool uniqueNames=false)
void setClassName(const char *className)
Set class name string.
File containing preprocessor macros for error handling.
SCFT and PS-FTS with real periodic fields (GPU)
PSCF package top-level namespace.