|
OpenMD 3.2
Molecular Dynamics in the Open
|
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>
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 ¶ms) |
| 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) |
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)
| 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 ) |
|
inlineoverrideprotectedvirtual |
Implements OpenMD::SystemACF< RealType >.
|
overrideprotectedvirtual |
Implements OpenMD::SystemACF< RealType >.
|
overrideprotectedvirtual |
Reimplemented from OpenMD::TimeCorrFunc< RealType >.