Skip to main content
Wiley Open Access Collection logoLink to Wiley Open Access Collection
. 2021 Jul 1;42(24):1755–1766. doi: 10.1002/jcc.26711

PyUNIxMD: A Python‐based excited state molecular dynamics package

In Seong Lee 1, Jong‐Kwon Ha 1, Daeho Han 1, Tae In Kim 1, Sung Wook Moon 1, Seung Kyu Min 1,
PMCID: PMC8362049  PMID: 34197646

Abstract

Theoretical/computational description of excited state molecular dynamics is nowadays a crucial tool for understanding light‐matter interactions in many materials. Here we present an open‐source Python‐based nonadiabatic molecular dynamics program package, namely PyUNIxMD, to deal with mixed quantum‐classical dynamics for correlated electron‐nuclear propagation. The PyUNIxMD provides many interfaces for quantum chemical calculation methods with commercial and noncommercial ab initio and semiempirical quantum chemistry programs. In addition, the PyUNIxMD offers many nonadiabatic molecular dynamics algorithms such as fewest‐switch surface hopping and its derivatives as well as decoherence‐induced surface hopping based on the exact factorization (DISH‐XF) and coupled‐trajectory mixed quantum‐classical dynamics (CTMQC) for general purposes. Detailed structures and flows of PyUNIxMD are explained for the further implementations by developers. We perform a nonadiabatic molecular dynamics simulation for a molecular motor system as a simple demonstration.

Keywords: decoherence, exact factorization, mixed quantum‐classical dynamics, nonadiabatic molecular dynamics


Python‐based UNIversal Excited state Molecular Dynamics. PyUNIxMD is a Python‐based nonadiabatic molecular dynamics simulation package based on mixed quantum classical frameworks for general purposes. It incorporates various dynamics algorithms and interfaces for popular quantum chemistry softwares. Especially, PyUNIxMD provides novel methodologies such as decoherence‐induced surface hopping dynamics based on exact factorization and coupled‐trajectory mixed quantum classical dynamics to account for quantum decoherence.

graphic file with name JCC-42-1755-g006.jpg

1. INTRODUCTION

Nonadiabatic molecular dynamics (NAMD) is a theoretical/computational tool to describe excited state phenomena such as a photosynthesis,1, 2, 3, 4 photovoltaics,5, 6, 7, 8 vision process,9, 10, 11, 12, 13, 14 and photochemical reactions.15, 16, 17, 18, 19 Especially, understanding molecular mechanisms in photosynthesis and photovoltaics is crucial for the development of future technology toward sustainable energy. One of the most popular concepts for NAMD simulation is the mixed quantum‐classical (MQC) approach which treats electronic degrees of freedom quantum mechanically while nuclear degrees of freedom are governed by the classical Newtonian equation of motion.20 The most standard nonadiabatic MQC methods are ab initio multiple spawning (AIMS),21, 22 Ehrenfest dynamics,23 and Tully's fewest switches surface hopping (FSSH).24 In particular, FSSH and Ehrenfest dynamics are by far the most popular algorithms due to their efficiency and simplicity. Moreover, these methods can be implemented readily into modern quantum chemistry and physics program packages.

Due to the importance of NAMD simulations, lots of program packages for NAMD have been developed.25, 26, 27, 28, 29, 30, 31 Furthermore, there are many quantum mechanical (QM) programs that provide NAMD functionalities.32, 33, 34, 35, 36, 37 Among them, SHARC25 and Newton‐X26 are the most dominant programs based on the FSSH algorithm and its derivatives. They provide multiple interfaces to QM programs and NAMD capabilities such as spin‐orbit/laser couplings, absorption/emission spectra, and QM/MM simulations. Most of the NAMD programs are written in legacy programming languages such as C/C++ and Fortran due to the efficiency and the richness of scientific libraries. Nowadays, Python becomes the most popular language due to its simplicity, and lots of scientific libraries and environments are optimized for Python. Furthermore, since Python is suitable for object‐oriented programming, modularization can be done directly.

From the perspective of chemical theory, FSSH and Ehrenfest dynamics have an important limitation, the so‐called overcoherence problem, which is an intrinsic problem due to the independent trajectory approximation.38 Ehrenfest dynamics propagates a classical nuclear trajectory on an averaged potential energy surface while the electronic state is evolved by electronic time‐dependent Schrödinger equation (TDSE) along the classical nuclear trajectory. The incorrect account for the electron‐nuclear correlation results in the overestimation of electronic coherence along the classical trajectory,39 that is, finite off‐diagonal elements in electronic density matrix, and independent nuclear trajectories do not bifurcate in phase space. On the other hand, FSSH uses a single Born‐Oppenheimer (BO) potential energy surface in a stochastic way to reproduce the nuclear wave packet splitting properly. However, off‐diagonal elements in electronic density matrix are finite since FSSH exploits the Ehrenfest electronic equation of motion. Thus, the separated nuclear wave packets are still in coherent, that is, the electronic density matrix as a function of nuclear degrees of freedom is not captured correctly, resulting in an overestimation of nuclear coherence.40 Thus, many derivatives of FSSH have been developed so far to account for the correct electron‐nuclear correlation for quantum (de)coherence.41, 42, 43, 44, 45, 46, 47, 48 Recently, based on the exact factorization framework,49, 50 the coupled‐trajectory MQC (CTMQC) algorithm has been developed to account for quantum (de)coherence.51, 52, 53, 54, 55 Subsequently, decoherence‐induced surface hopping based on the exact factorization (DISH‐XF)48 has been developed for efficiency. Compared to Ehrenfest dynamics and FSSH, the methods for quantum (de)coherence attempt to describe the nuclear nonadiabatic couplings,40 that is, derivative coupling among nuclear wave functions, effectively in addition to electronic nonadiabatic couplings, that is, derivative couplings among electronic states. So far NAMD programs with DISH‐XF and CTMQC for the general purpose have not been published yet.

In this article, we introduce a new open‐source program package for NAMD simulations, namely PyUNIxMD, a Python‐based universal excited state molecular dynamics which is aiming for easy‐to‐use, versatile MQC dynamics simulations including CTMQC and DISH‐XF algorithms with interfaces for multiple QM programs. PyUNIxMD is mainly written in Python, with minimal interfaces to C codes via Cython for a time‐consuming electronic propagation part. Since the codes are well‐modularized as classes, it is straightforward to add other MQC algorithms or QM interfaces.

This article is organized as follows: First, we provide brief introductions for MQC methods implemented in PyUNIxMD. Next, we introduce the structure of PyUNIxMD package, a role of each class, and a workflow of an MQC simulation with PyUNIxMD. Finally, we show an actual NAMD simulation result with a molecular motor system as an example, and we summarize our work.

2. METHODOLOGY

2.1. Available mixed quantum‐classical methods

The PyUNIxMD package employs multiple MQC approaches for correlated electron‐nuclear dynamics simulation. In addition to Born‐Oppenheimer molecular dynamics (BOMD), Ehrenfest dynamics,23 and FSSH24 with the decoherence corrections such as the instantaneous decoherence correction (IDC)45 and the energy‐based decoherence correction (EDC)42 are implemented in the current version of PyUNIxMD. Especially, CTMQC51, 52, 53, 54, 55 and DISH‐XF48 algorithms are included. In this section, we briefly review MQC methods implemented in PyUNIxMD.

2.1.1. Ehrenfest dynamics

In the Ehrenfest dynamics, nuclei move according to the gradient of the mean potential while electrons propagate using the TDSE along the classical nuclear trajectory, R¯¯t=Rνt where ν represents a nuclear index. The equations of motions are further simplified by expanding the electronic wave function Φr¯¯t with Born‐Oppenheimer (BO) basis functions, Φkr¯¯R¯¯t, that is, Φr¯¯t=kcktΦkr¯¯R¯¯t where Φk is the k th eigenfunction of the BO Hamiltonian with the corresponding eigenvalue Ek, and r¯¯ is the electronic degrees of freedom. As a result, the coupled motion of nuclei and electrons in the Ehrenfest dynamics is described by the following equations:

MνR¨νt=kck*tcktνEkj,kcj*tcktEkEjdjk,ν (1)
c˙kt=iEkcktjνdkj,νR˙νtcjt (2)

where Mν is the mass of ν th nucleus, dkj,ν is the nonadiabatic coupling vectors (NACVs) as dkj,ν=dr¯¯Φk*νΦj. R˙νt and R¨νt are the nuclear velocity and acceleration for the ν th nuclei, respectively. According to Equation (1), Ehrenfest dynamics requires NACVs intrinsically. Thus, Ehrenfest dynamics is only available with QM methods which can provide NACVs in PyUNIxMD. Equation (2) produces a coherent electronic state in presence of nonzero NACVs. Thus, an independent classical trajectory follows the mean‐field potential according to Equation (1) preserving the coherent state even after the coupling region, which results in the overestimation of electronic coherence.

2.1.2. Fewest switches surface hopping dynamics and decoherence corrections

While nuclei follow the averaged potential in Ehrenfest dynamics, nuclei in FSSH algorithm follow a single potential energy surface stochastically to describe nuclear branching phenomena after a nonadiabatic coupling region. While the electronic equation of motion is same as in the Ehrenfest dynamics (Equation (2)), nuclei propagate on a single potential energy surface of a given BO state (El), that is,

MνR¨νt=νElt (3)

where l is a “running” state for the given trajectory. The nuclear trajectory can choose the running state at any time depending on hopping probabilities where the hopping probability from l to another state k at time t with a time interval Δt is given as:

Plkt=max02Reρlktνdlk,νR˙νtρlltΔt, (4)

with an electron density matrix element ρlkt=cl*tckt. At every time step, a uniform random number ξ ranging from 0 to 1 is generated. Only if ξ satisfies the condition, jk1Plj<ξ<jkPlj, the hop from l to k can occur. When a hop (lk) occurs during a FSSH simulation, we rescale the momentum or velocity of the nuclear trajectory to compensate a sudden change of potential energy for energy conservation, that is, ν12MνR˙ν2+Elt=ν12MνR˙'ν2+Ekt. Various rescaling methods have been proposed to achieve the energy conservation.56 In PyUNIxMD, three rescaling methods are implemented: (a) momentum rescaling along the NACV as MνR˙'νt=MνR˙νt+αdlk,ν where α is the solution with a smaller absolute value of the equation α2νdlk,ν2Mν+αν2R˙νdlk,ν+2EktElt=0, (b) an isotropic rescaling of all atomic velocities as R˙'νt=αR˙νt with α=1EktEltEkin, and (c) the combination of (a) and (b) where (a) has priority over (b). If we cannot determine a suitable α, the hop is rejected. In this case, the momentum can be either unchanged or reversed to the direction specified for the rescaling option above. Although the Equations (2) and (4) require NACVs, the calculation of the NACVs, which is computationally expensive, can be avoided by direct numerical evaluation of nonadiabatic coupling matrix elements (NACMEs), σij=νdij,νR˙ν.57, 58, 59 Therefore, in contrast to the Ehrenfest dynamics, it is possible for FSSH to run NAMD simulations without NACVs. However, in this case, only the option (b) is available for the rescaling since dlk,ν's are not calculated. In addition, due to the stochastic nature of FSSH, multiple NAMD simulations should be performed with a suitable initial distribution of nuclear trajectories from Boltzmann sampling and Wigner sampling to obtain statistically meaningful results.

As mentioned earlier, FSSH suffers from the well‐known overcoherence problem.38 Many decoherence correction methods have been developed to solve the overcoherence problem. PyUNIxMD provides IDC,45 EDC,42 and DISH‐XF.48 Here we preserve DISH‐XF for the latter section, and we discuss IDC and EDC approaches first. The IDC approach is the simplest decoherence correction scheme which resets the BO coefficient to 1 for the running state and 0 for the other states whenever the running state is changed or a hop is rejected. In the EDC method, instead of instantaneous collapse of the electronic wavefunction to the running state, exponential decay of the coherence is introduced via a decay‐of‐mixing lifetime based on BO energies, Ek, and a pre‐determined parameter, C. The BO coefficients, ckt, are scaled as ckt by:

ckt=ckteΔt/τktifklckt1jlcjt2ckt212ifk=l (5)

with the running state l, and the decoherence time, τk, is given by,

τkt=EktElt1+CEkint. (6)

Here, Ekin is the nuclear kinetic energy and C is a constant parameter. In PyUNIxMD, we choose C as 0.1 Hartree by default.42 Thus, IDC and EDC are rather an artificial correction for decoherence.

2.1.3. Coupled‐trajectory mixed quantum‐classical dynamics

Based on the exact factorization, one can derive the coupled equations of motion for correlated electron‐nuclear dynamics where the coupling is mediated by the so‐called electron‐nuclear correlation term.49, 50 Systematic approximations provide a MQC approach with coupled nuclear trajectories, namely the CTMQC method.51, 52, 53, 54, 55 Here we provide working equations for CTMQC approach simply while the detailed derivations and theoretical explanations can be found in the original references.51, 52, 53

The coupled nuclear and electronic equations of motion are given as

MνR¨νt=kρkktνEkj,kρjktEkEjdjk,νjρjjtν2MνPνtfj,νtkρkktfk,νtfj,νt, (7)

and

c˙kt=iEkcktjνσkjtcjtνPνtMνjρjjtfj,νtfk,νtckt, (8)

respectively, where Pνt=νχR¯¯tχR¯¯tR¯¯t is the so‐called nuclear quantum momentum with a nuclear wave function χR¯¯t, and fk,νt is a phase term from the BO coefficient. Compared to Ehrenfest dynamics (Equations (1) and (2)), Equations (7) and (8) have additional terms with the quantum momentum Pν. In the extreme case where the nuclear wave function is localized in a space as a delta function, the nuclear quantum momentum becomes zero, thus CTMQC equations collapse to the Ehrenfest dynamics. In CTMQC algorithm, we approximate Pν from multiple trajectories by putting a multi‐dimensional Gaussian on each trajectory where the variance of each Gaussian is determined from the variance of the atomic positions of the overall trajectories. Thus, all nuclear trajectories are coupled to each other to determine the quantum momentum. In addition, the phase term fk,νt is approximated as the time integration of BO forces as fk,νt=tνEktdt. As a result of the additional terms, electronic populations can change in the absence of nonadiabatic couplings which can describe decoherence of the electronic state. Since CTMQC method requires multiple trajectories running at the same time and the evaluation of BO force for all BO states, CTMQC usually needs a larger computational cost compared to independent trajectory approaches as FSSH and Ehrenfest. Moreover, the stability of QM calculations is of paramount importance. Therefore, CTMQC can be more useful when QM calculations are coupled to machine learning approaches.60 The CTMQC method has successfully described the decoherence effects on excited state molecular dynamics simulations on various model systems and real molecules.51, 52, 53, 54, 55, 61

2.1.4. Decoherence‐induced surface hopping based on exact factorization

The DISH‐XF method complements the weakness of CTMQC method while maintaining its strength. The equations of motion for DISH‐XF method consist of electronic part of CTMQC (Equation 8) and nuclear part of FSSH (Equation 3), thus DISH‐XF is another derivative of FSSH with the decoherence correction. The quantum momentum Pν in Equation (8) is evaluated from the auxiliary trajectories. There are several algorithms which exploit auxiliary trajectories such as augmented FSSH (A‐FSSH)46 and overlap‐based decoherence correction (ODC).43 The ODC method estimates the decoherence by calculating nuclear wavefunction overlaps from auxiliary trajectories and renormalizes BO coefficients whenever the overlap becomes zero. The A‐FSSH stochastically collapses the electronic state to the running state using decoherence rate calculated from auxiliary trajectories. In contrast to the above methods, DISH‐XF does not require discontinuous renormalization of BO coefficients and the decoherence effect is included directly in the electronic equation of motion derived from the exact factorization formalism.

We generate auxiliary trajectories on BO states with nonzero population except the running state. The momenta of the auxiliary trajectories are calculated with uniform scaling of the real trajectory based on the energy conservation law. Similar to CTMQC, a multi‐dimensional frozen Gaussian wave function centered at each auxiliary trajectory is used to calculate the quantum momentum term. However, in DISH‐XF, the variances of the Gaussian are fixed as an initial parameter. A reasonable choice would be the variance of the initial distribution. The phase term fk,ν is approximated as a time integration of the momenta change of auxiliary trajectories on the BO state. The detailed equations and explanations can be found in the literature.48 Therefore, DISH‐XF is an independent trajectory approach, and we can preserve the efficiency of FSSH algorithm. Compared to the conventional FSSH, DISH‐XF requires a few additional memories for decoherence quantities which can be calculated from the information for FSSH simulations straightforwardly. Thus, the electrons and nuclei can be propagated using DISH‐XF method with almost same cost as the FSSH method.

In contrast to the fact that the previous ad‐hoc corrections rather artificially force the wave‐function to collapse into a running state, CTMQC and DISH‐XF naturally introduce the decoherence and provide the norm conservation of the electronic wave function as a result of the electron‐nuclear correlation. The DISH‐XF method has been successfully applied to the excited state molecular dynamics simulations on various models and molecular systems.18, 48, 62, 63, 64, 65

2.2. PyUNIxMD package

In this section, we introduce the code structure and flow of the PyUNIxMD package. Then, we explain main components of PyUNIxMD package for MQC dynamics simulation. Finally, we explain post‐processing scripts for analysis of MQC simulations included in the PyUNIxMD package. The names used in PyUNIxMD for classes, objects, methods, files, and variables are represented in italic font. In addition, we use the name of an object related to a class as same as the name of the class. PyUNIxMD is distributed via GitHub repository (https://github.com/skmin-lab/unixmd) under the MIT license.

2.2.1. Structure and flow

The PyUNIxMD package consists of three main classes: Molecule, QM_calculator and MQC classes. Molecule defines a target system. QM_calculator interfaces several QM programs and methodologies to calculate the electronic structures. MQC has information about molecular dynamics. Detailed contents about each class will be discussed in the following sections. In addition, MM_calculator handles QM/MM calculation and Thermostat controls temperature of a target system.

Figure 1 shows the flow of the dynamics to execute PyUNIxMD and the corresponding running script. The flow is summarized as follows: (a) Define information for a target system in the Molecule object. (b) Define a QM_calculator object which has the level of computations to calculate the target system. One can also define optional condition such as thermostat. (c) Create a MQC object which includes the dynamics information as well as the previously defined Molecule object. (d) Execute the run method of the MQC object with the defined QM_calculator object. As a result, the information about the target system such as atomic positions, energies and BO populations is updated and written in several output files during time propagation.

FIGURE 1.

FIGURE 1

(A) Structure of the PyUNIxMD package and data flow in a NAMD simulation using PyUNIxMD. The Molecule object is updated by the MQC object during the dynamics while properties are calculated by the QM_calculator (and MM_calculator, optionally). (B) An example of a typical running script for the PyUNIxMD execution

Molecule class

Molecule has basic information about the system such as geometries, velocities, charge and the number of states. Since the Molecule object is used for creating MQC and QM_calculator objects, the Molecule object must be defined prior to other objects. Molecule employs an extended XYZ format to set a geometry and a velocity. Especially, PyUNIxMD handles state‐specific information such as energy and force with State class for each BO state, and Molecule.states object is declared as the State class. Hence, one can easily access the state‐specific information with Molecule.states objects for specific purposes.

MQC class

The MQC class is the central class of PyUNIxMD which defines and runs NAMD simulation. Subclasses of the MQC class determine a MQC dynamics method as BOMD for BOMD, Eh for Ehrenfest dynamics, SH for FSSH and its derivatives, SHXF for DISH‐XF and CT for CTMQC. As common variables, the subclasses requires a geometry object (molecule), the number of nuclear time steps (nsteps), a time step size (dt), and the initial electronic state (istate). Of course, each subclass has its own input parameters. For example, one can choose the rescaling method by defining hop_rescale variable for SH and SHXF. For IDC and EDC decoherence corrections, one can define dec_correction as “idc” and “edc”, respectively, in SH.

  • run method

After the MQC object is created, the dynamics simulation is executed by calling run method of the MQC object. In order to integrate the equation of motions for the dynamics, the run method requires electronic structure calculation of the molecule at every time step. Therefore, the run method takes a QM_calculator object that interfaces with the external QM program. If one wants to conduct the dynamics with a thermostat, a Thermostat object must be additionally provided. Detailed description about QM_calculator and Thermostat classes will be given in the following sections.

In the MQC.run method, the following process is repeated until the dynamics reaches the maximum time step (nsteps): (a) The molecular geometry is transferred to the QM_calculator object. (b) QM calculation is executed, and the calculated properties are stored to the Molecule object. (c) Using the properties, the run method updates the atomic positions and the electronic properties according to the selected MQC algorithm. (d) If Thermostat object exists, the velocities are adjusted according to the thermostat. (e) Finally, the run method writes the information about the trajectory. PyUNIxMD writes the following output files during a simulation depending on the type of MQC algorithm: RESTART.bin, MDENERGY, BOPOP, BOCOH, NACME, MOVIE.xyz, SHPROB, and SHSTATE contain dynamics information at the last successful step, energies, BO populations, BO coherence, NACMEs, the nuclear trajectory, hopping probabilities, and the running state, respectively (Figure 2).

Since QM calculations at different time steps are independent, the phases of the wavefunctions and the NACVs are arbitrary. PyUNIxMD aligns the phases of NACVs at every nuclear time step after QM calculations using the dot products of normalized NACVs at t and tdt, that is, djk,νtdjk,νt if νdjk,νtdjk,νtdtdjk,νtdjk,νtdt<0. PyUNIxMD package employs velocity‐Verlet66 algorithm for the nuclear propagation and the 4th order Runge–Kutta scheme (RK4)67 for the electronic propagation (Equations 2 and 8). Electronic state is more sensitive to the time interval than nuclear motion, therefore, a smaller electronic time step is usually used and propagated with linear interpolation of properties between adjacent nuclear time steps. PyUNIxMD uses the nuclear time step size (dt) as 0.5 fs and the number of electronic time steps for each nuclear step (nesteps) as 20 by default, which is obtained from convergence tests with several models and realistic molecular systems. However, simulation results may be different from the choice of nesteps depending on the system. Therefore, the convergence test is required for more rigorous simulations. Especially, a system with extremely localized nonadiabatic coupling regions requires a completely different electronic propagation scheme such as local diabatization with exponential time propagator68 which is under development in PyUNIxMD. Since the electronic propagation is computationally expensive, the corresponding codes are written in C and interfaced to the MQC class via Cython.

QM_calculator class

QM_calculator class provides interfaces to various external (or internal, for simple model calculations) QM programs. PyUNIxMD supports complete active space self‐consistent field (CASSCF) in Columbus69 and Molpro,33 multireference configuration interaction (MRCI) in Columbus, time‐dependent density‐functional theory (TDDFT) in Gaussian 0970 and Q‐Chem,32 state‐interaction state‐averaged spin‐restricted ensemble Kohn‐Sham (SSR) in TeraChem,71 time‐dependent density‐functional tight‐binding (TDDFTB) and density‐functional tight‐binding based on SSR (DFTB/SSR) in DFTB+.72 PyUNIxMD has two level subclasses related to QM_calculator: A higher subclass which inherits the QM_calculator class to determine a QM program, and a lower subclass to further choose a specific QM method in the corresponding QM program. For example, an interfacing class for CASSCF calculation using Molpro is CASSCF subclass of Molpro subclass that inherits the QM_calculator class.

Depending on the availability of NACVs calculations, PyUNIxMD supports Ehrenfest and CTMQC dynamics. For example, NACVs can be calculated with CASSCF or SSR method. Thus, all MQC dynamics are possible with these methods. In contrast, the NACVs cannot be provided from TDDFT method except Q‐Chem. Instead, the numerical evaluation of NACMEs59 is supported in PyUNIxMD so that surface hopping based dynamics can be exploited with TDDFT of Gaussian 09 or TDDFTB of DFTB +. The compatibility between MQC dynamics and QM methods in the current version of PyUNIxMD is given in Table 1.

  • get_data method

TABLE 1.

Compatibility between QM programs and MQC methods in PyUNIxMD

Program Method BOMD Ehrenfest FSSH DISH‐XF CTMQC
Columbus69 CASSCF
MRCI
DFTB + 72 TDDFTB
DFTB/SSR
Gaussian 0970 TDDFT
Molpro33 CASSCF
Q‐Chem32 TDDFT
TeraChem71 SSR

In the MQC.run method, the get_data method of the QM_calculator class carries out the QM calculation by executing the QM program with an input based on the information of the Molecule object. After QM calculation, the get_data reads the resulting output data, and assigns the energies, forces and NACVs to Molecule object for the nuclear and electronic propagations. One can easily add new QM interfaces to PyUNIxMD by making subclasses of QM_calculator class with proper get_data method. In addition, get_data provides NACMEs calculations from CIS coefficients (CiaK) and Kohn‐Sham molecular orbitals (ϕi) for TDDFTB in DFTB+ and TDDFT in Gaussian 09 as59:

σKJ=iaCiaKtCiaJ+iabCiaKCibJϕa|tϕbijaPijCiaKCjaJϕjtϕi, (9)

where i,j, a,b and K,J are indices for occupied orbitals, virtual orbitals, and total electronic states, respectively, and Pij is a phase factor (1 or 1ij) depending on the orbital ordering convention for slater determinants. The phase freedom of the NACMEs are adjusted during the calculation of wavefunction overlaps between t and tdt. Similar to the electronic propagation, Equation (9) is written in C interfaced via Cython due to the scaling with the orbital size (N3).

MM_calculator class

MM_calculator is an optional class of PyUNIxMD that interfaces to the MM programs for QM/MM calculations. Currently only Tinker73 is interfaced with PyUNIxMD. As in the QM_calculator object, the get_data method runs the external MM calculation by generating an input file based on Molecule object. After the MM calculation, get_data assigns the resulting energies and forces to Molecule object. As a summary, one can perform QM/MM‐based NAMD simulations by putting the MM_calculator object in the MQC.run method after defining the MM_calculator object. Other MM programs or detailed QM/MM schemes will be implemented in the future.

Thermostat class

A temperature of the system can be controlled by a thermostat during the dynamics. PyUNIxMD provides three types of thermostat classes; velocity‐rescaling, Berendsen,74 and Nose‐Hoover chain.75 Two types of velocity‐rescaling thermostat are implemented in PyUNIxMD: A simple rescaling at every n step to a target temperature, and a rescaling only if a current temperature deviates from the target temperature by a certain amount. Berendsen and Nose‐Hoover chain thermostats are implemented as demonstrated in the references.74, 75 Since the MQC object uses Thermostat object, one must define the Thermostat prior to the MQC object.

Auxiliary scripts

PyUNIxMD provides several scripts for analysis with the multiple output files in Figure 2. One can calculate an averaged value of any observable Ot over multiple trajectories as:

Ot=INtrajOItNtraj, (10)

where OIt is an observable of the I th trajectory at time t. The script statistical_analysis.py calculates averaged values of BO populations (ρiit), coherence indicators (ρijt2), and NACMEs (σijt=νdij,νtR˙νt). For FSSH simulations, the script calculates another average BO populations based on running states of the trajectories given by:

pit=NitNtraj, (11)

where Nit is the number of trajectories with the running state i. While a molecule undergoes a nonadiabatic process, the nuclear wave packet may branch into different reaction pathways. The script motion_analysis.py extracts bond lengths, bond angles, or dihedral angles between selected atoms from the MOVIE.xyz file and store values in separate files. The script also provides mean values of bond lengths, bond angles, or dihedral angles over an ensemble of trajectories. One can analyze the reaction pathways by monitoring these fundamental geometric parameters. The example results generated by these scripts are illustrated in the following section.

FIGURE 2.

FIGURE 2

A file tree generated by PyUNIxMD. PyUNIxMD generates directories for MD outputs, logs from QM and MM calculations. The MD outputs vary according to the MQC method. The blue and light green boxes represent directories and files, respectively. The purple boxes distinguish output files that vary according to the MQC method

3. EXAMPLES

As a demonstration of the NAMD simulation with the PyUNIxMD package, we study photoisomerization dynamics of a molecular motor in the gas phase.76 The chemical structure and numbering of the molecular motor used in this article are given in Figure 3. The initial conditions for photoisomerization dynamics can be obtained from Boltzmann or Wigner sampling. Here we prepare the initial conditions based on Boltzmann sampling by performing BOMD on the ground state for 20 ps with a time step of 0.5 fs using randomly distorted structures from the optimized structure. We employ the velocity rescaling thermostat after every 10 fs at 300 K. After the thermal equilibrium, 100 trajectories from 10 ps to 20 ps are extracted for the initial conditions of excited state molecular dynamics simulations. Using the 100 initial conditions, we perform FSSH, FSSH with EDC (SHEDC), and DISH‐XF dynamics with a time step of 0.5 fs without thermostat for 5 ps on the S1 state initially. In addition, we use the momentum rescaling along NACVs after a hop occurs and preserve the momentum for a rejected hop. For SHEDC, we use a default value for a pre‐determined parameter, C as 0.1 Hartree. For DISH‐XF, we use width of 0.1 a.u. initially. We choose long‐range corrected and onsite corrected DFTB/SSR (LC‐OC‐DFTB/SSR) method with ob2 parameters77 for QM calculation where the LC‐OC‐DFTB/SSR method is a modification of LC‐DFTB/SSR method78 by implementing onsite correction scheme.79

FIGURE 3.

FIGURE 3

Chemical structure of the molecular motor used in the molecular dynamics. The motor shows photoisomerization dynamics around center C7 = C18 double bond after a light absorption. All carbon atoms are labeled. The dihedral angle (θ) around the central C7 = C18 is defined as the angle between a plane with C7, C4, and C8 and a plane with C18, C17, and C14

Figure 4 shows average populations and coherences with the FSSH, SHEDC, and DISH‐XF methods. We can calculate the average populations from BO populations (ρii) or running states (pi) using Equations (10) and (11). While pi and ρii show completely different behaviors for FSSH, the average populations are almost on top of each other for DISH‐XF and SHEDC indicating decoherence correction recovers internal consistency (piρii). We notice that three methods show similar behavior up to earlier 500 fs and yield different propagation for pi, ρii, and ρij2 afterwards. The lifetimes on the S1 state can be calculated from the monoexponential fitting process for S1 population. The lifetime of the S1 state calculated from the FSSH method is 600 fs similar to 710 fs from FSSH with OM2/MRCI.76 While the DISH‐XF and SHEDC method shows the lifetime as 1.97 and 2.15 ps, respectively. In FSSH, the lifetime becomes small because of the overestimation of the hopping probabilities. The lack of decoherence induces the accumulation of the off‐diagonal elements in the electronic density matrix which results in the increase of hopping probabilities. In addition, once the system goes to the ground state, the opposite hopping is mostly forbidden due to the energy conservation in this particular example. For DISH‐XF and SHEDC, they show similar averaged electronic populations although the equations of motion are different. For SHEDC, the decoherence depends on a damping parameter determined from the kinetic energy and the difference between potential energies, see Equations (5) and (6). Thus, the electronic populations exponentially decay to the running state at every step. In DISH‐XF, the decoherence term becomes nonzero which induces further population transfer from one state to the other state after nonadiabatic coupling region. Depending on auxiliary trajectories and phase factors, the direction of population transfer is determined (Equation 8).48 Due to the decoherence, the trajectory with DISH‐XF and SHEDC tends to stay longer on the initial S1 state showing the slower decay of S1 population. In lower panel of Figure 5, average coherences for DISH‐XF and SHEDC show several peaks with the period of 800 fs, while the FSSH shows an accumulation of coherence. SHEDC shows several sharp peaks caused from the fast exponential decay, while DISH‐XF shows broad peaks due to the relatively slow decoherence. Thus, in this example, the decoherence of SHEDC is stronger than DISH‐XF. Overall, the results of DISH‐XF and SHEDC indicate that the S1 population decays discretely with a certain period.

FIGURE 4.

FIGURE 4

Averaged electronic populations, pi and ρii, and coherences, ρij2 from FSSH, SHEDC, and DISH‐XF simulations for the molecular motor system. Red, green, and blue solid lines represent the results calculated from DISH‐XF, SHEDC, and FSSH, respectively. The bold and dotted lines for electronic populations represent the population of S1 and S0 states, respectively

FIGURE 5.

FIGURE 5

The time evolution of (A, B, C) energies, (D) the dihedral angle along the central C═C bond, (E) BO populations and (F) the coherence for a selected trajectory in DISH‐XF, SHEDC, and FSSH simulations. In (A, B, C), yellow, green, black, and purple lines represent potential energies of S0, S1, and the running state, and the total energy, respectively

The role of decoherence is more clear when we analyze individual trajectories. Figure 5 shows BO energies, BO populations, and a coherence indicator of a selected trajectory for FSSH, SHEDC, and DISH‐XF. The initial conditions are all identical in this case. BO populations of FSSH shows gradual increase (or decrease) and the hop from S1 to S0 occurs directly in the earlier time. However, the additional decoherence effect makes the BO population recover the pure electronic state (ρ11=1) for DISH‐XF and SHEDC. Thus, the overall BO population exchanges are slower in DISH‐XF and SHEDC. We can also notice that ρ11 becomes 1 or 0 eventually when the running state is S1 or S0, respectively. As a result, ρ12t2 shows a trivial difference between FSSH and the other two methods. In FSSH, the ρ12t2 remains finite after a hop without any decay. However, the ρ12t2 from DISH‐XF and SHEDC increases as the trajectory passes the nonadiabatic coupling region, and decreases as the trajectory leaves the region.

The structure analysis with motion_analysis.py provides the time evolution of the dihedral angle around C7 = C18 double bond (see Figure 3) from the selected trajectory for the DISH‐XF, SHEDC, and FSSH. FSSH shows a fast isomerization via a conical intersection while DISH‐XF and SHEDC preserve the running state for a while showing an oscillation of the dihedral angle. Based on time‐dependent energy profiles and dihedral angles in Figure 5, the molecular motor reaches a coupling region with a small energy gap as the diheral angle becomes 90. In this case, the DISH‐XF and SHEDC trajectories cross the coupling region five and three times, respectively, while the FSSH trajectory crosses the coupling region one time, which indicates the DISH‐XF and SHEDC trajectories stay on the upper state longer than the FSSH trajectory. Overall, these trajectories eventually show successful isomerization with the dihedral angle of 210. Finally, we calculate the quantum yield of photoisomerization based on the number of trajectories showing the isomerization over the total number of trajectories. The quantum yield for the isomerization from the FSSH is 0.68 while the yield from the DISH‐XF and SHEDC becomes 0.59 and 0.46, respectively. The quantum yield in the reference is 0.6 based on semiempirical methods.76 We notice that the calculated quantum yields are considerably larger than the experimental result showing 0.14 in presence of toluene solvents.80 Thus, the correct consideration of thermal effects due to environments is crucial to describe molecular rotors in a solution.

4. CONCLUSIONS

In this article, we presented an open‐source Python‐based NAMD program, PyUNIxMD package. PyUNIxMD provides wide choices of MQC methods and QM interfaces. Especially, CTMQC and DISH‐XF are implemented for general purposes for the first time. PyUNIxMD also offers several auxiliary scripts for preparation of NAMD simulations and analysis. We performed FSSH and DISH‐XF simulations for photoisomerization dynamics of a molecular motor system as a demonstration of the PyUNIxMD package. Compared to FSSH, DISH‐XF exhibits distinct decoherence effect with better internal consistency, and a longer lifetime. Since the overall code structure of the PyUNIxMD is straightforward and well‐organized, it is easy to perform NAMD simulations and add new interfaces and features for QM and MQC methods. We expect that PyUNIxMD provides an efficient NAMD simulation tool and development platform of new NAMD methods. In addition, automation of multiple NAMD simulations can easily be achieved via simple scripts with PyUNIxMD. Such automation is important in terms of congruency, reproducibility, and user independency as addressed in molecular model construction studies.81, 82 We plan to implement AIMS, and to update interfaces for QM/MM environments, other QM methods such as CASPT2, various electronic propagators, and additional scripts for Wigner sampling and result analysis.

Supporting information

Appendix S1: Supplementary information.

ACKNOWLEDGMENTS

This work was supported by the research fund (1.190123.01) of Ulsan National Institute of Science and Technology (UNIST) and the research fund (NRF‐2019R1A2C1007744 and NRF‐2019R1A4A1027934) of the National Research Foundation of Korea (NRF) by the Ministry of Science and ICT.

Lee I. S., Ha J.‐K., Han D., Kim T. I., Moon S. W., Min S. K., J Comput Chem 2021, 42(24), 1755. 10.1002/jcc.26711

In Seong Lee and Jong‐Kwon Ha contributed equally to this study.

Funding information National Research Foundation of Korea, Ministry of Science and ICT, Grant/Award Numbers: NRF‐2019R1A2C1007744, NRF‐2019R1A4A1027934; Ulsan National Institute of Science and Technology, Grant/Award Number: 1.190123.01

DATA AVAILABILITY STATEMENT

The PyUNIxMD code, presented and used within this study, is openly available at GitHub (https://github.com/skmin-lab/unixmd). Initial sample is available in Supporting Information.

REFERENCES

  • 1.Scholes G. D., Nature 2017, 543, 647. [DOI] [PubMed] [Google Scholar]
  • 2.Romero E., Novoderezhkin V. I., van Grondelle R., Nature 2017, 543, 355. [DOI] [PubMed] [Google Scholar]
  • 3.Kaucikas M., Maghlaoui K., Barber J., Renger T., Van Thor J. J., Nat. Commun. 2016, 7, 13977. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 4.Nürnberg D. J., Morton J., Santabarbara S., Telfer A., Joliot P., Antonaru L. A., Ruban A. V., Cardona T., Krausz E., Boussac A., Fantuzzi A., Rutherford A. W., Science 2018, 360, 1210. [DOI] [PubMed] [Google Scholar]
  • 5.Blancon J. C., Science 2017, 355, 1288. [DOI] [PubMed] [Google Scholar]
  • 6.Nah S., Spokoyny B., Stoumpos C., Soe C., Kanatzidis M., Harel E., Nat. Photonics 2017, 11, 285. [Google Scholar]
  • 7.Huang J., Yuan Y., Shao Y., Yan Y., Nat. Rev. Mater. 2017, 2, 17042. [Google Scholar]
  • 8.Qiao L., Fang W.‐H., Long R., Prezhdo O. V., J. Phys. Chem. Lett. 2020, 11, 7066. [DOI] [PubMed] [Google Scholar]
  • 9.Garavelli M., Celani P., Bernardi F., Robb M. A., Olivucci M., J. Am. Chem. Soc. 1997, 119, 6891. [Google Scholar]
  • 10.Frutos L. M., Andruniów T., Santoro F., Ferré N., Olivucci M., Proc. Natl. Acad. Sci. USA 2007, 104, 7764. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 11.Polli D., Altoé P., Weingart O., Spillane K. M., Manzoni C., Brida D., Tomasello G., Orlandi G., Kukura P., Mathies R. A., Garavelli M., Cerullo G., Nature 2010, 467, 440. [DOI] [PubMed] [Google Scholar]
  • 12.Nango E., Royant A., Kubo M., Nakane T., Wickstrand C., Kimura T., Tanaka T., Tono K., Song C., Tanaka R., Arima T., Yamashita A., Kobayashi J., Hosaka T., Mizohata E., Nogly P., Sugahara M., Nam D., Nomura T., Shimamura D., Im T., Fujiwara T., Yamanaka Y., Jeon B., Nishizawa T., Oda K., Fukuda M., Andersson R., Båth P., Dods J., Davidsson R., Matsuoka S., Kawatake S., Murata M., Nureki O., Owada S., Kameshima T., Hatsui T., Joti Y., Schertler G., Yabashi M., Bondar A.‐N., Standfuss R., Jörg, Neutze, Iwata S., Science 2016, 354, 1552. [DOI] [PubMed] [Google Scholar]
  • 13.Gozem S., Luk H. L., Schapiro I., Olivucci M., Chem. Rev. 2017, 117, 13502. [DOI] [PubMed] [Google Scholar]
  • 14.Schnedermann C., Yang X., Liebel M., Spillane K. M., Lugtenburg J., Fernandez I., Valentini A., Schapiro I., Olivucci M., Kukura P., Mathies R. A., Nat. Chem. 2018, 10, 449. [DOI] [PubMed] [Google Scholar]
  • 15.Wang Z., Li C., Domen K., Chem. Soc. Rev. 2019, 48, 2109. [DOI] [PubMed] [Google Scholar]
  • 16.Singh V. K., Yu C., Badgujar S., Kim Y., Kwon Y., Kim D., Lee J., Akhter T., Thangavel G., Park L. S., Lee J., Nandajan P. C., Wannemacher R., Milián‐Medina B. N., Lüer, Kim K. S., Gierschner J., Kwon M. S., Nat. Catal. 2018, 1, 794. [Google Scholar]
  • 17.Poplata S., Troester A., Zou Y.‐Q., Bach T., Chem. Rev. 2016, 116, 9748. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 18.Filatov M., Min S. K., Kim K. S., Mol. Phys. 2019, 117, 1128. [Google Scholar]
  • 19.Wolf T. J. A., Parrish R. M., Myhre R. H., Martínez T. J., Koch H., Gühr M., J. Phys. Chem. A 2019, 123, 6897. [DOI] [PubMed] [Google Scholar]
  • 20.Crespo‐Otero R., Barbatti M., Chem. Rev. 2018, 118, 7026. [DOI] [PubMed] [Google Scholar]
  • 21.Ben‐Nun M., Quenneville J., Martínez T. J., J. Chem. Phys. A 2000, 104, 5161. [Google Scholar]
  • 22.Curchod B. F. E., Martínez T. J., Chem. Rev. 2018, 118, 3305. [DOI] [PubMed] [Google Scholar]
  • 23.McLachlan A. D., Mol. Phys. 1964, 8, 39. [Google Scholar]
  • 24.Tully J. C., J. Chem. Phys. 1990, 93, 1061. [Google Scholar]
  • 25.Mai S., Marquetand P., González L., WIREs Comput. Mol. Sci. 2018, 8, e1370. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 26.Barbatti M., Ruckenbauer M., Plasser F., Pittner J., Granucci G., Persico M., Lischka H., WIREs Comput. Mol. Sci. 2014, 4, 26. [Google Scholar]
  • 27.Akimov A. V., J. Comput. Chem. 2016, 37, 1626. [DOI] [PubMed] [Google Scholar]
  • 28.Akimov A. V., Prezhdo O. V., J. Chem. Theory Comput. 2013, 9, 4959. [DOI] [PubMed] [Google Scholar]
  • 29.Du L., Lan Z., J. Chem. Theory Comput. 2015, 11, 1360. [DOI] [PubMed] [Google Scholar]
  • 30.Fedorov D. A., Seritan S., Fales B. S., Martínez T. J., Levine B. G., J. Chem. Theory Comput. 2020, 16, 5485. [DOI] [PubMed] [Google Scholar]
  • 31.Malone W., Nebgen B., White A., Zhang Y., Song H., Bjorgaard J. A., Sifain A. E., Rodriguez‐Hernandez B., Freixas V. M., Fernandez‐Alberti S., Roitberg A. E., Nelson T. R., Tretiak S., J. Chem. Theory Comput. 2020, 16, 5771. [DOI] [PubMed] [Google Scholar]
  • 32.Shao Y., Gan Z., Epifanovsky E., Gilbert A. T., Wormit M., Kussmann J., Lange A. W., Behn A., Deng J., Feng X., Ghosh D., Goldey M., Horn P. R., Jacobson L. D., Kaliman I., Khaliullin R. Z., Kuś T., Landau A., Liu J., Proynov E. I., Rhee Y. M., Richard R. M., Rohrdanz M. A., Steele R. P., Sundstrom E. J., Zimmerman P. M., Zuev D., Albrecht B., Alguire E., Austin B., Beran G. J. O., Bernard Y. A., Berquist E., Brandhorst K., Bravaya K. B., Brown S. T., Casanova D., Chang C.‐M., Chen Y., Chien S. H., Closser K. D., Crittenden D. L., Diedenhofen M., Do H., Dutoi A. D., Edgar R. G., Fatehi S., Fusti‐Molnar L., Ghysels A., Golubeva‐Zadorozhnaya A., Gomes J., Hanson‐Heine M. W., Harbach P. H., Hauser A. W., Hohenstein E. G., Holden Z. C., Jagau T.‐C., Ji H., Kaduk B., Khistyaev K., Kim J., Kim J., King R. A., Klunzinger P., Kosenkov D., Kowalczyk T., Krauter C. M., Lao K. U., Laurent A. D., Lawler K. V., Levchenko S. V., Lin C. Y., Liu F., Livshits E., Lochan R. C., Luenser A., Manohar P., Manzer S. F., Mao S.‐P., Mardirossian N., Marenich A. V., Maurer S. A., Mayhall N. J., Neuscamman E., Oana C. M., Olivares‐Amaya R., O'Neill D. P., Parkhill J. A., Perrine T. M., Peverati R., Prociuk A., Rehn D. R., Rosta E., Russ N. J., Sharada S. M., Sharma S., Small D. W., Sodt A., Stein T., Stück D., Su Y.‐C., Thom A. J., Tsuchimochi T., Vanovschi V., Vogt L., Vydrov O., Wang T., Watson M. A., Wenzel J., White A., Williams C. F., Yang J., Yeganeh S., Yost S. R., You Z.‐Q., Zhang I. Y., Zhang X., Zhao Y., Brooks B. R., Chan G. K., Chipman D. M., Cramer C. J., Gordon M. S., Hehre W. J., Klamt A., III H. F. S., Schmidt M. W., Sherrill C. D., Truhlar D. G., Warshel A., Xu X., Aspuru‐Guzik A., Baer R., Bell A. T., Besley N. A., Chai J.‐D., Dreuw A., Dunietz B. D., Furlani T. R., Gwaltney S. R., Hsu C.‐P., Jung Y., Kong J., Lambrecht D. S., Liang W., Ochsenfeld C., Rassolov V. A., Slipchenko L. V., Subotnik J. E., Voorhis T. V., Herbert J. M., Krylov A. I., Gill P. M., Head‐Gordon M., Mol. Phys. 2015, 113, 184. [Google Scholar]
  • 33.Werner H.‐J., Knowles P. J., Knizia G., Manby F. R., Schütz M., WIREs Comput. Mol. Sci. 2012, 2, 242. [Google Scholar]
  • 34.Barca G. M. J., Bertoni C., Carrington L., Datta D., De Silva N., Deustua J. E., Fedorov D. G., Gour J. R., Gunina A. O., Guidez E., Harville T., Irle S., Ivanic J., Kowalski K., Leang S. S., Li H., Li W., Lutz J. J., Magoulas I., Mato J., Mironov V., Nakata H., Pham B. Q., Piecuch P., Poole D., Pruitt S. R., Rendell A. P., Roskop L. B., Ruedenberg K., Sattasathuchana T., Schmidt M. W., Shen J., Slipchenko L., Sosonkina M., Sundriyal V., Tiwari A., Vallejo J. L. G., Westheimer B., Wloch M., Xu P., Zahariev F., Gordon M. S., J. Chem. Phys. 2020, 152, 154102. [DOI] [PubMed] [Google Scholar]
  • 35.Balasubramani S. G., Chen G. P., Coriani S., Diedenhofen M., Frank M. S., Franzke Y. J., Furche F., Grotjahn R., Harding M. E., Hättig C., Hellweg A., Helmich‐Paris B., Holzer C., Huniar U., Kaupp M., Marefat Khah A., Karbalaei Khani S., Müller T., Mack F., Nguyen B. D., Parker S. M., Perlt E., Rappoport D., Reiter K., Roy S., Rückert M., Schmitz G., Sierka M., Tapavicza E., Tew D. P., van Wüllen C., Voora V. K., Weigend F., Wodyński A., Yu J. M., J. Chem. Phys. 2020, 152, 184107. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 36.Tancogne‐Dejean N., Oliveira M. J. T., Andrade X., Appel H., Borca C. H., Le Breton G., Buchholz F., Castro A., Corni S., Correa A. A., De Giovannini U., Delgado A., Eich F. G., Flick J., Gil G., Gomez A., Helbig N., Hübener H., Jestädt R., Jornet‐Somoza J., Larsen A. H., Lebedeva I. V., Lüders M., Marques M. A. L., Ohlmann S. T., Pipolo S., Rampp M., Rozzi C. A., Strubbe D. A., Sato S. A., Schäfer C., Theophilou I., Welden A., Rubio A., J. Chem. Phys. 2020, 152, 124119. [DOI] [PubMed] [Google Scholar]
  • 37.Valiev M., Bylaska E. J., Govind N., Kowalski K., Straatsma T. P., Van Dam H. J. J., Wang D., Nieplocha J., Apra E., Windus T. L., de Jong W. A., Comput. Phys. Commun. 2010, 181, 1477. [Google Scholar]
  • 38.Subotnik J. E., Jain A., Landry B., Petit A., Ouyang W., Bellonzi N., Annu. Rev. Phys. Chem. 2016, 67, 387. [DOI] [PubMed] [Google Scholar]
  • 39.Jasper A. W., Nangia S., Zhu C., Truhlar D. G., Acc. Chem. Res. 2006, 39, 101. [DOI] [PubMed] [Google Scholar]
  • 40.Prezhdo O. V., Rossky P. J., J. Chem. Phys. 1997, 107, 5863. [Google Scholar]
  • 41.Zhu C., Nangia S., Jasper A. W., Truhlar D. G., J. Chem. Phys. 2004, 121, 7658. [DOI] [PubMed] [Google Scholar]
  • 42.Granucci G., Persico M., J. Chem. Phys. 2007, 126, 134114. [DOI] [PubMed] [Google Scholar]
  • 43.Granucci G., Persico M., Zoccante A., J. Chem. Phys. 2010, 133, 134111. [DOI] [PubMed] [Google Scholar]
  • 44.Jaeger H. M., Fischer S., Prezhdo O. V., J. Chem. Phys. 2012, 137, 22A545. [DOI] [PubMed] [Google Scholar]
  • 45.Nelson T., Fernandez‐Alberti S., Roitberg A. E., Tretiak S., J. Chem. Phys. 2013, 138, 224111. [DOI] [PubMed] [Google Scholar]
  • 46.Jain A., Alguire E., Subotnik J. E., J. Chem. Theory Comput. 2016, 12, 5256. [DOI] [PubMed] [Google Scholar]
  • 47.Gao X., Thiel W., Phys. Rev. E 2017, 95, 013308. [DOI] [PubMed] [Google Scholar]
  • 48.Ha J.‐K., Lee I. S., Min S. K., J. Phys. Chem. Lett. 2018, 9, 1097. [DOI] [PubMed] [Google Scholar]
  • 49.Abedi A., Maitra N. T., Gross E. K. U., Phys. Rev. Lett. 2010, 105, 123002. [DOI] [PubMed] [Google Scholar]
  • 50.Abedi A., Maitra N. T., Gross E. K. U., J. Chem. Phys. 2012, 137, 22A530. [DOI] [PubMed] [Google Scholar]
  • 51.Min S. K., Agostini F., Gross E. K. U., Phys. Rev. Lett. 2015, 115, 073001. [DOI] [PubMed] [Google Scholar]
  • 52.Agostini F., Min S. K., Abedi A., Gross E. K. U., J. Chem. Theory Comput. 2016, 12, 2127. [DOI] [PubMed] [Google Scholar]
  • 53.Min S. K., Agostini F., Tavernelli I., Gross E. K. U., J. Phys. Chem. Lett. 2017, 8, 3048. [DOI] [PubMed] [Google Scholar]
  • 54.Curchod B. F. E., Agostini F., Tavernelli I., Eur. Phys. J. B. 2018, 91, 168. [Google Scholar]
  • 55.Gossel G. H., Agostini F., Maitra N. T., J. Chem. Theory Comput. 2018, 14, 4513. [DOI] [PubMed] [Google Scholar]
  • 56.Carof A., Giannini S., Blumberger J., J. Chem. Phys. 2017, 147, 214113. [DOI] [PubMed] [Google Scholar]
  • 57.Hammes‐Schiffer S., Tully J. C., J. Chem. Phys. 1994, 101, 4657. [Google Scholar]
  • 58.Pittner J., Lischka H., Barbatti M., Chem. Phys. 2009, 356, 147. [Google Scholar]
  • 59.Ryabinkin I. G., Nagesh J., Izmaylov A. F., J. Phys. Chem. Lett. 2015, 6, 4200. [DOI] [PubMed] [Google Scholar]
  • 60.Ha J.‐K., Kim K., Min S. K., J. Chem. Theory Comput. 2021, 17, 694. [DOI] [PubMed] [Google Scholar]
  • 61.Marsili E., Olivucci M., Lauvergnat D., Agostini F., J. Chem. Theory Comput. 2020, 16, 6032. [DOI] [PubMed] [Google Scholar]
  • 62.Filatov M., Min S. K., Kim K. S., J. Chem. Theory Comput. 2018, 14, 4499. [DOI] [PubMed] [Google Scholar]
  • 63.Filatov M., Paolino M., Min S. K., Kim K. S., J. Phys. Chem. Lett. 2018, 9, 4995. [DOI] [PubMed] [Google Scholar]
  • 64.Filatov M., Min S. K., Choi C. H., Phys. Chem. Chem. Phys. 2019, 21, 2489. [DOI] [PubMed] [Google Scholar]
  • 65.Filatov M., Paolino M., Min S. K., Choi C. H., Chem. Commun. 2019, 55, 5247. [DOI] [PubMed] [Google Scholar]
  • 66.Verlet L., Phys. Rev. 1967, 159, 98. [Google Scholar]
  • 67.Press W. H., Teukolsky S. A., Vetterling W. T., Flannery B. P., Numerical Recipes, 3rd ed., The Cambridge University Press, New York: 2007. [Google Scholar]
  • 68.Granucci G., Persico M., Toniolo A., J. Chem. Phys. 2001, 114, 10608. [Google Scholar]
  • 69.Lischka H., Müller T., Szalay P. G., Shavitt I., Pitzer R. M., Shepard R., WIREs Comput. Mol. Sci. 2011, 1, 191. [Google Scholar]
  • 70.Frisch M. J., Trucks G. W., Schlegel H. B., Scuseria G. E., Robb M. A., Cheese‐Man J. R., Scalmani G., Barone V., Mennucci B., Petersson G. A., Nakatsuji H., Caricato M., Li X., Hratchian H. P., Izmaylov A. F., Bloino J., Zheng G., Sonnenberg J. L., Hada M., Ehara M., Toyota K., Fukuda R., Hasegawa J., Ishida M., Nakajima T., Honda Y., Kitao O., Nakai H., Vreven T., Montgomery J. A., Peralta J. E., Ogliaro F., Bearpark M., Heyd J., Brothers E., Kudin K. N., Staroverov V. N., Kobayashi R., Normand J., Raghavachari K., Rendell A., Burant J. C., Iyengar S. S., Tomasi J., Cossi M., Rega N., Millam M., Klene M., Knox J. E., Cross J. B., Bakken V., Adamo C., Jaramillo J., Gomperts R., Stratmann R. E., Yazyev O., Austin A. J., Cammi R., Pomelli C., Ochterski J. W., Martin R. L., Morokuma K., Zakrzewski V. G., Voth G. A., Salvador P., Dannenberg J. J., Dapprich S., Daniels A. D., Farkas O., Foresman J. B., Ortiz J. V., Cioslowski J., Fox D. J., Gaussian 09 Revision A.02, Gaussian Inc, Wallingford CT: 2009. [Google Scholar]
  • 71.Seritan S., Bannwarth C., Fales B. S., Hohenstein E. G., Kokkila‐Schumacher S. I. L., Luehr N., Snyder J. W., Song C., Titov A. V., Ufimtsev I. S., Martínez T. J., J. Chem. Phys. 2020, 152, 224110. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 72.Hourahine B., Aradi B., Blum V., Bonafé F., Buccheri A., Camacho C., Cevallos C., Deshaye M. Y., Dumitrică T., Dominguez A., Ehlert S., Elstner M., van der Heide T., Hermann J., Irle S., Kranz J. J., Köhler C., Kowalczyk T., Kubař T., Lee I. S., Lutsker V., Maurer R. J., Min S. K., Mitchell I., Negre C., Niehaus T. A., Niklasson A. M. N., Page A. J., Pecchia A., Penazzi G., Persson M. P., Řezáč J., Sánchez C. G., Sternberg M., Stöhr M., Stuckenberg F., Tkatchenko A., Yu V. W.‐Z., Frauenheim T., J. Chem. Phys. 2020, 152, 124101. [DOI] [PubMed] [Google Scholar]
  • 73.Rackers J. A., Wang Z., Lu C., Laury M. L., Lagardère L., Schnieders M. J., Piquemal J.‐P., Ren P., Ponder J. W., J. Chem. Theory Comput. 2018, 14, 5273. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 74.Berendsen H. J. C., Postma J. P. M., van Gunsteren W. F., DiNola A., Haak J. R., J. Chem. Phys. 1984, 81, 3684. [Google Scholar]
  • 75.Martyna G. J., Tuckerman M. E., Tobias D. J., Klein M. L., Mol. Phys. 1996, 87, 1117. [Google Scholar]
  • 76.Pang X., Cui X., Hu D., Jiang C., Zhao D., Lan Z., Li F., J. Phys. Chem. A 2017, 121, 1240. [DOI] [PubMed] [Google Scholar]
  • 77.Vuong V. Q., Akkarapattiakal Kuriappan J., Kubillus M., Kranz J. J., Mast T., Niehaus T. A., Irle S., Elstner M., J. Chem. Theory Comput. 2018, 14, 115. [DOI] [PubMed] [Google Scholar]
  • 78.Lee I. S., Filatov M., Min S. K., J. Chem. Theory Comput. 2019, 15, 3021. [DOI] [PubMed] [Google Scholar]
  • 79.Domínguez A., Aradi B., Frauenheim T., Lutsker V., Niehaus T. A., J. Chem. Theory Comput. 2013, 9, 4901. [DOI] [PubMed] [Google Scholar]
  • 80.Conyard J., Cnossen A., Browne W. R., Feringa B. L., Meech S. R., J. Am. Chem. Soc. 2014, 136, 9692. [DOI] [PubMed] [Google Scholar]
  • 81.Pedraza‐González L., De Vico L., Marin M. D. C., Fanelli F., Olivucci M., J. Chem. Theory Comput. 2019, 15, 3134. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 82.Brunken C., Reiher M., J. Chem. Theory Comput. 2021, 17, 3797. [DOI] [PubMed] [Google Scholar]

Associated Data

This section collects any data citations, data availability statements, or supplementary materials included in this article.

Supplementary Materials

Appendix S1: Supplementary information.

Data Availability Statement

The PyUNIxMD code, presented and used within this study, is openly available at GitHub (https://github.com/skmin-lab/unixmd). Initial sample is available in Supporting Information.


Articles from Journal of Computational Chemistry are provided here courtesy of Wiley

RESOURCES