PSCF v1.4.0
rpc/system/Types.h
1#ifndef RPC_TYPES_H
2#define RPC_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#include <fftw3.h>
12
13// Forward declarations
14namespace Util {
15 template <typename T> class Array;
16 template <typename T> class DArray;
17 template <typename T> class DRArray;
18}
19namespace Pscf {
20 class Interaction;
21 class CpuVecRandom;
22 template <typename WT> class Species;
23 template <typename WT> class PolymerSpecies;
24 template <typename WT> class SolventSpecies;
25 template <typename WT> class MixtureBase;
26 namespace Prdc {
27 class Environment;
28 namespace Cpu {
29 template <int D> class RField;
30 template <int D> class RFieldDft;
31 template <int D> class FFT;
32 template <int D> class RFieldComparison;
33 template <int D> class RFieldDftComparison;
34 template <int D> class WaveList;
35 }
36 }
37 namespace Rpc {
38 template <int D> class System;
39 template <int D> class SystemConstRef;
40 template <int D> class Mixture;
41 template <int D> class MixtureModifier;
42 template <int D> class Polymer;
43 template <int D> class Solvent;
44 template <int D> class Block;
45 template <int D> class Propagator;
46 template <int D> class Domain;
47 template <int D> class FieldIo;
48 template <int D> class WFields;
49 template <int D> class CFields;
50 template <int D> class Mask;
51 template <int D> class EnvironmentFactory;
52 template <int D> class ScftThermo;
53 template <int D> class Iterator;
54 template <int D> class IteratorFactory;
55 template <int D> class Sweep;
56 template <int D> class SweepParameter;
57 template <int D> class SweepFactory;
58 template <int D> class BasisFieldState;
59 template <int D> class Simulator;
60 template <int D> class SimulatorFactory;
61 template <int D> struct SimState;
62 template <int D> class Compressor;
63 template <int D> class CompressorFactory;
64 template <int D> class IntraCorrelation;
65 template <int D> class Perturbation;
66 template <int D> class PerturbationFactory;
67 template <int D> class Ramp;
68 template <int D> class RampParameter;
69 template <int D> class RampFactory;
70 template <int D> class Analyzer;
71 template <int D> class AnalyzerFactory;
72 template <int D> class AnalyzerManager;
73 template <int D> class AverageAnalyzer;
74 template <int D> class AverageListAnalyzer;
75 template <int D> class TrajectoryReader;
76 template <int D> class TrajectoryReaderFactory;
77 template <int D> class BdSimulator;
78 template <int D> class BdStep;
79 template <int D> class BdStepFactory;
80 template <int D> class McSimulator;
81 template <int D> class McMove;
82 template <int D> class McMoveFactory;
83 template <int D> class McMoveManager;
84 }
85}
86
87namespace Pscf {
88namespace Rpc {
89
90 // Namespaces that may be used implicitly
91 using namespace Util;
92 using namespace Prdc;
93
99 template <int D>
100 class Types
101 {
102
103 public:
104
105 using System = Rpc::System<D>;
106 using SystemConstRef = Rpc::SystemConstRef<D>;
107
108 using Mixture = Rpc::Mixture<D>;
109 using MixtureModifier = Rpc::MixtureModifier<D>;
110 using Polymer = Rpc::Polymer<D>;
111 using Solvent = Rpc::Solvent<D>;
112 using Block = Rpc::Block<D>;
113 using Propagator = Rpc::Propagator<D>;
114
115 using Species = Pscf::Species<double>;
116 using PolymerSpecies = Pscf::PolymerSpecies<double>;
117 using SolventSpecies = Pscf::SolventSpecies<double>;
118 using MixtureBase = Pscf::MixtureBase<double>;
119 using Interaction = Pscf::Interaction;
120
121 using Domain = Rpc::Domain<D>;
122 using FieldIo = Rpc::FieldIo<D>;
123 using WFields = Rpc::WFields<D>;
124 using CFields = Rpc::CFields<D>;
125 using Mask = Rpc::Mask<D>;
126
127 using Environment = Prdc::Environment;
128 using EnvironmentFactory = Rpc::EnvironmentFactory<D>;
129
130 using ScftThermo = Rpc::ScftThermo<D>;
131 using Iterator = Rpc::Iterator<D>;
132 using IteratorFactory = Rpc::IteratorFactory<D>;
133 using Sweep = Rpc::Sweep<D>;
134 using SweepParameter = Rpc::SweepParameter<D>;
135 using BasisFieldState = Rpc::BasisFieldState<D>;
136 using SweepFactory = Rpc::SweepFactory<D>;
137
138 using Simulator = Rpc::Simulator<D>;
139 using SimulatorFactory = Rpc::SimulatorFactory<D>;
140 using SimState = Rpc::SimState<D>;
141
142 using Compressor = Rpc::Compressor<D>;
143 using CompressorFactory = Rpc::CompressorFactory<D>;
144 using IntraCorrelation = Rpc::IntraCorrelation<D>;
145
146 using Perturbation = Rpc::Perturbation<D>;
147 using PerturbationFactory = Rpc::PerturbationFactory<D>;
148
149 using Ramp = Rpc::Ramp<D>;
150 using RampParameter = Rpc::RampParameter<D>;
151 using RampFactory = Rpc::RampFactory<D>;
152
153 using TrajectoryReader = Rpc::TrajectoryReader<D>;
154 using TrajectoryReaderFactory = Rpc::TrajectoryReaderFactory<D>;
155
156 using Analyzer = Rpc::Analyzer<D>;
157 using AnalyzerFactory = Rpc::AnalyzerFactory<D>;
158 using AnalyzerManager = Rpc::AnalyzerManager<D>;
159 using AverageAnalyzer = Rpc::AverageAnalyzer<D>;
160 using AverageListAnalyzer = Rpc::AverageListAnalyzer<D>;
161
162 using BdSimulator = Rpc::BdSimulator<D>;
163 using BdStep = Rpc::BdStep<D>;
164 using BdStepFactory = Rpc::BdStepFactory<D>;
165
166 using McSimulator = Rpc::McSimulator<D>;
167 using McMove = Rpc::McMove<D>;
168 using McMoveFactory = Rpc::McMoveFactory<D>;
169 using McMoveManager = Rpc::McMoveManager<D>;
170
171 using RField = Prdc::Cpu::RField<D>;
172 using RFieldDft = Prdc::Cpu::RFieldDft<D>;
173 using FFT = Prdc::Cpu::FFT<D>;
174 using RFieldComparison = Prdc::Cpu::RFieldComparison<D>;
175 using RFieldDftComparison = Prdc::Cpu::RFieldDftComparison<D>;
176 using WaveList = Prdc::Cpu::WaveList<D>;
177
178 using VecRandom = CpuVecRandom;
179
180 template <typename Data> using HostArray = Util::DArray<Data>;
181 using Vector = Util::DRArray<double>;
182
183 using Real = double;
184 using Complex = fftw_complex;
185
186 };
187
188} // namespace Rpc
189} // namespace Pscf
190#endif
Random number generator for arrays of random numbers on CPU.
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.
Fourier transform wrapper.
Definition cpu/FFT.h:39
Comparator for fields in real-space (r-grid) format.
Comparator for RFieldDft (k-grid) arrays.
Fourier transform of a real field on an FFT mesh.
Field of real double precision values on an FFT mesh.
Definition cpu/RField.h:27
Class to compute and store properties associated with wavevectors.
Base class mask and external field generator for variable-cell SCFT.
Definition Environment.h:59
Factory for subclasses of Analyzer.
Manager for a list of Analyzer objects.
Abstract base for periodic output and/or analysis actions.
Analyze averages and block averages of several real variables.
Analyze averages and block averages of several real variables.
FieldState for fields in symmetry-adapted basis format.
Brownian dynamics simulator for PS-FTS.
Factory for subclasses of BdStep.
BdStep is an abstract base class for Brownian dynamics steps.
Block within a linear or branched block polymer.
A container for c fields stored in both basis and r-grid format.
Factory for subclasses of Compressor.
Base class for iterators that impose incompressibility.
Spatial domain for a periodic structure with real fields, on a CPU.
Factory for subclasses of Environment.
File input/output operations and format conversions for fields.
Intramolecular correlation analyzer.
Factory for subclasses of Iterator.
Base class for iterative solvers for SCF equations in Rpc.
A field to which the total density is constrained.
Definition /field/Mask.h:34
Factory for subclasses of McMove.
Manager for a set of McMove objects.
McMove is an abstract base class for Monte Carlo moves.
Monte Carlo simulator for PS-FTS.
Parameter modifier for an associated Mixture.
Solver and descriptor for a mixture of polymers and solvents.
Factory for subclasses of Perturbation.
Additive perturbation of standard FTS Hamiltonian (base class).
Descriptor and solver for one polymer species.
MDE solver for one direction of one block.
Factory for subclasses of Ramp.
Class for storing data about an individual ramp parameter.
Ramp that varies parameters linearly with index.
Computes SCFT free energies.
Factory for subclasses of Simulator.
Field theoretic simulator (base class).
Solver and descriptor for a solvent species.
Default Factory for subclasses of Sweep.
Class for storing data about an individual sweep parameter.
Solve a sequence of SCFT problems along a line in parameter space.
Const access to a System.
A complete physical system.
Factory for subclasses of TrajectoryReader.
Trajectory file reader (base class).
Aliases for types used in the Rpc program-level namespace.
A container of fields stored in both basis and r-grid format.
Descriptor for a solvent species.
Base class for a molecular species (polymer or solvent).
Definition Species.h:35
Array container class template.
Definition Array.h:40
Dynamically allocatable contiguous array template.
Definition DArray.h:32
Array that can own or reference a dynamically allocated C array.
Definition DRArray.h:74
Fields and FFTs for periodic boundary conditions (CPU)
Definition complex.cpp:12
Periodic fields and crystallography.
Definition complex.cpp:11
Real periodic fields, SCFT and PS-FTS (CPU).
Definition param_pc.dox:2
PSCF package top-level namespace.
Utility classes for scientific computation.
SimState stores the state used by an FTS simulation.