11#include <cp/field/FieldIo.h>
12#include <prdc/cpu/CField.h>
13#include <prdc/cpu/FFT.h>
18 template <
typename T>
class DArray;
29 using namespace Prdc::Cpu;
99 int nMonomer)
const override;
151 bool writeHeader =
true,
152 bool writeMeshSize =
true)
const override;
167 bool writeHeader =
true)
const override;
File IO and other utilities for complex fields.
void readFieldHeader(std::istream &in, int &nMonomer, UnitCell< D > &unitCell) const
virtual void writeFields(std::ostream &out, DArray< CField< D > > const &fields, UnitCell< D > const &unitCell, bool writeHeader=true, bool writeMeshSize=true) const=0
void writeFieldHeader(std::ostream &out, int nMonomer, UnitCell< D > const &unitCell) const
virtual void readFieldsData(std::istream &in, DArray< CField< D > > &fields, int nMonomer) const=0
FileMaster const & fileMaster() const
virtual void readFields(std::istream &in, DArray< CField< D > > &fields, UnitCell< D > &unitCell) const=0
virtual void readField(std::istream &in, CField< D > &field, UnitCell< D > &unitCell) const=0
Mesh< D > const & mesh() const
UnitCell< D >::LatticeSystem const & lattice() const
void setFileMaster(FileMaster const &fileMaster)
void associate(Mesh< D > const &mesh, FFT const &fft, typename UnitCell< D >::LatticeSystem const &lattice)
virtual void writeField(std::ostream &out, CField< D > const &field, UnitCell< D > const &unitCell, bool writeHeader=true) const=0
File input/output operations for fields.
void writeFields(std::ostream &out, DArray< CField< D > > const &fields, UnitCell< D > const &unitCell, bool writeHeader=true, bool writeMeshSize=true) const override
Write array of CField objects (fields on r-space grid) to a stream.
Cp::FieldIo< D, CField< D >, FFT< D > > Base
Alias for base class.
void readFields(std::istream &in, DArray< CField< D > > &fields, UnitCell< D > &unitCell) const override
Read multiple complex-valued fields from an input stream.
void readField(std::istream &in, CField< D > &field, UnitCell< D > &unitCell) const override
Read a single CField (field on an r-space grid) from a stream.
void readFieldsData(std::istream &in, DArray< CField< D > > &fields, int nMonomer) const override
Read data for multiple complex fields, with no header section.
void readFieldsRGrid(std::istream &in, DArray< CField< D > > &fields, UnitCell< D > &unitCell) const
Read multiple real value field in r-grid format.
void writeField(std::ostream &out, CField< D > const &field, UnitCell< D > const &unitCell, bool writeHeader=true) const override
Write a single CField (field on an r-space grid) to a stream.
Field of complex double precision values on an FFT mesh.
Fourier transform wrapper.
Base template for UnitCell<D> classes, D=1, 2 or 3.
Dynamically allocatable contiguous array template.
A FileMaster manages input and output files for a simulation.
Complex-valued periodic fields (class templates).
Complex periodic fields, CL-FTS (CPU).
Fields and FFTs for periodic boundary conditions (CPU)
Periodic fields and crystallography.
PSCF package top-level namespace.
Utility classes for scientific computation.