Simpatico
v1.10
|
Manages all Link objects in a System.
A LinkMaster allows links between Atoms, or Link objects, to be added to or removed from a system, and provides access to existing links.
Definition at line 39 of file LinkMaster.h.
#include <LinkMaster.h>
Public Types | |
typedef PArrayIterator< Link > | LinkIterator |
Iterator for set of active links. More... | |
typedef ConstPArrayIterator< Link > | ConstLinkIterator |
Const iterator for set of active links. More... | |
typedef SSet< Link, 400 > | AtomLinkSet |
A set of links involving a particular atom. More... | |
![]() | |
typedef BinaryFileOArchive | OArchive |
Type of output archive used by save method. More... | |
typedef BinaryFileIArchive | IArchive |
Type of input archive used by load method. More... | |
Public Member Functions | |
LinkMaster () | |
Constructor. More... | |
void | readParameters (std::istream &in) |
Read linkCapacity and allocate. More... | |
void | addLink (Atom &atom0, Atom &atom1, int typeId) |
Add a link betwen two specific Atoms. More... | |
void | removeLink (int id) |
Remove a Link. More... | |
const AtomLinkSet & | atomLinkSet (const Atom &atom) const |
Return a set of links associated with an Atom by const reference. More... | |
AtomLinkSet & | atomLinkSet (const Atom &atom) |
Return a set of links associated with an Atom. More... | |
Link & | link (int id) const |
Return an active link by an internal set index. More... | |
void | reSetAtoms (Link &link, Atom &atom0, Atom &atom1) |
Modify the atoms attached to a link. More... | |
void | reSetAtom (Link &link, Atom &atom, int endId) |
Modify one atom attached to a link. More... | |
int | nLink () const |
Get the total number of active Links. More... | |
void | begin (LinkIterator &iterator) |
Initialize iterator to beginning of list of active links. More... | |
void | begin (ConstLinkIterator &iterator) const |
Initialize iterator to beginning of list of active links. More... | |
Link & | randomLink (Random &random) |
Get a randomly chosen link by reference. More... | |
bool | isValid () const |
Return true if this LinkMaster is valid, or throw an Exception. More... | |
void | clear () |
Clear LinkMaster. More... | |
![]() | |
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 | writeParam (std::ostream &out) |
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 > | |
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... | |
Begin & | readBegin (std::istream &in, const char *label, bool isRequired=true) |
Add and read a class label and opening bracket. More... | |
End & | readEnd (std::istream &in) |
Add and read the closing bracket. More... | |
Blank & | readBlank (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 > | |
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... | |
Begin & | addBegin (const char *label) |
Add a Begin object representing a class name and bracket. More... | |
End & | addEnd () |
Add a closing bracket. More... | |
Blank & | addBlank () |
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... | |
![]() | |
virtual | ~ParamComponent () |
Destructor. 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... | |
![]() | |
virtual | ~Serializable () |
Destructor. More... | |
![]() | |
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... | |
![]() | |
void | registerObserver (Observer< LinkAddEvent > &observer) |
Register an observer. More... | |
void | removeObserver (Observer< LinkAddEvent > &observer) |
Remove an analyzer observer from the container list. More... | |
void | notifyObservers (const LinkAddEvent &event) |
Notify the list of observers about an Event. More... | |
![]() | |
void | registerObserver (Observer< LinkResetEvent > &observer) |
Register an observer. More... | |
void | removeObserver (Observer< LinkResetEvent > &observer) |
Remove an analyzer observer from the container list. More... | |
void | notifyObservers (const LinkResetEvent &event) |
Notify the list of observers about an Event. More... | |
![]() | |
void | registerObserver (Observer< LinkRemoveEvent > &observer) |
Register an observer. More... | |
void | removeObserver (Observer< LinkRemoveEvent > &observer) |
Remove an analyzer observer from the container list. More... | |
void | notifyObservers (const LinkRemoveEvent &event) |
Notify the list of observers about an Event. More... | |
![]() | |
void | registerObserver (Observer< ReSetAtomEvent > &observer) |
Register an observer. More... | |
void | removeObserver (Observer< ReSetAtomEvent > &observer) |
Remove an analyzer observer from the container list. More... | |
void | notifyObservers (const ReSetAtomEvent &event) |
Notify the list of observers about an Event. More... | |
Additional Inherited Members | |
![]() | |
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... | |
![]() | |
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 ¶m, bool next=true) |
Set this to the parent of a child component. More... | |
void | addComponent (ParamComponent ¶m, 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 > | |
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... | |
![]() | |
ParamComponent () | |
Constructor. More... | |
ParamComponent (const ParamComponent &other) | |
Copy constructor. More... | |
Iterator for set of active links.
Definition at line 49 of file LinkMaster.h.
Const iterator for set of active links.
Definition at line 52 of file LinkMaster.h.
typedef SSet<Link,400> McMd::LinkMaster::AtomLinkSet |
A set of links involving a particular atom.
Definition at line 57 of file LinkMaster.h.
McMd::LinkMaster::LinkMaster | ( | ) |
Constructor.
Definition at line 21 of file LinkMaster.cpp.
References Util::ParamComposite::setClassName().
|
virtual |
Read linkCapacity and allocate.
in | input parameter stream |
Reimplemented from Util::ParamComposite.
Definition at line 29 of file LinkMaster.cpp.
Add a link betwen two specific Atoms.
Add a new link.
The associated Link object is taken from a reservoir of unused links.
atom0 | first Atom object to which a Link should be attached |
atom1 | second Atom object to which a Link should be attached |
typeId | id for the type of Link |
Definition at line 39 of file LinkMaster.cpp.
References Util::Log::file(), McMd::Atom::id(), Util::Notifier< Event >::notifyObservers(), McMd::Link::setIsActive(), and UTIL_THROW.
Referenced by McMd::GcSliplinkMove::move(), McMd::SliplinkMove::move(), McMd::Sliplinker::move(), McMd::SliplinkerAll::move(), McMd::SliplinkerEnd::move(), McMd::McMdConfigIo::read(), and McMd::Crosslinker::sample().
void McMd::LinkMaster::removeLink | ( | int | id | ) |
Remove a Link.
Precondition: The Link must be active.
Definition at line 77 of file LinkMaster.cpp.
References McMd::Link::atom0(), McMd::Link::atom1(), McMd::Atom::id(), Util::ParamComposite::isActive(), link(), Util::Notifier< Event >::notifyObservers(), and UTIL_THROW.
Referenced by clear(), McMd::SliplinkMove::move(), McMd::SliplinkerEnd::move(), McMd::SliplinkerAll::move(), McMd::Sliplinker::move(), and McMd::GcSliplinkMove::move().
|
inline |
Return a set of links associated with an Atom by const reference.
atom | Atom object of interest. |
Definition at line 226 of file LinkMaster.h.
References McMd::Atom::id().
Referenced by McMd::LinkPotentialImpl< Interaction >::atomEnergy().
|
inline |
Return a set of links associated with an Atom.
atom | Atom object of interest. |
Definition at line 235 of file LinkMaster.h.
References McMd::Atom::id().
|
inline |
Return an active link by an internal set index.
An "active" Link object is one that is attached to two atoms. Pointers to all of the active Link objects are maintained by an ArraySet < Link > container. At any instant, this container assigns every active link an index in the range 0 <= id < nLink, where nLink is the total number of active links. The index associated with any Link in the set can change, however, whenever another Link is removed from the set by calling removeLink() (not yet implemented).
id | index in the range 0 <= id < nLink. |
Definition at line 255 of file LinkMaster.h.
Referenced by McMd::LinkPotentialImpl< Interaction >::addForces(), McMd::LinkPotentialImpl< Interaction >::computeEnergy(), McMd::Sliplinker::move(), McMd::SliplinkerAll::move(), McMd::SliplinkerEnd::move(), McMd::SliplinkMove::move(), McMd::GcSliplinkMove::move(), removeLink(), McMd::LinkLengthDist::sample(), McMd::SSChainDist::sample(), McMd::LinkMSD::sample(), McMd::InterIntraLink::sample(), and McMd::McMdConfigIo::write().
Modify the atoms attached to a link.
Definition at line 115 of file LinkMaster.cpp.
References McMd::Link::atom0(), McMd::Link::atom1(), Util::Log::file(), McMd::Atom::id(), McMd::Link::isActive(), Util::Notifier< Event >::notifyObservers(), and UTIL_THROW.
Modify one atom attached to a link.
Definition at line 160 of file LinkMaster.cpp.
References McMd::Link::atom0(), McMd::Link::atom1(), Util::Log::file(), McMd::Atom::id(), McMd::Link::isActive(), Util::Notifier< Event >::notifyObservers(), and UTIL_THROW.
Referenced by McMd::GcSliplinkMove::move(), and McMd::SliplinkMove::move().
|
inline |
Get the total number of active Links.
Definition at line 261 of file LinkMaster.h.
Referenced by McMd::LinkPotentialImpl< Interaction >::addForces(), clear(), McMd::LinkPotentialImpl< Interaction >::computeEnergy(), McMd::GcSliplinkMove::move(), McMd::Sliplinker::move(), McMd::SliplinkerAll::move(), McMd::SliplinkerEnd::move(), McMd::SliplinkMove::move(), randomLink(), McMd::LinkLengthDist::sample(), McMd::SSChainDist::sample(), McMd::LinkMSD::sample(), McMd::NLinkAverage::sample(), McMd::InterIntraLink::sample(), and McMd::McMdConfigIo::write().
|
inline |
Initialize iterator to beginning of list of active links.
iterator | Iterator for active links. |
Definition at line 243 of file LinkMaster.h.
References Util::SSet< Data, Capacity >::begin().
|
inline |
Initialize iterator to beginning of list of active links.
iterator | const Iterator for active links. |
Definition at line 249 of file LinkMaster.h.
Get a randomly chosen link by reference.
random | Random number generator. |
Definition at line 205 of file LinkMaster.cpp.
References nLink(), Util::Random::uniformInt(), and UTIL_THROW.
bool McMd::LinkMaster::isValid | ( | ) | const |
Return true if this LinkMaster is valid, or throw an Exception.
Definition at line 245 of file LinkMaster.cpp.
References McMd::Link::atom0(), McMd::Link::atom1(), McMd::Atom::id(), McMd::Link::isActive(), and UTIL_THROW.
Referenced by McMd::System::isValid().
void McMd::LinkMaster::clear | ( | ) |
Clear LinkMaster.
Remove all links: clear and return them to the reservoir, empty linkSet and atomLinkSets arrays.
Definition at line 324 of file LinkMaster.cpp.
References nLink(), and removeLink().
Referenced by McMd::System::removeAllMolecules(), and McMd::Crosslinker::sample().