OpenMD 3.2
Molecular Dynamics in the Open
Loading...
Searching...
No Matches
OpenMD::SFG Class Reference

Computes the vibrational SFG susceptibility spectrum Im χ²(ω) in the OH-stretch region using the exciton Hamiltonian approach with an ADIABATIC quantum propagator. More...

#include <SFG.hpp>

Inheritance diagram for OpenMD::SFG:

Public Member Functions

 SFG (SimInfo *info, const std::string &filename, const std::string &sele1, const std::string &sele2, const std::string &polarization="ssp", int privilegedAxis=2, RealType t_apod=0.0, RealType t_zerofill=0.0, RealType fc=25.0)
Public Member Functions inherited from OpenMD::SystemACF< RealType >
 SystemACF (SimInfo *info, const std::string &filename, const std::string &sele1, const std::string &sele2)
Public Member Functions inherited from OpenMD::AutoCorrFunc< RealType >
 AutoCorrFunc (SimInfo *info, const std::string &filename, const std::string &sele1, const std::string &sele2)
Public Member Functions inherited from OpenMD::TimeCorrFunc< RealType >
 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)
void setWindowingParameters (RealType tcorr_fs, int nStart, RealType tsep_fs)
Public Member Functions inherited from OpenMD::DynamicProperty
void setOutputName (const std::string &filename)
const std::string & getOutputFileName () const
void setSelectionModeRestart ()

Protected Member Functions

void computeProperty1 (int frame) override
RealType calcCorrVal (int frame1, int frame2) override
void correlation () override
void writeCorrelate () override
Protected Member Functions inherited from OpenMD::SystemACF< RealType >
virtual void computeProperty2 (int)
Protected Member Functions inherited from OpenMD::TimeCorrFunc< RealType >
void writeCorrelate ()
void writeCorrelate ()
void writeCorrelate ()
void writeCorrelate ()
virtual void preCorrelate ()
virtual void postCorrelate ()
virtual void computeFrame (int frame)
virtual void validateSelection (SelectionManager &seleMan)
virtual void correlateFrames (int frame1, int frame2, int timeBin)

Additional Inherited Members

Protected Attributes inherited from OpenMD::TimeCorrFunc< RealType >
RealType deltaTime_
unsigned int nTimeBins_
int nFrames_
std::vector< RealType > histogram_
std::vector< int > count_
std::vector< RealType > times_
RealType dtMean_
RealType dtSigma_
SimInfoinfo_
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_
bool allowTimeFuzz_
std::string corrFuncType_
std::string paramString_
std::string labelString_
std::vector< std::vector< int > > sele1ToIndex_
std::vector< std::vector< int > > sele2ToIndex_
ProgressBarPtr progressBar_
std::vector< std::vector< int > > GIDtoSele1_
std::vector< std::vector< int > > GIDtoSele2_
std::vector< std::vector< int > > selection1StartFrame_
std::vector< std::vector< int > > selection2StartFrame_
int nStart_
int nSep_
int nStride_
int navg_
bool useWindowing_
Protected Attributes inherited from OpenMD::DynamicProperty
std::string outputFilename_
bool selectionModeRestart_

Detailed Description

Computes the vibrational SFG susceptibility spectrum Im χ²(ω) in the OH-stretch region using the exciton Hamiltonian approach with an ADIABATIC quantum propagator.

Algorithm mirrors the MultiSpec code (Kananenka group, exc.cpp):

C(t) = α_pq(t)ᵀ · F(t,0) · μ_r(0)

where F(t,0) is the time-ordered adiabatic propagator:

F(t+dt, 0) = exp(i H(t) dt / ℏ) · F(t, 0)

exp(i H dt / ℏ) is evaluated by diagonalizing H at each step: exp(i H dt / ℏ) = V · diag(exp(i ω_k dt / ℏ)) · V† where V contains eigenvectors of H as columns.

All quantities are kept in the LOCAL (site) basis throughout. The trajectory is divided into navg windows of length nTimeBins_ frames, separated by nSep_ frames, starting at nStart_; these are all populated by the base-class setWindowingParameters() and preCorrelate(). We override correlation() (which is virtual) to implement the adiabatic loop directly, and computeProperty1() to cache per-frame data during the preCorrelate scan.

Spectroscopic maps (Auer & Skinner 2008 for SPC/E; Gruenbaum et al. 2013 for TIP4P): w10_ : ω₁₀(E) = a0 + a1·E + a2·E² [cm⁻¹; E in a.u.] muPrime_: μ′(E) = m0 + m1·E + m2·E² [a.u., dipole deriv.] x10_ : x₁₀(ω) = x0 + x1·ω₁₀ [a.u., coord. matrix el.] p10_ : p₁₀(ω) = p0 + p1·ω₁₀ [a.u., momentum matrix el.] Transition dipole |μ₁₀| = μ′·x₁₀ (converted to Debye). wintra_: ω^intra = [k0+k1·(Eⱼ+Eₖ)]·xⱼ·xₖ + kp·pⱼ·pₖ [cm⁻¹] alphaMap_: (α_par, α_perp) [Ų amu⁻⁰·⁵]

Supported polarization combinations (interface normal = z): ssp : Im C_yyz = α_yy(t)ᵀ · F(t,0) · μ_z(0) ppp : Im [−0.5·C_xxz − 0.5·C_yyz + C_zzz] (near-normal incidence) sps : Im C_yzy = α_yz(t)ᵀ · F(t,0) · μ_y(0)

Definition at line 90 of file SFG.hpp.

Constructor & Destructor Documentation

◆ SFG()

OpenMD::SFG::SFG ( SimInfo * info,
const std::string & filename,
const std::string & sele1,
const std::string & sele2,
const std::string & polarization = "ssp",
int privilegedAxis = 2,
RealType t_apod = 0.0,
RealType t_zerofill = 0.0,
RealType fc = 25.0 )

Definition at line 83 of file SFG.cpp.

◆ ~SFG()

OpenMD::SFG::~SFG ( )
virtual

Definition at line 221 of file SFG.cpp.

Member Function Documentation

◆ calcCorrVal()

RealType OpenMD::SFG::calcCorrVal ( int frame1,
int frame2 )
inlineoverrideprotectedvirtual

Implements OpenMD::SystemACF< RealType >.

Definition at line 107 of file SFG.hpp.

◆ computeProperty1()

void OpenMD::SFG::computeProperty1 ( int frame)
overrideprotectedvirtual

Implements OpenMD::SystemACF< RealType >.

Definition at line 231 of file SFG.cpp.

◆ correlation()

void OpenMD::SFG::correlation ( )
overrideprotectedvirtual

Reimplemented from OpenMD::TimeCorrFunc< RealType >.

Definition at line 281 of file SFG.cpp.

◆ writeCorrelate()

void OpenMD::SFG::writeCorrelate ( )
overrideprotected

Definition at line 1271 of file SFG.cpp.


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