1#ifndef PRDC_C_FIELDS_REAL_TPP
2#define PRDC_C_FIELDS_REAL_TPP
11#include "CFieldsReal.h"
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>
46 template <
int D,
class RFT,
class FIT>
54 template <
int D,
class RFT,
class FIT>
58 writeUnitCellPtr_ = &cell;
64 template <
int D,
class RFT,
class FIT>
75 template <
int D,
class RFT,
class FIT>
83 rgrid_.allocate(nMonomer_);
84 for (
int i = 0; i < nMonomer_; ++i) {
85 rgrid_[i].allocate(dimensions);
87 isAllocatedRGrid_ =
true;
93 template <
int D,
class RFT,
class FIT>
100 basis_.allocate(nMonomer_);
101 for (
int i = 0; i < nMonomer_; ++i) {
102 basis_[i].allocate(nBasis);
104 isAllocatedBasis_ =
true;
110 template <
int D,
class RFT,
class FIT>
125 template <
int D,
class RFT,
class FIT>
136 fieldIo().writeFieldsBasis(out, basis_, *writeUnitCellPtr_);
142 template <
int D,
class RFT,
class FIT>
146 fieldIo().fileMaster().openOutputFile(filename, file);
154 template <
int D,
class RFT,
class FIT>
164 bool writeHeader =
true;
166 fieldIo().writeFieldsRGrid(out, rgrid_, *writeUnitCellPtr_, writeHeader,
173 template <
int D,
class RFT,
class FIT>
177 fieldIo().fileMaster().openOutputFile(filename, file);
185 template <
int D,
class RFT,
class FIT>
inline
190 isSymmetric_ =
false;
195 template <
int D,
class RFT,
class FIT>
inline
An IntVec<D, T> is a D-component vector of elements of integer type T.
void allocateBasis(int nBasis)
Allocate or re-allocate memory for fields in basis format.
void writeRGrid(std::ostream &out) const
Writes fields to an input stream in real-space (r-grid) format.
bool hasData() const
Does this container have up-to-date fields?
void setNMonomer(int nMonomer)
Set stored value of nMonomer.
void writeBasis(std::ostream &out) const
Write fields to an input stream in symmetrized basis format.
void allocateRGrid(IntVec< D > const &dimensions)
Allocate memory for fields in rgrid format.
FIT const & fieldIo() const
Get associated FieldIo object (const reference).
~CFieldsReal()
Destructor.
void setHasData(bool hasData)
Set the hasData flag.
void setWriteUnitCell(UnitCell< D > const &cell)
Set unit cell used when writing field files.
void allocate(int nMonomer, int nBasis, IntVec< D > const &dimensions)
Allocate memory for both r-grid and basis field formats.
void setFieldIo(FIT const &fieldIo)
Create association with FIT (store pointer).
void setIsSymmetric(bool isSymmetric)
Set the isSymmetric flag.
CFieldsReal()
Constructor.
bool isSymmetric() const
Are the fields invariant under elements of the space group?
Base template for UnitCell<D> classes, D=1, 2 or 3.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
Periodic fields and crystallography.
PSCF package top-level namespace.