PSCF v1.3
|
Abstract descriptor for a mixture of polymer and solvent species. More...
#include <MixtureBase.h>
Public Member Functions | |
MixtureBase () | |
Constructor. | |
~MixtureBase () | |
Destructor. | |
void | setVmonomer (double vMonomer) |
Set new vMonomer value. | |
Accessors (by value) | |
int | nMonomer () const |
Get number of monomer types. | |
int | nPolymer () const |
Get number of polymer species. | |
int | nSolvent () const |
Get number of solvent (point particle) species. | |
int | nBlock () const |
Get total number blocks among all polymer species. | |
double | vMonomer () const |
Get monomer reference volume (set to 1.0 by default). | |
bool | isCanonical () const |
Is this mixture being treated in canonical ensemble? | |
Accessors (by const reference) | |
Monomer const & | monomer (int id) const |
Get a Monomer type descriptor by const reference. | |
virtual PolymerSpecies const & | polymerSpecies (int id) const =0 |
Get a PolymerSpecies by const reference. | |
virtual SolventSpecies const & | solventSpecies (int id) const =0 |
Set a solvent solver object by const reference. |
Protected Member Functions | |
Monomer & | monomer (int id) |
Get a Monomer type descriptor (non-const reference). |
Protected Attributes | |
DArray< Monomer > | monomers_ |
Array of monomer type descriptors. | |
int | nMonomer_ |
Number of monomer types. | |
int | nPolymer_ |
Number of polymer species. | |
int | nSolvent_ |
Number of solvent species. | |
int | nBlock_ |
Number of blocks total, across all polymers. | |
double | vMonomer_ |
Monomer reference volume (set to 1.0 by default). |
Abstract descriptor for a mixture of polymer and solvent species.
A MixtureBase has an array of Monomer objects and provides access to PolymerSpecies and SolventSpecies objects describing all molecular species in in a mixture. The MixtureBase class does not have functions or data structures needed to solve the modified diffusion equation (MDE), and is thus a descriptor but not a solver for the mixture.
MixtureBase is an abstract base class for "solver" classes that can actually solve the single-molecule statistical mechanics problem for very species in a mixture. Each implementation level sub-namespace of Pscf (R1d, Rpc or Rpg) contains a concrete class named Mixture that is derived from Pscf::MixtureBase, and that acts as both a solver and descriptor for the mixture. Each such subspace also defines an polymer MDE solver class named Polymer that is a subclass of PolymerSpecies and a solvent solver class named Solvent that is subclass of SolventSpecies.
The Mixture class in each such implementation-level namespace is a subclass of an instantiation Pscf::PolymerTmpl<Polymer, Solvent> of the class template Pscf::PolymerTmpl. This template is derived directly from MixtureBase. A PolymerTmpl<Polymer, Solvent> object has two member private variables that are arrays of Polymer and Solvent solver objects. The PolymerTmpl template defines implementations of functions polymerSpecies(int id) and solventSpecies(int id) that are declared as pure virtual member functions of MixtureBase. These functions return a single Polymer solver object as a reference to a PolymerSpecies descriptor, or a Solvent solver object as a reference to a SolventSpecies descriptor, respectively.
Definition at line 56 of file MixtureBase.h.
Pscf::MixtureBase::MixtureBase | ( | ) |
Constructor.
Definition at line 18 of file MixtureBase.cpp.
References monomers_, nBlock_, nMonomer_, nPolymer_, nSolvent_, and vMonomer_.
Referenced by Pscf::MixtureTmpl< PT, ST >::MixtureTmpl().
Pscf::MixtureBase::~MixtureBase | ( | ) |
Destructor.
Definition at line 30 of file MixtureBase.cpp.
void Pscf::MixtureBase::setVmonomer | ( | double | vMonomer | ) |
Set new vMonomer value.
vMonomer | new vMonomer value |
Definition at line 33 of file MixtureBase.cpp.
References UTIL_CHECK, vMonomer(), and vMonomer_.
|
inline |
Get number of monomer types.
Definition at line 187 of file MixtureBase.h.
References nMonomer_.
Referenced by Pscf::R1d::Sweep::checkAllocation(), Pscf::R1d::Mixture::compute(), Pscf::R1d::System::computeFreeEnergy(), Pscf::R1d::Sweep::extrapolate(), Pscf::FloryHuggins::Mixture::initialize(), Pscf::R1d::Mixture::readParameters(), Pscf::R1d::Mixture::setDomain(), Pscf::R1d::BinaryRelaxIterator::solve(), Pscf::R1d::NrIterator::solve(), and Pscf::Prdc::MixtureReal< D, Polymer< D >, Solvent< D > >::stress().
|
inline |
Get number of polymer species.
Definition at line 190 of file MixtureBase.h.
References nPolymer_.
Referenced by Pscf::R1d::HomogeneousComparison::compute(), Pscf::R1d::Mixture::compute(), Pscf::R1d::System::computeFreeEnergy(), Pscf::FloryHuggins::Mixture::initialize(), isCanonical(), Pscf::R1d::Mixture::readParameters(), Pscf::R1d::Mixture::setDomain(), Pscf::R1d::Mixture::setKuhn(), Pscf::R1d::BinaryRelaxIterator::solve(), Pscf::R1d::NrIterator::solve(), Pscf::Prdc::MixtureReal< D, Polymer< D >, Solvent< D > >::stress(), Pscf::R1d::FieldIo::writeBlockCFields(), Pscf::R1d::System::writeThermo(), and Pscf::R1d::FieldIo::writeVertexQ().
|
inline |
Get number of solvent (point particle) species.
Definition at line 193 of file MixtureBase.h.
References nSolvent_.
Referenced by Pscf::R1d::HomogeneousComparison::compute(), Pscf::R1d::Mixture::compute(), Pscf::R1d::System::computeFreeEnergy(), Pscf::FloryHuggins::Mixture::initialize(), isCanonical(), Pscf::R1d::Mixture::readParameters(), Pscf::R1d::Mixture::setDomain(), Pscf::Prdc::MixtureReal< D, Polymer< D >, Solvent< D > >::stress(), Pscf::R1d::FieldIo::writeBlockCFields(), and Pscf::R1d::System::writeThermo().
|
inline |
Get total number blocks among all polymer species.
Definition at line 196 of file MixtureBase.h.
References nBlock_.
Referenced by Pscf::Prdc::MixtureReal< D, Polymer< D >, Solvent< D > >::stress(), and Pscf::R1d::FieldIo::writeBlockCFields().
|
inline |
Get monomer reference volume (set to 1.0 by default).
Definition at line 200 of file MixtureBase.h.
References vMonomer_.
Referenced by Pscf::R1d::HomogeneousComparison::output(), setVmonomer(), and Pscf::Prdc::MixtureReal< D, Polymer< D >, Solvent< D > >::stress().
bool Pscf::MixtureBase::isCanonical | ( | ) | const |
Is this mixture being treated in canonical ensemble?
Returns true iff a closed ensemble is used for every polymer and solve species, by specifying a volume fraction phi rather than a chemical potential mu for every species in the mixture.
Definition at line 42 of file MixtureBase.cpp.
References nPolymer(), nSolvent(), polymerSpecies(), and solventSpecies().
Referenced by Pscf::Prdc::MixtureReal< D, Polymer< D >, Solvent< D > >::stress().
|
inline |
Get a Monomer type descriptor by const reference.
id | integer monomer type index (0 <= id < nMonomer) |
Definition at line 204 of file MixtureBase.h.
References monomers_, nMonomer_, and UTIL_CHECK.
Referenced by Pscf::MixtureTmpl< PT, ST >::readParameters(), Pscf::R1d::Mixture::setKuhn(), and Pscf::Prdc::MixtureReal< D, Polymer< D >, Solvent< D > >::stress().
|
pure virtual |
Get a PolymerSpecies by const reference.
id | integer polymer species index (0 <= id < nPolymer) |
Implemented in Pscf::MixtureTmpl< PT, ST >, Pscf::MixtureTmpl< Polymer, Solvent >, Pscf::MixtureTmpl< Polymer< D >, Solvent< D > >, Pscf::Prdc::MixtureReal< D, PT, ST >, and Pscf::Prdc::MixtureReal< D, Polymer< D >, Solvent< D > >.
Referenced by Pscf::FloryHuggins::Mixture::initialize(), and isCanonical().
|
pure virtual |
Set a solvent solver object by const reference.
id | integer solvent species index (0 <= id < nSolvent) |
Implemented in Pscf::MixtureTmpl< PT, ST >, Pscf::MixtureTmpl< Polymer, Solvent >, Pscf::MixtureTmpl< Polymer< D >, Solvent< D > >, Pscf::Prdc::MixtureReal< D, PT, ST >, and Pscf::Prdc::MixtureReal< D, Polymer< D >, Solvent< D > >.
Referenced by Pscf::FloryHuggins::Mixture::initialize(), and isCanonical().
|
inlineprotected |
Get a Monomer type descriptor (non-const reference).
id | integer monomer type index (0 <= id < nMonomer) |
Definition at line 213 of file MixtureBase.h.
References monomers_, nMonomer_, and UTIL_CHECK.
Array of monomer type descriptors.
Definition at line 156 of file MixtureBase.h.
Referenced by MixtureBase(), monomer(), monomer(), and Pscf::Prdc::MixtureReal< D, PT, ST >::solventSpecies().
|
protected |
Number of monomer types.
Definition at line 161 of file MixtureBase.h.
Referenced by MixtureBase(), monomer(), monomer(), nMonomer(), and Pscf::Prdc::MixtureReal< D, PT, ST >::solventSpecies().
|
protected |
Number of polymer species.
Definition at line 166 of file MixtureBase.h.
Referenced by MixtureBase(), nPolymer(), and Pscf::Prdc::MixtureReal< D, PT, ST >::solventSpecies().
|
protected |
Number of solvent species.
Definition at line 171 of file MixtureBase.h.
Referenced by MixtureBase(), nSolvent(), and Pscf::Prdc::MixtureReal< D, PT, ST >::solventSpecies().
|
protected |
Number of blocks total, across all polymers.
Definition at line 176 of file MixtureBase.h.
Referenced by MixtureBase(), nBlock(), and Pscf::Prdc::MixtureReal< D, PT, ST >::solventSpecies().
|
protected |
Monomer reference volume (set to 1.0 by default).
Definition at line 181 of file MixtureBase.h.
Referenced by MixtureBase(), setVmonomer(), Pscf::Prdc::MixtureReal< D, PT, ST >::solventSpecies(), and vMonomer().