A collection of serial, vectorized and parallel version of PLDM dynamics. The reduced density matrix is propagated by propagating the MMST variables. The individual MMST variables form a forward (
-
initBathParams.pygenerate the bath parameters$c_j$ and$\omega_j$ from a spectral density -
initBathMPI.pygenerates the the initial nuclei position and momenta for a trajectory
model.pycontains the system functions- system Hamiltonian (Hψ)
- Dipole (μψ)
- system-bath interation hamiltonian (H_SB)
parameters.pycontains the parameters of the system and also simulation parameters
-
pldm.pycontains the dynamics functions- Force → calculates the force on the bath DOF's from the system dynamics according to
$$F(R_i)=c_j^i\sum_i\rho_{ii}$$ - Umap → propagates the mapping variables according to chebyshev expansion
$$e^{-i\frac{\hat{H}\Delta}{\hbar}}\ket{\Psi}=b_0(z)|\Psi^{(0)}\rangle+\sum_{n=1}^{\infty} \phi_n(z) b_n(z) |\Psi^{(n)}\rangle$$ - velver → propagates the nuclei
- Force → calculates the force on the bath DOF's from the system dynamics according to
-
trajClass.pydefines a trajectory class
operatorDynamics.pylets you define your arbitrary operator for dynamics calculation.initBathMPI.pygenerates the initial nuclei position and momentum coordiantes for each trajectory in a seperate trajectory folder within the "Data/" folder.runDynamics.shandrunInitBath.share the SLURM script files to submit the jobs
- The folder where the trajectory simulation data will be generated. After the dynamics simulation is done, there will be one folder for each trajectory containing the nuclei R, P and mapping variables stored with time.
postProcess.pycombines the individual trajectory data and generates the ensemble averages initial density matrix.plotDynamics.pyplots the population and coherence elements of the reduced density matrix -runPlot.shis the SLRUM script to runplotDynamics.py.
-
testHel.pytests the validity of$Hψ$ operation -
test_SB.pytests the validity of system-bath interaction part of dynamics -
umapTest.pytests the validity of chebyshev propagation
The code requires the mandatory intallation of following python packages:
numpyscipynumba
Additional (optional) dependencies which can be used to efficiently vectorize and parallelize the dynamics:
mpi4pycupypyTorchcuda