PSCF v1.2
rpc/fts/simulator/SimulatorFactory.tpp
1#ifndef RPC_SIMULATOR_FACTORY_TPP
2#define RPC_SIMULATOR_FACTORY_TPP
3
4#include "SimulatorFactory.h"
5#include <rpc/System.h>
6
7// Subclasses of Simulator
8#include <rpc/fts/montecarlo/McSimulator.h>
9#include <rpc/fts/brownian/BdSimulator.h>
10
11namespace Pscf {
12namespace Rpc {
13
14 using namespace Util;
15
16 /*
17 * Constructor
18 */
19 template <int D>
21 : systemPtr_(&system)
22 {}
23
24 /*
25 * Return a pointer to a instance of Simulator subclass className.
26 */
27 template <int D>
28 Simulator<D>* SimulatorFactory<D>::factory(const std::string &className)
29 const
30 {
31 Simulator<D>* ptr = 0;
32
33 // Try subfactories first
34 ptr = trySubfactories(className);
35 if (ptr) return ptr;
36
37 // Try to match classname
38 if (className == "McSimulator" || className == "Simulator") {
39 ptr = new McSimulator<D>(*systemPtr_);
40 } else
41 if (className == "BdSimulator") {
42 ptr = new BdSimulator<D>(*systemPtr_);
43 }
44
45 return ptr;
46 }
47
48}
49}
50#endif
Brownian dynamics simulator for PS-FTS.
Monte-Carlo simulation coordinator.
Simulator< D > * factory(const std::string &className) const
Method to create any Simulator supplied with PSCF.
SimulatorFactory(System< D > &system)
Constructor.
Field theoretic simulator (base class).
Definition rpc/System.h:38
Main class for SCFT or PS-FTS simulation of one system.
Definition rpc/System.h:100
PSCF package top-level namespace.
Definition param_pc.dox:1
Utility classes for scientific computation.