1#ifndef PSPC_W_FIELD_CONTAINER_H
2#define PSPC_W_FIELD_CONTAINER_H
12#include <util/param/ParamComposite.h>
14#include <pscf/math/IntVec.h>
15#include <pscf/crystal/UnitCell.h>
16#include <pspc/field/RField.h>
17#include <util/containers/DArray.h>
22 template <
int D>
class FieldIo;
333 bool isAllocatedRGrid_;
338 bool isAllocatedBasis_;
367 {
return basis_[id]; }
380 {
return rgrid_[id]; }
385 {
return isAllocatedRGrid_; }
390 {
return isAllocatedBasis_; }
400 {
return isSymmetric_; }
402 #ifndef PSPC_W_FIELD_CONTAINER_TPP
An IntVec<D, T> is a D-component vector of elements of integer type T.
File input/output operations and format conversions for fields.
Field of real double precision values on an FFT mesh.
A list of fields stored in both basis and r-grid format.
void deallocateRGrid()
De-allocate fields in rgrid format.
void readRGrid(std::istream &in, UnitCell< D > &unitCell, bool isSymmetric=false)
Reads fields from an input stream in real-space (r-grid) format.
void deallocateBasis()
De-allocate fields in basis format.
~WFieldContainer()
Destructor.
void setFieldIo(FieldIo< D > const &fieldIo)
Create association with FieldIo (store pointer).
void setBasis(DArray< DArray< double > > const &fields)
Set field component values, in symmetrized Fourier format.
DArray< RField< D > > const & rgrid() const
Get array of all fields in r-space grid format.
WFieldContainer()
Constructor.
bool isSymmetric() const
Are fields symmetric under all elements of the space group?
bool hasData() const
Has field data been set in either format?
bool isAllocatedBasis() const
Has memory been allocated for fields in basis format?
void allocate(int nMonomer, int nBasis, IntVec< D > const &dimensions)
Allocate memory for all fields.
DArray< DArray< double > > const & basis() const
Get array of all fields in basis format.
void allocateBasis(int nBasis)
Allocate or re-allocate memory for fields in basis format.
void setNMonomer(int nMonomer)
Set stored value of nMonomer.
bool isAllocatedRGrid() const
Has memory been allocated for fields in r-grid format?
void setRGrid(DArray< RField< D > > const &fields, bool isSymmetric=false)
Set fields values in real-space (r-grid) format.
void allocateRGrid(IntVec< D > const &dimensions)
Allocate or re-allocate memory for fields in rgrid format.
void readBasis(std::istream &in, UnitCell< D > &unitCell)
Read field component values from input stream, in symmetrized Fourier format.
Base template for UnitCell<D> classes, D=1, 2 or 3.
Dynamically allocatable contiguous array template.
An object that can read multiple parameters from file.
C++ namespace for polymer self-consistent field theory (PSCF).
Utility classes for scientific computation.