12#include <prdc/crystal/UnitCell.h>
13#include <util/misc/FileMaster.h>
23 template <
int D,
class RFT,
class FIT>
28 writeUnitCellPtr_(nullptr),
30 isAllocatedRGrid_(false),
31 isAllocatedBasis_(false),
39 template <
int D,
class RFT,
class FIT>
47 template <
int D,
class RFT,
class FIT>
51 writeUnitCellPtr_ = &cell;
57 template <
int D,
class RFT,
class FIT>
68 template <
int D,
class RFT,
class FIT>
76 rgrid_.allocate(nMonomer_);
77 for (
int i = 0; i < nMonomer_; ++i) {
78 rgrid_[i].allocate(dimensions);
80 isAllocatedRGrid_ =
true;
86 template <
int D,
class RFT,
class FIT>
93 basis_.allocate(nMonomer_);
94 for (
int i = 0; i < nMonomer_; ++i) {
95 basis_[i].allocate(nBasis);
97 isAllocatedBasis_ =
true;
103 template <
int D,
class RFT,
class FIT>
118 template <
int D,
class RFT,
class FIT>
129 fieldIo().writeFieldsBasis(out, basis_, *writeUnitCellPtr_);
135 template <
int D,
class RFT,
class FIT>
139 fieldIo().fileMaster().openOutputFile(filename, file);
147 template <
int D,
class RFT,
class FIT>
157 bool writeHeader =
true;
159 fieldIo().writeFieldsRGrid(out, rgrid_, *writeUnitCellPtr_, writeHeader,
166 template <
int D,
class RFT,
class FIT>
170 fieldIo().fileMaster().openOutputFile(filename, file);
178 template <
int D,
class RFT,
class FIT>
inline
183 isSymmetric_ =
false;
188 template <
int D,
class RFT,
class FIT>
inline
An IntVec<D, T> is a D-component vector of elements of integer type T.
Base template for UnitCell<D> classes, D=1, 2 or 3.
void writeBasis(std::ostream &out) const
Write fields to an input stream in symmetrized basis format.
bool hasData() const
Does this container have up-to-date fields?
void setFieldIo(FIT const &fieldIo)
Create association with FIT (store pointer).
void writeRGrid(std::ostream &out) const
Writes fields to an input stream in real-space (r-grid) format.
void setNMonomer(int nMonomer)
Set stored value of nMonomer.
void allocate(int nMonomer, int nBasis, IntVec< D > const &dimensions)
Allocate memory for both r-grid and basis field formats.
void allocateRGrid(IntVec< D > const &dimensions)
Allocate memory for fields in rgrid format.
bool isSymmetric() const
Are the fields invariant under elements of the space group?
FIT const & fieldIo() const
Get associated FieldIo object (const reference).
void setHasData(bool hasData)
Set the hasData flag.
void setIsSymmetric(bool isSymmetric)
Set the isSymmetric flag.
void allocateBasis(int nBasis)
Allocate or re-allocate memory for fields in basis format.
void setWriteUnitCell(UnitCell< D > const &cell)
Set unit cell used when writing field files.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
Class templates for real-valued periodic fields.
PSCF package top-level namespace.