PSCF v1.1
|
File input/output operations for fields in several file formats. More...
#include <FieldIo.h>
Public Member Functions | |
FieldIo () | |
Constructor. More... | |
~FieldIo () | |
Destructor. More... | |
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. More... | |
Field File IO | |
void | readFieldsBasis (std::istream &in, DArray< DArray< double > > &fields, UnitCell< D > &unitCell) const |
Read concentration or chemical potential field components from file. More... | |
void | readFieldsBasis (std::string filename, DArray< DArray< double > > &fields, UnitCell< D > &unitCell) const |
Read concentration or chemical potential field components from file. More... | |
void | writeFieldsBasis (std::ostream &out, DArray< DArray< double > > const &fields, UnitCell< D > const &unitCell) const |
Write concentration or chemical potential field components to file. More... | |
void | writeFieldsBasis (std::string filename, DArray< DArray< double > > const &fields, UnitCell< D > const &unitCell) const |
Write concentration or chemical potential field components to file. More... | |
void | readFieldsRGrid (std::istream &in, DArray< RDField< D > > &fields, UnitCell< D > &unitCell) const |
Read array of RField objects (fields on an r-space grid) from file. More... | |
void | readFieldsRGrid (std::string filename, DArray< RDField< D > > &fields, UnitCell< D > &unitCell) const |
Read array of RField objects (fields on an r-space grid) from file. More... | |
void | writeFieldsRGrid (std::ostream &out, DArray< RDField< D > > const &fields, UnitCell< D > const &unitCell) const |
Write array of RField objects (fields on an r-space grid) to file. More... | |
void | writeFieldsRGrid (std::string filename, DArray< RDField< D > > const &fields, UnitCell< D > const &unitCell) const |
Write array of RField objects (fields on an r-space grid) to file. More... | |
void | readFieldRGrid (std::istream &in, RDField< D > &field, UnitCell< D > &unitCell) const |
Read a single RField objects (field on an r-space grid) from file. More... | |
void | readFieldRGrid (std::string filename, RDField< D > &field, UnitCell< D > &unitCell) const |
Read a single RField objects (field on an r-space grid). More... | |
void | writeFieldRGrid (std::ostream &out, RDField< D > const &field, UnitCell< D > const &unitCell, bool writeHeader=true) const |
Write a single RField objects (field on an r-space grid) to file. More... | |
void | writeFieldRGrid (std::string filename, RDField< D > const &field, UnitCell< D > const &unitCell) const |
Write a single RField objects (field on an r-space grid) to file. More... | |
void | readFieldsKGrid (std::istream &in, DArray< RDFieldDft< D > > &fields, UnitCell< D > &unitCell) const |
Read array of RDFieldDft objects (k-space fields) from file. More... | |
void | readFieldsKGrid (std::string filename, DArray< RDFieldDft< D > > &fields, UnitCell< D > &unitCell) const |
Read array of RDFieldDft objects (k-space fields) from file. More... | |
void | writeFieldsKGrid (std::ostream &out, DArray< RDFieldDft< D > > const &fields, UnitCell< D > const &unitCell) const |
Write array of RDFieldDft objects (k-space fields) to file. More... | |
void | writeFieldsKGrid (std::string filename, DArray< RDFieldDft< D > > const &fields, UnitCell< D > const &unitCell) const |
Write array of RDFieldDft objects (k-space fields) to a file. More... | |
void | readFieldHeader (std::istream &in, int &nMonomer, UnitCell< D > &unitCell) const |
Reader header of field file (fortran pscf format) More... | |
void | writeFieldHeader (std::ostream &out, int nMonomer, UnitCell< D > const &unitCell) const |
Write header for field file (fortran pscf format) More... | |
Field Format Conversion | |
void | convertBasisToKGrid (DArray< double > const &components, RDFieldDft< D > &dft) const |
Convert field from symmetrized basis to Fourier transform (k-grid). More... | |
void | convertBasisToKGrid (DArray< DArray< double > > const &in, DArray< RDFieldDft< D > > &out) const |
Convert fields from symmetrized basis to Fourier transform (kgrid). More... | |
void | convertKGridToBasis (RDFieldDft< D > const &dft, DArray< double > &components) const |
Convert field from Fourier transform (k-grid) to symmetrized basis. More... | |
void | convertKGridToBasis (DArray< RDFieldDft< D > > const &in, DArray< DArray< double > > &out) const |
Convert fields from Fourier transform (kgrid) to symmetrized basis. More... | |
void | convertBasisToRGrid (DArray< DArray< double > > const &in, DArray< RDField< D > > &out) const |
Convert fields from symmetrized basis to spatial grid (rgrid). More... | |
void | convertRGridToBasis (DArray< RDField< D > > const &in, DArray< DArray< double > > &out) const |
Convert fields from spatial grid (rgrid) to symmetrized basis. More... | |
void | convertKGridToRGrid (DArray< RDFieldDft< D > > const &in, DArray< RDField< D > > &out) const |
Convert fields from k-grid (DFT) to real space (rgrid) format. More... | |
void | convertRGridToKGrid (DArray< RDField< D > > const &in, DArray< RDFieldDft< D > > &out) const |
Convert fields from spatial grid (rgrid) to k-grid format. More... | |
File input/output operations for fields in several file formats.
Definition at line 36 of file pspg/field/FieldIo.h.
Pscf::Pspg::FieldIo< D >::FieldIo |
Constructor.
Definition at line 37 of file pspg/field/FieldIo.tpp.
Pscf::Pspg::FieldIo< D >::~FieldIo |
Destructor.
Definition at line 51 of file pspg/field/FieldIo.tpp.
void Pscf::Pspg::FieldIo< D >::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.
mesh | associated spatial discretization Mesh<D> |
fft | associated FFT object for fast transforms |
lattice | lattice system type (enumeration value) |
groupName | space group name string |
group | associated space group |
basis | associated Basis object |
fileMaster | associated FileMaster (for file paths) |
Definition at line 58 of file pspg/field/FieldIo.tpp.
void Pscf::Pspg::FieldIo< D >::readFieldsBasis | ( | std::istream & | in, |
DArray< DArray< double > > & | fields, | ||
UnitCell< D > & | unitCell | ||
) | const |
Read concentration or chemical potential field components from file.
This function reads components in a symmetry adapted basis from file in.
The capacity of DArray fields is equal to nMonomer, and element fields[i] is a DArray containing components of the field associated with monomer type i.
in | input stream (i.e., input file) |
fields | array of fields (symmetry adapted basis components) |
unitCell | crystallographic unit cell (output) |
Definition at line 76 of file pspg/field/FieldIo.tpp.
References Util::DArray< Data >::allocate(), Pscf::Basis< D >::Star::basisId, Pscf::Basis< D >::Star::beginId, Pscf::Basis< D >::Star::cancel, Util::Log::file(), Pscf::Basis< D >::Star::invertFlag, Pscf::Vec< D, T >::negate(), Pscf::Pspg::FieldIo< D >::readFieldHeader(), UTIL_CHECK, UTIL_THROW, and Pscf::Basis< D >::Star::waveBz.
void Pscf::Pspg::FieldIo< D >::readFieldsBasis | ( | std::string | filename, |
DArray< DArray< double > > & | fields, | ||
UnitCell< D > & | unitCell | ||
) | const |
Read concentration or chemical potential field components from file.
This function opens an input file with the specified filename, reads components in symmetry-adapted form from that file, and closes the file.
filename | name of input file |
fields | array of fields (symmetry adapted basis components) |
unitCell | crystallographic unit cell (output) |
Definition at line 330 of file pspg/field/FieldIo.tpp.
void Pscf::Pspg::FieldIo< D >::writeFieldsBasis | ( | std::ostream & | out, |
DArray< DArray< double > > const & | fields, | ||
UnitCell< D > const & | unitCell | ||
) | const |
Write concentration or chemical potential field components to file.
This function writes components in a symmetry adapted basis.
out | output stream (i.e., output file) |
fields | array of fields (symmetry adapted basis components) |
unitCell | crystallographic unit cell |
Definition at line 343 of file pspg/field/FieldIo.tpp.
References UTIL_CHECK.
void Pscf::Pspg::FieldIo< D >::writeFieldsBasis | ( | std::string | filename, |
DArray< DArray< double > > const & | fields, | ||
UnitCell< D > const & | unitCell | ||
) | const |
Write concentration or chemical potential field components to 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.
filename | name of input file |
fields | array of fields (symmetry adapted basis components) |
unitCell | crystallographic unit cell |
Definition at line 383 of file pspg/field/FieldIo.tpp.
void Pscf::Pspg::FieldIo< D >::readFieldsRGrid | ( | std::istream & | in, |
DArray< RDField< D > > & | fields, | ||
UnitCell< D > & | unitCell | ||
) | const |
Read array of RField objects (fields on an r-space grid) from file.
The capacity of array fields is equal to nMonomer, and element fields[i] is the RField<D> associated with monomer type i.
in | input stream (i.e., input file) |
fields | array of RField fields (r-space grid) |
unitCell | crystallographic unit cell (output) |
Definition at line 395 of file pspg/field/FieldIo.tpp.
References Util::DArray< Data >::allocate(), Pscf::Pspg::FieldIo< D >::readFieldHeader(), UTIL_CHECK, and UTIL_THROW.
void Pscf::Pspg::FieldIo< D >::readFieldsRGrid | ( | std::string | filename, |
DArray< RDField< D > > & | fields, | ||
UnitCell< D > & | unitCell | ||
) | const |
Read array of RField objects (fields on an r-space grid) from file.
The capacity of array fields is equal to nMonomer, and element fields[i] is the RField<D> associated with monomer type i.
This function opens an input file with the specified filename, reads fields in RField<D> real-space grid format from that file, and then closes the file.
filename | name of input file |
fields | array of RField fields (r-space grid) |
unitCell | crystallographic unit cell (output) |
Definition at line 470 of file pspg/field/FieldIo.tpp.
void Pscf::Pspg::FieldIo< D >::writeFieldsRGrid | ( | std::ostream & | out, |
DArray< RDField< D > > const & | fields, | ||
UnitCell< D > const & | unitCell | ||
) | const |
Write array of RField objects (fields on an r-space grid) to file.
out | output stream (i.e., output file) |
fields | array of RField fields (r-space grid) |
unitCell | crystallographic unit cell |
Definition at line 481 of file pspg/field/FieldIo.tpp.
References Util::DArray< Data >::allocate(), and UTIL_CHECK.
void Pscf::Pspg::FieldIo< D >::writeFieldsRGrid | ( | std::string | filename, |
DArray< RDField< D > > const & | fields, | ||
UnitCell< D > const & | unitCell | ||
) | const |
Write array of RField objects (fields on an r-space grid) to file.
This function opens an output file with the specified filename, writes fields in RField<D> real-space grid format to that file, and then closes the file.
filename | name of output file |
fields | array of RField fields (r-space grid) |
unitCell | crystallographic unit cell |
Definition at line 543 of file pspg/field/FieldIo.tpp.
void Pscf::Pspg::FieldIo< D >::readFieldRGrid | ( | std::istream & | in, |
RDField< D > & | field, | ||
UnitCell< D > & | unitCell | ||
) | const |
Read a single RField objects (field on an r-space grid) from file.
in | input stream |
field | RField field (r-space grid) |
unitCell | crystallographic unit cell |
Definition at line 555 of file pspg/field/FieldIo.tpp.
References Pscf::Pspg::DField< Data >::cDField(), Pscf::Pspg::FieldIo< D >::readFieldHeader(), UTIL_CHECK, and UTIL_THROW.
void Pscf::Pspg::FieldIo< D >::readFieldRGrid | ( | std::string | filename, |
RDField< D > & | field, | ||
UnitCell< D > & | unitCell | ||
) | const |
Read a single RField objects (field on an r-space grid).
filename | name of input file |
field | RField field (r-space grid) |
unitCell | crystallographic unit cell |
Definition at line 620 of file pspg/field/FieldIo.tpp.
void Pscf::Pspg::FieldIo< D >::writeFieldRGrid | ( | std::ostream & | out, |
RDField< D > const & | field, | ||
UnitCell< D > const & | unitCell, | ||
bool | writeHeader = true |
||
) | const |
Write a single RField objects (field on an r-space grid) to file.
out | output stream |
field | RField field (r-space grid) |
unitCell | crystallographic unit cell |
writeHeader | should a file header be written? |
Definition at line 632 of file pspg/field/FieldIo.tpp.
References Pscf::Pspg::DField< Data >::cDField().
void Pscf::Pspg::FieldIo< D >::writeFieldRGrid | ( | std::string | filename, |
RDField< D > const & | field, | ||
UnitCell< D > const & | unitCell | ||
) | const |
Write a single RField objects (field on an r-space grid) to file.
filename | name of input file |
field | RField field (r-space grid) |
unitCell | crystallographic unit cell |
Definition at line 686 of file pspg/field/FieldIo.tpp.
void Pscf::Pspg::FieldIo< D >::readFieldsKGrid | ( | std::istream & | in, |
DArray< RDFieldDft< D > > & | fields, | ||
UnitCell< D > & | unitCell | ||
) | const |
Read array of RDFieldDft objects (k-space fields) from file.
The capacity of the array is equal to nMonomer, and element fields[i] is the discrete Fourier transform of the field for monomer type i.
in | input stream (i.e., input file) |
fields | array of RDFieldDft fields (k-space grid) |
unitCell | crystallographic unit cell (output) |
Definition at line 698 of file pspg/field/FieldIo.tpp.
References Util::DArray< Data >::allocate(), UTIL_CHECK, and UTIL_THROW.
void Pscf::Pspg::FieldIo< D >::readFieldsKGrid | ( | std::string | filename, |
DArray< RDFieldDft< D > > & | fields, | ||
UnitCell< D > & | unitCell | ||
) | const |
Read array of RDFieldDft objects (k-space fields) from file.
This function opens a file with name filename, reads discrete Fourier components (Dft) of fields from that file, and closes the file.
The capacity of the array is equal to nMonomer, and element fields[i] is the discrete Fourier transform of the field for monomer type i.
filename | name of input file |
fields | array of RDFieldDft fields (k-space grid) |
unitCell | crystallographic unit cell (output) |
Definition at line 760 of file pspg/field/FieldIo.tpp.
void Pscf::Pspg::FieldIo< D >::writeFieldsKGrid | ( | std::ostream & | out, |
DArray< RDFieldDft< D > > const & | fields, | ||
UnitCell< D > const & | unitCell | ||
) | const |
Write array of RDFieldDft objects (k-space fields) to file.
The capacity of the array fields is equal to nMonomer. Element fields[i] is the discrete Fourier transform of the field for monomer type i.
out | output stream (i.e., output file) |
fields | array of RDFieldDft fields |
unitCell | crystallographic unit cell |
Definition at line 772 of file pspg/field/FieldIo.tpp.
References Util::DArray< Data >::allocate(), and UTIL_CHECK.
void Pscf::Pspg::FieldIo< D >::writeFieldsKGrid | ( | std::string | filename, |
DArray< RDFieldDft< D > > const & | fields, | ||
UnitCell< D > const & | unitCell | ||
) | const |
Write array of RDFieldDft objects (k-space fields) to a 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 RDFieldDft fields (k-space grid) |
unitCell | crystallographic unit cell |
Definition at line 820 of file pspg/field/FieldIo.tpp.
void Pscf::Pspg::FieldIo< D >::readFieldHeader | ( | std::istream & | in, |
int & | nMonomer, | ||
UnitCell< D > & | unitCell | ||
) | const |
Reader header of field file (fortran pscf format)
in | input stream (i.e., input file) |
nMonomer | number of monomers read from file (output) |
unitCell | crystallographic unit cell (output) |
Definition at line 873 of file pspg/field/FieldIo.tpp.
References Util::Log::file(), Pscf::UnitCellBase< D >::isInitialized(), Pscf::UnitCellBase< D >::nParameter(), UTIL_CHECK, and UTIL_THROW.
Referenced by Pscf::Pspg::FieldIo< D >::readFieldRGrid(), Pscf::Pspg::FieldIo< D >::readFieldsBasis(), and Pscf::Pspg::FieldIo< D >::readFieldsRGrid().
void Pscf::Pspg::FieldIo< D >::writeFieldHeader | ( | std::ostream & | out, |
int | nMonomer, | ||
UnitCell< D > const & | unitCell | ||
) | const |
Write header for field file (fortran pscf format)
out | output stream (i.e., output file) |
nMonomer | number of monomer types |
unitCell | crystallographic unit cell |
Definition at line 953 of file pspg/field/FieldIo.tpp.
References Pscf::writeUnitCellHeader().
void Pscf::Pspg::FieldIo< D >::convertBasisToKGrid | ( | DArray< double > const & | components, |
RDFieldDft< D > & | dft | ||
) | const |
Convert field from symmetrized basis to Fourier transform (k-grid).
components | coefficients of symmetry-adapted basis functions |
dft | discrete Fourier transform of a real field |
Definition at line 969 of file pspg/field/FieldIo.tpp.
References Pscf::Basis< D >::Star::basisId, Pscf::Basis< D >::Star::beginId, Pscf::Basis< D >::Star::cancel, Pscf::Pspg::DField< Data >::capacity(), Pscf::Pspg::DField< Data >::cDField(), Pscf::Basis< D >::Wave::coeff, Pscf::Pspg::RDFieldDft< D >::dftDimensions(), Pscf::Basis< D >::Wave::implicit, Pscf::Basis< D >::Wave::indicesDft, Pscf::Basis< D >::Star::invertFlag, Pscf::Pspg::RDFieldDft< D >::meshDimensions(), Pscf::Mesh< D >::rank(), Pscf::Mesh< D >::size(), UTIL_ASSERT, UTIL_CHECK, and UTIL_THROW.
void Pscf::Pspg::FieldIo< D >::convertBasisToKGrid | ( | DArray< DArray< double > > const & | in, |
DArray< RDFieldDft< D > > & | out | ||
) | const |
Convert fields from symmetrized basis to Fourier transform (kgrid).
The in and out parameters are arrays of fields, in which element number i is the field associated with monomer type i.
in | components of fields in symmetry adapted basis |
out | fields defined as discrete Fourier transforms (k-grid) |
Definition at line 1298 of file pspg/field/FieldIo.tpp.
References UTIL_CHECK.
void Pscf::Pspg::FieldIo< D >::convertKGridToBasis | ( | RDFieldDft< D > const & | dft, |
DArray< double > & | components | ||
) | const |
Convert field from Fourier transform (k-grid) to symmetrized basis.
dft | complex DFT (k-grid) representation of a field. |
components | coefficients of symmetry-adapted basis functions. |
Definition at line 1114 of file pspg/field/FieldIo.tpp.
References Pscf::Basis< D >::Star::basisId, Pscf::Basis< D >::Star::beginId, Pscf::Basis< D >::Star::cancel, Pscf::Pspg::DField< Data >::cDField(), Pscf::Basis< D >::Wave::coeff, Pscf::Pspg::RDFieldDft< D >::dftDimensions(), Pscf::Basis< D >::Star::endId, Util::Log::file(), Pscf::Basis< D >::Wave::implicit, Pscf::Basis< D >::Wave::indicesDft, Pscf::Basis< D >::Star::invertFlag, Pscf::Mesh< D >::rank(), Pscf::Basis< D >::Wave::starId, Pscf::Basis< D >::Star::starId, UTIL_CHECK, UTIL_THROW, and Pscf::Basis< D >::Star::waveBz.
void Pscf::Pspg::FieldIo< D >::convertKGridToBasis | ( | DArray< RDFieldDft< D > > const & | in, |
DArray< DArray< double > > & | out | ||
) | const |
Convert fields from Fourier transform (kgrid) to symmetrized basis.
The in and out parameters are each an array of fields, in which element i is the field associated with monomer type i.
in | fields defined as discrete Fourier transforms (k-grid) |
out | components of fields in symmetry adapted basis |
Definition at line 1312 of file pspg/field/FieldIo.tpp.
References UTIL_ASSERT.
void Pscf::Pspg::FieldIo< D >::convertBasisToRGrid | ( | DArray< DArray< double > > const & | in, |
DArray< RDField< D > > & | out | ||
) | const |
Convert fields from symmetrized basis to spatial grid (rgrid).
in | fields in symmetry adapted basis form |
out | fields defined on real-space grid |
Definition at line 1328 of file pspg/field/FieldIo.tpp.
References Util::DArray< Data >::allocate(), Util::DArray< Data >::deallocate(), and UTIL_CHECK.
void Pscf::Pspg::FieldIo< D >::convertRGridToBasis | ( | DArray< RDField< D > > const & | in, |
DArray< DArray< double > > & | out | ||
) | const |
Convert fields from spatial grid (rgrid) to symmetrized basis.
in | fields defined on real-space grid |
out | fields in symmetry adapted basis form |
Definition at line 1350 of file pspg/field/FieldIo.tpp.
References Util::DArray< Data >::allocate(), Util::DArray< Data >::deallocate(), and UTIL_CHECK.
void Pscf::Pspg::FieldIo< D >::convertKGridToRGrid | ( | DArray< RDFieldDft< D > > const & | in, |
DArray< RDField< D > > & | out | ||
) | const |
Convert fields from k-grid (DFT) to real space (rgrid) format.
in | fields in discrete Fourier format (k-grid) |
out | fields defined on real-space grid (r-grid) |
Definition at line 1379 of file pspg/field/FieldIo.tpp.
References UTIL_ASSERT.
void Pscf::Pspg::FieldIo< D >::convertRGridToKGrid | ( | DArray< RDField< D > > const & | in, |
DArray< RDFieldDft< D > > & | out | ||
) | const |
Convert fields from spatial grid (rgrid) to k-grid format.
in | fields defined on real-space grid (r-grid) |
out | fields in discrete Fourier format (k-grid) |
Definition at line 1391 of file pspg/field/FieldIo.tpp.
References UTIL_ASSERT.