PSCF v1.3.3
rpc/field/Domain.h
1#ifndef RPC_DOMAIN_H
2#define RPC_DOMAIN_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/field/DomainTmpl.h> // base class template
12
13// Forward declarations
14namespace Pscf {
15 namespace Prdc {
16 namespace Cpu {
17 template <int D> class WaveList;
18 template <int D> class FFT;
19 }
20 }
21 namespace Rpc {
22 template <int D> class FieldIo;
23 }
24}
25
26// Explicit instantiation declarations of base class template
27namespace Pscf {
28 namespace Prdc {
29 using namespace Cpu;
30 extern template
31 class DomainTmpl<1, FFT<1>, WaveList<1>, Rpc::FieldIo<1> >;
32 extern template
33 class DomainTmpl<2, FFT<2>, WaveList<2>, Rpc::FieldIo<2> >;
34 extern template
35 class DomainTmpl<3, FFT<3>, WaveList<3>, Rpc::FieldIo<3> >;
36 }
37}
38
39namespace Pscf {
40namespace Rpc {
41
42 using namespace Util;
43 using namespace Pscf::Prdc;
44 using namespace Pscf::Prdc::Cpu;
45
61 template <int D>
62 class Domain
63 : public DomainTmpl< D, FFT<D>, WaveList<D>, FieldIo<D> >
64 {
65
66 public:
67
73 Domain();
74
77
78 // Inherited pubic member functions
82 using Base::makeBasis;
83 using Base::unitCell;
84 using Base::mesh;
85 using Base::group;
86 using Base::basis;
87 using Base::fft;
88 using Base::waveList;
89 using Base::fieldIo;
90 using Base::lattice;
91 using Base::groupName;
92 using Base::hasGroup;
93 using Base::hasBasis;
94 using Base::writeStars;
95 using Base::writeWaves;
96 using Base::writeGroup;
97
98 };
99
100 // Explicit instantiation declarations of all relevant cases
101 extern template class Domain<1>;
102 extern template class Domain<2>;
103 extern template class Domain<3>;
104
105} // namespace Rpc
106} // namespace Pscf
107#endif
Fourier transform wrapper.
Definition cpu/FFT.h:38
Class to calculate and store properties of wavevectors.
Spatial domain for a periodic structure with real fields.
Definition DomainTmpl.h:71
Spatial domain for a periodic structure with real fields, on a CPU.
DomainTmpl< D, FFT< D >, WaveList< D >, FieldIo< D > > Base
Typedef for base class.
File input/output operations and format conversions for fields.
Fields and FFTs for periodic boundary conditions (CPU)
Definition CField.cpp:12
Periodic fields and crystallography.
Definition CField.cpp:11
Real periodic fields, SCFT and PS-FTS (CPU).
Definition param_pc.dox:2
PSCF package top-level namespace.