OpenMD 3.0
Molecular Dynamics in the Open
|
Calculates the collective dipole displacement function. More...
#include <CollectiveDipoleDisplacement.hpp>
Public Member Functions | |
CollectiveDipoleDisplacement (SimInfo *info, const std::string &filename, const std::string &sele1, const std::string &sele2) | |
Public Member Functions inherited from OpenMD::SystemACF< Vector3d > | |
SystemACF (SimInfo *info, const std::string &filename, const std::string &sele1, const std::string &sele2) | |
Public Member Functions inherited from OpenMD::AutoCorrFunc< T > | |
AutoCorrFunc (SimInfo *info, const std::string &filename, const std::string &sele1, const std::string &sele2) | |
Public Member Functions inherited from OpenMD::TimeCorrFunc< T > | |
TimeCorrFunc (SimInfo *info, const std::string &filename, const std::string &sele1, const std::string &sele2) | |
virtual void | doCorrelate () |
const std::string & | getCorrFuncType () const |
void | setCorrFuncType (const std::string &type) |
void | setParameterString (const std::string ¶ms) |
void | setLabelString (const std::string &label) |
Public Member Functions inherited from OpenMD::DynamicProperty | |
void | setOutputName (const std::string &filename) |
const std::string & | getOutputFileName () const |
Additional Inherited Members | |
Protected Member Functions inherited from OpenMD::SystemACF< Vector3d > | |
virtual int | computeProperty1 (int, Molecule *) |
virtual int | computeProperty1 (int, StuntDouble *) |
virtual int | computeProperty1 (int, Bond *) |
Vector3d | calcCorrVal (int, int, int, int) |
virtual void | computeProperty2 (int) |
virtual int | computeProperty2 (int, Molecule *) |
virtual int | computeProperty2 (int, StuntDouble *) |
virtual int | computeProperty2 (int, Bond *) |
Protected Member Functions inherited from OpenMD::TimeCorrFunc< T > | |
virtual void | preCorrelate () |
virtual void | correlation () |
virtual void | postCorrelate () |
virtual void | computeFrame (int frame) |
virtual void | validateSelection (SelectionManager &seleMan) |
virtual void | correlateFrames (int frame1, int frame2, int timeBin) |
virtual void | writeCorrelate () |
void | writeCorrelate () |
void | writeCorrelate () |
Protected Attributes inherited from OpenMD::TimeCorrFunc< T > | |
RealType | deltaTime_ |
unsigned int | nTimeBins_ |
int | nFrames_ |
std::vector< T > | histogram_ |
std::vector< int > | count_ |
std::vector< RealType > | times_ |
SimInfo * | info_ {nullptr} |
DumpReader * | reader_ |
std::string | dumpFilename_ |
SelectionManager | seleMan1_ |
SelectionManager | seleMan2_ |
Snapshot * | currentSnapshot_ |
std::string | selectionScript1_ |
std::string | selectionScript2_ |
SelectionEvaluator | evaluator1_ |
SelectionEvaluator | evaluator2_ |
bool | uniqueSelections_ |
bool | autoCorrFunc_ |
bool | doSystemProperties_ |
bool | doMolecularProperties_ |
bool | doObjectProperties_ |
bool | doAtomicProperties_ |
bool | doBondProperties_ |
std::string | corrFuncType_ |
std::string | paramString_ |
std::string | labelString_ |
std::vector< std::vector< int > > | sele1ToIndex_ |
std::vector< std::vector< int > > | sele2ToIndex_ |
ProgressBarPtr | progressBar_ |
Protected Attributes inherited from OpenMD::DynamicProperty | |
std::string | outputFilename_ |
Calculates the collective dipole displacement function.
This time correlation function is the Helfand moment conjugate to the current density. Helfand moments are used to calculate the Einstein-Helfand relations for transport that are formally equivalent to Green-Kubo expressions using a related flux. In this case, the flux,
\[ \mathbf{J}(t) = \sum_{i=1}^{N} q_i \mathbf{v}_{\mathrm{cm},i}(t) \]
is normally used to calculate an ionic conductivity,
\[ \sigma = \frac{1}{3V k_b T} \int_0^\infty \left< \mathbf{J}(0) \cdot \mathbf{J}(t) \right> dt \]
The cm subscript denotes center of mass locations for all molecules.
This class computes the collective translational dipole moment,
\[ \mathbf{M}_\mathrm{trans}(t) = \sum_{i=1}^{N} q_i \mathbf{r}_{\mathrm{cm},i}(t) \]
as well as total contributions to the system's net dipole moment
\[ \mathbf{M}_\mathrm{tot}(t) = \sum_{i=1}^{N} \sum_{a} q_{ia} \mathbf{r}_{ia}(t) = \sum_{i=1}^{N} q_i \mathbf{r}_{\mathrm{cq},i}(t) \]
where cq denotes the molecular center of charge. It also calculates the rotational contribution,
\[ \mathbf{M}_\mathrm{rot}(t) = \sum_{i=1}^{N} q_i \left[ \mathbf{r}_{\mathrm{cq},i}(t) - \mathbf{r}_{\mathrm{cm},i}(t) \right] \]
The correlation functions are the displacements of these terms from their values at an earlier time,
\[ \left< \left| \mathbf{M}_\mathrm{trans}(t) - \mathbf{M}_\mathrm{trans}(0) \right|^2 \right> \]
and identical quantities for the total and rotational contributions.
Definition at line 92 of file CollectiveDipoleDisplacement.hpp.
OpenMD::CollectiveDipoleDisplacement::CollectiveDipoleDisplacement | ( | SimInfo * | info, |
const std::string & | filename, | ||
const std::string & | sele1, | ||
const std::string & | sele2 ) |
Definition at line 53 of file CollectiveDipoleDisplacement.cpp.