PSCF v1.3
|
File input/output operations and format conversions for fields. More...
#include <FieldIo.h>
Public Types | |
typedef FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > > | Base |
Alias for base class (partial template specialization) |
Public Member Functions | |
bool | readFieldsRGrid (std::istream &in, DArray< RField< D > > &fields, UnitCell< D > &unitCell) const override |
Read array of RField objects (r-grid fields) from a stream. | |
void | readFieldsRGridData (std::istream &in, DArray< RField< D > > &fields, int nMonomer) const override |
Read data for an array of r-grid fields, with no header section. | |
bool | readFieldRGrid (std::istream &in, RField< D > &field, UnitCell< D > &unitCell) const override |
Read a single RField (field on an r-space grid) from a stream. | |
void | writeFieldsRGrid (std::ostream &out, DArray< RField< D > > const &fields, UnitCell< D > const &unitCell, bool writeHeader=true, bool isSymmetric=true, bool writeMeshSize=true) const override |
Write array of RField objects (fields on r-space grid) to a stream. | |
void | writeFieldRGrid (std::ostream &out, RField< D > const &field, UnitCell< D > const &unitCell, bool writeHeader=true, bool isSymmetric=true) const override |
Write a single RField (field on an r-space grid) to a stream. | |
void | readFieldsKGrid (std::istream &in, DArray< RFieldDft< D > > &fields, UnitCell< D > &unitCell) const override |
Read array of RFieldDft objects (k-space fields) from a stream. | |
void | writeFieldsKGrid (std::ostream &out, DArray< RFieldDft< D > > const &fields, UnitCell< D > const &unitCell, bool isSymmetric=true) const override |
Write array of RFieldDft objects (k-space fields) to file. | |
void | convertBasisToKGrid (DArray< double > const &components, RFieldDft< D > &dft) const override |
Convert a field from symmetrized basis to Fourier grid (k-grid). | |
void | convertKGridToBasis (RFieldDft< D > const &in, DArray< double > &out, bool checkSymmetry=true, double epsilon=1.0e-8) const override |
Convert a field from Fourier (k-grid) to symmetrized basis form. | |
bool | hasSymmetry (RFieldDft< D > const &in, double epsilon=1.0e-8, bool verbose=true) const override |
Check if a k-grid field has the declared space group symmetry. | |
void | compareFieldsRGrid (DArray< RField< D > > const &field1, DArray< RField< D > > const &field2) const override |
Compare two fields in r-grid format, output a report. | |
void | scaleFieldRGrid (RField< D > &field, double factor) const override |
Rescale a single r-grid field by a scalar factor. | |
void | expandRGridDimension (std::ostream &out, DArray< RField< D > > const &fields, UnitCell< D > const &unitCell, int d, DArray< int > const &newGridDimensions) const override |
Expand spatial dimension of an array of r-grid fields. | |
void | replicateUnitCell (std::ostream &out, DArray< RField< D > > const &fields, UnitCell< D > const &unitCell, IntVec< D > const &replicas) const override |
Write r-grid fields in a replicated unit cell to std::ostream. | |
void | associate (Mesh< D > const &mesh, FFT const &fft, typename UnitCell< D >::LatticeSystem const &lattice, bool const &hasGroup, std::string const &groupName, SpaceGroup< D > const &group, Basis< D > &basis) |
Create associations with other members of the parent Domain. | |
void | setFileMaster (FileMaster const &fileMaster) |
Create an association with a FileMaster. | |
void | readFieldsBasis (std::istream &in, DArray< DArray< double > > &fields, UnitCell< D > &unitCell) const |
Read an array of fields in basis format from an input stream. | |
void | readFieldsBasis (std::string filename, DArray< DArray< double > > &fields, UnitCell< D > &unitCell) const |
Read an array of fields in basis format from a named file. | |
void | readFieldBasis (std::istream &in, DArray< double > &field, UnitCell< D > &unitCell) const |
Read a single field in basis format from an input stream. | |
void | readFieldBasis (std::string filename, DArray< double > &field, UnitCell< D > &unitCell) const |
Read a single field in basis format from a named file. | |
void | writeFieldBasis (std::ostream &out, DArray< double > const &field, UnitCell< D > const &unitCell) const |
Write a single field in basis format to an output stream. | |
void | writeFieldBasis (std::string filename, DArray< double > const &field, UnitCell< D > const &unitCell) const |
Write single field in basis format to a named file. | |
void | writeFieldsBasis (std::ostream &out, DArray< DArray< double > > const &fields, UnitCell< D > const &unitCell) const |
Write an array of fields in basis format to an output stream. | |
void | writeFieldsBasis (std::string filename, DArray< DArray< double > > const &fields, UnitCell< D > const &unitCell) const |
Write an array of fields in basis format to a named file. | |
bool | readFieldsRGrid (std::string filename, DArray< RField< D > > &fields, UnitCell< D > &unitCell) const |
Read an array of r-grid fields from a named file. | |
bool | readFieldRGrid (std::string filename, RField< D > &field, UnitCell< D > &unitCell) const |
Read a single r-grid field from a named file. | |
void | writeFieldsRGrid (std::string filename, DArray< RField< D > > const &fields, UnitCell< D > const &unitCell, bool isSymmetric=true) const |
Write an array of r-grid fields to a named file. | |
void | writeFieldRGrid (std::string filename, RField< D > const &field, UnitCell< D > const &unitCell, bool isSymmetric=true) const |
Write a single r-grid field to a named file. | |
void | readFieldsKGrid (std::string filename, DArray< RFieldDft< D > > &fields, UnitCell< D > &unitCell) const |
Read an array of k-grid fields from a named file. | |
void | writeFieldsKGrid (std::string filename, DArray< RFieldDft< D > > const &fields, UnitCell< D > const &unitCell, bool isSymmetric=true) const |
Write an array of k-grid fields to a named file. | |
void | convertBasisToKGrid (DArray< DArray< double > > const &in, DArray< RFieldDft< D > > &out) const |
Convert an array of fields from basis to Fourier (k-grid) form. | |
void | convertBasisToKGrid (std::string const &inFileName, std::string const &outFileName) const |
Convert a field file from basis to Fourier (k-grid) format. | |
void | convertKGridToBasis (DArray< RFieldDft< D > > const &in, DArray< DArray< double > > &out, bool checkSymmetry=true, double epsilon=1.0e-8) const |
Convert an array of fields from Fourier (k-grid) to basis form. | |
void | convertKGridToBasis (std::string const &inFileName, std::string const &outFileName) const |
Convert a field file from Fourier (k-grid) to basis format. | |
void | convertBasisToRGrid (DArray< double > const &in, RField< D > &out) const |
Convert a single field from basis to r-grid format. | |
void | convertBasisToRGrid (DArray< DArray< double > > const &in, DArray< RField< D > > &out) const |
Convert an array of fields from basis to r-grid format. | |
void | convertBasisToRGrid (std::string const &inFileName, std::string const &outFileName) const |
Convert a field file from basis format to r-grid format. | |
void | convertRGridToBasis (RField< D > const &in, DArray< double > &out, bool checkSymmetry=true, double epsilon=1.0e-8) const |
Convert a single field from r-grid to basis form. | |
void | convertRGridToBasis (DArray< RField< D > > const &in, DArray< DArray< double > > &out, bool checkSymmetry=true, double epsilon=1.0e-8) const |
Convert an array of fields from r-grid to basis format. | |
void | convertRGridToBasis (std::string const &inFileName, std::string const &outFileName) const |
Convert a field file from r-grid to basis format. | |
void | convertKGridToRGrid (DArray< RFieldDft< D > > const &in, DArray< RField< D > > &out) const |
Convert an array of field from k-grid to r-grid format. | |
void | convertKGridToRGrid (RFieldDft< D > const &in, RField< D > &out) const |
Convert a single field from k-grid to r-grid format. | |
void | convertKGridToRGrid (std::string const &inFileName, std::string const &outFileName) const |
Convert a field file from Fourier (k-grid) to r-grid format. | |
void | convertRGridToKGrid (DArray< RField< D > > const &in, DArray< RFieldDft< D > > &out) const |
Convert an array of fields from r-grid to k-grid (Fourier) format. | |
void | convertRGridToKGrid (RField< D > const &in, RFieldDft< D > &out) const |
Convert a field from r-grid to k-grid (Fourier) format. | |
void | convertRGridToKGrid (std::string const &inFileName, std::string const &outFileName) const |
Convert a field file from r-grid to Fourier (k-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. | |
bool | hasSymmetry (std::string const &inFileName, double epsilon=1.0E-8) const |
Check if an r-grid field file has declared space group symmetry. | |
void | compareFieldsBasis (DArray< DArray< double > > const &field1, DArray< DArray< double > > const &field2) const |
Compare array of fields in basis form, write a report to Log file. | |
void | compareFieldsBasis (std::string const &filename1, std::string const &filename2) const |
Compare two r-grid field files, write a report to Log file. | |
void | compareFieldsRGrid (std::string const &filename1, std::string const &filename2) const |
Compare two r-grid field files, write a report to Log file. | |
void | estimateWBasis (DMatrix< double > const &chi, DArray< DArray< double > > &fields) const |
Convert c fields to estimated w fields, in basis format. | |
void | estimateWBasis (std::string const &inFileName, std::string const &outFileName, DMatrix< double > const &chi) const |
Convert a file of c fields to estimated w fields, in basis format. | |
void | scaleFieldsBasis (DArray< DArray< double > > &fields, double factor) const |
Multiply an array of fields in basis format by a real scalar. | |
void | scaleFieldsBasis (std::string const &inFileName, std::string const &outFileName, double factor) const |
Multiply all fields in a basis field file by a scalar. | |
void | scaleFieldsRGrid (DArray< RField< D > > &fields, double factor) const |
Scale an array of r-grid fields by a scalar. | |
void | scaleFieldsRGrid (std::string const &inFileName, const std::string &outFileName, double factor) const |
Multiply all fields in an r-grid field file by a scalar. | |
void | replicateUnitCell (std::string filename, DArray< RField< D > > const &fields, UnitCell< D > const &unitCell, IntVec< D > const &replicas) const |
Write r-grid fields in a replicated unit cell to a named file. | |
void | replicateUnitCell (std::string const &inFileName, std::string const &outFileName, IntVec< D > const &replicas) const |
Write replicated fields read from one file to another. | |
void | expandRGridDimension (std::string filename, DArray< RField< D > > const &fields, UnitCell< D > const &unitCell, int d, DArray< int > newGridDimensions) const |
Increase D for an array of r-grid fields, write to a named file. | |
void | expandRGridDimension (std::string const &inFileName, std::string const &outFileName, int d, DArray< int > newGridDimensions) const |
Increase D for an r-grid field file. | |
void | readFieldHeader (std::istream &in, int &nMonomer, UnitCell< D > &unitCell, bool &isSymmetric) const |
Reader header of field file (fortran PSCF format) | |
void | writeFieldHeader (std::ostream &out, int nMonomer, UnitCell< D > const &unitCell, bool isSymmetric=true) const |
Write header for field file (fortran pscf format). | |
Mesh< D > const & | mesh () const |
Get spatial discretization mesh by const reference. | |
Basis< D > const & | basis () const |
Get the associated Basis by const reference. | |
FileMaster const & | fileMaster () const |
Get associated FileMaster by const reference. | |
Public Member Functions inherited from Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > > | |
FieldIoReal () | |
Constructor. | |
virtual | ~FieldIoReal () |
Destructor. | |
void | associate (Mesh< D > const &mesh, FFT const &fft, typename UnitCell< D >::LatticeSystem const &lattice, bool const &hasGroup, std::string const &groupName, SpaceGroup< D > const &group, Basis< D > &basis) |
Create associations with other members of the parent Domain. | |
void | setFileMaster (FileMaster const &fileMaster) |
Create an association with a FileMaster. | |
void | setNMonomer (int nMonomer) |
Set the number of monomer types. | |
void | readFieldsBasis (std::istream &in, DArray< DArray< double > > &fields, UnitCell< D > &unitCell) const |
Read an array of fields in basis format from an input stream. | |
void | readFieldsBasis (std::string filename, DArray< DArray< double > > &fields, UnitCell< D > &unitCell) const |
Read an array of fields in basis format from a named file. | |
void | readFieldBasis (std::istream &in, DArray< double > &field, UnitCell< D > &unitCell) const |
Read a single field in basis format from an input stream. | |
void | readFieldBasis (std::string filename, DArray< double > &field, UnitCell< D > &unitCell) const |
Read a single field in basis format from a named file. | |
void | writeFieldsBasis (std::ostream &out, DArray< DArray< double > > const &fields, UnitCell< D > const &unitCell) const |
Write an array of fields in basis format to an output stream. | |
void | writeFieldsBasis (std::string filename, DArray< DArray< double > > const &fields, UnitCell< D > const &unitCell) const |
Write an array of fields in basis format to a named file. | |
void | writeFieldBasis (std::ostream &out, DArray< double > const &field, UnitCell< D > const &unitCell) const |
Write a single field in basis format to an output stream. | |
void | writeFieldBasis (std::string filename, DArray< double > const &field, UnitCell< D > const &unitCell) const |
Write single field in basis format to a named file. | |
bool | readFieldsRGrid (std::string filename, DArray< RField< D > > &fields, UnitCell< D > &unitCell) const |
Read an array of r-grid fields from a named file. | |
bool | readFieldRGrid (std::string filename, RField< D > &field, UnitCell< D > &unitCell) const |
Read a single r-grid field from a named file. | |
void | writeFieldsRGrid (std::string filename, DArray< RField< D > > const &fields, UnitCell< D > const &unitCell, bool isSymmetric=true) const |
Write an array of r-grid fields to a named file. | |
void | writeFieldRGrid (std::string filename, RField< D > const &field, UnitCell< D > const &unitCell, bool isSymmetric=true) const |
Write a single r-grid field to a named file. | |
void | readFieldsKGrid (std::string filename, DArray< RFieldDft< D > > &fields, UnitCell< D > &unitCell) const |
Read an array of k-grid fields from a named file. | |
void | writeFieldsKGrid (std::string filename, DArray< RFieldDft< D > > const &fields, UnitCell< D > const &unitCell, bool isSymmetric=true) const |
Write an array of k-grid fields to a named file. | |
void | convertBasisToKGrid (DArray< DArray< double > > const &in, DArray< RFieldDft< D > > &out) const |
Convert an array of fields from basis to Fourier (k-grid) form. | |
void | convertKGridToBasis (DArray< RFieldDft< D > > const &in, DArray< DArray< double > > &out, bool checkSymmetry=true, double epsilon=1.0e-8) const |
Convert an array of fields from Fourier (k-grid) to basis form. | |
void | convertBasisToRGrid (DArray< double > const &in, RField< D > &out) const |
Convert a single field from basis to r-grid format. | |
void | convertBasisToRGrid (DArray< DArray< double > > const &in, DArray< RField< D > > &out) const |
Convert an array of fields from basis to r-grid format. | |
void | convertRGridToBasis (RField< D > const &in, DArray< double > &out, bool checkSymmetry=true, double epsilon=1.0e-8) const |
Convert a single field from r-grid to basis form. | |
void | convertRGridToBasis (DArray< RField< D > > const &in, DArray< DArray< double > > &out, bool checkSymmetry=true, double epsilon=1.0e-8) const |
Convert an array of fields from r-grid to basis format. | |
void | convertKGridToRGrid (DArray< RFieldDft< D > > const &in, DArray< RField< D > > &out) const |
Convert an array of field from k-grid to r-grid format. | |
void | convertKGridToRGrid (RFieldDft< D > const &in, RField< D > &out) const |
Convert a single field from k-grid to r-grid format. | |
void | convertRGridToKGrid (DArray< RField< D > > const &in, DArray< RFieldDft< D > > &out) const |
Convert an array of fields from r-grid to k-grid (Fourier) format. | |
void | convertRGridToKGrid (RField< D > const &in, RFieldDft< D > &out) const |
Convert a field from r-grid to k-grid (Fourier) format. | |
void | convertBasisToRGrid (std::string const &inFileName, std::string const &outFileName) const |
Convert a field file from basis format to r-grid format. | |
void | convertRGridToBasis (std::string const &inFileName, std::string const &outFileName) const |
Convert a field file from r-grid to basis format. | |
void | convertKGridToRGrid (std::string const &inFileName, std::string const &outFileName) const |
Convert a field file from Fourier (k-grid) to r-grid format. | |
void | convertRGridToKGrid (std::string const &inFileName, std::string const &outFileName) const |
Convert a field file from r-grid to Fourier (k-grid) format. | |
void | convertKGridToBasis (std::string const &inFileName, std::string const &outFileName) const |
Convert a field file from Fourier (k-grid) to basis format. | |
void | convertBasisToKGrid (std::string const &inFileName, std::string const &outFileName) const |
Convert a field file from basis to Fourier (k-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. | |
bool | hasSymmetry (std::string const &inFileName, double epsilon=1.0E-8) const |
Check if an r-grid field file has declared space group symmetry. | |
void | compareFieldsBasis (DArray< DArray< double > > const &field1, DArray< DArray< double > > const &field2) const |
Compare array of fields in basis form, write a report to Log file. | |
void | compareFieldsBasis (std::string const &filename1, std::string const &filename2) const |
Compare two r-grid field files, write a report to Log file. | |
void | compareFieldsRGrid (std::string const &filename1, std::string const &filename2) const |
Compare two r-grid field files, write a report to Log file. | |
virtual void | scaleFieldBasis (DArray< double > &field, double factor) const |
Multiply a single field in basis form by a real scalar. | |
void | scaleFieldsBasis (DArray< DArray< double > > &fields, double factor) const |
Multiply an array of fields in basis format by a real scalar. | |
void | scaleFieldsBasis (std::string const &inFileName, std::string const &outFileName, double factor) const |
Multiply all fields in a basis field file by a scalar. | |
void | scaleFieldsRGrid (DArray< RField< D > > &fields, double factor) const |
Scale an array of r-grid fields by a scalar. | |
void | scaleFieldsRGrid (std::string const &inFileName, const std::string &outFileName, double factor) const |
Multiply all fields in an r-grid field file by a scalar. | |
void | estimateWBasis (DMatrix< double > const &chi, DArray< DArray< double > > &fields) const |
Convert c fields to estimated w fields, in basis format. | |
void | estimateWBasis (std::string const &inFileName, std::string const &outFileName, DMatrix< double > const &chi) const |
Convert a file of c fields to estimated w fields, in basis format. | |
void | replicateUnitCell (std::string filename, DArray< RField< D > > const &fields, UnitCell< D > const &unitCell, IntVec< D > const &replicas) const |
Write r-grid fields in a replicated unit cell to a named file. | |
void | replicateUnitCell (std::string const &inFileName, std::string const &outFileName, IntVec< D > const &replicas) const |
Write replicated fields read from one file to another. | |
void | expandRGridDimension (std::string filename, DArray< RField< D > > const &fields, UnitCell< D > const &unitCell, int d, DArray< int > newGridDimensions) const |
Increase D for an array of r-grid fields, write to a named file. | |
void | expandRGridDimension (std::string const &inFileName, std::string const &outFileName, int d, DArray< int > newGridDimensions) const |
Increase D for an r-grid field file. | |
void | readFieldHeader (std::istream &in, int &nMonomer, UnitCell< D > &unitCell, bool &isSymmetric) const |
Reader header of field file (fortran PSCF format) | |
void | writeFieldHeader (std::ostream &out, int nMonomer, UnitCell< D > const &unitCell, bool isSymmetric=true) const |
Write header for field file (fortran pscf format). | |
Mesh< D > const & | mesh () const |
Get spatial discretization mesh by const reference. | |
Basis< D > const & | basis () const |
Get the associated Basis by const reference. | |
FileMaster const & | fileMaster () const |
Get associated FileMaster by const reference. |
Protected Member Functions | |
UnitCell< D >::LatticeSystem const & | lattice () const |
Get the lattice type enum value by const reference. | |
bool | hasGroup () const |
Has a space group been declared externally ? | |
std::string const & | groupName () const |
Get an associated group name string by const reference. | |
SpaceGroup< D > const & | group () const |
Get an associated SpaceGroup<D> by const reference. | |
FFT const & | fft () const |
Get FFT object by const reference. | |
Protected Member Functions inherited from Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > > | |
UnitCell< D >::LatticeSystem const & | lattice () const |
Get the lattice type enum value by const reference. | |
bool | hasGroup () const |
Has a space group been declared externally ? | |
std::string const & | groupName () const |
Get an associated group name string by const reference. | |
SpaceGroup< D > const & | group () const |
Get an associated SpaceGroup<D> by const reference. | |
FFT const & | fft () const |
Get FFT object by const reference. | |
void | checkAllocateRGrid () const |
Check if r-grid workspace is allocated, allocate if necessary. | |
void | checkAllocateKGrid () const |
Check if k-grid workspace is allocated, allocate if necessary. | |
void | checkAllocateBasis (std::string const &inFileName) const |
Check if basis workspace is allocated, allocate if necessary. |
File input/output operations and format conversions for fields.
Please refer to the documentation of the base class Prdc::FieldIoReal for more complete API documentation for this class template, for reasons discussed below.
Class template Rpg::FieldIo<int D> is derived from a partial specialization of template Prdc::FieldIoReal<D, RFT, KFT, FFT> that is implemented using classes RFT = RField<D>, KFT = RFieldDft<D>, and FFT = FFT<D> that are all defined in the Prdc::Cuda namespace, and that use GPU hardware. Rpg::FieldIo is thus a specialization of the FieldIoReal template with GPU acceleration. An analogous class named Rpc::FieldIo that is designed for standard CPU hardware is defined in the Pscf::Rpc namespace
The public interface of Rpg::FieldIo is identical to that of the base class template Prdc::FieldIoReal. All member functions defined in this Rpg::FieldIo are implementations of pure virtual functions declared in Prdc::FieldIoReal. These are all functions for which different implementations are required for the CPU and GPU variants.
Definition at line 59 of file rpg/field/FieldIo.h.
typedef FieldIoReal<D, RField<D>, RFieldDft<D>, FFT<D> > Pscf::Rpg::FieldIo< D >::Base |
Alias for base class (partial template specialization)
Definition at line 285 of file rpg/field/FieldIo.h.
|
overridevirtual |
Read array of RField objects (r-grid fields) from a stream.
See documentation of analogous function in Prdc::FieldIoReal.
in | input file stream |
fields | array of RField fields (r-space grid) |
unitCell | associated crystallographic unit cell |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 45 of file rpg/field/FieldIo.tpp.
References Pscf::Prdc::checkAllocateFields(), mesh(), Pscf::Prdc::readFieldHeader(), Pscf::Prdc::readMeshDimensions(), and Pscf::Prdc::readRGridData().
Referenced by Pscf::Rpg::EinsteinCrystalPerturbation< D >::setup().
|
overridevirtual |
Read data for an array of r-grid fields, with no header section.
See documentation of analogous function in Prdc::FieldIoReal.
in | input file stream |
fields | array of RField fields (r-space grid) |
nMonomer | number of monomer types |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 75 of file rpg/field/FieldIo.tpp.
References Pscf::Prdc::checkAllocateFields(), mesh(), and Pscf::Prdc::readRGridData().
Referenced by Pscf::Rpg::RGridTrajectoryReader< D >::readFrame().
|
overridevirtual |
Read a single RField (field on an r-space grid) from a stream.
See documentation of analogous function in Prdc::FieldIoReal.
in | input file stream |
field | fields defined on r-space grid |
unitCell | associated crystallographic unit cell |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 98 of file rpg/field/FieldIo.tpp.
References Util::DArray< Data >::allocate(), Pscf::Prdc::checkAllocateField(), mesh(), Pscf::Prdc::readFieldHeader(), Pscf::Prdc::readMeshDimensions(), Pscf::Prdc::readRGridData(), and UTIL_CHECK.
|
overridevirtual |
Write array of RField objects (fields on r-space grid) to a stream.
See documentation of analogous function in Prdc::FieldIoReal.
out | output stream (i.e., output file) |
fields | array of RField objects (fields on r-space grid) |
unitCell | associated crystallographic unit cell |
writeHeader | flag to write file header if true |
isSymmetric | Do fields have a space group symmetry ? |
writeMeshSize | Should mesh size be written in header? |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 130 of file rpg/field/FieldIo.tpp.
References Pscf::Prdc::inspectFields(), mesh(), UTIL_CHECK, Pscf::Prdc::writeFieldHeader(), Pscf::Prdc::writeMeshDimensions(), and Pscf::Prdc::writeRGridData().
Referenced by Pscf::Rpg::ConcentrationWriter< D >::writeFrame(), and Pscf::Rpg::TrajectoryWriter< D >::writeFrame().
|
overridevirtual |
Write a single RField (field on an r-space grid) to a stream.
See documentation of analogous function in Prdc::FieldIoReal.
out | output stream |
field | field defined on r-space grid |
unitCell | associated crystallographic unit cell |
writeHeader | Should a file header be written? |
isSymmetric | Does the field have a space group symmetry? |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 167 of file rpg/field/FieldIo.tpp.
References Util::DArray< Data >::allocate(), Util::Array< Data >::capacity(), mesh(), Pscf::Prdc::Cpu::RField< D >::meshDimensions(), UTIL_CHECK, Pscf::Prdc::writeFieldHeader(), Pscf::Prdc::writeMeshDimensions(), and Pscf::Prdc::writeRGridData().
|
overridevirtual |
Read array of RFieldDft objects (k-space fields) from a stream.
See documentation of analogous function in Prdc::FieldIoReal.
in | input stream (i.e., input file) |
fields | array of RFieldDft fields (k-space grid) |
unitCell | associated crystallographic unit cell |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 200 of file rpg/field/FieldIo.tpp.
References Pscf::Prdc::checkAllocateFields(), mesh(), Pscf::Prdc::readFieldHeader(), Pscf::Prdc::readKGridData(), and Pscf::Prdc::readMeshDimensions().
|
overridevirtual |
Write array of RFieldDft objects (k-space fields) to file.
See documentation of analogous function in Prdc::FieldIoReal.
out | output stream (i.e., output file) |
fields | array of RFieldDft fields |
unitCell | associated crystallographic unit cell |
isSymmetric | Does this field have space group symmetry? |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 229 of file rpg/field/FieldIo.tpp.
References Pscf::Prdc::inspectFields(), mesh(), UTIL_CHECK, Pscf::Prdc::writeFieldHeader(), Pscf::Prdc::writeKGridData(), and Pscf::Prdc::writeMeshDimensions().
|
overridevirtual |
Convert a field from symmetrized basis to Fourier grid (k-grid).
See documentation of analogous function in Prdc::FieldIoReal.
components | coefficients of in symmetry-adapted basis |
dft | discrete Fourier transform of a real field |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 260 of file rpg/field/FieldIo.tpp.
References Util::DArray< Data >::allocate(), basis(), Util::Array< Data >::capacity(), Pscf::Prdc::convertBasisToKGrid(), Pscf::Prdc::Cpu::RFieldDft< D >::dftDimensions(), Pscf::Prdc::Cpu::FftwDArray< Data >::isAllocated(), Util::DArray< Data >::isAllocated(), mesh(), Pscf::Prdc::Cpu::RFieldDft< D >::meshDimensions(), and UTIL_CHECK.
Referenced by Pscf::Rpg::System< D >::readCommands().
|
overridevirtual |
Convert a field from Fourier (k-grid) to symmetrized basis form.
See documentation of analogous function in Prdc::FieldIoReal.
in | discrete Fourier transform (k-grid) of a field |
out | components of field in asymmetry-adapted Fourier basis |
checkSymmetry | flag indicating whether to check symmetry |
epsilon | error tolerance for symmetry test (if any) |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 285 of file rpg/field/FieldIo.tpp.
References Util::DArray< Data >::allocate(), basis(), Util::Array< Data >::capacity(), Pscf::Prdc::convertKGridToBasis(), Pscf::Prdc::Cpu::RFieldDft< D >::dftDimensions(), Pscf::Prdc::Cpu::FftwDArray< Data >::isAllocated(), Util::DArray< Data >::isAllocated(), mesh(), Pscf::Prdc::Cpu::RFieldDft< D >::meshDimensions(), and UTIL_CHECK.
Referenced by Pscf::Rpg::System< D >::readCommands().
|
overridevirtual |
Check if a k-grid field has the declared space group symmetry.
See documentation of analogous function in Prdc::FieldIoReal.
in | field in real space grid (r-grid) format |
epsilon | error threshold used to test for symmetry |
verbose | if true, write error to Log::file() |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 311 of file rpg/field/FieldIo.tpp.
References Util::DArray< Data >::allocate(), basis(), Util::Array< Data >::capacity(), Pscf::Prdc::Cpu::RFieldDft< D >::dftDimensions(), Pscf::Prdc::hasSymmetry(), Pscf::Prdc::Cpu::FftwDArray< Data >::isAllocated(), mesh(), Pscf::Prdc::Cpu::RFieldDft< D >::meshDimensions(), and UTIL_CHECK.
Referenced by Pscf::Rpg::System< D >::readCommands().
|
overridevirtual |
Compare two fields in r-grid format, output a report.
Outputs maximum and root-mean-squared differences to the standard Log file.
field1 | first array of fields (r-grid format) |
field2 | second array of fields (r-grid format) |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 333 of file rpg/field/FieldIo.tpp.
References Pscf::FieldComparison< FT >::compare(), Util::Log::file(), Pscf::FieldComparison< FT >::maxDiff(), and Pscf::FieldComparison< FT >::rmsDiff().
Referenced by Pscf::Rpg::System< D >::readCommands().
|
overridevirtual |
Rescale a single r-grid field by a scalar factor.
See documentation of analogous function in Prdc::FieldIoReal. Multiplication is done in-place, and so modifies the input.
field | real space (r-grid) field (in-out) |
factor | real scalar by which to multiply all elements |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 352 of file rpg/field/FieldIo.tpp.
References Pscf::Prdc::Cpu::FftwDArray< Data >::isAllocated(), Pscf::Prdc::Cuda::VecOp::mulEqS(), and UTIL_CHECK.
|
overridevirtual |
Expand spatial dimension of an array of r-grid fields.
See documentation of analogous function in Prdc::FieldIoReal.
out | output file stream |
fields | input array of D-dimensional r-grid fields |
unitCell | original D-dimensional unit cell |
d | expanded spatial dimension (d > D) |
newGridDimensions | number of grid points in added dimensions |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 391 of file rpg/field/FieldIo.tpp.
References Pscf::Prdc::expandRGridDimension(), Pscf::Prdc::inspectFields(), mesh(), and UTIL_CHECK.
Referenced by Pscf::Rpg::System< D >::readCommands().
|
overridevirtual |
Write r-grid fields in a replicated unit cell to std::ostream.
See documentation of analogous function in Prdc::FieldIoReal.
out | output file stream |
fields | array of RField (r-space) fields to be replicated |
unitCell | original crystallographic unit cell |
replicas | number of unit cell replicas in each direction |
Implements Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT< D > >.
Definition at line 364 of file rpg/field/FieldIo.tpp.
References Pscf::Prdc::inspectFields(), mesh(), Pscf::Prdc::replicateUnitCell(), and UTIL_CHECK.
Referenced by Pscf::Rpg::System< D >::readCommands().
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::associate | ( | Mesh< D > const & | mesh, |
FFT const & | fft, | ||
typename UnitCell< D >::LatticeSystem const & | lattice, | ||
bool const & | hasGroup, | ||
std::string const & | groupName, | ||
SpaceGroup< D > const & | group, | ||
Basis< D > & | basis ) |
Create associations with other members of the parent Domain.
This function may be called within the constructor of the Domain object, since addresses of other members of the Domain are known at this point.
mesh | associated spatial discretization Mesh<D> |
fft | associated FFT object for fast transforms |
lattice | lattice system type (enumeration value) |
hasGroup | true iff a space group has been declared |
groupName | space group name string |
group | associated SpaceGroup object |
basis | associated Basis object |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::setFileMaster | ( | FileMaster const & | fileMaster | ) |
Create an association with a FileMaster.
The FileMaster is used to open and close files in all member functions that take file name arguments and that open and close files. This allows prefixes for input and output files (if any) to be automatically prepended to file names.
fileMaster | associated FileMaster (for file paths) |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::readFieldsBasis | ( | std::istream & | in, |
DArray< DArray< double > > & | fields, | ||
UnitCell< D > & | unitCell ) const |
Read an array of fields in basis format from an input stream.
This function reads fields in a symmetry adapted basis format from input stream in. The header of the field file must declare a group name, and this name must agree with that declared in the parameter file. Upon successful return, element fields[i] of the fields container is a DArray<double> containing the components of the field associated with monomer type i, defined as coefficients of symmetry-adapted basis functions defined by the current basis. If a basis has not been constructed before entry, it will be constructed within this function.
On entry, the fields container must either be allocated with a capacity equal to the number of monomer types in the field file, and a capacity for each field equal to the number of basis functions in the basis, or it may be unallocated. If the fields container is not allocated, it will allocated within this function with these dimensions. The number of monomer types does not need to be equal to the value set by the setNMonomer(int) function.
in | input stream (e.g., input file stream) |
fields | array of fields (symmetry adapted basis components) |
unitCell | associated unit cell object |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::readFieldsBasis | ( | std::string | filename, |
DArray< DArray< double > > & | fields, | ||
UnitCell< D > & | unitCell ) const |
Read an array of fields in basis format from a named file.
This function opens an input file with the specified filename, reads an array of fields in symmetry-adapted form from that file, and then closes the file. The overloaded readFieldsBasis member function that takes a std::istream& argument is called internally to read the file.
filename | name of input file |
fields | array of fields (symmetry adapted basis components) |
unitCell | associated crystallographic unit cell |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::readFieldBasis | ( | std::istream & | in, |
DArray< double > & | field, | ||
UnitCell< D > & | unitCell ) const |
Read a single field in basis format from an input stream.
This function reads a single field in symmetry adapted basis format from an input stream. Upon successful return, the field array contains the components of a single field, defined as coefficients of symmetry-adapted basis functions. On entry, the field array must either be allocated with a capacity equal to the number of basis functions in the associated basis, or unallocated. If field is unallocated, it will be allocated by this function.
in | input stream (i.e., input file stream) |
field | array to store the field (basis format) |
unitCell | associated crystallographic unit cell |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::readFieldBasis | ( | std::string | filename, |
DArray< double > & | field, | ||
UnitCell< D > & | unitCell ) const |
Read a single field in basis format from a named file.
This function opens an input file with the specified filename, reads a single field in symmetry adapted basis format from that file, and and then closes the file. The overloaded member function readFieldBasis that takes an std::istream& argument is called internally to read the file.
filename | name of input file |
field | array to store the field (basis format) |
unitCell | associated crystallographic unit cell |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::writeFieldBasis | ( | std::ostream & | out, |
DArray< double > const & | field, | ||
UnitCell< D > const & | unitCell ) const |
Write a single field in basis format to an output stream.
This function writes one field in symmetry adapted basis format. On entry, the field array must be allocated with a capacity equal to the number of basis functions in the basis.
out | output stream (i.e., output file) |
field | field to be written (symmetry adapted basis format) |
unitCell | associated crystallographic unit cell |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::writeFieldBasis | ( | std::string | filename, |
DArray< double > const & | field, | ||
UnitCell< D > const & | unitCell ) const |
Write single field in basis format to a named file.
This function opens an output file with the specified filename, writes the field in symmetry adapted basis format to that file, and closes the file. The overloaded writeFieldBasis that takes a std::ostream& argument is called to write the file.
filename | name of output file |
field | field to be written (symmetry adapted basis format) |
unitCell | associated crystallographic unit cell |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::writeFieldsBasis | ( | std::ostream & | out, |
DArray< DArray< double > > const & | fields, | ||
UnitCell< D > const & | unitCell ) const |
Write an array of fields in basis format to an output stream.
This function writes field components in a symmetry adapted basis to an output stream. On entry, the fields array must be allocated, and the capacity of each field must be equal the number of basis functions in the basis.
out | output stream (i.e., output file) |
fields | array of fields (symmetry adapted basis components) |
unitCell | associated crystallographic unit cell |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::writeFieldsBasis | ( | std::string | filename, |
DArray< DArray< double > > const & | fields, | ||
UnitCell< D > const & | unitCell ) const |
Write an array of fields in basis format to a named file.
This function opens an output file with the specified filename, writes components in symmetry-adapted form to that file, and then closes the file. The overloaded writeFieldsBasis member function that takes a std::ostream& argument is called to write the file.
filename | name of input file |
fields | array of fields (symmetry adapted basis components) |
unitCell | associated crystallographic unit cell |
bool Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::readFieldsRGrid | ( | std::string | filename, |
DArray< RField< D > > & | fields, | ||
UnitCell< D > & | unitCell ) const |
Read an array of r-grid fields from a named file.
This function opens an input file with the specified filename, reads fields in real-space grid format from that file, and then closes the file. The overloaded readFieldsRGrid member function that takes a std::istream& argument is called to read the file.
filename | name of input file |
fields | array of r-grid fields (instances of RFT) |
unitCell | associated crystallographic unit cell |
bool Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::readFieldRGrid | ( | std::string | filename, |
RField< D > & | field, | ||
UnitCell< D > & | unitCell ) const |
Read a single r-grid field from a named file.
This function opens an input file with the specified filename, reads a field in real-space grid format from that file, and then closes the file. The overloaded readFieldRGrid member function that takes a std::istream& argument is called to read the file.
filename | name of input file |
field | single field defined on r-space grid |
unitCell | associated crystallographic unit cell |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::writeFieldsRGrid | ( | std::string | filename, |
DArray< RField< D > > const & | fields, | ||
UnitCell< D > const & | unitCell, | ||
bool | isSymmetric = true ) const |
Write an array of r-grid fields to a named file.
This function opens a file, writes field file header and data to the file, and closes the file. The overloaded writeFieldsGrid member function that takes a std::ostream& argument is called internally with writeHeader == true to write the data.
filename | name of output file |
fields | array of RFT objects (fields on r-space grid) |
unitCell | associated crystallographic unit cell |
isSymmetric | iff true, write space group name |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::writeFieldRGrid | ( | std::string | filename, |
RField< D > const & | field, | ||
UnitCell< D > const & | unitCell, | ||
bool | isSymmetric = true ) const |
Write a single r-grid field to a named file.
This function opens a file, writes the header and data for a single field to the file, and closes that file. The overloaded writeFieldGrid member function that takes a std::ostream& argument is called internally with writeHeader == true to write the file.
filename | name of output file |
field | field defined on r-space grid |
unitCell | associated crystallographic unit cell |
isSymmetric | iff true, write space group name |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::readFieldsKGrid | ( | std::string | filename, |
DArray< RFieldDft< D > > & | fields, | ||
UnitCell< D > & | unitCell ) const |
Read an array of k-grid fields from a named file.
This function opens a file with name filename, reads discrete Fourier components (Dft) of fields from that file, and closes the file. The overloaded readFieldsKGrid member function that takes a std::istream& argument is called to read the file.
filename | name of input file |
fields | array of k-space (KFT) fields |
unitCell | associated crystallographic unit cell |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::writeFieldsKGrid | ( | std::string | filename, |
DArray< RFieldDft< D > > const & | fields, | ||
UnitCell< D > const & | unitCell, | ||
bool | isSymmetric = true ) const |
Write an array of k-grid fields to a named file.
This function opens a file with name filename, writes discrete Fourier transform components (DFT) components of fields to that file, and closes the file.
filename | name of output file. |
fields | array of Fourier-grid fields (instances of KFT) |
unitCell | associated crystallographic unit cell |
isSymmetric | iff true, write space group name |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertBasisToKGrid | ( | DArray< DArray< double > > const & | in, |
DArray< RFieldDft< D > > & | out ) const |
Convert an array of fields from basis to Fourier (k-grid) form.
The in and out parameters are arrays of fields, in which element number i is the field associated with monomer type i.
in | fields expanded in symmetry-adapted Fourier basis |
out | fields defined as discrete Fourier transforms (k-grid) |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertBasisToKGrid | ( | std::string const & | inFileName, |
std::string const & | outFileName ) const |
Convert a field file from basis to Fourier (k-grid) format.
The number of monomers in the input file must equal the number set by the setNMonomer(int) member function.
inFileName | name of input file (basis format) |
outFileName | name of output file (k-grid format) |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertKGridToBasis | ( | DArray< RFieldDft< D > > const & | in, |
DArray< DArray< double > > & | out, | ||
bool | checkSymmetry = true, | ||
double | epsilon = 1.0e-8 ) const |
Convert an array of fields from Fourier (k-grid) to basis form.
If the checkSymmetry parameter is true, this function checks if the input fields all satisfies the space group symmetry to within a tolerance given by the parameter epsilon, and prints a warning to Log::file() for each field that does not.
in | fields defined as discrete Fourier transforms (k-grid) |
out | components of fields in symmetry adapted basis |
checkSymmetry | flag indicate whether to check symmetry |
epsilon | error tolerance for symmetry test (if any) |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertKGridToBasis | ( | std::string const & | inFileName, |
std::string const & | outFileName ) const |
Convert a field file from Fourier (k-grid) to basis format.
The number of monomers in the input file must equal the number set by the setNMonomer(int) member function.
This function checks if the input fields have the declared space group symmetry, and prints a warning if it detects deviations that exceed some small threshhold, but proceeds to attempt the conversion even if such an error is detected. Converting a field that does not have the declared space group symmetry to basis format is a destructive operation that modifies the field in unpredictable ways.
inFileName | name of input file (k-grid format) |
outFileName | name of output file (basis format) |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertBasisToRGrid | ( | DArray< double > const & | in, |
RField< D > & | out ) const |
Convert a single field from basis to r-grid format.
in | field in symmetry-adapted basis form |
out | field defined on real-space grid |
Referenced by Pscf::Rpg::System< D >::readCommands().
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertBasisToRGrid | ( | DArray< DArray< double > > const & | in, |
DArray< RField< D > > & | out ) const |
Convert an array of fields from basis to r-grid format.
in | fields in symmetry adapted basis form |
out | fields defined on real-space grid |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertBasisToRGrid | ( | std::string const & | inFileName, |
std::string const & | outFileName ) const |
Convert a field file from basis format to r-grid format.
This function reads a field file in basis format, converts the fields to r-grid format, and writes the fields in r-grid format to a different file.
This and other field file format conversion functions read field data into private workspace in which memory is allocated for nMonomer fields, where nMonomer is the value set by the setNMonomer(int i) member function. The number of monomer types in the input file must thus be equal to this stored value of nMonomer.
inFileName | name of input file (basis format) |
outFileName | name of output file (r-grid format) |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertRGridToBasis | ( | RField< D > const & | in, |
DArray< double > & | out, | ||
bool | checkSymmetry = true, | ||
double | epsilon = 1.0e-8 ) const |
Convert a single field from r-grid to basis form.
If the boolean checkSymmetry parameter is true, this function checks whether the the input field has the correct space group symmetry to within an error threshhold given by the epsilon parameter. If this error threshhold is exceeded, a warning is written to Log::file().
in | field defined on real-space grid |
out | field in symmetry adapted basis form |
checkSymmetry | if true, check space group symmetry |
epsilon | error threshhold for symmetry test |
Referenced by Pscf::Rpg::System< D >::readCommands().
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertRGridToBasis | ( | DArray< RField< D > > const & | in, |
DArray< DArray< double > > & | out, | ||
bool | checkSymmetry = true, | ||
double | epsilon = 1.0e-8 ) const |
Convert an array of fields from r-grid to basis format.
If the boolean checkSymmetry parameter is true, this function checks whether the input fields all have the correct space group symmetry to within an error threshhold given by the epsilon parameter. If this error threshhold is exceeded by an field, a warning is written to Log::file().
in | fields defined on real-space grid |
out | fields in symmetry adapted basis form |
checkSymmetry | if true, check space group symmetry |
epsilon | error threshhold for symmetry test |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertRGridToBasis | ( | std::string const & | inFileName, |
std::string const & | outFileName ) const |
Convert a field file from r-grid to basis format.
The number of monomers in the input file must equal the number set by the setNMonomer(int) member function.
This function checks if the input fields have the declared space group symmetry, and prints a warning if it detects deviations that exceed some small threshhold, but proceeds to attempt the conversion even if such an error is detected. Converting a field that does not have the declared space group symmetry to basis format is a destructive operation that modifies the field in unpredictable ways.
inFileName | name of input file (r-grid format) |
outFileName | name of output file (basis format) |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertKGridToRGrid | ( | DArray< RFieldDft< D > > const & | in, |
DArray< RField< D > > & | out ) const |
Convert an array of field from k-grid to r-grid format.
This function simply calls the inverse FFT for an array of fields.
in | fields in discrete Fourier format (k-grid) |
out | fields defined on real-space grid (r-grid) |
Referenced by Pscf::Rpg::System< D >::readCommands().
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertKGridToRGrid | ( | RFieldDft< D > const & | in, |
RField< D > & | out ) const |
Convert a single field from k-grid to r-grid format.
This function simply calls the inverse FFT for a single field.
in | field in discrete Fourier format (k-grid) |
out | field defined on real-space grid (r-grid) |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertKGridToRGrid | ( | std::string const & | inFileName, |
std::string const & | outFileName ) const |
Convert a field file from Fourier (k-grid) to r-grid format.
The number of monomers in the input file must equal the number set by the setNMonomer(int) member function.
inFileName | name of input file (k-grid format) |
outFileName | name of output file (r-grid format) |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertRGridToKGrid | ( | DArray< RField< D > > const & | in, |
DArray< RFieldDft< D > > & | out ) const |
Convert an array of fields from r-grid to k-grid (Fourier) format.
This function simply calls the forward FFT repeatedly for an array of fields.
in | fields defined on real-space grid (r-grid) |
out | fields in discrete Fourier format (k-grid) |
Referenced by Pscf::Rpg::System< D >::readCommands().
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertRGridToKGrid | ( | RField< D > const & | in, |
RFieldDft< D > & | out ) const |
Convert a field from r-grid to k-grid (Fourier) format.
This function simply calls the forward FFT for a single field.
in | field defined on real-space grid (r-grid) |
out | field in discrete Fourier format (k-grid) |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::convertRGridToKGrid | ( | std::string const & | inFileName, |
std::string const & | outFileName ) const |
Convert a field file from r-grid to Fourier (k-grid) format.
The number of monomers in the input file must equal the number set by the setNMonomer(int) member function.
inFileName | name of input file (r-grid format) |
outFileName | name of output file (k-grid format) |
bool Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::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.
This function checks whether a field defined on the nodes of a regular real-space grid is invariant under all the symmetry operations of a declared space group to within an error threshhold given by function parameter epsilon. If parameter verbose is true and the deviation from symmetry exceeds the error threshhold, errors are written to Log::file().
in | field in real space grid (r-grid) format |
epsilon | error threshold used to test for symmetry |
verbose | if true, write error to Log::file() |
bool Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::hasSymmetry | ( | std::string const & | inFileName, |
double | epsilon = 1.0E-8 ) const |
Check if an r-grid field file has declared space group symmetry.
inFileName | name of input r-grid field file |
epsilon | error threshold used when testing for symmetry |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::compareFieldsBasis | ( | DArray< DArray< double > > const & | field1, |
DArray< DArray< double > > const & | field2 ) const |
Compare array of fields in basis form, write a report to Log file.
Outputs maximum and root-mean-squared differences to the standard Log file.
field1 | first array of fields (basis form) |
field2 | second array of fields (basis form) |
Referenced by Pscf::Rpg::System< D >::readCommands().
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::compareFieldsBasis | ( | std::string const & | filename1, |
std::string const & | filename2 ) const |
Compare two r-grid field files, write a report to Log file.
filename1 | name of 1st field file |
filename2 | name of 2nd field file |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::compareFieldsRGrid | ( | std::string const & | filename1, |
std::string const & | filename2 ) const |
Compare two r-grid field files, write a report to Log file.
filename1 | name of 1st field file |
filename2 | name of 2nd field file |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::estimateWBasis | ( | DMatrix< double > const & | chi, |
DArray< DArray< double > > & | fields ) const |
Convert c fields to estimated w fields, in basis format.
This function converts an array of c-fields in place to an array of estimated w fields. The approximation starts from the SCFT equation
\[ w_{i}({\bf r}) = \sum_{j=1}^{M} \chi_{ij} \phi_{j}({\bf r}) + \xi({\bf r}) \]
in which \(\xi({\bf r})\) is a pressure like field, and simply sets \( \xi({\bf r}) = 0 \) for all \( {\bf r} \). Here, \( M \) is the number of monomer types (nMonomer), i and j are monomer type indices, \(\chi_{ij}\) is a Flory-Huggins interaction parameter, \( \phi_{j} \) is a non-dimensiona monomer concentration (or volume fraction) field (which is an input to this function), and \( w_{i}\) is a monomer chemical potential field.
chi | matrix of Flory-Huggins chi parameters |
fields | array of field in basis format |
Referenced by Pscf::Rpg::System< D >::readCommands().
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::estimateWBasis | ( | std::string const & | inFileName, |
std::string const & | outFileName, | ||
DMatrix< double > const & | chi ) const |
Convert a file of c fields to estimated w fields, in basis format.
This function reads an array of monomer concentration fields (c-fields) in basis format from a file named inFileName, converts them to estimated w fields, and writes the estimated w fields to a file named outFileName.
inFileName | name of input file of c-fields |
outFileName | name of output file of w-fields |
chi | matrix of Flory-Huggins chi parameters |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::scaleFieldsBasis | ( | DArray< DArray< double > > & | fields, |
double | factor ) const |
Multiply an array of fields in basis format by a real scalar.
This function takes an array of real periodic fields and multiplies all components in place by a common real scalar, thereby modifying the input.
fields | array of fields in basis form to be rescaled |
factor | factor by which to multiply every field element |
Referenced by Pscf::Rpg::System< D >::readCommands().
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::scaleFieldsBasis | ( | std::string const & | inFileName, |
std::string const & | outFileName, | ||
double | factor ) const |
Multiply all fields in a basis field file by a scalar.
inFileName | name of input field file |
outFileName | name of file for rescaled output fields |
factor | factor by which to multiply every field element |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::scaleFieldsRGrid | ( | DArray< RField< D > > & | fields, |
double | factor ) const |
Scale an array of r-grid fields by a scalar.
This function takes an array of real periodic fields and multiplies all elements in place by a common real scalar, thereby modifying the input.
fields | array of r-grid (RFT) fields to be rescaled |
factor | factor by which to multiply every field element |
Referenced by Pscf::Rpg::System< D >::readCommands().
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::scaleFieldsRGrid | ( | std::string const & | inFileName, |
const std::string & | outFileName, | ||
double | factor ) const |
Multiply all fields in an r-grid field file by a scalar.
Read a set of fields from a file, multiply fields by a constant, and write rescaled fields to a different file.
inFileName | name of input field file |
outFileName | name of file for rescaled output fields |
factor | factor by which to multiply all field elements |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::replicateUnitCell | ( | std::string | filename, |
DArray< RField< D > > const & | fields, | ||
UnitCell< D > const & | unitCell, | ||
IntVec< D > const & | replicas ) const |
Write r-grid fields in a replicated unit cell to a named file.
This function opens output file filename, writes fields within a replicated unit cell to the file, and closes the file. See documentation of the overloaded function of the same name with a std::ostream parameter, which is called internally.
filename | output file name |
fields | array of RField fields (r-space grid) needs |
unitCell | original crystallographic unit cell |
replicas | number of unit cell replicas in each direction |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::replicateUnitCell | ( | std::string const & | inFileName, |
std::string const & | outFileName, | ||
IntVec< D > const & | replicas ) const |
Write replicated fields read from one file to another.
This function reads a field file in r-grid format, and writes replicated fields to another file.
inFileName | name of input field file |
outFileName | name of output field file |
replicas | the number of replicas in each D direction |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::expandRGridDimension | ( | std::string | filename, |
DArray< RField< D > > const & | fields, | ||
UnitCell< D > const & | unitCell, | ||
int | d, | ||
DArray< int > | newGridDimensions ) const |
Increase D for an array of r-grid fields, write to a named file.
This function opens an output file with the specified filename, writes expanded fields in RField<d> real-space grid format to that file, and then closes the file. The overloaded function of the same name with an std::ostream parameter is called internally.
filename | name of output file |
fields | input array of RFT objects (r-space grid) |
unitCell | original crystallographic unit cell |
d | expanded dimension (greater than D) |
newGridDimensions | number of grid points in added dimensions |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::expandRGridDimension | ( | std::string const & | inFileName, |
std::string const & | outFileName, | ||
int | d, | ||
DArray< int > | newGridDimensions ) const |
Increase D for an r-grid field file.
This function reads an array of fields in D-dimensional space from an r-grid field file and writes expanded fields in d-dimensional space to another file.
inFileName | filename name of input field file |
outFileName | filename name of output field file |
d | intended dimensions (d > D) |
newGridDimensions | number of grid points in added dimensions |
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::readFieldHeader | ( | std::istream & | in, |
int & | nMonomer, | ||
UnitCell< D > & | unitCell, | ||
bool & | isSymmetric ) const |
Reader header of field file (fortran PSCF format)
This reads the common part of the header for all PSCF field file formats. This contains the dimension of space, the lattice system, a list of unit cell parameters, the space group name as an optional parameter, and the number of monomer types. The unit cell data is used to update a UnitCell<D> that is passed as a parameter.
If a space group was declared in the parameter file but the associated Basis object is not been initialized, this function will initialize the Basis by calling Basis<D>::makeBasis via a private pointer, using the unit cell parameters found in the file header. This function may thus modify the associated Basis object as a side effect (even though this function is marked const). Because all member functions that read complete field files call this function to read the file header, any member function of FieldIo that reads a field file header may thus cause the Basis to be constructed as a side effect.
On return, parameter nMonomer contains the number of monomer types declared in the field file header. This function does not require the number of monomers declared in the field file header to match the value of nMonomer set by the setNMonomer member function.
On return, isSymmetric is set true iff a group name was found in the header.
Consistency checks (Exceptions thrown on failure):
The value of "dim" in the header file must match the template parameter D. If the UnitCell<D> object passed to this function already contains a non-null lattice type, it must match the lattice system in the header file.
If the header declares a group name, then a matching group name must have been declared in the parameter file.
in | input stream (i.e., file) |
nMonomer | number of monomer types in the header (output) |
unitCell | associated crystallographic unit cell (output) |
isSymmetric | Is there a group name in the header? (output) |
Referenced by Pscf::Rpg::RGridTrajectoryReader< D >::readHeader().
void Pscf::Prdc::FieldIoReal< D, RField< D >, RFieldDft< D >, FFT >::writeFieldHeader | ( | std::ostream & | out, |
int | nMonomer, | ||
UnitCell< D > const & | unitCell, | ||
bool | isSymmetric = true ) const |
Write header for field file (fortran pscf format).
out | output stream (i.e., file) |
nMonomer | number of monomer types or fields |
unitCell | associated crystallographic unit cell |
isSymmetric | Should a space group be declared? |
Referenced by Pscf::Rpg::ConcentrationWriter< D >::writeHeader(), and Pscf::Rpg::TrajectoryWriter< D >::writeHeader().
|
inline |
Get spatial discretization mesh by const reference.
Definition at line 1251 of file FieldIoReal.h.
Referenced by convertBasisToKGrid(), convertKGridToBasis(), expandRGridDimension(), hasSymmetry(), readFieldRGrid(), readFieldsKGrid(), readFieldsRGrid(), readFieldsRGridData(), replicateUnitCell(), writeFieldRGrid(), writeFieldsKGrid(), and writeFieldsRGrid().
|
inline |
Get the associated Basis by const reference.
Definition at line 1260 of file FieldIoReal.h.
Referenced by convertBasisToKGrid(), convertKGridToBasis(), and hasSymmetry().
|
inline |
Get associated FileMaster by const reference.
Definition at line 1269 of file FieldIoReal.h.
|
inlineprotected |
Get the lattice type enum value by const reference.
Definition at line 1282 of file FieldIoReal.h.
|
inlineprotected |
Has a space group been declared externally ?
Definition at line 1291 of file FieldIoReal.h.
|
inlineprotected |
Get an associated group name string by const reference.
Definition at line 1300 of file FieldIoReal.h.
|
inlineprotected |
Get an associated SpaceGroup<D> by const reference.
Definition at line 1309 of file FieldIoReal.h.
|
inlineprotected |
Get FFT object by const reference.
Definition at line 1318 of file FieldIoReal.h.