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

A field to which the total density is constrained. More...

#include <Mask.h>

Inheritance diagram for Pscf::Pspc::Mask< D >:
Util::ParamComposite Util::ParamComponent Util::Serializable Util::MpiFileIo

Public Member Functions

 Mask ()
 Constructor. More...
 
 ~Mask ()
 Destructor. More...
 
void setFieldIo (FieldIo< D > const &fieldIo)
 Create association with FieldIo (store pointer). More...
 
void allocate (int nBasis, IntVec< D > const &dimensions)
 Allocate memory for the field. More...
 
void setBasis (DArray< double > const &field)
 Set field component values, in symmetrized Fourier format. More...
 
void setRGrid (RField< D > const &field, bool isSymmetric=false)
 Set field values in real-space (r-grid) format. More...
 
void readBasis (std::istream &in, UnitCell< D > &unitCell)
 Read field from input stream in symmetrized Fourier format. More...
 
void readBasis (std::string filename, UnitCell< D > &unitCell)
 Read field from file in symmetrized Fourier format. More...
 
void readRGrid (std::istream &in, UnitCell< D > &unitCell, bool isSymmetric=false)
 Reads field from an input stream in real-space (r-grid) format. More...
 
void readRGrid (std::string filename, UnitCell< D > &unitCell, bool isSymmetric=false)
 Reads field from a file in real-space (r-grid) format. More...
 
DArray< double > const & basis () const
 Get the field in basis format. More...
 
RField< D > const & rgrid () const
 Get array of all field in r-space grid format. More...
 
double phiTot () const
 Volume fraction of the unit cell occupied by the polymers/solvents. More...
 
bool isAllocated () const
 Has memory been allocated? More...
 
bool hasData () const
 Has field data been set in either format? More...
 
bool isSymmetric () const
 Are field 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::Pspc::Mask< D >

A field to which the total density is constrained.

A Mask<D> contains representations of a single field in two formats:

A Mask 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 field in r-grid format, but recomputes the components in basis format if and only if the user declares that the field 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 55 of file Mask.h.

Constructor & Destructor Documentation

◆ Mask()

template<int D>
Pscf::Pspc::Mask< D >::Mask

Constructor.

Definition at line 25 of file Mask.tpp.

◆ ~Mask()

template<int D>
Pscf::Pspc::Mask< D >::~Mask

Destructor.

Definition at line 41 of file Mask.tpp.

Member Function Documentation

◆ setFieldIo()

template<int D>
void Pscf::Pspc::Mask< D >::setFieldIo ( FieldIo< D > const &  fieldIo)

Create association with FieldIo (store pointer).

Definition at line 48 of file Mask.tpp.

◆ allocate()

template<int D>
void Pscf::Pspc::Mask< D >::allocate ( int  nBasis,
IntVec< D > const &  dimensions 
)

Allocate memory for the field.

A Mask<D> may only be allocated once. An Exception will be thrown if this function is called more than once.

Parameters
nBasisnumber of basis functions
dimensionsdimensions of spatial mesh

Definition at line 55 of file Mask.tpp.

References UTIL_CHECK.

◆ setBasis()

template<int D>
void Pscf::Pspc::Mask< D >::setBasis ( DArray< double > const &  field)

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
fieldcomponents of field in basis format

Definition at line 78 of file Mask.tpp.

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

◆ setRGrid()

template<int D>
void Pscf::Pspc::Mask< D >::setRGrid ( RField< D > const &  field,
bool  isSymmetric = false 
)

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

If the isSymmetric parameter is true, this function assumes that the field 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
fieldnew field in r-grid format
isSymmetricis this field symmetric under the space group?

Definition at line 93 of file Mask.tpp.

◆ readBasis() [1/2]

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

Read field 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 field
unitCellassociated crystallographic unit cell

Definition at line 114 of file Mask.tpp.

◆ readBasis() [2/2]

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

Read field 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 field
unitCellassociated crystallographic unit cell

Definition at line 133 of file Mask.tpp.

◆ readRGrid() [1/2]

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

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

If the isSymmetric parameter is true, this function assumes that the field is known to be symmetric and so computes and stores the corresponding basis format. 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 field
unitCellassociated crystallographic unit cell
isSymmetricis this field symmetric under the space group?

Definition at line 157 of file Mask.tpp.

◆ readRGrid() [2/2]

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

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

If the isSymmetric parameter is true, this function assumes that the field is known to be symmetric and so computes and stores the corresponding basis format. 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 field
unitCellassociated crystallographic unit cell
isSymmetricis this field symmetric under the space group?

Definition at line 183 of file Mask.tpp.

◆ basis()

template<int D>
DArray< double > const & Pscf::Pspc::Mask< D >::basis
inline

Get the field in basis format.

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

Definition at line 302 of file Mask.h.

References UTIL_ASSERT.

◆ rgrid()

template<int D>
RField< D > const & Pscf::Pspc::Mask< D >::rgrid
inline

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

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

Definition at line 312 of file Mask.h.

References UTIL_ASSERT.

◆ phiTot()

template<int D>
double Pscf::Pspc::Mask< D >::phiTot

Volume fraction of the unit cell occupied by the polymers/solvents.

This value is equivalent to the spatial average of the mask, which is the q=0 coefficient of the discrete Fourier transform.

If hasData_ = true and isSymmetric_ = false (data only exists in rgrid format), then this object must be associated with a FieldIo object in order to call phiTot(). In other cases, the FieldIo association is not necessary.

Definition at line 201 of file Mask.tpp.

References Pscf::Pspc::RFieldDft< D >::allocate(), and UTIL_CHECK.

◆ isAllocated()

template<int D>
bool Pscf::Pspc::Mask< D >::isAllocated
inline

Has memory been allocated?

Definition at line 320 of file Mask.h.

◆ hasData()

template<int D>
bool Pscf::Pspc::Mask< D >::hasData
inline

Has field data been set in either format?

This flag is set true in setBasis and setRGrid.

Definition at line 325 of file Mask.h.

◆ isSymmetric()

template<int D>
bool Pscf::Pspc::Mask< D >::isSymmetric
inline

Are field 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 field 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 330 of file Mask.h.


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