1#ifndef PRDC_W_FIELDS_REAL_H
2#define PRDC_W_FIELDS_REAL_H
11#include <pscf/math/IntVec.h>
12#include <util/containers/DArray.h>
16 template <
typename T>
class Signal;
17 template <>
class Signal<void>;
91 template <
int D,
class RFT,
class FIT>
381 RFT
const &
rgrid(
int monomerId)
const;
498 FIT
const * fieldIoPtr_;
510 bool isAllocatedRGrid_;
515 bool isAllocatedBasis_;
536 virtual void assignRField(RFT& lhs, RFT
const & rhs)
const;
543 template <
int D,
class RField,
class FieldIo>
545 { hasData_ =
false; }
548 template <
int D,
class RFT,
class FIT>
558 template <
int D,
class RFT,
class FIT>
568 template <
int D,
class RFT,
class FIT>
578 template <
int D,
class RFT,
class FIT>
587 template <
int D,
class RFT,
class FIT>
590 {
return isAllocatedRGrid_; }
593 template <
int D,
class RFT,
class FIT>
596 {
return isAllocatedBasis_; }
599 template <
int D,
class RFT,
class FIT>
605 template <
int D,
class RFT,
class FIT>
608 {
return isSymmetric_; }
613 template <
int D,
class RFT,
class FIT>
617 {
return meshDimensions_; }
620 template <
int D,
class RFT,
class FIT>
623 {
return meshSize_; }
626 template <
int D,
class RFT,
class FIT>
632 template <
int D,
class RFT,
class FIT>
635 {
return nMonomer_; }
638 template <
int D,
class RFT,
class FIT>
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.
DArray< DArray< double > > const & basis() const
Get array of all fields in basis format.
bool isAllocatedRGrid() const
Has memory been allocated for fields in r-grid format?
void allocateRGrid(IntVec< D > const &dimensions)
Allocate or re-allocate memory for fields in rgrid format.
void allocate(int nMonomer, int nBasis, IntVec< D > const &dimensions)
Allocate memory for all fields.
void writeBasis(std::string filename) const
Write fields to a named file, in symmetrized basis format.
WFieldsReal()
Constructor.
void readRGrid(std::istream &in, bool isSymmetric=false)
Reads fields from an input stream in real-space (r-grid) format.
void symmetrize()
Symmetrize r-grid fields, compute corresponding basis components.
FieldIo< D > const & fieldIo() const
void setBasis(DArray< DArray< double > > const &fields)
Set field component values, in symmetrized Fourier format.
void setNMonomer(int nMonomer)
Set stored value of nMonomer.
bool isAllocatedBasis() const
Has memory been allocated for fields in basis format?
void setWriteUnitCell(UnitCell< D > const &cell)
Set unit cell used when writing field files.
void readBasis(std::string filename)
Read fields from a named file, in symmetrized basis format.
void writeRGrid(std::string filename) const
Writes fields to a named file in real-space (r-grid) format.
void allocateBasis(int nBasis)
Allocate or re-allocate memory for fields in basis format.
void setFieldIo(FIT const &fieldIo)
Create association with FIT (store pointer).
void writeBasis(std::ostream &out) const
Write fields to an input stream in symmetrized basis format.
DArray< double > const & basis(int monomerId) const
Get the field for one monomer type in basis format.
Signal< void > & signal()
Get a signal that notifies observers of field modification.
void setRGrid(DArray< RFT > const &fields, bool isSymmetric=false)
Set fields values in real-space (r-grid) format.
void writeRGrid(std::ostream &out) const
Writes fields to an input stream in real-space (r-grid) format.
void setReadUnitCell(UnitCell< D > &cell)
Set unit cell used when reading field files.
int meshSize() const
Get mesh size (number of grid points), set on r-grid allocation.
RFT const & rgrid(int monomerId) const
Get the field for one monomer type in r-space grid format.
void clear()
Clear data stored in this object without deallocating.
DArray< RFT > const & rgrid() const
Get array of all fields in r-space grid format.
~WFieldsReal()
Destructor.
IntVec< D > const & meshDimensions() const
Get mesh dimensions in each direction, set on r-grid allocation.
void readBasis(std::istream &in)
Read fields from an input stream in symmetrized basis format.
bool hasData() const
Has field data been set in either format?
void readRGrid(std::string filename, bool isSymmetric=false)
Reads fields from a named file in real-space (r-grid) format.
Dynamically allocatable contiguous array template.
Notifier (or subject) in the Observer design pattern.
#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.
Utility classes for scientific computation.