← Go back to the interactive notebook
Background Theory: Numerical Solution of 1D Time Dependent Schrödinger Equation for nuclear evolution on multiple electronic potential energy surfaces by the Multiple Split Operator Fourier Transform (MSOFT) method
Original notebook: theory_msoft.ipynb
The MSOFT algorithm is one approach to exactly (to within numerical accuracy) simulate the nonadiabatic dynamical evolution of quantum systems. Nonadiabatic effects must be accounted for when a given quantum mechanical system possesses more than one electronic state and the coupling between the different states is sufficiently large so as to induce transitions between them. For simplicity, in this notebook we shall consider the application of MSOFT to a two level system. It is, however, entirely possible (at least in theory) to use the method in the presence of arbitrarily many electronic states.
Propagation Scheme
Working in the adiabatic basis {∣R⟩∣ϕα(R)⟩} (within which the electronic Hamiltonian h^el(R^) is diagonal), the dynamical equations governing the evolution of the nuclear wavepacket components, c1(t) and c2(t), on each of the two electronic states are
iℏ∂t∂c1(R,t)={−2Mℏ2∂R2∂2+E1(R)}c1(R,t)+MℏD12(R)∂R∂c2(R,t)
and
iℏ∂t∂c2(R,t)={−2Mℏ2∂R2∂2+E2(R)}c2(R,t)+MℏD21(R)∂R∂c1(R,t)
where D12(R)=D21∗(R)=⟨ϕ1(R)∣dRdϕ2(R)⟩.
We may also consider introducing the so-called diabatic basis {∣R⟩∣λ⟩} in which we can write the state of the system as ∣Ψ(t)⟩=λ∑∫dRχλ(R,t)∣R⟩∣λ⟩ and for which the kinetic energy operator is now diagonal (but the electronic Hamiltonian is non-diagonal). In this basis the above evolution equations take the form
iℏ∂t∂χ1(R,t)={−2Mℏ2∂R2∂2+h11(R)}χ1(R,t)+h12(R)χ2(R,t)
iℏ∂t∂χ2(R,t)={−2Mℏ2∂R2∂2+h22(R)}χ2(R,t)+h21(R)χ1(R,t)
Steps of the MSOFT algorithm
Starting with the initial state ∣Ψ(R,0)⟩ of the system and the electronic Hamiltonian h^el expressed in the diabatic basis the MSOFT algorithm proceeds as follows:
- (INITIALIZATION): Diagonalize h^el: D^eTh^elDe^=(E100E2)=E^.
- (INITIALIZATION): Set up potential and kinetic propagators: exp(−ℏi2dtE^) and exp(−ℏi2Mp^2dt)
Perform the following loop for a specifies number of timesteps Nsteps:
- Transform to the adiabatic basis: ∣Ψ(R,0)⟩Di→∣Ψ(R,0)⟩Adi=De^∣Ψ(R,0)⟩Di
- Apply half-step potential propagator: ∣Φ(R,2dt)⟩Adi=exp(−ℏi2dtE^)∣Ψ(R,0)⟩Adi.
- Transform back to the diabatic basis ∣Φ(R,2dt)⟩Adi→∣Φ(R,2dt)⟩Di=De^T∣Φ(R,2dt)⟩Adi
- Apply fast Fourier transform (FFT) to transform state to reciprocal space and render kinetic energy operator diagonal in nuclear part of total tensor product space HN⊗He: ∣Φ(R,2dt)⟩Di→FFT[∣Φ(R,2dt)⟩Di]=∣Φ~(P,2dt)⟩Di
- Apply full-timestep kinetic energy propagator: ∣Ξ~(P,dt)⟩Di=exp(−ℏi2MP^2dt)∣Φ~(P,dt)⟩Di.
- Apply an inverse FFT to transform state back to direct space: ∣Ξ~(P,dt)⟩Di→IFFT[∣Ξ~(P,dt)⟩Di]=∣Ξ(R,dt)⟩Di.
- Transform to the adiabatic basis: ∣Ξ(R,dt)⟩Di→∣Ξ(R,dt)⟩Adi=De^T∣Ξ(R,dt)⟩Di∣.
- Apply half-step potential propagator: ∣Ψ(R,dt)⟩Adi=exp(−ℏi2dtE^)∣Ξ(R,dt)⟩Adi.
This leaves us with the state of the system evolved by one full timestep dt. We then repeat steps (2)-(8) Nsteps−1 times to achieve a total propagation time of t=Nsteps⋅dt for the system.