PSCF v1.2
Pscf::Rpc::Domain< D > Class Template Reference

Spatial domain and spatial discretization for a periodic structure. More...

#include <Domain.h>

Inheritance diagram for Pscf::Rpc::Domain< D >:
Util::ParamComposite Util::ParamComponent Util::Serializable Util::MpiFileIo

Public Member Functions

 Domain ()
 Constructor.
 
 ~Domain ()
 Destructor.
 
Initialization and Mutators
void setFileMaster (FileMaster &fileMaster)
 Create association with a FileMaster, needed by FieldIo.
 
virtual void readParameters (std::istream &in)
 Read body of parameter block (without opening and closing lines).
 
void readRGridFieldHeader (std::istream &in, int &nMonomer)
 Read header of an r-grid field file to initialize this Domain.
 
void setUnitCell (UnitCell< D > const &unitCell)
 Set unit cell.
 
void setUnitCell (typename UnitCell< D >::LatticeSystem lattice, FSArray< double, 6 > const &parameters)
 Set unit cell state.
 
void setUnitCell (FSArray< double, 6 > const &parameters)
 Set unit cell parameters.
 
void makeBasis ()
 Construct basis if not done already.
 
Accessors (return by non-const or const reference)
UnitCell< D > & unitCell ()
 Get UnitCell (i.e., lattice type and parameters) by reference.
 
UnitCell< D > const & unitCell () const
 Get UnitCell (i.e., lattice type and parameters) by reference.
 
Mesh< D > & mesh ()
 Get spatial discretization mesh by reference.
 
Mesh< D > const & mesh () const
 Get spatial discretization mesh by const reference.
 
SpaceGroup< D > const & group () const
 Get associated SpaceGroup object by const reference.
 
Basis< D > & basis ()
 Get associated Basis object by reference.
 
Basis< D > const & basis () const
 Get associated Basis object by const reference.
 
FFT< D > & fft ()
 Get associated FFT object.
 
FFT< D > const & fft () const
 Get associated FFT object by const reference.
 
FieldIo< D > & fieldIo ()
 Get associated FieldIo object.
 
FieldIo< D > const & fieldIo () const
 Get associated FieldIo object by const reference.
 
Accessors (return by value)
UnitCell< D >::LatticeSystem lattice () const
 Get lattice system.
 
std::string groupName () const
 Get group name.
 
bool hasGroup () const
 Has a space group been identified?
 
bool hasBasis () const
 Has a symmetry-adapted Fourier basis been initialized?
 
- Public Member Functions inherited from Util::ParamComposite
 ParamComposite ()
 Constructor.
 
 ParamComposite (const ParamComposite &other)
 Copy constructor.
 
 ParamComposite (int capacity)
 Constructor.
 
virtual ~ParamComposite ()
 Virtual destructor.
 
void resetParam ()
 Resets ParamComposite to its empty state.
 
virtual void readParam (std::istream &in)
 Read the parameter file block.
 
virtual void readParamOptional (std::istream &in)
 Read optional parameter file block.
 
virtual void writeParam (std::ostream &out) const
 Write all parameters to an output stream.
 
virtual void load (Serializable::IArchive &ar)
 Load all parameters from an input archive.
 
virtual void loadOptional (Serializable::IArchive &ar)
 Load an optional ParamComposite.
 
virtual void loadParameters (Serializable::IArchive &ar)
 Load state from archive, without adding Begin and End lines.
 
virtual void save (Serializable::OArchive &ar)
 Saves all parameters to an archive.
 
void saveOptional (Serializable::OArchive &ar)
 Saves isActive flag, and then calls save() iff isActive is true.
 
void readParamComposite (std::istream &in, ParamComposite &child, bool next=true)
 Add and read a required child ParamComposite.
 
void readParamCompositeOptional (std::istream &in, ParamComposite &child, bool next=true)
 Add and attempt to read an optional child ParamComposite.
 
template<typename Type >
ScalarParam< Type > & read (std::istream &in, const char *label, Type &value)
 Add and read a new required ScalarParam < Type > object.
 
template<typename Type >
ScalarParam< Type > & readOptional (std::istream &in, const char *label, Type &value)
 Add and read a new optional ScalarParam < Type > object.
 
template<typename Type >
CArrayParam< Type > & readCArray (std::istream &in, const char *label, Type *value, int n)
 Add and read a required C array parameter.
 
template<typename Type >
CArrayParam< Type > & readOptionalCArray (std::istream &in, const char *label, Type *value, int n)
 Add and read an optional C array parameter.
 
template<typename Type >
DArrayParam< Type > & readDArray (std::istream &in, const char *label, DArray< Type > &array, int n)
 Add and read a required DArray < Type > parameter.
 
template<typename Type >
DArrayParam< Type > & readOptionalDArray (std::istream &in, const char *label, DArray< Type > &array, int n)
 Add and read an optional DArray < Type > parameter.
 
template<typename Type , int N>
FArrayParam< Type, N > & readFArray (std::istream &in, const char *label, FArray< Type, N > &array)
 Add and read a required FArray < Type, N > array parameter.
 
template<typename Type , int N>
FArrayParam< Type, N > & readOptionalFArray (std::istream &in, const char *label, FArray< Type, N > &array)
 Add and read an optional FArray < Type, N > array parameter.
 
template<typename Type , int N>
FSArrayParam< Type, N > & readFSArray (std::istream &in, const char *label, FSArray< Type, N > &array, int size)
 Add and read a required FSArray < Type, N > array parameter.
 
template<typename Type , int N>
FSArrayParam< Type, N > & readOptionalFSArray (std::istream &in, const char *label, FSArray< Type, N > &array, int size)
 Add and read an optional FSArray < Type, N > array parameter.
 
template<typename Type >
CArray2DParam< Type > & readCArray2D (std::istream &in, const char *label, Type *value, int m, int n, int np)
 Add and read a required CArray2DParam < Type > 2D C-array.
 
template<typename Type >
CArray2DParam< Type > & readOptionalCArray2D (std::istream &in, const char *label, Type *value, int m, int n, int np)
 Add and read an optional CArray2DParam < Type > 2D C-array parameter.
 
template<typename Type >
DMatrixParam< Type > & readDMatrix (std::istream &in, const char *label, DMatrix< Type > &matrix, int m, int n)
 Add and read a required DMatrix < Type > matrix parameter.
 
template<typename Type >
DMatrixParam< Type > & readOptionalDMatrix (std::istream &in, const char *label, DMatrix< Type > &matrix, int m, int n)
 Add and read an optional DMatrix < Type > matrix parameter.
 
template<typename Type >
DSymmMatrixParam< Type > & readDSymmMatrix (std::istream &in, const char *label, DMatrix< Type > &matrix, int n)
 Add and read a required symmetrix DMatrix.
 
template<typename Type >
DSymmMatrixParam< Type > & readOptionalDSymmMatrix (std::istream &in, const char *label, DMatrix< Type > &matrix, int n)
 Add and read an optional DMatrix matrix parameter.
 
BeginreadBegin (std::istream &in, const char *label, bool isRequired=true)
 Add and read a class label and opening bracket.
 
EndreadEnd (std::istream &in)
 Add and read the closing bracket.
 
BlankreadBlank (std::istream &in)
 Add and read a new Blank object, representing a blank line.
 
void loadParamComposite (Serializable::IArchive &ar, ParamComposite &child, bool next=true)
 Add and load a required child ParamComposite.
 
void loadParamCompositeOptional (Serializable::IArchive &ar, ParamComposite &child, bool next=true)
 Add and load an optional child ParamComposite if isActive.
 
template<typename Type >
ScalarParam< Type > & loadParameter (Serializable::IArchive &ar, const char *label, Type &value, bool isRequired)
 Add and load a new ScalarParam < Type > object.
 
template<typename Type >
ScalarParam< Type > & loadParameter (Serializable::IArchive &ar, const char *label, Type &value)
 Add and load new required ScalarParam < Type > object.
 
template<typename Type >
CArrayParam< Type > & loadCArray (Serializable::IArchive &ar, const char *label, Type *value, int n, bool isRequired)
 Add a C array parameter and load its elements.
 
template<typename Type >
CArrayParam< Type > & loadCArray (Serializable::IArchive &ar, const char *label, Type *value, int n)
 Add and load a required CArrayParam< Type > array parameter.
 
template<typename Type >
DArrayParam< Type > & loadDArray (Serializable::IArchive &ar, const char *label, DArray< Type > &array, int n, bool isRequired)
 Add an load a DArray < Type > array parameter.
 
template<typename Type >
DArrayParam< Type > & loadDArray (Serializable::IArchive &ar, const char *label, DArray< Type > &array, int n)
 Add and load a required DArray< Type > array parameter.
 
template<typename Type , int N>
FArrayParam< Type, N > & loadFArray (Serializable::IArchive &ar, const char *label, FArray< Type, N > &array, bool isRequired)
 Add and load an FArray < Type, N > fixed-size array parameter.
 
template<typename Type , int N>
FArrayParam< Type, N > & loadFArray (Serializable::IArchive &ar, const char *label, FArray< Type, N > &array)
 Add and load a required FArray < Type > array parameter.
 
template<typename Type , int N>
FSArrayParam< Type, N > & loadFSArray (Serializable::IArchive &ar, const char *label, FSArray< Type, N > &array, int size, bool isRequired)
 Add and load an FSArray < Type, N > array parameter.
 
template<typename Type , int N>
FSArrayParam< Type, N > & loadFSArray (Serializable::IArchive &ar, const char *label, FSArray< Type, N > &array, int size)
 Add and load a required FSArray < Type > array parameter.
 
template<typename Type >
CArray2DParam< Type > & loadCArray2D (Serializable::IArchive &ar, const char *label, Type *value, int m, int n, int np, bool isRequired)
 Add and load a CArray2DParam < Type > C 2D array parameter.
 
template<typename Type >
CArray2DParam< Type > & loadCArray2D (Serializable::IArchive &ar, const char *label, Type *value, int m, int n, int np)
 Add and load a required < Type > matrix parameter.
 
template<typename Type >
DMatrixParam< Type > & loadDMatrix (Serializable::IArchive &ar, const char *label, DMatrix< Type > &matrix, int m, int n, bool isRequired)
 Add and load a DMatrixParam < Type > matrix parameter.
 
template<typename Type >
DMatrixParam< Type > & loadDMatrix (Serializable::IArchive &ar, const char *label, DMatrix< Type > &matrix, int m, int n)
 Add and load a required DMatrixParam < Type > matrix parameter.
 
template<typename Type >
DSymmMatrixParam< Type > & loadDSymmMatrix (Serializable::IArchive &ar, const char *label, DMatrix< Type > &matrix, int n, bool isRequired)
 Add and load a symmetric DSymmMatrixParam < Type > matrix parameter.
 
template<typename Type >
DSymmMatrixParam< Type > & loadDSymmMatrix (Serializable::IArchive &ar, const char *label, DMatrix< Type > &matrix, int n)
 Add and load a required DSymmMatrixParam < Type > matrix parameter.
 
void addParamComposite (ParamComposite &child, bool next=true)
 Add a child ParamComposite object to the format array.
 
BeginaddBegin (const char *label)
 Add a Begin object representing a class name and bracket.
 
EndaddEnd ()
 Add a closing bracket.
 
BlankaddBlank ()
 Create and add a new Blank object, representing a blank line.
 
std::string className () const
 Get class name string.
 
bool isRequired () const
 Is this ParamComposite required in the input file?
 
bool isActive () const
 Is this parameter active?
 
- Public Member Functions inherited from Util::ParamComponent
virtual ~ParamComponent ()
 Destructor.
 
void setIndent (const ParamComponent &parent, bool next=true)
 Set indent level.
 
std::string indent () const
 Return indent string for this object (string of spaces).
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 Serialize this ParamComponent as a string.
 
- Public Member Functions inherited from Util::Serializable
virtual ~Serializable ()
 Destructor.
 
- Public Member Functions inherited from Util::MpiFileIo
 MpiFileIo ()
 Constructor.
 
 MpiFileIo (const MpiFileIo &other)
 Copy constructor.
 
bool isIoProcessor () const
 Can this processor do file I/O ?
 
void setIoCommunicator (MPI::Intracomm &communicator)
 Set the communicator.
 
void clearCommunicator ()
 Clear (nullify) the communicator.
 
bool hasIoCommunicator () const
 Does this object have an associated MPI communicator?
 
MPI::Intracomm & ioCommunicator () const
 Get the MPI communicator by reference.
 

Additional Inherited Members

- Public Types inherited from Util::Serializable
typedef BinaryFileOArchive OArchive
 Type of output archive used by save method.
 
typedef BinaryFileIArchive IArchive
 Type of input archive used by load method.
 
- Static Public Member Functions inherited from Util::ParamComponent
static void initStatic ()
 Initialize static echo member to false.
 
static void setEcho (bool echo=true)
 Enable or disable echoing for all subclasses of ParamComponent.
 
static bool echo ()
 Get echo parameter.
 
- Protected Member Functions inherited from Util::ParamComposite
void setClassName (const char *className)
 Set class name string.
 
void setIsRequired (bool isRequired)
 Set or unset the isActive flag.
 
void setIsActive (bool isActive)
 Set or unset the isActive flag.
 
void setParent (ParamComponent &param, bool next=true)
 Set this to the parent of a child component.
 
void addComponent (ParamComponent &param, bool isLeaf=true)
 Add a new ParamComponent object to the format array.
 
template<typename Type >
ScalarParam< Type > & add (std::istream &in, const char *label, Type &value, bool isRequired=true)
 Add a new required ScalarParam < Type > object.
 
template<typename Type >
CArrayParam< Type > & addCArray (std::istream &in, const char *label, Type *value, int n, bool isRequired=true)
 Add (but do not read) a required C array parameter.
 
template<typename Type >
DArrayParam< Type > & addDArray (std::istream &in, const char *label, DArray< Type > &array, int n, bool isRequired=true)
 Add (but do not read) a DArray < Type > parameter.
 
template<typename Type , int N>
FArrayParam< Type, N > & addFArray (std::istream &in, const char *label, FArray< Type, N > &array, bool isRequired=true)
 Add (but do not read) a FArray < Type, N > array parameter.
 
template<typename Type , int N>
FSArrayParam< Type, N > & addFSArray (std::istream &in, const char *label, FSArray< Type, N > &array, int size, bool isRequired=true)
 Add (but do not read) a FSArray < Type, N > array parameter.
 
template<typename Type >
CArray2DParam< Type > & addCArray2D (std::istream &in, const char *label, Type *value, int m, int n, int np, bool isRequired=true)
 Add (but do not read) a CArray2DParam < Type > 2D C-array.
 
template<typename Type >
DMatrixParam< Type > & addDMatrix (std::istream &in, const char *label, DMatrix< Type > &matrix, int m, int n, bool isRequired=true)
 Add and read a required DMatrix < Type > matrix parameter.
 
- Protected Member Functions inherited from Util::ParamComponent
 ParamComponent ()
 Constructor.
 
 ParamComponent (const ParamComponent &other)
 Copy constructor.
 

Detailed Description

template<int D>
class Pscf::Rpc::Domain< D >

Spatial domain and spatial discretization for a periodic structure.

A Domain has (among other components):

Note: Class names Pscf::Mesh, Prdc::UnitCell, etc. mentioned above are actually all class templates with a template parameter D. Actual class names are Mesh <D>, Prdc::UnitCell <D>, etc. with D=1, 2, or 3.

See also
Manual Page

Definition at line 55 of file rpc/field/Domain.h.

Constructor & Destructor Documentation

◆ Domain()

template<int D>
Pscf::Rpc::Domain< D >::Domain ( )

Constructor.

Definition at line 26 of file rpc/field/Domain.tpp.

References Util::ParamComposite::setClassName().

◆ ~Domain()

template<int D>
Pscf::Rpc::Domain< D >::~Domain ( )

Destructor.

Definition at line 49 of file rpc/field/Domain.tpp.

Member Function Documentation

◆ setFileMaster()

template<int D>
void Pscf::Rpc::Domain< D >::setFileMaster ( FileMaster & fileMaster)

Create association with a FileMaster, needed by FieldIo.

Parameters
fileMasterassociated FileMaster object.

Definition at line 53 of file rpc/field/Domain.tpp.

◆ readParameters()

template<int D>
void Pscf::Rpc::Domain< D >::readParameters ( std::istream & in)
virtual

Read body of parameter block (without opening and closing lines).

Parameters
ininput parameter stream

Reimplemented from Util::ParamComposite.

Definition at line 63 of file rpc/field/Domain.tpp.

References UTIL_CHECK.

◆ readRGridFieldHeader()

template<int D>
void Pscf::Rpc::Domain< D >::readRGridFieldHeader ( std::istream & in,
int & nMonomer )

Read header of an r-grid field file to initialize this Domain.

Useful for unit testing.

Parameters
ininput parameter stream
nMonomernumber of monomers in field file (output)

Definition at line 102 of file rpc/field/Domain.tpp.

References Pscf::Prdc::readFieldHeader(), UTIL_CHECK, and UTIL_THROW.

◆ setUnitCell() [1/3]

template<int D>
void Pscf::Rpc::Domain< D >::setUnitCell ( UnitCell< D > const & unitCell)

Set unit cell.

The lattice system in the unitCell must match any value that was read from the parameter file. This function initializes the basis if a space group exists and the basis was not initialized previously.

Parameters
unitCellnew unit cell

Definition at line 154 of file rpc/field/Domain.tpp.

References UTIL_CHECK.

◆ setUnitCell() [2/3]

template<int D>
void Pscf::Rpc::Domain< D >::setUnitCell ( typename UnitCell< D >::LatticeSystem lattice,
FSArray< double, 6 > const & parameters )

Set unit cell state.

The "lattice" lattice system enumeration match any non-null value that was read from the parameter file. This function initializes the basis if a space group exists and the basis was not initialized previously.

Parameters
latticelattice system
parametersarray of unit cell parameters

Definition at line 173 of file rpc/field/Domain.tpp.

References UTIL_CHECK.

◆ setUnitCell() [3/3]

template<int D>
void Pscf::Rpc::Domain< D >::setUnitCell ( FSArray< double, 6 > const & parameters)

Set unit cell parameters.

The lattice system must already be set to non-null value on entry. This function initializes the basis if a space group exists and the basis was not initialized previously.

Parameters
parametersarray of unit cell parameters

Definition at line 193 of file rpc/field/Domain.tpp.

References Util::FSArray< T, N >::size(), and UTIL_CHECK.

◆ makeBasis()

template<int D>
void Pscf::Rpc::Domain< D >::makeBasis ( )

Construct basis if not done already.

Definition at line 206 of file rpc/field/Domain.tpp.

References UTIL_CHECK.

◆ unitCell() [1/2]

◆ unitCell() [2/2]

template<int D>
UnitCell< D > const & Pscf::Rpc::Domain< D >::unitCell ( ) const
inline

Get UnitCell (i.e., lattice type and parameters) by reference.

Definition at line 297 of file rpc/field/Domain.h.

◆ mesh() [1/2]

template<int D>
Mesh< D > & Pscf::Rpc::Domain< D >::mesh ( )
inline

Get spatial discretization mesh by reference.

Definition at line 302 of file rpc/field/Domain.h.

Referenced by Pscf::Rpc::Simulator< D >::computeHamiltonian().

◆ mesh() [2/2]

template<int D>
Mesh< D > const & Pscf::Rpc::Domain< D >::mesh ( ) const
inline

Get spatial discretization mesh by const reference.

Definition at line 307 of file rpc/field/Domain.h.

◆ group()

template<int D>
SpaceGroup< D > const & Pscf::Rpc::Domain< D >::group ( ) const
inline

Get associated SpaceGroup object by const reference.

Definition at line 312 of file rpc/field/Domain.h.

◆ basis() [1/2]

template<int D>
Basis< D > & Pscf::Rpc::Domain< D >::basis ( )
inline

Get associated Basis object by reference.

Definition at line 317 of file rpc/field/Domain.h.

◆ basis() [2/2]

template<int D>
Basis< D > const & Pscf::Rpc::Domain< D >::basis ( ) const
inline

Get associated Basis object by const reference.

Definition at line 322 of file rpc/field/Domain.h.

◆ fft() [1/2]

template<int D>
FFT< D > & Pscf::Rpc::Domain< D >::fft ( )
inline

Get associated FFT object.

Definition at line 327 of file rpc/field/Domain.h.

◆ fft() [2/2]

template<int D>
FFT< D > const & Pscf::Rpc::Domain< D >::fft ( ) const
inline

Get associated FFT object by const reference.

Definition at line 332 of file rpc/field/Domain.h.

◆ fieldIo() [1/2]

◆ fieldIo() [2/2]

template<int D>
FieldIo< D > const & Pscf::Rpc::Domain< D >::fieldIo ( ) const
inline

Get associated FieldIo object by const reference.

Definition at line 342 of file rpc/field/Domain.h.

◆ lattice()

template<int D>
UnitCell< D >::LatticeSystem Pscf::Rpc::Domain< D >::lattice ( ) const
inline

Get lattice system.

Definition at line 348 of file rpc/field/Domain.h.

◆ groupName()

template<int D>
std::string Pscf::Rpc::Domain< D >::groupName ( ) const
inline

Get group name.

Definition at line 354 of file rpc/field/Domain.h.

◆ hasGroup()

template<int D>
bool Pscf::Rpc::Domain< D >::hasGroup ( ) const
inline

Has a space group been identified?

Definition at line 359 of file rpc/field/Domain.h.

◆ hasBasis()

template<int D>
bool Pscf::Rpc::Domain< D >::hasBasis ( ) const
inline

Has a symmetry-adapted Fourier basis been initialized?

Definition at line 364 of file rpc/field/Domain.h.


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