1#ifndef PRDC_CL_W_FIELDS_H
2#define PRDC_CL_W_FIELDS_H
11#include <util/containers/DArray.h>
12#include <pscf/math/IntVec.h>
16 template <
typename T>
class Signal;
17 template <>
class Signal<void>;
69 template <
int D,
class CFT,
class FIT>
200 CFT
const &
field(
int monomerId)
const;
284 FIT
const * fieldIoPtr_;
309 virtual void assignField(CFT& lhs, CFT
const & rhs)
const;
316 template <
int D,
class CFT,
class FIT>
inline
318 { hasData_ =
false; }
321 template <
int D,
class CFT,
class FIT>
inline
329 template <
int D,
class CFT,
class FIT>
inline
337 template <
int D,
class CFT,
class FIT>
inline
339 {
return isAllocated_; }
342 template <
int D,
class CFT,
class FIT>
inline
349 template <
int D,
class CFT,
class FIT>
inline
352 {
return meshDimensions_; }
355 template <
int D,
class CFT,
class FIT>
inline
357 {
return meshSize_; }
360 template <
int D,
class CFT,
class FIT>
inline
362 {
return nMonomer_; }
365 template <
int D,
class CFT,
class FIT>
inline
void writeFields(std::ostream &out) const
Write fields to an output stream.
void setFields(DArray< CFT > const &fields)
Set values for all fields.
CFT const & field(int monomerId) const
Get the field for one monomer type.
void setWriteUnitCell(UnitCell< D > const &cell)
Set unit cell used when writing field files.
void readFields(std::istream &in)
Read all fields from an input file.
bool hasData() const
Has field data been set since it was last cleared?
int meshSize() const
Get mesh size (number of grid points), set on r-grid allocation.
void setFieldIo(FIT const &fieldIo)
Create association with FIT (store pointer).
void readFields(std::string const &filename)
Read all fields from a named file.
void clear()
Clear data stored in this object without deallocating.
IntVec< D > const & meshDimensions() const
Get mesh dimensions in each direction, set on r-grid allocation.
FieldIo< D > const & fieldIo() const
Signal< void > & signal()
Get the signal that notifies observers of w-field modification.
bool isAllocated() const
Has memory been allocated for fields ?
void writeFields(std::string const &filename) const
Write fields to a named file.
void allocate(int nMonomer, IntVec< D > const &dimensions)
Allocate memory for fields.
DArray< CField< D > > const & fields() const
void setReadUnitCell(UnitCell< D > &cell)
Set unit cell used when reading field files.
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.
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.
Complex-valued periodic fields (class templates).
Periodic fields and crystallography.
PSCF package top-level namespace.
Utility classes for scientific computation.