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

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

#include <WFieldContainer.h>

Inheritance diagram for Pscf::Pspg::WFieldContainer< D >:
Util::ParamComposite Util::ParamComponent Util::Serializable Util::MpiFileIo

Public Member Functions

 WFieldContainer ()
 Constructor. More...
 
 ~WFieldContainer ()
 Destructor. More...
 
void setFieldIo (FieldIo< D > const &fieldIo)
 Create association with FieldIo (store pointer). More...
 
void setNMonomer (int nMonomer)
 Set stored value of nMonomer. More...
 
void allocateRGrid (IntVec< D > const &dimensions)
 Allocate or re-allocate memory for fields in rgrid format. More...
 
void deallocateRGrid ()
 De-allocate fields in rgrid format. More...
 
void allocateBasis (int nBasis)
 Allocate or re-allocate memory for fields in basis format. More...
 
void deallocateBasis ()
 De-allocate fields in basis format. More...
 
void allocate (int nMonomer, int nBasis, IntVec< D > const &dimensions)
 Allocate memory for all fields. More...
 
void setBasis (DArray< DArray< double > > const &fields)
 Set field component values, in symmetrized Fourier format. More...
 
void setRGrid (DArray< RDField< D > > const &fields, bool isSymmetric=false)
 Set fields values in real-space (r-grid) format. More...
 
void setRGrid (DField< cudaReal > &fields)
 Set new w fields, in unfolded real-space (r-grid) format. More...
 
void readBasis (std::istream &in, UnitCell< D > &unitCell)
 Read field component values from input stream, in symmetrized Fourier format. More...
 
void readBasis (std::string filename, UnitCell< D > &unitCell)
 Read field component values from file, in symmetrized Fourier format. More...
 
void readRGrid (std::istream &in, UnitCell< D > &unitCell, bool isSymmetric=false)
 Reads fields from an input stream in real-space (r-grid) format. More...
 
void readRGrid (std::string filename, UnitCell< D > &unitCell, bool isSymmetric=false)
 Reads fields from a file in real-space (r-grid) format. More...
 
void symmetrize ()
 Symmetrize r-grid fields, compute corresponding basis components. More...
 
DArray< DArray< double > > const & basis () const
 Get array of all fields in basis format. More...
 
DArray< double > const & basis (int monomerId) const
 Get the field for one monomer type in basis format. More...
 
DArray< RDField< D > > const & rgrid () const
 Get array of all fields in r-space grid format. More...
 
RDField< D > const & rgrid (int monomerId) const
 Get the field for one monomer type in r-space grid format. More...
 
bool isAllocatedRGrid () const
 Has memory been allocated for fields in r-grid format? More...
 
bool isAllocatedBasis () const
 Has memory been allocated for fields in basis format? More...
 
bool hasData () const
 Has field data been set in either format? More...
 
bool isSymmetric () const
 Are fields symmetric under all elements of the space group? More...
 
- Public Member Functions inherited from Util::ParamComposite
 ParamComposite ()
 Constructor. More...
 
 ParamComposite (const ParamComposite &other)
 Copy constructor. More...
 
 ParamComposite (int capacity)
 Constructor. More...
 
virtual ~ParamComposite ()
 Virtual destructor. More...
 
void resetParam ()
 Resets ParamComposite to its empty state. More...
 
virtual void readParam (std::istream &in)
 Read the parameter file block. More...
 
virtual void readParamOptional (std::istream &in)
 Read optional parameter file block. More...
 
virtual void readParameters (std::istream &in)
 Read the body of parameter block, without begin and end lines. More...
 
virtual void writeParam (std::ostream &out) const
 Write all parameters to an output stream. More...
 
virtual void load (Serializable::IArchive &ar)
 Load all parameters from an input archive. More...
 
virtual void loadOptional (Serializable::IArchive &ar)
 Load an optional ParamComposite. More...
 
virtual void loadParameters (Serializable::IArchive &ar)
 Load state from archive, without adding Begin and End lines. More...
 
virtual void save (Serializable::OArchive &ar)
 Saves all parameters to an archive. More...
 
void saveOptional (Serializable::OArchive &ar)
 Saves isActive flag, and then calls save() iff isActive is true. More...
 
void readParamComposite (std::istream &in, ParamComposite &child, bool next=true)
 Add and read a required child ParamComposite. More...
 
void readParamCompositeOptional (std::istream &in, ParamComposite &child, bool next=true)
 Add and attempt to read an optional child ParamComposite. More...
 
template<typename Type >
ScalarParam< Type > & read (std::istream &in, const char *label, Type &value)
 Add and read a new required ScalarParam < Type > object. More...
 
template<typename Type >
ScalarParam< Type > & readOptional (std::istream &in, const char *label, Type &value)
 Add and read a new optional ScalarParam < Type > object. More...
 
template<typename Type >
CArrayParam< Type > & readCArray (std::istream &in, const char *label, Type *value, int n)
 Add and read a required C array parameter. More...
 
template<typename Type >
CArrayParam< Type > & readOptionalCArray (std::istream &in, const char *label, Type *value, int n)
 Add and read an optional C array parameter. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
template<typename Type >
DSymmMatrixParam< Type > & readDSymmMatrix (std::istream &in, const char *label, DMatrix< Type > &matrix, int n)
 Add and read a required symmetrix DMatrix. More...
 
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. More...
 
BeginreadBegin (std::istream &in, const char *label, bool isRequired=true)
 Add and read a class label and opening bracket. More...
 
EndreadEnd (std::istream &in)
 Add and read the closing bracket. More...
 
BlankreadBlank (std::istream &in)
 Add and read a new Blank object, representing a blank line. More...
 
void loadParamComposite (Serializable::IArchive &ar, ParamComposite &child, bool next=true)
 Add and load a required child ParamComposite. More...
 
void loadParamCompositeOptional (Serializable::IArchive &ar, ParamComposite &child, bool next=true)
 Add and load an optional child ParamComposite if isActive. More...
 
template<typename Type >
ScalarParam< Type > & loadParameter (Serializable::IArchive &ar, const char *label, Type &value, bool isRequired)
 Add and load a new ScalarParam < Type > object. More...
 
template<typename Type >
ScalarParam< Type > & loadParameter (Serializable::IArchive &ar, const char *label, Type &value)
 Add and load new required ScalarParam < Type > object. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void addParamComposite (ParamComposite &child, bool next=true)
 Add a child ParamComposite object to the format array. More...
 
BeginaddBegin (const char *label)
 Add a Begin object representing a class name and bracket. More...
 
EndaddEnd ()
 Add a closing bracket. More...
 
BlankaddBlank ()
 Create and add a new Blank object, representing a blank line. More...
 
std::string className () const
 Get class name string. More...
 
bool isRequired () const
 Is this ParamComposite required in the input file? More...
 
bool isActive () const
 Is this parameter active? More...
 
- Public Member Functions inherited from Util::ParamComponent
virtual ~ParamComponent ()
 Destructor. More...
 
virtual void readParam (std::istream &in)=0
 Read parameter(s) from file. More...
 
virtual void writeParam (std::ostream &out) const =0
 Read parameter(s) to file. More...
 
virtual void load (Serializable::IArchive &ar)
 Load internal state from an archive. More...
 
virtual void save (Serializable::OArchive &ar)
 Save internal state to an archive. More...
 
virtual void resetParam ()
 Nontrivial implementation provided by ParamComposite subclass. More...
 
void setIndent (const ParamComponent &parent, bool next=true)
 Set indent level. More...
 
std::string indent () const
 Return indent string for this object (string of spaces). More...
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 Serialize this ParamComponent as a string. More...
 
- Public Member Functions inherited from Util::Serializable
virtual ~Serializable ()
 Destructor. More...
 
virtual void save (OArchive &ar)=0
 Save to an archive. More...
 
virtual void load (IArchive &ar)=0
 Load from an archive. More...
 
- Public Member Functions inherited from Util::MpiFileIo
 MpiFileIo ()
 Constructor. More...
 
 MpiFileIo (const MpiFileIo &other)
 Copy constructor. More...
 
bool isIoProcessor () const
 Can this processor do file I/O ? More...
 
void setIoCommunicator (MPI::Intracomm &communicator)
 Set the communicator. More...
 
void clearCommunicator ()
 Clear (nullify) the communicator. More...
 
bool hasIoCommunicator () const
 Does this object have an associated MPI communicator? More...
 
MPI::Intracomm & ioCommunicator () const
 Get the MPI communicator by reference. More...
 

Additional Inherited Members

- Public Types inherited from Util::Serializable
typedef BinaryFileOArchive OArchive
 Type of output archive used by save method. More...
 
typedef BinaryFileIArchive IArchive
 Type of input archive used by load method. More...
 
- Static Public Member Functions inherited from Util::ParamComponent
static void initStatic ()
 Initialize static echo member to false. More...
 
static void setEcho (bool echo=true)
 Enable or disable echoing for all subclasses of ParamComponent. More...
 
static bool echo ()
 Get echo parameter. More...
 
- Protected Member Functions inherited from Util::ParamComposite
void setClassName (const char *className)
 Set class name string. More...
 
void setIsRequired (bool isRequired)
 Set or unset the isActive flag. More...
 
void setIsActive (bool isActive)
 Set or unset the isActive flag. More...
 
void setParent (ParamComponent &param, bool next=true)
 Set this to the parent of a child component. More...
 
void addComponent (ParamComponent &param, bool isLeaf=true)
 Add a new ParamComponent object to the format array. More...
 
template<typename Type >
ScalarParam< Type > & add (std::istream &in, const char *label, Type &value, bool isRequired=true)
 Add a new required ScalarParam < Type > object. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
- Protected Member Functions inherited from Util::ParamComponent
 ParamComponent ()
 Constructor. More...
 
 ParamComponent (const ParamComponent &other)
 Copy constructor. More...
 

Detailed Description

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

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

A WFieldContainer<D> contains representations of a list of nMonomer fields that are associated with different monomer types in two different related formats:

A WFieldContainer is designed to automatically update one of these representations when the other is modified, when appropriate. A pointer to an associated FieldIo<D> is used for these conversions. The setBasis function allows the user to input new components in basis format and internally recomputes the values in r-grid format. The setRgrid function allows the user to reset the fields in r-grid format, but recomputes the components in basis format if and only if the user declares that the fields are known to be invariant under all symmetries of the space group. A boolean flag named isSymmetric is used to keep track of whether the current field is symmetric, and thus whether the basis format exists.

Definition at line 58 of file pspg/field/WFieldContainer.h.

Constructor & Destructor Documentation

◆ WFieldContainer()

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

Constructor.

Definition at line 24 of file pspg/field/WFieldContainer.tpp.

◆ ~WFieldContainer()

Destructor.

Definition at line 42 of file pspg/field/WFieldContainer.tpp.

Member Function Documentation

◆ setFieldIo()

template<int D>
void Pscf::Pspg::WFieldContainer< D >::setFieldIo ( FieldIo< D > const &  fieldIo)

Create association with FieldIo (store pointer).

Definition at line 49 of file pspg/field/WFieldContainer.tpp.

◆ setNMonomer()

template<int D>
void Pscf::Pspg::WFieldContainer< D >::setNMonomer ( int  nMonomer)

Set stored value of nMonomer.

May only be called once.

Parameters
nMonomernumber of monomer types.

Definition at line 56 of file pspg/field/WFieldContainer.tpp.

References UTIL_CHECK.

◆ allocateRGrid()

template<int D>
void Pscf::Pspg::WFieldContainer< D >::allocateRGrid ( IntVec< D > const &  dimensions)

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

Parameters
dimensionsdimensions of spatial mesh

Definition at line 68 of file pspg/field/WFieldContainer.tpp.

References UTIL_CHECK.

◆ deallocateRGrid()

template<int D>
void Pscf::Pspg::WFieldContainer< D >::deallocateRGrid

De-allocate fields in rgrid format.

Definition at line 98 of file pspg/field/WFieldContainer.tpp.

References UTIL_CHECK.

◆ allocateBasis()

template<int D>
void Pscf::Pspg::WFieldContainer< D >::allocateBasis ( int  nBasis)

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

Parameters
nBasisnumber of basis functions

Definition at line 115 of file pspg/field/WFieldContainer.tpp.

References UTIL_CHECK.

◆ deallocateBasis()

template<int D>
void Pscf::Pspg::WFieldContainer< D >::deallocateBasis

De-allocate fields in basis format.

Definition at line 139 of file pspg/field/WFieldContainer.tpp.

References UTIL_CHECK.

◆ allocate()

template<int D>
void Pscf::Pspg::WFieldContainer< D >::allocate ( int  nMonomer,
int  nBasis,
IntVec< D > const &  dimensions 
)

Allocate memory for all fields.

This function may only be called once.

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

Definition at line 155 of file pspg/field/WFieldContainer.tpp.

◆ setBasis()

template<int D>
void Pscf::Pspg::WFieldContainer< D >::setBasis ( DArray< DArray< double > > const &  fields)

Set field component values, in symmetrized Fourier format.

This function also computes and stores the corresponding r-grid representation. On return, hasData and isSymmetric are both true.

Parameters
fieldsarray of new fields in basis format

Definition at line 168 of file pspg/field/WFieldContainer.tpp.

References Util::Array< Data >::capacity(), and UTIL_CHECK.

◆ setRGrid() [1/2]

template<int D>
void Pscf::Pspg::WFieldContainer< D >::setRGrid ( DArray< RDField< D > > const &  fields,
bool  isSymmetric = false 
)

Set fields values in real-space (r-grid) format.

If the isSymmetric parameter is true, this function assumes that the fields are known to be symmetric and so computes and stores the corresponding basis components. If isSymmetric is false, it only sets the values in the r-grid format.

On return, hasData is true and the persistent isSymmetric flag defined by the class is set to the value of the isSymmetric input parameter.

Parameters
fieldsarray of new fields in r-grid format
isSymmetricis this field symmetric under the space group?

Definition at line 195 of file pspg/field/WFieldContainer.tpp.

References UTIL_CHECK.

◆ setRGrid() [2/2]

template<int D>
void Pscf::Pspg::WFieldContainer< D >::setRGrid ( DField< cudaReal > &  fields)

Set new w fields, in unfolded real-space (r-grid) format.

The array fields is an unfolded array that contains fields for all monomer types, with the field for monomer 0 first, etc.

Parameters
fieldsunfolded array of new w (chemical potential) fields

Definition at line 219 of file pspg/field/WFieldContainer.tpp.

References Pscf::Pspg::DField< Data >::cDField(), Pscf::Pspg::ThreadGrid::setThreadsLogical(), and UTIL_CHECK.

◆ readBasis() [1/2]

template<int D>
void Pscf::Pspg::WFieldContainer< D >::readBasis ( std::istream &  in,
UnitCell< D > &  unitCell 
)

Read field component values from input stream, in symmetrized Fourier format.

This function also computes and stores the corresponding r-grid representation. On return, hasData and isSymmetric are both true.

This object must already be allocated and associated with a FieldIo object to run this function.

Parameters
ininput stream from which to read fields
unitCellassociated crystallographic unit cell

Definition at line 246 of file pspg/field/WFieldContainer.tpp.

References UTIL_CHECK.

◆ readBasis() [2/2]

template<int D>
void Pscf::Pspg::WFieldContainer< D >::readBasis ( std::string  filename,
UnitCell< D > &  unitCell 
)

Read field component values from file, in symmetrized Fourier format.

This function also computes and stores the corresponding r-grid representation. On return, hasData and isSymmetric are both true.

This object must already be allocated and associated with a FieldIo object to run this function.

Parameters
filenamefile from which to read fields
unitCellassociated crystallographic unit cell

Definition at line 268 of file pspg/field/WFieldContainer.tpp.

References UTIL_CHECK.

◆ readRGrid() [1/2]

template<int D>
void Pscf::Pspg::WFieldContainer< D >::readRGrid ( std::istream &  in,
UnitCell< D > &  unitCell,
bool  isSymmetric = false 
)

Reads fields from an input stream in real-space (r-grid) format.

If the isSymmetric parameter is true, this function assumes that the fields are known to be symmetric and so computes and stores the corresponding basis components. If isSymmetric is false, it only sets the values in the r-grid format.

On return, hasData is true and the persistent isSymmetric flag defined by the class is set to the value of the isSymmetric input parameter.

This object must already be allocated and associated with a FieldIo object to run this function.

Parameters
ininput stream from which to read fields
unitCellassociated crystallographic unit cell
isSymmetricis this field symmetric under the space group?

Definition at line 294 of file pspg/field/WFieldContainer.tpp.

References UTIL_CHECK.

◆ readRGrid() [2/2]

template<int D>
void Pscf::Pspg::WFieldContainer< D >::readRGrid ( std::string  filename,
UnitCell< D > &  unitCell,
bool  isSymmetric = false 
)

Reads fields from a file in real-space (r-grid) format.

If the isSymmetric parameter is true, this function assumes that the fields are known to be symmetric and so computes and stores the corresponding basis components. If isSymmetric is false, it only sets the values in the r-grid format.

On return, hasData is true and the persistent isSymmetric flag defined by the class is set to the value of the isSymmetric input parameter.

This object must already be allocated and associated with a FieldIo object to run this function.

Parameters
filenamefile from which to read fields
unitCellassociated crystallographic unit cell
isSymmetricis this field symmetric under the space group?

Definition at line 322 of file pspg/field/WFieldContainer.tpp.

References UTIL_CHECK.

◆ symmetrize()

template<int D>
void Pscf::Pspg::WFieldContainer< D >::symmetrize

Symmetrize r-grid fields, compute corresponding basis components.

This function may be used after setting or reading w fields in r-grid format that are known to be symmetric under the space group to remove small deviations from symmetry and generate basis components.

The function symmetrizes the fields by converting from r-grid to basis format and then back again, while also storing the resulting basis components and setting isSymmetric() true.

This function assumes that the current wFieldsRGrid fields are known by the user to be symmetric, and does NOT check this. Applying this function to fields that are not symmetric will silently corrupt the fields.

On entry, hasData() must be true and isSymmetric() must be false. On exit, isSymmetric() is true.

Definition at line 341 of file pspg/field/WFieldContainer.tpp.

References UTIL_CHECK.

◆ basis() [1/2]

template<int D>
DArray< DArray< double > > const & Pscf::Pspg::WFieldContainer< D >::basis
inline

Get array of all fields in basis format.

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

Definition at line 392 of file pspg/field/WFieldContainer.h.

◆ basis() [2/2]

template<int D>
DArray< double > const & Pscf::Pspg::WFieldContainer< D >::basis ( int  monomerId) const
inline

Get the field for one monomer type in basis format.

An Exception is thrown if isSymmetric is false.

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

Definition at line 398 of file pspg/field/WFieldContainer.h.

◆ rgrid() [1/2]

template<int D>
DArray< RDField< D > > const & Pscf::Pspg::WFieldContainer< D >::rgrid
inline

Get array of all fields in r-space grid format.

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

Definition at line 405 of file pspg/field/WFieldContainer.h.

◆ rgrid() [2/2]

template<int D>
RDField< D > const & Pscf::Pspg::WFieldContainer< D >::rgrid ( int  monomerId) const
inline

Get the field for one monomer type in r-space grid format.

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

Definition at line 411 of file pspg/field/WFieldContainer.h.

◆ isAllocatedRGrid()

template<int D>
bool Pscf::Pspg::WFieldContainer< D >::isAllocatedRGrid
inline

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

Definition at line 416 of file pspg/field/WFieldContainer.h.

◆ isAllocatedBasis()

template<int D>
bool Pscf::Pspg::WFieldContainer< D >::isAllocatedBasis
inline

Has memory been allocated for fields in basis format?

Definition at line 421 of file pspg/field/WFieldContainer.h.

◆ hasData()

template<int D>
bool Pscf::Pspg::WFieldContainer< D >::hasData
inline

Has field data been set in either format?

This flag is set true in setBasis and setRGrid.

Definition at line 426 of file pspg/field/WFieldContainer.h.

◆ isSymmetric()

template<int D>
bool Pscf::Pspg::WFieldContainer< D >::isSymmetric
inline

Are fields symmetric under all elements of the space group?

A valid basis format exists if and only if isSymmetric is true. This flat is set true if the fields were input in basis format by the function setBasis, or if they were set in grid format by the function setRGrid but isSymmetric was set true.

Definition at line 431 of file pspg/field/WFieldContainer.h.


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