PSCF v1.3
rpg/fts/perturbation/PerturbationFactory.h
1#ifndef RPG_PERTURBATION_FACTORY_H
2#define RPG_PERTURBATION_FACTORY_H
3
4/*
5* PSCF - Polymer Self-Consistent Field
6*
7* Copyright 2015 - 2025, The Regents of the University of Minnesota
8* Distributed under the terms of the GNU General Public License.
9*/
10
11#include <rpg/fts/perturbation/Perturbation.h>
12#include <util/param/Factory.h>
13#include <string>
14
15namespace Pscf {
16namespace Rpg {
17
18 template <int D> class Simulator;
19
20 using namespace Util;
21
27 template <int D>
28 class PerturbationFactory : public Factory< Perturbation<D> >
29 {
30
31 public:
32
39
46 Perturbation<D>* factory(const std::string & className) const;
47
49
50 private:
51
53 Simulator<D>* simulatorPtr_;
54
55 };
56
57 #ifndef RPG_PERTURBATION_FACTORY_TPP
58 // Suppress implicit instantiation
59 extern template class PerturbationFactory<1>;
60 extern template class PerturbationFactory<2>;
61 extern template class PerturbationFactory<3>;
62 #endif
63
64}
65}
66#endif
Factory for subclasses of Perturbation.
Perturbation< D > * factory(const std::string &className) const
Method to create any Perturbation supplied with PSCF.
PerturbationFactory(Simulator< D > &simulator)
Constructor.
Base class for additive perturbations of standard FTS Hamiltonian.
Field theoretic simulator (base class).
Perturbation< D > * trySubfactories(const std::string &className) const
Definition Factory.h:425
SCFT and PS-FTS with real periodic fields (GPU)
PSCF package top-level namespace.
Definition param_pc.dox:1