PSCF v1.1
Public Member Functions | List of all members
Pscf::Pspg::FieldIo< D > Class Template Reference

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...
 

Detailed Description

template<int D>
class Pscf::Pspg::FieldIo< D >

File input/output operations for fields in several file formats.

Definition at line 36 of file pspg/field/FieldIo.h.

Constructor & Destructor Documentation

◆ FieldIo()

template<int D>
Pscf::Pspg::FieldIo< D >::FieldIo

Constructor.

Definition at line 37 of file pspg/field/FieldIo.tpp.

◆ ~FieldIo()

template<int D>
Pscf::Pspg::FieldIo< D >::~FieldIo

Destructor.

Definition at line 51 of file pspg/field/FieldIo.tpp.

Member Function Documentation

◆ associate()

template<int D>
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.

Parameters
meshassociated spatial discretization Mesh<D>
fftassociated FFT object for fast transforms
latticelattice system type (enumeration value)
groupNamespace group name string
groupassociated space group
basisassociated Basis object
fileMasterassociated FileMaster (for file paths)

Definition at line 58 of file pspg/field/FieldIo.tpp.

◆ readFieldsBasis() [1/2]

template<int D>
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.

Parameters
ininput stream (i.e., input file)
fieldsarray of fields (symmetry adapted basis components)
unitCellcrystallographic 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.

◆ readFieldsBasis() [2/2]

template<int D>
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.

Parameters
filenamename of input file
fieldsarray of fields (symmetry adapted basis components)
unitCellcrystallographic unit cell (output)

Definition at line 330 of file pspg/field/FieldIo.tpp.

◆ writeFieldsBasis() [1/2]

template<int D>
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.

Parameters
outoutput stream (i.e., output file)
fieldsarray of fields (symmetry adapted basis components)
unitCellcrystallographic unit cell

Definition at line 343 of file pspg/field/FieldIo.tpp.

References UTIL_CHECK.

◆ writeFieldsBasis() [2/2]

template<int D>
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.

Parameters
filenamename of input file
fieldsarray of fields (symmetry adapted basis components)
unitCellcrystallographic unit cell

Definition at line 383 of file pspg/field/FieldIo.tpp.

◆ readFieldsRGrid() [1/2]

template<int D>
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.

Parameters
ininput stream (i.e., input file)
fieldsarray of RField fields (r-space grid)
unitCellcrystallographic 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.

◆ readFieldsRGrid() [2/2]

template<int D>
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.

Parameters
filenamename of input file
fieldsarray of RField fields (r-space grid)
unitCellcrystallographic unit cell (output)

Definition at line 470 of file pspg/field/FieldIo.tpp.

◆ writeFieldsRGrid() [1/2]

template<int D>
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.

Parameters
outoutput stream (i.e., output file)
fieldsarray of RField fields (r-space grid)
unitCellcrystallographic unit cell

Definition at line 481 of file pspg/field/FieldIo.tpp.

References Util::DArray< Data >::allocate(), and UTIL_CHECK.

◆ writeFieldsRGrid() [2/2]

template<int D>
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.

Parameters
filenamename of output file
fieldsarray of RField fields (r-space grid)
unitCellcrystallographic unit cell

Definition at line 543 of file pspg/field/FieldIo.tpp.

◆ readFieldRGrid() [1/2]

template<int D>
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.

Parameters
ininput stream
fieldRField field (r-space grid)
unitCellcrystallographic 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.

◆ readFieldRGrid() [2/2]

template<int D>
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).

Parameters
filenamename of input file
fieldRField field (r-space grid)
unitCellcrystallographic unit cell

Definition at line 620 of file pspg/field/FieldIo.tpp.

◆ writeFieldRGrid() [1/2]

template<int D>
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.

Parameters
outoutput stream
fieldRField field (r-space grid)
unitCellcrystallographic unit cell
writeHeadershould a file header be written?

Definition at line 632 of file pspg/field/FieldIo.tpp.

References Pscf::Pspg::DField< Data >::cDField().

◆ writeFieldRGrid() [2/2]

template<int D>
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.

Parameters
filenamename of input file
fieldRField field (r-space grid)
unitCellcrystallographic unit cell

Definition at line 686 of file pspg/field/FieldIo.tpp.

◆ readFieldsKGrid() [1/2]

template<int D>
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.

Parameters
ininput stream (i.e., input file)
fieldsarray of RDFieldDft fields (k-space grid)
unitCellcrystallographic unit cell (output)

Definition at line 698 of file pspg/field/FieldIo.tpp.

References Util::DArray< Data >::allocate(), UTIL_CHECK, and UTIL_THROW.

◆ readFieldsKGrid() [2/2]

template<int D>
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.

Parameters
filenamename of input file
fieldsarray of RDFieldDft fields (k-space grid)
unitCellcrystallographic unit cell (output)

Definition at line 760 of file pspg/field/FieldIo.tpp.

◆ writeFieldsKGrid() [1/2]

template<int D>
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.

Parameters
outoutput stream (i.e., output file)
fieldsarray of RDFieldDft fields
unitCellcrystallographic unit cell

Definition at line 772 of file pspg/field/FieldIo.tpp.

References Util::DArray< Data >::allocate(), and UTIL_CHECK.

◆ writeFieldsKGrid() [2/2]

template<int D>
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.

Parameters
filenamename of output file.
fieldsarray of RDFieldDft fields (k-space grid)
unitCellcrystallographic unit cell

Definition at line 820 of file pspg/field/FieldIo.tpp.

◆ readFieldHeader()

template<int D>
void Pscf::Pspg::FieldIo< D >::readFieldHeader ( std::istream &  in,
int &  nMonomer,
UnitCell< D > &  unitCell 
) const

Reader header of field file (fortran pscf format)

Parameters
ininput stream (i.e., input file)
nMonomernumber of monomers read from file (output)
unitCellcrystallographic 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().

◆ writeFieldHeader()

template<int D>
void Pscf::Pspg::FieldIo< D >::writeFieldHeader ( std::ostream &  out,
int  nMonomer,
UnitCell< D > const &  unitCell 
) const

Write header for field file (fortran pscf format)

Parameters
outoutput stream (i.e., output file)
nMonomernumber of monomer types
unitCellcrystallographic unit cell

Definition at line 953 of file pspg/field/FieldIo.tpp.

References Pscf::writeUnitCellHeader().

◆ convertBasisToKGrid() [1/2]

template<int D>
void Pscf::Pspg::FieldIo< D >::convertBasisToKGrid ( DArray< double > const &  components,
RDFieldDft< D > &  dft 
) const

◆ convertBasisToKGrid() [2/2]

template<int D>
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.

Parameters
incomponents of fields in symmetry adapted basis
outfields defined as discrete Fourier transforms (k-grid)

Definition at line 1298 of file pspg/field/FieldIo.tpp.

References UTIL_CHECK.

◆ convertKGridToBasis() [1/2]

template<int D>
void Pscf::Pspg::FieldIo< D >::convertKGridToBasis ( RDFieldDft< D > const &  dft,
DArray< double > &  components 
) const

◆ convertKGridToBasis() [2/2]

template<int D>
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.

Parameters
infields defined as discrete Fourier transforms (k-grid)
outcomponents of fields in symmetry adapted basis

Definition at line 1312 of file pspg/field/FieldIo.tpp.

References UTIL_ASSERT.

◆ convertBasisToRGrid()

template<int D>
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).

Parameters
infields in symmetry adapted basis form
outfields 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.

◆ convertRGridToBasis()

template<int D>
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.

Parameters
infields defined on real-space grid
outfields 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.

◆ convertKGridToRGrid()

template<int D>
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.

Parameters
infields in discrete Fourier format (k-grid)
outfields defined on real-space grid (r-grid)

Definition at line 1379 of file pspg/field/FieldIo.tpp.

References UTIL_ASSERT.

◆ convertRGridToKGrid()

template<int D>
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.

Parameters
infields defined on real-space grid (r-grid)
outfields in discrete Fourier format (k-grid)

Definition at line 1391 of file pspg/field/FieldIo.tpp.

References UTIL_ASSERT.


The documentation for this class was generated from the following files: