1#ifndef PRDC_MASK_TMPL_H
2#define PRDC_MASK_TMPL_H
11#include <pscf/math/IntVec.h>
12#include <util/containers/DArray.h>
16 template <
typename T>
class Signal;
17 template <>
class Signal<void>;
82 template <
int D,
class RFT,
class FIT>
371 {
return meshDimensions_; }
377 {
return meshSize_; }
444 FIT
const * fieldIoPtr_;
454 bool isAllocatedBasis_;
459 bool isAllocatedRGrid_;
479 template <
int D,
class RFT,
class FIT>
488 template <
int D,
class RFT,
class FIT>
496 template <
int D,
class RFT,
class FIT>
498 {
return isAllocatedBasis_; }
501 template <
int D,
class RFT,
class FIT>
503 {
return isAllocatedRGrid_; }
506 template <
int D,
class RFT,
class FIT>
511 template <
int D,
class RFT,
class FIT>
513 {
return isSymmetric_; }
An IntVec<D, T> is a D-component vector of elements of integer type T.
void writeBasis(std::string filename) const
Write fields to a named file, in symmetrized basis format.
bool hasData() const
Has field data been set in either format?
int meshSize() const
Mesh size (number of grid points), set by allocation.
void writeBasis(std::ostream &out) const
Write fields to an input stream in symmetrized basis format.
bool isAllocatedBasis() const
Has memory been allocated in basis format?
void setReadUnitCell(UnitCell< D > &cell)
Set unit cell used when reading a mask field file.
void readBasis(std::string filename)
Read field from a named file, in symmetrized basis format.
double phiTot() const
Return the volume fraction of unit cell occupied by material.
virtual double rGridAverage() const =0
Calculate the average value of the rgrid_ member.
FieldIo< D > const & fieldIo() const
void setRGrid(RFT const &field, bool isSymmetric=false)
Set field values in real-space (r-grid) format.
void readRGrid(std::string filename, bool isSymmetric=false)
Reads field from a named file, in real-space (r-grid) format.
void setBasis(DArray< double > const &field)
Set field component values, in symmetrized Fourier format.
bool isAllocatedRGrid() const
Has memory been allocated in rgrid format?
IntVec< D > const & meshDimensions() const
Mesh dimensions in each direction, set by allocation.
void readRGrid(std::istream &in, bool isSymmetric=false)
Reads field from an input stream in real-space (r-grid) format.
DArray< double > const & basis() const
Get the field in basis format.
void writeRGrid(std::string filename) const
Writes fields to a named file 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 allocateRGrid(IntVec< D > const &dimensions)
Allocate memory for the field in rgrid format.
void setWriteUnitCell(UnitCell< D > const &cell)
Set unit cell used when writing a mask field file.
void setFieldIo(FIT const &fieldIo)
Create association with FieldIo (store pointer).
Signal< void > & signal()
Get a signal that notifies observers of field modification.
void readBasis(std::istream &in)
Read field from input stream in symmetrized basis format.
RFT const & rgrid() const
Get the field in r-grid format.
void allocateBasis(int nBasis)
Allocate memory for the field in basis format.
Base template for UnitCell<D> classes, D=1, 2 or 3.
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.