PSCF v1.4.0
rpg/system/Types.h
1#ifndef RPG_TYPES_H
2#define RPG_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 <pscf/cuda/cudaTypes.h>
12
13// Forward declarations
14namespace Pscf {
15 class Interaction;
16 class CudaVecRandom;
17 template <typename T> class DeviceArray;
18 template <typename T> class HostDArray;
19 namespace Prdc {
20 class Environment;
21 namespace Cuda {
22 template <int D> class RField;
23 template <int D> class RFieldDft;
24 template <int D> class FFT;
25 template <int D> class RFieldComparison;
26 template <int D> class RFieldDftComparison;
27 template <int D> class WaveList;
28 }
29 }
30 namespace Rpg {
31 template <int D> class System;
32 template <int D> class SystemConstRef;
33 template <int D> class Mixture;
34 template <int D> class MixtureModifier;
35 template <int D> class Polymer;
36 template <int D> class Solvent;
37 template <int D> class Block;
38 template <int D> class Propagator;
39 template <int D> class Domain;
40 template <int D> class FieldIo;
41 template <int D> class WFields;
42 template <int D> class CFields;
43 template <int D> class Mask;
44 template <int D> class ScftThermo;
45 template <int D> class EnvironmentFactory;
46 template <int D> class Iterator;
47 template <int D> class IteratorFactory;
48 template <int D> class Sweep;
49 template <int D> class SweepParameter;
50 template <int D> class BasisFieldState;
51 template <int D> class SweepFactory;
52 template <int D> class Simulator;
53 template <int D> class SimulatorFactory;
54 template <int D> struct SimState;
55 template <int D> class Compressor;
56 template <int D> class CompressorFactory;
57 template <int D> class IntraCorrelation;
58 template <int D> class Perturbation;
59 template <int D> class PerturbationFactory;
60 template <int D> class Ramp;
61 template <int D> class RampParameter;
62 template <int D> class RampFactory;
63 template <int D> class Analyzer;
64 template <int D> class AnalyzerFactory;
65 template <int D> class AnalyzerManager;
66 template <int D> class AverageAnalyzer;
67 template <int D> class AverageListAnalyzer;
68 template <int D> class TrajectoryReader;
69 template <int D> class TrajectoryReaderFactory;
70 template <int D> class BdSimulator;
71 template <int D> class BdStep;
72 template <int D> class BdStepFactory;
73 template <int D> class McSimulator;
74 template <int D> class McMove;
75 template <int D> class McMoveFactory;
76 template <int D> class McMoveManager;
77 }
78}
79
80namespace Pscf {
81namespace Rpg {
82
83 // Namespaces that may be used implicitly
84 using namespace Prdc;
85
91 template <int D>
92 class Types {
93
94 public:
95
96 using System = Rpg::System<D>;
97 using SystemConstRef = Rpg::SystemConstRef<D>;
98
99 using Mixture = Rpg::Mixture<D>;
100 using MixtureModifier = Rpg::MixtureModifier<D>;
101 using Polymer = Rpg::Polymer<D>;
102 using Solvent = Rpg::Solvent<D>;
103 using Block = Rpg::Block<D>;
104 using Propagator = Rpg::Propagator<D>;
105
106 using Interaction = Pscf::Interaction;
107 using Domain = Rpg::Domain<D>;
108 using FieldIo = Rpg::FieldIo<D>;
109 using ScftThermo = Rpg::ScftThermo<D>;
110
111 using WFields = Rpg::WFields<D>;
112 using CFields = Rpg::CFields<D>;
113 using Mask = Rpg::Mask<D>;
114 using Environment = Prdc::Environment;
115 using EnvironmentFactory = Rpg::EnvironmentFactory<D>;
116
117 using Iterator = Rpg::Iterator<D>;
118 using IteratorFactory = Rpg::IteratorFactory<D>;
119 using Sweep = Rpg::Sweep<D>;
120 using SweepParameter = Rpg::SweepParameter<D>;
121 using BasisFieldState = Rpg::BasisFieldState<D>;
122 using SweepFactory = Rpg::SweepFactory<D>;
123
124 using Simulator = Rpg::Simulator<D>;
125 using SimulatorFactory = Rpg::SimulatorFactory<D>;
126 using SimState = Rpg::SimState<D>;
127
128 using Compressor = Rpg::Compressor<D>;
129 using CompressorFactory = Rpg::CompressorFactory<D>;
130 using IntraCorrelation = Rpg::IntraCorrelation<D>;
131
132 using Perturbation = Rpg::Perturbation<D>;
133 using PerturbationFactory = Rpg::PerturbationFactory<D>;
134
135 using Ramp = Rpg::Ramp<D>;
136 using RampParameter = Rpg::RampParameter<D>;
137 using RampFactory = Rpg::RampFactory<D>;
138
139 using Analyzer = Rpg::Analyzer<D>;
140 using AnalyzerFactory = Rpg::AnalyzerFactory<D>;
141 using AnalyzerManager = Rpg::AnalyzerManager<D>;
142 using AverageAnalyzer = Rpg::AverageAnalyzer<D>;
143 using AverageListAnalyzer = Rpg::AverageListAnalyzer<D>;
144
145 using TrajectoryReader = Rpg::TrajectoryReader<D>;
146 using TrajectoryReaderFactory = Rpg::TrajectoryReaderFactory<D>;
147
148 using BdSimulator = Rpg::BdSimulator<D>;
149 using BdStep = Rpg::BdStep<D>;
150 using BdStepFactory = Rpg::BdStepFactory<D>;
151
152 using McSimulator = Rpg::McSimulator<D>;
153 using McMove = Rpg::McMove<D>;
154 using McMoveFactory = Rpg::McMoveFactory<D>;
155 using McMoveManager = Rpg::McMoveManager<D>;
156
157 using RField = Prdc::Cuda::RField<D>;
158 using RFieldDft = Prdc::Cuda::RFieldDft<D>;
159 using FFT = Prdc::Cuda::FFT<D>;
160 using RFieldComparison = Prdc::Cuda::RFieldComparison<D>;
161 using RFieldDftComparison = Prdc::Cuda::RFieldDftComparison<D>;
162 using WaveList = Prdc::Cuda::WaveList<D>;
163
164 using VecRandom = Pscf::CudaVecRandom;
165
166 template <typename T> using HostArray = Pscf::HostDArray<T>;
168
169 using Real = Pscf::cudaReal;
170 using Complex = Pscf::cudaComplex;
171
172 };
173
174} // namespace Rpg
175} // namespace Pscf
176#endif
Random number generator on GPU.
Dynamic array on the GPU device with aligned data.
Definition DeviceArray.h:96
Template for dynamic array stored in host CPU memory.
Definition HostDArray.h:41
Interaction model for complex Langevin FTS.
Definition Interaction.h:24
Fourier transform wrapper for real or complex data.
Definition cuda/FFT.h:38
Comparator for fields in real-space (r-grid) format.
Comparator for RFieldDft (k-grid) arrays, allocated on device.
Discrete Fourier Transform (DFT) of a real field, allocated on a GPU.
Field of real values on a regular mesh, allocated on a GPU device.
Definition cuda/RField.h:33
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.
Abstract base class for Brownian dynamics (BD) steppers.
Block within a branched polymer.
A list of 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 GPU.
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 Rpg.
A field to which the total monomer concentration is constrained.
Definition /field/Mask.h:35
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.
Main class, representing a complete physical system.
Factory for subclasses of TrajectoryReader.
Trajectory file reader (base class).
List of aliases for types used in the Rpg program-level namespace.
A container of fields stored in both basis and r-grid format.
Fields, FFTs, and utilities for periodic boundary conditions (CUDA).
Definition CField.cu:12
Periodic fields and crystallography.
Definition complex.cpp:11
SCFT and PS-FTS with real periodic fields (GPU)
PSCF package top-level namespace.
cufftDoubleComplex cudaComplex
Complex number type used in CPU code that uses FFTW.
Definition cudaTypes.h:22
cufftDoubleReal cudaReal
Real number type used in CPU code that uses FFTW.
Definition cudaTypes.h:35
SimState stores the state used by an FTS simulation.