1#ifndef PSPG_W_FIELD_CONTAINER_H
2#define PSPG_W_FIELD_CONTAINER_H
12#include <util/param/ParamComposite.h>
14#include <pscf/math/IntVec.h>
15#include <pscf/crystal/UnitCell.h>
16#include <pspg/field/RDField.h>
17#include <util/containers/DArray.h>
22 template <
int D>
class FieldIo;
365 bool isAllocatedRGrid_;
370 bool isAllocatedBasis_;
399 {
return basis_[id]; }
412 {
return rgrid_[id]; }
417 {
return isAllocatedRGrid_; }
422 {
return isAllocatedBasis_; }
432 {
return isSymmetric_; }
434 #ifndef PSPG_W_FIELD_CONTAINER_TPP
An IntVec<D, T> is a D-component vector of elements of integer type T.
Dynamic array on the GPU with alligned data.
File input/output operations for fields in several file formats.
Field of real single precision values on an FFT mesh on a device.
A list of fields stored in both basis and r-grid format.
void setRGrid(DArray< RDField< D > > const &fields, bool isSymmetric=false)
Set fields values in real-space (r-grid) format.
bool isAllocatedBasis() const
Has memory been allocated for fields in basis format?
void symmetrize()
Symmetrize r-grid fields, compute corresponding basis components.
void deallocateBasis()
De-allocate fields in basis format.
bool isSymmetric() const
Are fields symmetric under all elements of the space group?
void setBasis(DArray< DArray< double > > const &fields)
Set field component values, in symmetrized Fourier format.
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 allocate(int nMonomer, int nBasis, IntVec< D > const &dimensions)
Allocate memory for all fields.
WFieldContainer()
Constructor.
void setNMonomer(int nMonomer)
Set stored value of nMonomer.
DArray< RDField< D > > const & rgrid() const
Get array of all fields in r-space grid format.
~WFieldContainer()
Destructor.
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.
bool hasData() const
Has field data been set in either format?
void setFieldIo(FieldIo< D > const &fieldIo)
Create association with FieldIo (store pointer).
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.
void allocateBasis(int nBasis)
Allocate or re-allocate memory for fields in basis 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.