PSCF v1.3.1
rpg/environment/EnvironmentFactory.h
1#ifndef RPG_ENVIRONMENT_FACTORY_H
2#define RPG_ENVIRONMENT_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 <prdc/environment/Environment.h>
12#include <util/param/Factory.h>
13#include <string>
14
15namespace Pscf {
16namespace Rpg {
17
18 template <int D> class System;
19
20 using namespace Util;
21 using namespace Pscf::Prdc;
22
28
29 template <int D>
30 class EnvironmentFactory : public Factory<Environment>
31 {
32
33 public:
34
37
44 Environment* factory(const std::string &className) const;
45
48
49 private:
50
52 System<D>* sysPtr_;
53
54 };
55
56 // Explicit instantiation declarations
57 extern template class EnvironmentFactory<1>;
58 extern template class EnvironmentFactory<2>;
59 extern template class EnvironmentFactory<3>;
60
61}
62}
63#endif
Base class mask and external field generator for variable-cell SCFT.
Definition Environment.h:59
Factory for subclasses of Environment.
Environment * factory(const std::string &className) const
Method to create any Environment supplied with PSCF.
EnvironmentFactory(System< D > &system)
Constructor.
Main class, representing a complete physical system.
Environment * trySubfactories(const std::string &className) const
Definition Factory.h:425
Environment * readObjectOptional(std::istream &in, ParamComposite &parent, std::string &className, bool &isEnd)
Definition Factory.h:378
Periodic fields and crystallography.
Definition CField.cpp:11
SCFT and PS-FTS with real periodic fields (GPU)
PSCF package top-level namespace.
Definition param_pc.dox:1