Simpatico
v1.10
|
A Potential represents a potential energy contribution.
A Potential provides methods to calculate potential energy, and associated atomic forces and stress.
Definition at line 28 of file Potential.h.
#include <Potential.h>
Public Member Functions | |
Potential () | |
Constructor. More... | |
virtual | ~Potential () |
Destructor. More... | |
void | setReverseUpdateFlag (bool reverseUpdateFlag) |
Set flag to identify if reverse communication is enabled. More... | |
bool | reverseUpdateFlag () const |
Get flag to identify if reverse communication is enabled. More... | |
Total Energy, Force and Stress | |
virtual void | computeForces ()=0 |
Add force contributions to all atomic forces. More... | |
virtual void | computeEnergy (MPI::Intracomm &communicator)=0 |
Compute potential energy on all processors. More... | |
double | energy () const |
Return the total potential, from all processors. More... | |
void | unsetEnergy () |
Mark the energy as unknown (nullify). More... | |
bool | isEnergySet () const |
Is the energy set (known)? More... | |
virtual void | computeStress (MPI::Intracomm &communicator) |
Compute stress on all processors. More... | |
virtual void | computeForcesAndStress (MPI::Intracomm &communicator) |
Compute forces and stress for all processors. More... | |
Tensor | stress () const |
Return the stress tensor. More... | |
double | pressure () const |
Return the pressure. More... | |
void | unsetStress () |
Mark the stress as unknown (nullify). More... | |
bool | isStressSet () const |
Is the stress set (known)? More... | |
virtual bool | isValid (MPI::Intracomm &communicator) const |
Is the potential in a valid internal state? 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 | readParameters (std::istream &in) |
Read the body of parameter block, without begin and end lines. 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... | |
Protected Member Functions | |
void | setEnergy (double energy) |
Set a value for the total energy. More... | |
void | setStress (const Tensor &stress) |
Set a value for the total stress. More... | |
void | incrementPairStress (const Vector &f, const Vector &dr, Tensor &stress) const |
Add a pair contribution to the stress tensor. More... | |
void | reduceEnergy (double localEnergy, MPI::Intracomm &communicator) |
Add local energies from all processors, set energy on master. More... | |
void | reduceStress (Tensor &localStress, MPI::Intracomm &communicator) |
Add local stresses from all processors, set total on master. 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... | |
Additional Inherited Members | |
![]() | |
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 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... | |
DdMd::Potential::Potential | ( | ) |
Constructor.
Definition at line 18 of file Potential.cpp.
References Util::ParamComposite::setClassName().
|
virtual |
Destructor.
Definition at line 27 of file Potential.cpp.
void DdMd::Potential::setReverseUpdateFlag | ( | bool | reverseUpdateFlag | ) |
Set flag to identify if reverse communication is enabled.
reverseUpdateFlag | true if reverse communication is enabled. |
Definition at line 33 of file Potential.cpp.
References reverseUpdateFlag().
|
inline |
Get flag to identify if reverse communication is enabled.
Definition at line 228 of file Potential.h.
Referenced by DdMd::PairPotential::buildPairList(), DdMd::PairPotentialImpl< Interaction >::computeEnergy(), DdMd::PairPotentialImpl< Interaction >::computeForcesAndStress(), DdMd::PairPotentialImpl< Interaction >::computePairEnergies(), DdMd::PairPotentialImpl< Interaction >::computeStress(), DdMd::PairPotential::nPair(), and setReverseUpdateFlag().
|
pure virtual |
Add force contributions to all atomic forces.
Implemented in DdMd::PairPotentialImpl< Interaction >, DdMd::DihedralPotentialImpl< Interaction >, DdMd::ExternalPotentialImpl< Interaction >, DdMd::BondPotentialImpl< Interaction >, and DdMd::AnglePotentialImpl< Interaction >.
Referenced by DdMd::Integrator::computeForces(), and DdMd::Integrator::computeForcesAndVirial().
|
pure virtual |
Compute potential energy on all processors.
This method must be called on all processors. The result is stored on the master processor, and may be retrieved by calling energy() on this processor.
Implemented in DdMd::PairPotentialImpl< Interaction >, DdMd::DihedralPotentialImpl< Interaction >, DdMd::ExternalPotentialImpl< Interaction >, DdMd::BondPotentialImpl< Interaction >, and DdMd::AnglePotentialImpl< Interaction >.
Referenced by DdMd::ExternalEnergyAnalyzer::compute().
double DdMd::Potential::energy | ( | ) | const |
Return the total potential, from all processors.
This method should only be called on the master (rank 0) processor, after a previous call to computeEnergy.
Definition at line 39 of file Potential.cpp.
References Util::Setable< T >::value().
Referenced by DdMd::ExternalPotentialImpl< Interaction >::computeEnergy(), DdMd::PairPotentialImpl< Interaction >::computeEnergy(), DdMd::ExternalEnergyAverage::sample(), DdMd::LogEnergy::sample(), DdMd::OutputEnergy::sample(), DdMd::EnergyAnalyzer::sample(), and DdMd::ExternalEnergyAnalyzer::value().
void DdMd::Potential::unsetEnergy | ( | ) |
Mark the energy as unknown (nullify).
This should be called whenever atom positions or boundary changes.
Definition at line 51 of file Potential.cpp.
References Util::Setable< T >::unset().
bool DdMd::Potential::isEnergySet | ( | ) | const |
Is the energy set (known)?
Definition at line 57 of file Potential.cpp.
References Util::Setable< T >::isSet().
Referenced by DdMd::AnglePotentialImpl< Interaction >::computeEnergy(), DdMd::BondPotentialImpl< Interaction >::computeEnergy(), DdMd::DihedralPotentialImpl< Interaction >::computeEnergy(), and DdMd::PairPotentialImpl< Interaction >::computeEnergy().
|
inlinevirtual |
Compute stress on all processors.
This method must be called on all processors. The result is stored on the master processor, and may be retrieved by calling stress() on this processor.
Reimplemented in DdMd::PairPotentialImpl< Interaction >, DdMd::DihedralPotentialImpl< Interaction >, DdMd::BondPotentialImpl< Interaction >, and DdMd::AnglePotentialImpl< Interaction >.
Definition at line 104 of file Potential.h.
|
virtual |
Compute forces and stress for all processors.
Call on all processors. The default implementation just calls computeForces() and computeStress() methods. Subclasses should combine into a single loop.
Reimplemented in DdMd::PairPotentialImpl< Interaction >, and DdMd::BondPotentialImpl< Interaction >.
Definition at line 103 of file Potential.cpp.
Referenced by DdMd::Integrator::computeForcesAndVirial().
Tensor DdMd::Potential::stress | ( | ) | const |
Return the stress tensor.
This method should only be called on the master (rank 0) processor, after a previous call to computeStress.
Definition at line 63 of file Potential.cpp.
double DdMd::Potential::pressure | ( | ) | const |
Return the pressure.
This method should only be called on the master (rank 0) processor, after a previous call to computeStress.
Definition at line 69 of file Potential.cpp.
References Util::Dimension.
void DdMd::Potential::unsetStress | ( | ) |
Mark the stress as unknown (nullify).
This should be called whenever atom positions or boundary changes.
Definition at line 88 of file Potential.cpp.
bool DdMd::Potential::isStressSet | ( | ) | const |
Is the stress set (known)?
Definition at line 94 of file Potential.cpp.
Referenced by DdMd::BondPotentialImpl< Interaction >::computeForcesAndStress(), DdMd::PairPotentialImpl< Interaction >::computeForcesAndStress(), DdMd::AnglePotentialImpl< Interaction >::computeStress(), DdMd::BondPotentialImpl< Interaction >::computeStress(), DdMd::DihedralPotentialImpl< Interaction >::computeStress(), and DdMd::PairPotentialImpl< Interaction >::computeStress().
|
virtual |
Is the potential in a valid internal state?
Return true if valid, or throws an Exception. Must be called on all processors.
communicator | domain communicator for all domain procs |
Definition at line 164 of file Potential.cpp.
References Util::Setable< T >::isValid().
|
protected |
Set a value for the total energy.
Definition at line 45 of file Potential.cpp.
References Util::Setable< T >::set().
Referenced by DdMd::ExternalPotentialImpl< Interaction >::computeEnergy(), and reduceEnergy().
|
protected |
Set a value for the total stress.
Definition at line 82 of file Potential.cpp.
Referenced by reduceStress().
|
inlineprotected |
Add a pair contribution to the stress tensor.
f | pair force = f1 = -f2 |
dr | pair separation = r1 - r2 |
stress | virial, incremented by dyad dr f |
Definition at line 235 of file Potential.h.
References Util::Dimension.
Referenced by DdMd::BondPotentialImpl< Interaction >::computeForcesAndStress(), DdMd::PairPotentialImpl< Interaction >::computeForcesAndStress(), DdMd::AnglePotentialImpl< Interaction >::computeStress(), DdMd::BondPotentialImpl< Interaction >::computeStress(), DdMd::DihedralPotentialImpl< Interaction >::computeStress(), and DdMd::PairPotentialImpl< Interaction >::computeStress().
|
protected |
Add local energies from all processors, set energy on master.
Call on all processors.
localEnergy | energy contribution from this processor |
communicator | domain communicator |
Definition at line 120 of file Potential.cpp.
References setEnergy().
Referenced by DdMd::AnglePotentialImpl< Interaction >::computeEnergy(), DdMd::BondPotentialImpl< Interaction >::computeEnergy(), DdMd::ExternalPotentialImpl< Interaction >::computeEnergy(), DdMd::DihedralPotentialImpl< Interaction >::computeEnergy(), and DdMd::PairPotentialImpl< Interaction >::computeEnergy().
|
protected |
Add local stresses from all processors, set total on master.
Call on all processors.
localStress | stress contribution from this processor |
communicator | domain communicator |
Definition at line 142 of file Potential.cpp.
References Util::Dimension, setStress(), and Util::Tensor::zero().
Referenced by DdMd::BondPotentialImpl< Interaction >::computeForcesAndStress(), DdMd::PairPotentialImpl< Interaction >::computeForcesAndStress(), DdMd::AnglePotentialImpl< Interaction >::computeStress(), DdMd::BondPotentialImpl< Interaction >::computeStress(), DdMd::DihedralPotentialImpl< Interaction >::computeStress(), and DdMd::PairPotentialImpl< Interaction >::computeStress().