Geometric Quantum Dynamics
Geometric quantum dynamics describes nuclear motion on electronic-state manifolds where phases, overlaps, derivative couplings, and coordinate metrics matter. PyQED contains tools for locally diabatic representations, overlap matrices between electronic states, curvilinear DVR propagation, Gaussian wavepacket dynamics, and Born-Oppenheimer Hamiltonian derivatives.
Core Idea
The Born-Oppenheimer electronic problem defines adiabatic states
Phi_I(R) and energies E_I(R) at each nuclear geometry R:
Because the electronic basis depends on R, nuclear motion sees geometric
terms. The derivative coupling vector is
Near conical intersections or avoided crossings, these couplings can dominate the dynamics and make a purely adiabatic representation inconvenient.
Overlap-Based Local Diabatization
Instead of differentiating electronic states directly, PyQED often uses overlaps between neighboring geometries:
For small geometry steps, this overlap contains the same local geometric information as derivative couplings:
The overlap matrix can be unitarized, usually by a polar/SVD factor, to define a locally diabatic frame. In that frame, the electronic basis is transported smoothly along the nuclear path and short-time propagation can avoid explicit NAC vectors.
Locally Diabatic Representation
Given a local unitary transformation U(R), the adiabatic potential matrix
is transformed into a diabatic-like matrix:
where E_ad is diagonal in the adiabatic representation. Off-diagonal
elements in V_LD encode electronic coupling in the transported local basis.
PyQED’s LDR-related code lives mainly in pyqed.ldr:
pyqed.ldr.ldr: locally diabatic representation wavepacket dynamics.pyqed.ldr.qd: quasi-diabatization from overlap matrices.pyqed.ldr.curvilinearandpyqed.ldr.curvilinear_2d: curvilinear DVR propagation and overlap-modified kinetic propagation.pyqed.ldr.gwp: Gaussian wavepacket basis and overlap utilities.pyqed.ldr.coarse_grained: coarse-grained overlap-based dynamics.
Curvilinear Coordinates
In internal or curvilinear coordinates q, the nuclear kinetic energy uses a
coordinate metric:
For fixed-angle triatomic coordinates, for example, the G-matrix contains off-diagonal kinetic couplings between bond coordinates. PyQED’s curvilinear LDR implementation combines this kinetic operator with electronic-state overlap matrices in split-operator propagation.
Born-Oppenheimer Hamiltonian Derivatives
pyqed.qchem.geometric provides helper machinery for first- and second-order
Born-Oppenheimer Hamiltonian derivatives in an electronic-state basis. The main
entry point is bo_hamiltonian_derivatives.
It builds Cartesian derivative tensors
and can project them onto normal-mode or coarse-grained coordinates. These terms are useful for constructing vibronic model Hamiltonians and local quadratic expansions around a reference geometry.
Example structure:
from pyqed.qchem.geometric import bo_hamiltonian_derivatives
# state_model is a CASCI/CASSCF-like object with state RDM/TDM access.
derivs = bo_hamiltonian_derivatives(
state_model,
state_ids=[0, 1],
mode_vectors=normal_modes,
)
F = derivs.F_projected
G = derivs.G_projected
Connection to Ehrenfest Dynamics
The overlap-based Ehrenfest path in TDDFT and Ehrenfest Dynamics is the classical
trajectory analogue of local-diabatic propagation. At each nuclear step, the
driver computes an electronic state overlap between R_t and
R_{t+dt}, unitarizes that overlap, and propagates electronic amplitudes in
the transported basis.
This is useful when:
analytic NACs are unavailable,
finite-difference NACs are noisy,
state phases flip between adjacent geometries,
states exchange character near crossings,
a local diabatic picture is more stable than an adiabatic one.
Typical Workflow
An overlap-based geometric dynamics calculation usually follows this pattern:
Choose electronic states and a nuclear coordinate grid or trajectory.
Compute adiabatic energies on each geometry.
Compute electronic-state overlaps between neighboring geometries.
Unitarize overlaps to define local transport.
Build local diabatic potential matrices or overlap-modified propagators.
Propagate wavepackets or Ehrenfest trajectories.
Monitor norm, population transfer, and phase continuity.
Examples
Relevant examples:
examples/ldr/ldr.pyexamples/ldr/abinitio.pyexamples/ldr/abinitio_pyscf.pyexamples/ldr/overlap_matrix_approximation_2D.pyexamples/ldr/overlap_matrix_approximation_Ndimension.pyexamples/ldr/h3/1scan_PES_H3+.pyexamples/ldr/h3/2calculate_overlap_nearest_neighbor.pyexamples/namd/abinitio_ehrenfest_pyscf.pyexamples/namd/lif_population_dynamics.pyexamples/qchem/bo_hamiltonian_derivatives.pyexamples/qchem/bo_hamiltonian_derivatives_normal_modes.py