11#include <pspc/field/FFT.h>
12#include <pspc/field/RField.h>
13#include <pspc/field/RFieldDft.h>
15#include <pscf/crystal/Basis.h>
16#include <pscf/crystal/SpaceGroup.h>
17#include <pscf/crystal/UnitCell.h>
18#include <pscf/mesh/Mesh.h>
20#include <util/misc/FileMaster.h>
21#include <util/containers/DArray.h>
22#include <util/containers/Array.h>
71 std::string & groupName,
268 bool writeHeader =
true)
472 bool checkSymmetry =
true,
473 double epsilon = 1.0e-8)
const;
493 bool checkSymmetry =
true,
494 double epsilon = 1.0e-8)
const;
528 bool checkSymmetry =
true,
529 double epsilon = 1.0e-8)
const;
545 bool checkSymmetry =
true,
546 double epsilon = 1.0e-8)
const;
608 bool verbose =
true)
const;
622 bool verbose =
true)
const;
643 std::string * groupNamePtr_;
664 FFT<D> const & fft()
const
678 std::string & groupName()
const
681 return *groupNamePtr_;
702 return *fileMasterPtr_;
708 void checkWorkDft()
const;
712 #ifndef PSPC_FIELD_IO_TPP
Symmetry-adapted Fourier basis for pseudo-spectral scft.
Description of a regular grid of points in a periodic domain.
Fourier transform wrapper for real data.
File input/output operations and format conversions for fields.
void readFieldRGrid(std::istream &in, RField< D > &field, UnitCell< D > &unitCell) const
Read single RField (field on an r-space grid) from istream.
void writeFieldsBasis(std::ostream &out, DArray< DArray< double > > const &fields, UnitCell< D > const &unitCell) const
Write concentration or chemical potential field components to file.
void convertBasisToKGrid(DArray< double > const &components, RFieldDft< D > &dft) const
Convert a field from symmetrized basis to Fourier transform (k-grid).
void readFieldsKGrid(std::istream &in, DArray< RFieldDft< D > > &fields, UnitCell< D > &unitCell) const
Read array of RFieldDft objects (k-space fields) from file.
void readFieldHeader(std::istream &in, int &nMonomer, UnitCell< D > &unitCell) const
Reader header of field file (fortran pscf format)
void writeFieldHeader(std::ostream &out, int nMonomer, UnitCell< D > const &unitCell) const
Write header for field file (fortran pscf format)
void convertBasisToRGrid(DArray< double > const &in, RField< D > &out) const
Convert a field from symmetrized basis to spatial grid (r-grid).
void convertKGridToBasis(RFieldDft< D > const &in, DArray< double > &out, bool checkSymmetry=true, double epsilon=1.0e-8) const
Convert a field from Fourier transform (kgrid) to symmetrized basis.
void writeFieldsKGrid(std::ostream &out, DArray< RFieldDft< D > > const &fields, UnitCell< D > const &unitCell) const
Write array of RFieldDft objects (k-space fields) to file.
void writeFieldBasis(std::ostream &out, DArray< double > const &field, UnitCell< D > const &unitCell) const
Write single concentration or chemical potential field to output stream out.
void associate(Mesh< D > const &mesh, FFT< D > const &fft, typename UnitCell< D >::LatticeSystem &lattice, std::string &groupName, SpaceGroup< D > &group, Basis< D > &basis, FileMaster const &fileMaster)
Get and store addresses of associated objects.
void readFieldsRGrid(std::istream &in, DArray< RField< D > > &fields, UnitCell< D > &unitCell) const
Read array of RField objects (fields on r-space grid) from istream.
void convertRGridToBasis(RField< D > const &in, DArray< double > &out, bool checkSymmetry=true, double epsilon=1.0e-8) const
Convert a field from spatial grid (r-grid) to symmetrized basis.
void writeFieldRGrid(std::ostream &out, RField< D > const &field, UnitCell< D > const &unitCell, bool writeHeader=true) const
Write a single RField (field on an r-space grid) to ostream.
void writeFieldsRGrid(std::ostream &out, DArray< RField< D > > const &fields, UnitCell< D > const &unitCell) const
Write array of RField objects (fields on r-space grid) to ostream.
void readFieldBasis(std::istream &in, DArray< double > &field, UnitCell< D > &unitCell) const
Read single concentration or chemical potential field from file.
void convertKGridToRGrid(DArray< RFieldDft< D > > &in, DArray< RField< D > > &out) const
Convert fields from k-grid (DFT) to real space (r-grid) format.
bool hasSymmetry(RField< D > const &in, double epsilon=1.0e-8, bool verbose=true) const
Check if an r-grid field has the declared space group symmetry.
void convertRGridToKGrid(DArray< RField< D > > const &in, DArray< RFieldDft< D > > &out) const
Convert fields from spatial grid (r-grid) to k-grid format.
void readFieldsBasis(std::istream &in, DArray< DArray< double > > &fields, UnitCell< D > &unitCell) const
Read concentration or chemical potential field components from file.
Fourier transform of a real field on an FFT mesh.
Field of real double precision values on an FFT mesh.
Crystallographic space group.
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.
#define UTIL_ASSERT(condition)
Assertion macro suitable for debugging serial or parallel code.
C++ namespace for polymer self-consistent field theory (PSCF).
Utility classes for scientific computation.