PSCF v1.4.0
cpc/system/Types.h
1#ifndef CPC_TYPES_H
2#define CPC_TYPES_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// Forward declarations
12namespace Pscf {
13 class Interaction;
14 template <typename WT> class Species;
15 template <typename WT> class PolymerSpecies;
16 template <typename WT> class SolventSpecies;
17 template <typename WT> class MixtureBase;
18 namespace Prdc {
19 class Environment;
20 namespace Cpu {
21 template <int D> class CField;
22 template <int D> class FFT;
23 template <int D> class CFieldComparison;
24 template <int D> class WaveList;
25 }
26 }
27 namespace Cpc {
28 template <int D> class System;
29 template <int D> class Mixture;
30 // template <int D> class MixtureModifier;
31 template <int D> class Polymer;
32 template <int D> class Solvent;
33 template <int D> class Block;
34 template <int D> class Propagator;
35 template <int D> class Domain;
36 template <int D> class FieldIo;
37 template <int D> class WFields;
38 template <int D> class CFields;
39 // template <int D> class Simulator;
40 // template <int D> class SimulatorFactory;
41 }
42}
43
44namespace Pscf {
45namespace Cpc {
46
47 // Namespaces that may be used implicitly
48 using namespace Util;
49 using namespace Prdc;
50
56 template <int D>
57 class Types
58 {
59
60 public:
61
62 using System = Cpc::System<D>;
63
64 using Mixture = Cpc::Mixture<D>;
65 // using MixtureModifier = Cpc::MixtureModifier<D>;
66 using Polymer = Cpc::Polymer<D>;
67 using Solvent = Cpc::Solvent<D>;
68 using Block = Cpc::Block<D>;
69 using Propagator = Cpc::Propagator<D>;
70
71 using Species = Pscf::Species<double>;
72 using PolymerSpecies = Pscf::PolymerSpecies<double>;
73 using SolventSpecies = Pscf::SolventSpecies<double>;
74 using MixtureBase = Pscf::MixtureBase<double>;
75
76 using Interaction = Pscf::Interaction;
77 using Domain = Cpc::Domain<D>;
78 using FieldIo = Cpc::FieldIo<D>;
79
80 using WFields = Cpc::WFields<D>;
81 using CFields = Cpc::CFields<D>;
82
83 // using Simulator = Cpc::Simulator<D>;
84 // using SimulatorFactory = Cpc::SimulatorFactory<D>;
85
86 using CField = Prdc::Cpu::CField<D>;
87 using FFT = Prdc::Cpu::FFT<D>;
88 using CFieldComparison = Prdc::Cpu::CFieldComparison<D>;
89 using WaveList = Prdc::Cpu::WaveList<D>;
90
91 };
92
93} // namespace Cpc
94} // namespace Pscf
95#endif
Block within a linear or branched block polymer.
A container of w fields.
Spatial domain for a periodic structure with real fields, on a CPU.
File input/output operations for fields.
Solver and descriptor for a mixture of polymers and solvents.
Descriptor and solver for one polymer species.
MDE solver for one direction of one block.
Solver and descriptor for a solvent species.
Main class for CL-FTS, representing a complete physical system.
List of aliases for types used the in Cpc namespace.
A container of w fields.
Interaction model for complex Langevin FTS.
Definition Interaction.h:24
Abstract descriptor for a mixture of polymer and solvent species.
Definition MixtureBase.h:58
Descriptor for a linear or acyclic branched block polymer.
Comparator for CField (k-grid) arrays.
Field of complex double precision values on an FFT mesh.
Definition cpu/CField.h:29
Fourier transform wrapper.
Definition cpu/FFT.h:39
Class to compute and store properties associated with wavevectors.
Base class mask and external field generator for variable-cell SCFT.
Definition Environment.h:59
Descriptor for a solvent species.
Base class for a molecular species (polymer or solvent).
Definition Species.h:35
Complex periodic fields, CL-FTS (CPU).
Definition cpc.mod:6
Fields and FFTs for periodic boundary conditions (CPU)
Definition complex.cpp:12
Periodic fields and crystallography.
Definition complex.cpp:11
PSCF package top-level namespace.