OpenMD 3.0
Molecular Dynamics in the Open
Loading...
Searching...
No Matches
OpenMD::CollectiveDipoleDisplacement Class Reference

Calculates the collective dipole displacement function. More...

#include <CollectiveDipoleDisplacement.hpp>

+ Inheritance diagram for OpenMD::CollectiveDipoleDisplacement:

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 &params)
 
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_
 
SimInfoinfo_ {nullptr}
 
DumpReaderreader_
 
std::string dumpFilename_
 
SelectionManager seleMan1_
 
SelectionManager seleMan2_
 
SnapshotcurrentSnapshot_
 
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_
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ CollectiveDipoleDisplacement()

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.


The documentation for this class was generated from the following files: