PSCF v1.3
Pscf::Prdc::CFieldsReal< D, RFT, FIT > Class Template Reference

A list of c fields stored in both basis and r-grid format. More...

#include <CFieldsReal.h>

Public Member Functions

 CFieldsReal ()
 Constructor.
 ~CFieldsReal ()
 Destructor.
Initialization and Memory Management
void setFieldIo (FIT const &fieldIo)
 Create association with FIT (store pointer).
void setWriteUnitCell (UnitCell< D > const &cell)
 Set unit cell used when writing field files.
void setNMonomer (int nMonomer)
 Set stored value of nMonomer.
void allocateRGrid (IntVec< D > const &dimensions)
 Allocate memory for fields in rgrid format.
void allocateBasis (int nBasis)
 Allocate or re-allocate memory for fields in basis format.
void allocate (int nMonomer, int nBasis, IntVec< D > const &dimensions)
 Allocate memory for both r-grid and basis field formats.
Field Accessors (return by reference)
DArray< DArray< double > > & basis ()
 Get array of all fields in basis format (non-const).
DArray< DArray< double > > const & basis () const
 Get array of all fields in basis format (const)
DArray< double > & basis (int monomerId)
 Get the field for one monomer type in basis format (non-const).
DArray< double > const & basis (int monomerId) const
 Get the field for one monomer type in basis format (const)
DArray< RFT > & rgrid ()
 Get array of all fields in r-grid format (non-const).
DArray< RFT > const & rgrid () const
 Get array of all fields in r-grid format (const).
RFT & rgrid (int monomerId)
 Get field for one monomer type in r-grid format (non-const)
RFT const & rgrid (int monomerId) const
 Get field for one monomer type in r-grid format (const).
Field Output
void writeBasis (std::ostream &out) const
 Write fields to an input stream in symmetrized basis format.
void writeBasis (std::string filename) const
 Write fields to a named file, in symmetrized basis format.
void writeRGrid (std::ostream &out) const
 Writes fields to an input stream in real-space (r-grid) format.
void writeRGrid (std::string filename) const
 Writes fields to a named file in real-space (r-grid) format.
Boolean Variable Queries
bool isAllocatedRGrid () const
 Has memory been allocated for fields in r-grid format?
bool isAllocatedBasis () const
 Has memory been allocated for fields in basis format?
bool hasData () const
 Does this container have up-to-date fields?
bool isSymmetric () const
 Are the fields invariant under elements of the space group?
Boolean Variable Setters
void setHasData (bool hasData)
 Set the hasData flag.
void setIsSymmetric (bool isSymmetric)
 Set the isSymmetric flag.

Protected Member Functions

FIT const & fieldIo () const
 Get associated FieldIo object (const reference).

Detailed Description

template<int D, class RFT, class FIT>
class Pscf::Prdc::CFieldsReal< D, RFT, FIT >

A list of c fields stored in both basis and r-grid format.

Template parameters : The template parameters represent:

- D   : integer dimensionality of space, D=1,2, or 3
- RFT : field type for r-grid data (e.g., RField<D>)
- FIT : FieldIo type for field io operations (e.g., FieldIo<D>)

Field Representations : A CFieldsReal contains a list of nMonomer fields that are each associated with a monomer type. The fields may be stored in two different formats:

  • A DArray of RFT (RField) containers holds valus of each field on the nodes of a regular grid. This is accessed by the rgrid() and rgrid(int) member functions.
  • A DArray of DArray<double> containers holds components of each field in a symmetry-adapted Fourier expansion (i.e., in basis format). This is accessed by the basis() and basis(int) member functions.

The CFields container provides public non-const access to both field representations, and does not automatically update one of these field representations when the other is modified. Maintenance of the intended relationship between the two data representations is instead left as the responsibility of an object that owns this container.

Subclasses : Partial specializations of CFieldsReal are used as base classes for classes Prdc::CFieldsReal <D > and Rpg::CFieldsReal <D>:

Definition at line 71 of file CFieldsReal.h.

Constructor & Destructor Documentation

◆ CFieldsReal()

template<int D, class RFT, class FIT>
Pscf::Prdc::CFieldsReal< D, RFT, FIT >::CFieldsReal ( )

Constructor.

Definition at line 24 of file CFieldsReal.tpp.

◆ ~CFieldsReal()

template<int D, class RFT, class FIT>
Pscf::Prdc::CFieldsReal< D, RFT, FIT >::~CFieldsReal ( )

Destructor.

Definition at line 40 of file CFieldsReal.tpp.

Member Function Documentation

◆ setFieldIo()

template<int D, class RFT, class FIT>
void Pscf::Prdc::CFieldsReal< D, RFT, FIT >::setFieldIo ( FIT const & fieldIo)

Create association with FIT (store pointer).

Parameters
fieldIoassociated FIT (FieldIo) object

Definition at line 48 of file CFieldsReal.tpp.

References fieldIo().

◆ setWriteUnitCell()

template<int D, class RFT, class FIT>
void Pscf::Prdc::CFieldsReal< D, RFT, FIT >::setWriteUnitCell ( UnitCell< D > const & cell)

Set unit cell used when writing field files.

This function creates a stored pointer to a UnitCell<D> that is is used by the writeBasis and writeRGrid functions, which each write the unit cell parameters from in this object to a field file header. This function may only be called once.

Parameters
cellunit cell that is used by writeBasis and writeRGrid.

Definition at line 55 of file CFieldsReal.tpp.

References UTIL_CHECK.

◆ setNMonomer()

template<int D, class RFT, class FIT>
void Pscf::Prdc::CFieldsReal< D, RFT, FIT >::setNMonomer ( int nMonomer)

Set stored value of nMonomer.

This function may only be called once. The value of nMonomer must be positive.

Parameters
nMonomernumber of monomer types.

Definition at line 65 of file CFieldsReal.tpp.

References UTIL_CHECK.

Referenced by allocate().

◆ allocateRGrid()

template<int D, class RFT, class FIT>
void Pscf::Prdc::CFieldsReal< D, RFT, FIT >::allocateRGrid ( IntVec< D > const & dimensions)

Allocate memory for fields in rgrid format.

This function may only be called once.

Parameters
dimensionsdimensions of spatial mesh

Definition at line 77 of file CFieldsReal.tpp.

References UTIL_CHECK.

Referenced by allocate().

◆ allocateBasis()

template<int D, class RFT, class FIT>
void Pscf::Prdc::CFieldsReal< D, RFT, FIT >::allocateBasis ( int nBasis)

Allocate or re-allocate memory for fields in basis format.

This function may only be called once.

Parameters
nBasisnumber of basis functions

Definition at line 94 of file CFieldsReal.tpp.

References UTIL_CHECK.

Referenced by allocate().

◆ allocate()

template<int D, class RFT, class FIT>
void Pscf::Prdc::CFieldsReal< D, RFT, FIT >::allocate ( int nMonomer,
int nBasis,
IntVec< D > const & dimensions )

Allocate memory for both r-grid and basis field formats.

This function may only be called once.

Parameters
nMonomernumber of monomer types
nBasisnumber of basis functions
dimensionsdimensions of spatial mesh

Definition at line 112 of file CFieldsReal.tpp.

References allocateBasis(), allocateRGrid(), and setNMonomer().

◆ basis() [1/4]

template<int D, class RFT, class FIT>
DArray< DArray< double > > & Pscf::Prdc::CFieldsReal< D, RFT, FIT >::basis ( )
inline

Get array of all fields in basis format (non-const).

Definition at line 348 of file CFieldsReal.h.

References UTIL_ASSERT.

◆ basis() [2/4]

template<int D, class RFT, class FIT>
DArray< DArray< double > > const & Pscf::Prdc::CFieldsReal< D, RFT, FIT >::basis ( ) const
inline

Get array of all fields in basis format (const)

The array capacity is equal to the number of monomer types.

Definition at line 356 of file CFieldsReal.h.

References UTIL_ASSERT.

◆ basis() [3/4]

template<int D, class RFT, class FIT>
DArray< double > & Pscf::Prdc::CFieldsReal< D, RFT, FIT >::basis ( int monomerId)
inline

Get the field for one monomer type in basis format (non-const).

Parameters
monomerIdinteger monomer type index (0, ... ,nMonomer-1)

Definition at line 364 of file CFieldsReal.h.

References UTIL_ASSERT.

◆ basis() [4/4]

template<int D, class RFT, class FIT>
DArray< double > const & Pscf::Prdc::CFieldsReal< D, RFT, FIT >::basis ( int monomerId) const
inline

Get the field for one monomer type in basis format (const)

Parameters
monomerIdinteger monomer type index (0, ... ,nMonomer-1)

Definition at line 372 of file CFieldsReal.h.

References UTIL_ASSERT.

◆ rgrid() [1/4]

template<int D, class RFT, class FIT>
DArray< RFT > & Pscf::Prdc::CFieldsReal< D, RFT, FIT >::rgrid ( )
inline

Get array of all fields in r-grid format (non-const).

Definition at line 381 of file CFieldsReal.h.

References UTIL_ASSERT.

◆ rgrid() [2/4]

template<int D, class RFT, class FIT>
DArray< RFT > const & Pscf::Prdc::CFieldsReal< D, RFT, FIT >::rgrid ( ) const
inline

Get array of all fields in r-grid format (const).

Definition at line 389 of file CFieldsReal.h.

References UTIL_ASSERT.

◆ rgrid() [3/4]

template<int D, class RFT, class FIT>
RFT & Pscf::Prdc::CFieldsReal< D, RFT, FIT >::rgrid ( int monomerId)
inline

Get field for one monomer type in r-grid format (non-const)

Parameters
monomerIdinteger monomer type index (0,..,nMonomer-1)

Definition at line 397 of file CFieldsReal.h.

References UTIL_ASSERT.

◆ rgrid() [4/4]

template<int D, class RFT, class FIT>
RFT const & Pscf::Prdc::CFieldsReal< D, RFT, FIT >::rgrid ( int monomerId) const
inline

Get field for one monomer type in r-grid format (const).

Parameters
monomerIdinteger monomer type index (0,..,nMonomer-1)

Definition at line 405 of file CFieldsReal.h.

References UTIL_ASSERT.

◆ writeBasis() [1/2]

template<int D, class RFT, class FIT>
void Pscf::Prdc::CFieldsReal< D, RFT, FIT >::writeBasis ( std::ostream & out) const

Write fields to an input stream in symmetrized basis format.

Parameters
outoutput stream to which to write fields

Definition at line 126 of file CFieldsReal.tpp.

References fieldIo(), and UTIL_CHECK.

Referenced by writeBasis().

◆ writeBasis() [2/2]

template<int D, class RFT, class FIT>
void Pscf::Prdc::CFieldsReal< D, RFT, FIT >::writeBasis ( std::string filename) const

Write fields to a named file, in symmetrized basis format.

Parameters
filenamename of file to which to write fields

Definition at line 143 of file CFieldsReal.tpp.

References fieldIo(), and writeBasis().

◆ writeRGrid() [1/2]

template<int D, class RFT, class FIT>
void Pscf::Prdc::CFieldsReal< D, RFT, FIT >::writeRGrid ( std::ostream & out) const

Writes fields to an input stream in real-space (r-grid) format.

Parameters
outoutput stream to which to write fields

Definition at line 155 of file CFieldsReal.tpp.

References fieldIo(), and UTIL_CHECK.

Referenced by writeRGrid().

◆ writeRGrid() [2/2]

template<int D, class RFT, class FIT>
void Pscf::Prdc::CFieldsReal< D, RFT, FIT >::writeRGrid ( std::string filename) const

Writes fields to a named file in real-space (r-grid) format.

Parameters
filenamename of file to which to write fields

Definition at line 174 of file CFieldsReal.tpp.

References fieldIo(), and writeRGrid().

◆ isAllocatedRGrid()

template<int D, class RFT, class FIT>
bool Pscf::Prdc::CFieldsReal< D, RFT, FIT >::isAllocatedRGrid ( ) const
inline

Has memory been allocated for fields in r-grid format?

Definition at line 413 of file CFieldsReal.h.

◆ isAllocatedBasis()

template<int D, class RFT, class FIT>
bool Pscf::Prdc::CFieldsReal< D, RFT, FIT >::isAllocatedBasis ( ) const
inline

Has memory been allocated for fields in basis format?

Definition at line 418 of file CFieldsReal.h.

◆ hasData()

template<int D, class RFT, class FIT>
bool Pscf::Prdc::CFieldsReal< D, RFT, FIT >::hasData ( ) const
inline

Does this container have up-to-date fields?

Definition at line 423 of file CFieldsReal.h.

Referenced by setHasData().

◆ isSymmetric()

template<int D, class RFT, class FIT>
bool Pscf::Prdc::CFieldsReal< D, RFT, FIT >::isSymmetric ( ) const
inline

Are the fields invariant under elements of the space group?

Definition at line 428 of file CFieldsReal.h.

Referenced by setIsSymmetric().

◆ setHasData()

template<int D, class RFT, class FIT>
void Pscf::Prdc::CFieldsReal< D, RFT, FIT >::setHasData ( bool hasData)
inline

Set the hasData flag.

This should be set true when fields are set to those computed from the current w fields, and false when any input to that calculation changes.

Definition at line 186 of file CFieldsReal.tpp.

References hasData().

◆ setIsSymmetric()

template<int D, class RFT, class FIT>
void Pscf::Prdc::CFieldsReal< D, RFT, FIT >::setIsSymmetric ( bool isSymmetric)
inline

Set the isSymmetric flag.

This should be set true if and only if the fields are known to have been computed from symmetric w fields, and the basis representation exists.

Definition at line 196 of file CFieldsReal.tpp.

References isSymmetric(), and UTIL_CHECK.

◆ fieldIo()

template<int D, class RFT, class FIT>
FIT const & Pscf::Prdc::CFieldsReal< D, RFT, FIT >::fieldIo ( ) const
inlineprotected

Get associated FieldIo object (const reference).

Definition at line 436 of file CFieldsReal.h.

References UTIL_CHECK.

Referenced by setFieldIo(), writeBasis(), writeBasis(), writeRGrid(), and writeRGrid().


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