PSCF v1.1
Namespaces | Classes | Functions
Pscf Namespace Reference

C++ namespace for polymer self-consistent field theory (PSCF). More...

Namespaces

namespace  Fd1d
 Finite-different one-dimensional SCFT.
 
namespace  Homogeneous
 Properties of spatially homogeneous mixtures (Flory-Huggins theory).
 
namespace  Pspc
 Pseudo-spectral SCFT for periodic boundary conditions.
 
namespace  Pspg
 Classes for pseudo-spectral algorithm for periodic boundary conditions.
 

Classes

class  AmbdInteraction
 Modified interaction to compute residual defn. More...
 
class  AmIteratorTmpl
 Template for Anderson mixing iterator algorithm. More...
 
class  Basis
 Symmetry-adapted Fourier basis for pseudo-spectral scft. More...
 
class  BFieldComparison
 Comparator for fields in symmetry-adapted basis format. More...
 
class  BlockDescriptor
 Description of a linear homopolymer block within a block polymer. More...
 
class  BlockTmpl
 Class template for a block in a block copolymer. More...
 
class  Field
 Base class template for a field defined on a spatial grid. More...
 
class  FieldComparison
 Comparison of element-by-element differences between field arrays. More...
 
class  Interaction
 Flory-Huggins excess free energy model. More...
 
class  IntVec
 An IntVec<D, T> is a D-component vector of elements of integer type T. More...
 
class  LuSolver
 Solve Ax=b by LU decomposition of A. More...
 
class  Mesh
 Description of a regular grid of points in a periodic domain. More...
 
class  MeshIterator
 Iterator over points in a Mesh<D>. More...
 
class  MixtureTmpl
 A mixture of polymer and solvent species. More...
 
class  Monomer
 Descriptor for a monomer or particle type. More...
 
class  NanException
 Exception thrown when not-a-number (NaN) is encountered. More...
 
class  PolymerTmpl
 Descriptor and MDE solver for an acyclic block polymer. More...
 
struct  PolymerType
 Struct containing an enumeration of polymer structure types. More...
 
class  PropagatorTmpl
 Template for propagator classes. More...
 
class  RealVec
 A RealVec<D, T> is D-component vector with elements of floating type T. More...
 
class  SolventDescriptor
 Descriptor for a solvent species. More...
 
class  SpaceGroup
 Crystallographic space group. More...
 
class  SpaceSymmetry
 A SpaceSymmetry represents a crystallographic space group symmetry. More...
 
class  Species
 Base class for a molecular species (polymer or solvent). More...
 
class  SweepTmpl
 Solve a sequence of problems along a path through parameter space. More...
 
class  SymmetryGroup
 Class template for a group of elements. More...
 
class  TridiagonalSolver
 Solver for Ax=b with tridiagonal matrix A. More...
 
struct  TWave
 Simple wave struct for use within Basis construction. More...
 
struct  TWaveBzComp
 Comparator for TWave objects, based on TWave::indicesBz. More...
 
struct  TWaveDftComp
 Comparator for TWave objects, based on TWave::indicesDft. More...
 
struct  TWaveNormComp
 Comparator for TWave objects, based on TWave::sqNorm. More...
 
class  UnitCell
 Base template for UnitCell<D> classes, D=1, 2 or 3. More...
 
class  UnitCell< 1 >
 1D crystal unit cell. More...
 
class  UnitCell< 2 >
 2D crystal unit cell. More...
 
class  UnitCell< 3 >
 3D crystal unit cell. More...
 
class  UnitCellBase
 Base class template for a crystallographic unit cell. More...
 
class  Vec
 A Vec<D, T><D,T> is a D-component vector with elements of type T. More...
 
class  Vertex
 A junction or chain end in a block polymer. More...
 

Functions

std::istream & operator>> (std::istream &in, BlockDescriptor &block)
 istream extractor for a BlockDescriptor. More...
 
std::ostream & operator<< (std::ostream &out, const BlockDescriptor &block)
 ostream inserter for a BlockDescriptor. More...
 
std::istream & operator>> (std::istream &in, Monomer &monomer)
 istream extractor for a Monomer. More...
 
std::ostream & operator<< (std::ostream &out, const Monomer &monomer)
 ostream inserter for a Monomer. More...
 
std::istream & operator>> (std::istream &in, PolymerType::Enum &type)
 Input stream extractor for a PolymerType::Enum enumeration. More...
 
std::ostream & operator<< (std::ostream &out, PolymerType::Enum &type)
 Input stream extractor for a PolymerType::Enum enumeration. More...
 
template<class Archive >
void serialize (Archive &ar, PolymerType::Enum &data, const unsigned int version)
 Serialize a PolymerType::Enum enumeration. More...
 
std::istream & operator>> (std::istream &in, Species::Ensemble &policy)
 istream extractor for a Species::Ensemble. More...
 
std::ostream & operator<< (std::ostream &out, Species::Ensemble policy)
 ostream inserter for an Species::Ensemble. More...
 
template<class Archive >
void serialize (Archive &ar, Species::Ensemble &policy, const unsigned int version)
 Serialize a Species::Ensemble. More...
 
std::string makeGroupFileName (int D, std::string groupName)
 Generates the file name from a group name. More...
 
template<int D>
IntVec< D > shiftToMinimum (IntVec< D > &v, IntVec< D > d, UnitCell< D > const &cell)
 Returns minimum magnitude image of DFT wavevector. More...
 
template<int D>
std::ostream & operator<< (std::ostream &out, SpaceGroup< D > const &g)
 Output stream inserter operator for a SpaceGroup<D>. More...
 
template<int D>
std::istream & operator>> (std::istream &in, SpaceGroup< D > &g)
 Input stream extractor operator for a SpaceGroup<D>. More...
 
template<int D>
void readGroup (std::string groupName, SpaceGroup< D > &group)
 Open and read a group file. More...
 
template<int D>
void writeGroup (std::string filename, SpaceGroup< D > const &group)
 Open and write a group file. More...
 
template<int D>
bool operator== (const SpaceSymmetry< D > &A, const SpaceSymmetry< D > &B)
 Are two SpaceSymmetry objects equivalent? More...
 
template<int D>
bool operator!= (const SpaceSymmetry< D > &A, const SpaceSymmetry< D > &B)
 Are two SpaceSymmetry objects not equivalent? More...
 
template<int D>
SpaceSymmetry< D > operator* (const SpaceSymmetry< D > &A, const SpaceSymmetry< D > &B)
 Return the product A*B of two symmetry objects. More...
 
template<int D>
IntVec< D > operator* (const SpaceSymmetry< D > &S, const IntVec< D > &V)
 Return the IntVec<D> product S*V of a rotation matrix and an IntVec<D>. More...
 
template<int D>
IntVec< D > operator* (const IntVec< D > &V, const SpaceSymmetry< D > &S)
 Return the IntVec<D> product V*S of an IntVec<D> and a rotation matrix. More...
 
template<int D>
std::ostream & operator<< (std::ostream &out, const SpaceSymmetry< D > &A)
 Output stream inserter for a SpaceSymmetry<D> More...
 
template<int D>
std::istream & operator>> (std::istream &in, SpaceSymmetry< D > &A)
 Input stream extractor for a SpaceSymmetry<D> More...
 
template<int D>
std::istream & operator>> (std::istream &in, UnitCell< D > &cell)
 istream input extractor for a UnitCell<D>. More...
 
template<int D>
std::ostream & operator<< (std::ostream &out, UnitCell< D > const &cell)
 ostream output inserter for a UnitCell<D>. More...
 
template<class Archive , int D>
void serialize (Archive &ar, UnitCell< D > &cell, const unsigned int version)
 Serialize to/from an archive. More...
 
template<int D>
void readUnitCellHeader (std::istream &in, UnitCell< D > &cell)
 Read UnitCell<D> from a field file header (fortran PSCF format). More...
 
template<int D>
void writeUnitCellHeader (std::ostream &out, UnitCell< D > const &cell)
 Write UnitCell<D> to a field file header (fortran PSCF format). More...
 
std::istream & operator>> (std::istream &in, UnitCell< 1 >::LatticeSystem &lattice)
 istream extractor for a 1D UnitCell<1>::LatticeSystem. More...
 
std::ostream & operator<< (std::ostream &out, UnitCell< 1 >::LatticeSystem lattice)
 ostream inserter for a 1D UnitCell<1>::LatticeSystem. More...
 
template<class Archive >
void serialize (Archive &ar, UnitCell< 1 >::LatticeSystem &lattice, const unsigned int version)
 Serialize a UnitCell<1>::LatticeSystem enumeration value. More...
 
std::istream & operator>> (std::istream &in, UnitCell< 2 >::LatticeSystem &lattice)
 istream extractor for a 2D UnitCell<2>::LatticeSystem. More...
 
std::ostream & operator<< (std::ostream &out, UnitCell< 2 >::LatticeSystem lattice)
 ostream inserter for a 2D UnitCell<2>::LatticeSystem. More...
 
template<class Archive >
void serialize (Archive &ar, UnitCell< 2 >::LatticeSystem &lattice, const unsigned int version)
 Serialize a UnitCell<2>::LatticeSystem enumeration value. More...
 
std::istream & operator>> (std::istream &in, UnitCell< 3 >::LatticeSystem &lattice)
 istream extractor for a 3D UnitCell<3>::LatticeSystem. More...
 
std::ostream & operator<< (std::ostream &out, UnitCell< 3 >::LatticeSystem lattice)
 ostream inserter for an 3D UnitCell<3>::LatticeSystem. More...
 
template<class Archive >
void serialize (Archive &ar, UnitCell< 3 >::LatticeSystem &lattice, const unsigned int version)
 Serialize a UnitCell<3>::LatticeSystem enumeration value. More...
 
template<int D, typename T >
std::istream & operator>> (std::istream &in, IntVec< D, T > &vector)
 istream extractor for a IntVec<D, T>. More...
 
template<int D, typename T >
std::ostream & operator<< (std::ostream &out, const IntVec< D, T > &vector)
 ostream inserter for a IntVec<D, T>. More...
 
template<int D, typename T >
bool operator== (const IntVec< D, T > &v1, const IntVec< D, T > &v2)
 Equality of two IntVec<D> objects. More...
 
template<int D, typename T >
bool operator== (const IntVec< D, T > &v1, const Vec< D, T > &v2)
 Equality of an IntVec<D> and a Vec<D, T> More...
 
template<int D, typename T >
bool operator== (const Vec< D, T > &v1, const IntVec< D, T > &v2)
 Equality of an Vec<D, T> and an IntVec<D, T> More...
 
template<int D, typename T >
bool operator!= (const IntVec< D, T > &v1, const IntVec< D, T > &v2)
 Inequality of two IntVec<D, T> objects. More...
 
template<int D, typename T >
bool operator!= (const IntVec< D, T > &v1, const Vec< D, T > &v2)
 Inequality of an IntVec<D> and a Vec<D, T> More...
 
template<int D, typename T >
bool operator!= (const Vec< D, T > &v1, const IntVec< D, T > &v2)
 Inequality of a Vec<D, T> and an IntVec<D, T> More...
 
template<int D, typename T >
bool operator< (const IntVec< D, T > &v1, const IntVec< D, T > &v2)
 Less than comparison for two IntVec<D, T>s. More...
 
template<int D, typename T >
bool operator<= (const IntVec< D, T > &v1, const IntVec< D, T > &v2)
 Less than or equal to comparison for two IntVec<D, T>s. More...
 
template<int D, typename T >
bool operator> (const IntVec< D, T > &v1, const IntVec< D, T > &v2)
 Greater than comparison for two IntVec<D, T>s. More...
 
template<int D, typename T >
bool operator>= (const IntVec< D, T > &v1, const IntVec< D, T > &v2)
 Greater than or equal to comparison for two IntVec<D, T>s. More...
 
template<int D, typename T >
std::istream & operator>> (std::istream &in, RealVec< D, T > &vector)
 istream extractor for a RealVec<D, T>. More...
 
template<int D, typename T >
std::ostream & operator<< (std::ostream &out, const RealVec< D, T > &vector)
 ostream inserter for a RealVec<D, T>. More...
 
template<int D, typename T >
dot (Vec< D, T > const &v1, Vec< D, T > const &v2)
 Return dot product of two vectors. More...
 
template<int D, typename T >
Vec< D, T > operator+ (Vec< D, T > const &v1, Vec< D, T > const &v2)
 Return the sum of two vectors. More...
 
template<int D>
std::istream & operator>> (std::istream &in, Mesh< D > &mesh)
 Input stream extractor for reading a Mesh<D> object. More...
 
template<int D>
std::ostream & operator<< (std::ostream &out, Mesh< D > const &mesh)
 Output stream inserter for writing a Mesh<D> object. More...
 

Detailed Description

C++ namespace for polymer self-consistent field theory (PSCF).

Function Documentation

◆ operator>>() [1/7]

std::istream & Pscf::operator>> ( std::istream &  in,
BlockDescriptor block 
)

istream extractor for a BlockDescriptor.

Parameters
ininput stream
blockBlockDescriptor to be read from stream
Returns
modified input stream

Definition at line 70 of file BlockDescriptor.cpp.

◆ operator<<() [1/8]

std::ostream & Pscf::operator<< ( std::ostream &  out,
const BlockDescriptor block 
)

ostream inserter for a BlockDescriptor.

Parameters
outoutput stream
blockBlockDescriptor to be written to stream
Returns
modified output stream

Definition at line 84 of file BlockDescriptor.cpp.

◆ operator>>() [2/7]

std::istream & Pscf::operator>> ( std::istream &  in,
Monomer monomer 
)

istream extractor for a Monomer.

Parameters
ininput stream
monomerMonomer to be read from stream
Returns
modified input stream

Definition at line 24 of file Monomer.cpp.

◆ operator<<() [2/8]

std::ostream & Pscf::operator<< ( std::ostream &  out,
const Monomer monomer 
)

ostream inserter for a Monomer.

Parameters
outoutput stream
monomerMonomer to be written to stream
Returns
modified output stream

Definition at line 34 of file Monomer.cpp.

◆ operator>>() [3/7]

std::istream & Pscf::operator>> ( std::istream &  in,
PolymerType::Enum &  type 
)

Input stream extractor for a PolymerType::Enum enumeration.

Parameters
ininput stream
typevalue of PolymerType to be read from file

Definition at line 20 of file PolymerType.cpp.

References UTIL_THROW.

◆ operator<<() [3/8]

std::ostream & Pscf::operator<< ( std::ostream &  out,
PolymerType::Enum &  type 
)

Input stream extractor for a PolymerType::Enum enumeration.

Parameters
outoutput stream
typevalue of PolymerType to be written

Definition at line 40 of file PolymerType.cpp.

References UTIL_THROW.

◆ serialize() [1/5]

template<class Archive >
void Pscf::serialize ( Archive &  ar,
PolymerType::Enum &  data,
const unsigned int  version 
)
inline

Serialize a PolymerType::Enum enumeration.

Parameters
ararchive
dataenumeration data to be serialized
versionversion id

Definition at line 56 of file PolymerType.h.

References Util::serializeEnum().

◆ operator>>() [4/7]

std::istream & Pscf::operator>> ( std::istream &  in,
Species::Ensemble policy 
)

istream extractor for a Species::Ensemble.

Parameters
ininput stream
policySpecies::Ensemble to be read
Returns
modified input stream

Definition at line 22 of file Species.cpp.

References UTIL_THROW.

◆ operator<<() [4/8]

std::ostream & Pscf::operator<< ( std::ostream &  out,
Species::Ensemble  policy 
)

ostream inserter for an Species::Ensemble.

Parameters
outoutput stream
policySpecies::Ensemble to be written
Returns
modified output stream

Definition at line 40 of file Species.cpp.

References UTIL_THROW.

◆ serialize() [2/5]

template<class Archive >
void Pscf::serialize ( Archive &  ar,
Species::Ensemble policy,
const unsigned int  version 
)

Serialize a Species::Ensemble.

Parameters
ararchive object
policyobject to be serialized
versionarchive version id

Definition at line 131 of file Species.h.

References Util::serializeEnum().

◆ serialize() [3/5]

template<class Archive >
void Pscf::serialize ( Archive &  ar,
UnitCell< 1 >::LatticeSystem &  lattice,
const unsigned int  version 
)
inline

Serialize a UnitCell<1>::LatticeSystem enumeration value.

Parameters
ararchive
latticeenumeration data to be serialized
versionversion id

Definition at line 261 of file UnitCell.h.

References Util::serializeEnum().

◆ operator<<() [5/8]

std::ostream & Pscf::operator<< ( std::ostream &  out,
UnitCell< 2 >::LatticeSystem  lattice 
)

ostream inserter for a 2D UnitCell<2>::LatticeSystem.

Parameters
outoutput stream
latticeUnitCell<2>::LatticeSystem to be written
Returns
modified output stream

Definition at line 186 of file UnitCell2.cpp.

References UTIL_THROW.

◆ serialize() [4/5]

template<class Archive >
void Pscf::serialize ( Archive &  ar,
UnitCell< 2 >::LatticeSystem &  lattice,
const unsigned int  version 
)
inline

Serialize a UnitCell<2>::LatticeSystem enumeration value.

Parameters
ararchive
latticeenumeration data to be serialized
versionversion id

Definition at line 385 of file UnitCell.h.

References Util::serializeEnum().

◆ serialize() [5/5]

template<class Archive >
void Pscf::serialize ( Archive &  ar,
UnitCell< 3 >::LatticeSystem &  lattice,
const unsigned int  version 
)
inline

Serialize a UnitCell<3>::LatticeSystem enumeration value.

Parameters
ararchive
latticeenumeration data to be serialized
versionversion id

Definition at line 512 of file UnitCell.h.

References Util::serializeEnum().

◆ operator>>() [5/7]

template<int D, typename T >
std::istream & Pscf::operator>> ( std::istream &  in,
IntVec< D, T > &  vector 
)

istream extractor for a IntVec<D, T>.

Input elements of a vector from stream, without line breaks.

Parameters
ininput stream
vectorIntVec<D, T> to be read from stream
Returns
modified input stream

Definition at line 85 of file IntVec.h.

◆ operator<<() [6/8]

template<int D, typename T >
std::ostream & Pscf::operator<< ( std::ostream &  out,
const IntVec< D, T > &  vector 
)

ostream inserter for a IntVec<D, T>.

Output a IntVec<D, T> to an ostream, without line breaks.

Output elements of a vector to stream, without line breaks.

Parameters
outoutput stream
vectorIntVec<D, T> to be written to stream
Returns
modified output stream

Definition at line 104 of file IntVec.h.

◆ operator==() [1/3]

template<int D, typename T >
bool Pscf::operator== ( const IntVec< D, T > &  v1,
const IntVec< D, T > &  v2 
)
inline

Equality of two IntVec<D> objects.

Returns
true if v1 == v2, false otherwise.

Definition at line 120 of file IntVec.h.

◆ operator==() [2/3]

template<int D, typename T >
bool Pscf::operator== ( const IntVec< D, T > &  v1,
const Vec< D, T > &  v2 
)
inline

Equality of an IntVec<D> and a Vec<D, T>

Returns
true if v1 == v2, false otherwise.

Definition at line 137 of file IntVec.h.

◆ operator==() [3/3]

template<int D, typename T >
bool Pscf::operator== ( const Vec< D, T > &  v1,
const IntVec< D, T > &  v2 
)
inline

Equality of an Vec<D, T> and an IntVec<D, T>

Returns
true if v1 == v2, false otherwise.

Definition at line 154 of file IntVec.h.

◆ operator!=() [1/3]

template<int D, typename T >
bool Pscf::operator!= ( const IntVec< D, T > &  v1,
const IntVec< D, T > &  v2 
)
inline

Inequality of two IntVec<D, T> objects.

Returns
true if v1 != v2, false if v1 == v2.

Definition at line 164 of file IntVec.h.

◆ operator!=() [2/3]

template<int D, typename T >
bool Pscf::operator!= ( const IntVec< D, T > &  v1,
const Vec< D, T > &  v2 
)
inline

Inequality of an IntVec<D> and a Vec<D, T>

Returns
true if v1 == v2, false otherwise.

Definition at line 174 of file IntVec.h.

◆ operator!=() [3/3]

template<int D, typename T >
bool Pscf::operator!= ( const Vec< D, T > &  v1,
const IntVec< D, T > &  v2 
)
inline

Inequality of a Vec<D, T> and an IntVec<D, T>

Returns
true if v1 == v2, false otherwise.

Definition at line 184 of file IntVec.h.

◆ operator<()

template<int D, typename T >
bool Pscf::operator< ( const IntVec< D, T > &  v1,
const IntVec< D, T > &  v2 
)
inline

Less than comparison for two IntVec<D, T>s.

Elements with lower array indices are treated as more signficant.

Returns
true if v1 < v2, false otherwise.

Definition at line 196 of file IntVec.h.

◆ operator<=()

template<int D, typename T >
bool Pscf::operator<= ( const IntVec< D, T > &  v1,
const IntVec< D, T > &  v2 
)
inline

Less than or equal to comparison for two IntVec<D, T>s.

Elements with lower array indices are more signficant digits.

Returns
true if v1 < v2, false otherwise.

Definition at line 220 of file IntVec.h.

◆ operator>()

template<int D, typename T >
bool Pscf::operator> ( const IntVec< D, T > &  v1,
const IntVec< D, T > &  v2 
)
inline

Greater than comparison for two IntVec<D, T>s.

Returns
true if v1 > v2, false otherwise.

Definition at line 242 of file IntVec.h.

◆ operator>=()

template<int D, typename T >
bool Pscf::operator>= ( const IntVec< D, T > &  v1,
const IntVec< D, T > &  v2 
)
inline

Greater than or equal to comparison for two IntVec<D, T>s.

Returns
true if v1 >= v2, false otherwise.

Definition at line 252 of file IntVec.h.

◆ operator>>() [6/7]

template<int D, typename T >
std::istream & Pscf::operator>> ( std::istream &  in,
RealVec< D, T > &  vector 
)

istream extractor for a RealVec<D, T>.

Input elements of a vector from stream, without line breaks.

Parameters
ininput stream
vectorRealVec<D, T> to be read from stream
Returns
modified input stream

Definition at line 89 of file RealVec.h.

◆ operator<<() [7/8]

template<int D, typename T >
std::ostream & Pscf::operator<< ( std::ostream &  out,
const RealVec< D, T > &  vector 
)

ostream inserter for a RealVec<D, T>.

Output a RealVec<D, T> to an ostream, without line breaks.

Output elements of a vector to stream, without line breaks.

Parameters
outoutput stream
vectorRealVec<D, T> to be written to stream
Returns
modified output stream

Definition at line 108 of file RealVec.h.

◆ dot()

template<int D, typename T >
T Pscf::dot ( Vec< D, T > const &  v1,
Vec< D, T > const &  v2 
)
inline

Return dot product of two vectors.

Parameters
v1first input vector
v2second input vector
Returns
dot product v1.v2

Definition at line 285 of file Vec.h.

References Util::setToZero().

Referenced by Pscf::Pspc::FilmIterator< 2, IteratorType >::checkLatticeVectors(), and Pscf::Pspc::FilmIterator< 3, IteratorType >::checkLatticeVectors().

◆ operator+()

template<int D, typename T >
Vec< D, T > Pscf::operator+ ( Vec< D, T > const &  v1,
Vec< D, T > const &  v2 
)
inline

Return the sum of two vectors.

Parameters
v1first input vector
v2second input vector
Returns
sum v1 + v2

Definition at line 304 of file Vec.h.

References Pscf::Vec< D, T >::add().

◆ operator>>() [7/7]

template<int D>
std::istream & Pscf::operator>> ( std::istream &  in,
Mesh< D > &  mesh 
)

Input stream extractor for reading a Mesh<D> object.

Parameters
ininput stream
meshMesh<D> object to be read
Returns
modified input stream

Definition at line 245 of file Mesh.h.

◆ operator<<() [8/8]

template<int D>
std::ostream & Pscf::operator<< ( std::ostream &  out,
Mesh< D > const &  mesh 
)

Output stream inserter for writing a Mesh<D> object.

Parameters
outoutput stream
meshMesh<D> to be written
Returns
modified output stream

Definition at line 257 of file Mesh.h.