PSCF v1.3
rpc/field/WFieldContainer.h
1#ifndef RPC_W_FIELD_CONTAINER_H
2#define RPC_W_FIELD_CONTAINER_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/WFieldsReal.h> // base class template
12#include <prdc/cpu/RField.h> // template parameter
13#include <rpc/field/FieldIo.h> // template parameter
14
15namespace Pscf {
16namespace Rpc {
17
18 using namespace Util;
19 using namespace Pscf::Prdc;
20 using namespace Pscf::Prdc::Cpu;
21
31 template <int D>
33 : public WFieldsReal<D, Prdc::Cpu::RField<D>, Rpc::FieldIo<D> >
34 {
35 public:
36
39
40 // Inherited public member functions
41 using Base::setFieldIo;
45 using Base::allocate;
46 using Base::setBasis;
47 using Base::setRGrid;
48 using Base::readBasis;
49 using Base::readRGrid;
50 using Base::symmetrize;
51 using Base::clear;
52 using Base::basis;
53 using Base::rgrid;
56 using Base::hasData;
58
59 protected:
60
62 using Base::meshSize;
63 using Base::nBasis;
64 using Base::nMonomer;
65 using Base::fieldIo;
66
67 private:
68
75 void assignRField(RField<D>& lhs, RField<D> const & rhs) const
76 override;
77
78 };
79
80 #ifndef RPC_W_FIELD_CONTAINER_TPP
81 // Suppress implicit instantiation
82 extern template class WFieldContainer<1>;
83 extern template class WFieldContainer<2>;
84 extern template class WFieldContainer<3>;
85 #endif
86
87} // namespace Rpc
88
89#ifndef RPC_W_FIELD_CONTAINER_TPP
90namespace Prdc {
91 // Suppress implicit instantiation
92 extern template class WFieldsReal<1, RField<1>, Rpc::FieldIo<1> >;
93 extern template class WFieldsReal<2, RField<2>, Rpc::FieldIo<2> >;
94 extern template class WFieldsReal<3, RField<3>, Rpc::FieldIo<3> >;
95} // namespace Rpc
96#endif
97
98} // namespace Pscf
99#endif
Field of real double precision values on an FFT mesh.
Definition cpu/RField.h:29
A container of w fields stored in both basis and r-grid format.
Definition WFieldsReal.h:93
DArray< DArray< double > > const & basis() const
void allocateRGrid(IntVec< D > const &dimensions)
void allocate(int nMonomer, int nBasis, IntVec< D > const &dimensions)
void readRGrid(std::istream &in, bool isSymmetric=false)
void setBasis(DArray< DArray< double > > const &fields)
void setRGrid(DArray< RField< D > > const &fields, bool isSymmetric=false)
DArray< RField< D > > const & rgrid() const
File input/output operations and format conversions for fields.
A container of fields stored in both basis and r-grid format.
WFieldsReal< D, RField< D >, FieldIo< D > > Base
Alias for base class.
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.
Definition param_pc.dox:1