1#ifndef PRDC_C_FIELDS_REAL_H
2#define PRDC_C_FIELDS_REAL_H
11#include <util/containers/DArray.h>
12#include <pscf/math/IntVec.h>
70 template <
int D,
class RFT,
class FIT>
199 RFT
const &
rgrid(
int monomerId)
const;
320 FIT
const * fieldIoPtr_;
325 bool isAllocatedRGrid_;
330 bool isAllocatedBasis_;
347 template <
int D,
class RFT,
class FIT>
inline
355 template <
int D,
class RFT,
class FIT>
inline
363 template <
int D,
class RFT,
class FIT>
inline
371 template <
int D,
class RFT,
class FIT>
inline
380 template <
int D,
class RFT,
class FIT>
inline
388 template <
int D,
class RFT,
class FIT>
inline
396 template <
int D,
class RFT,
class FIT>
inline
404 template <
int D,
class RFT,
class FIT>
inline
412 template <
int D,
class RFT,
class FIT>
inline
414 {
return isAllocatedRGrid_; }
417 template <
int D,
class RFT,
class FIT>
inline
419 {
return isAllocatedBasis_; }
422 template <
int D,
class RFT,
class FIT>
inline
427 template <
int D,
class RFT,
class FIT>
inline
429 {
return isSymmetric_; }
434 template <
int D,
class RFT,
class FIT>
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.
RFT const & rgrid(int monomerId) const
Get field for one monomer type in r-grid format (const).
DArray< RFT > & rgrid()
Get array of all fields in r-grid format (non-const).
DArray< double > const & basis(int monomerId) const
Get the field for one monomer type in basis format (const)
DArray< DArray< double > > & basis()
Get array of all fields in basis format (non-const).
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?
DArray< DArray< double > > const & basis() const
Get array of all fields in basis format (const)
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.
FieldIo< D > const & fieldIo() const
void writeBasis(std::string filename) const
Write fields to a named file, in symmetrized basis format.
~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.
DArray< RFT > const & rgrid() const
Get array of all fields in r-grid format (const).
void setFieldIo(FIT const &fieldIo)
Create association with FIT (store pointer).
bool isAllocatedBasis() const
Has memory been allocated for fields in basis format?
void writeRGrid(std::string filename) const
Writes fields to a named file in real-space (r-grid) format.
void setIsSymmetric(bool isSymmetric)
Set the isSymmetric flag.
CFieldsReal()
Constructor.
RFT & rgrid(int monomerId)
Get field for one monomer type in r-grid format (non-const)
bool isSymmetric() const
Are the fields invariant under elements of the space group?
DArray< double > & basis(int monomerId)
Get the field for one monomer type in basis format (non-const).
bool isAllocatedRGrid() const
Has memory been allocated for fields in r-grid format?
Base template for UnitCell<D> classes, D=1, 2 or 3.
Dynamically allocatable contiguous array template.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
#define UTIL_ASSERT(condition)
Assertion macro suitable for debugging serial or parallel code.
Periodic fields and crystallography.
PSCF package top-level namespace.