1#ifndef PRDC_CL_C_FIELDS_TPP
2#define PRDC_CL_C_FIELDS_TPP
12#include <prdc/field/cFieldIo.h>
13#include <prdc/crystal/UnitCell.h>
14#include <pscf/mesh/Mesh.h>
15#include <util/misc/FileMaster.h>
28 template <
int D,
class CFT,
class FIT>
34 writeUnitCellPtr_(nullptr),
43 template <
int D,
class CFT,
class FIT>
50 template <
int D,
class CFT,
class FIT>
57 template <
int D,
class CFT,
class FIT>
61 writeUnitCellPtr_ = &cell;
67 template <
int D,
class CFT,
class FIT>
80 for (
int i = 0; i < D; ++i) {
86 fields_.allocate(nMonomer_);
87 for (
int i = 0; i < nMonomer_; ++i) {
99 template <
int D,
class CFT,
class FIT>
109 bool writeHeader =
true;
111 fieldIo().writeFields(out, fields_, *writeUnitCellPtr_,
118 template <
int D,
class CFT,
class FIT>
122 fieldIo().fileMaster().openOutputFile(filename, file);
132 template <
int D,
class CFT,
class FIT>
void setFieldIo(FIT const &fieldIo)
Create association with FIT (store pointer).
IntVec< D > const & meshDimensions() const
Get mesh dimensions in each direction, set on r-grid allocation.
bool hasData() const
Does this container have up-to-date field data ?
void setHasData(bool hasData)
Set the hasData boolean flag.
FIT const & fieldIo() const
Get associated FIT field IO object (const reference).
void allocate(int nMonomer, IntVec< D > const &dimensions)
Allocate memory for fields.
int nMonomer() const
Get number of monomer types.
void setWriteUnitCell(UnitCell< D > const &cell)
Set unit cell used when writing field files.
void writeFields(std::ostream &out) const
Write fields to an output stream.
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.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
Complex-valued periodic fields (class templates).
Periodic fields and crystallography.
PSCF package top-level namespace.