/PyCQED

Tools for simulating polaritonic dynamics using fewest-switching surface hopping and a non-Hermitian cavity CQED/model Hamiltonian approach.

Primary LanguageJupyter NotebookGNU General Public License v3.0GPL-3.0

PyCQED

Tools for simulating polaritonic chemical dynamics using the formalism of cavity quantum electrodynamics combined with surface hopping dynamics.

Quickstart

  • Clone the repository

  • To run a single trajectory: python PFSSH.py Scale_True Complex_DC 1 1.0 2.45 0.02 test > output.txt &

In the above example, there are 7 arguments passed to the python script PFSSH.py.

  • Argument 1 is a string that turns on or off velocity scaling that is ordinarily a part of the fewest switches surface hopping approach. Use Scale_False if you DO NOT want to scale the velocity and Scale_True if you DO want to scale the velocity. Scale_True will be consistent with the ordinary formulation of surface hopping.

  • Argument 2 is a string that keeps or discards the imaginary part of the derivative coupling. Use Complex_DC to keep the imaginary part (i.e. use the full complex derivative coupling), and use Real_DC to disgard the imaginary part (i.e. use only the real part of the derivative coupling).

  • Argument 3 is an integer that specifies the number of independant trajectories to run; since the value is 1 in the above example, only 1 trajectory will be run.

  • Argument 4 is a float that specifies the dissipation rate of the photonic mode in mili electron volts; in the example the dissipation rate is 1.0 meV

  • Argument 5 is a float that specifies the energy of the photonic mode in electron volts; in the example the energy is 2.45 eV

  • Argument 6 is a float that specifies the coupling strength between the molecule and the photonic mode in electron volts; in the example the coupling energy is 0.02 eV

  • Argument 7 is a file-name prefix that will be used for naming files that verbose output is written to; in the example output filenames will start with 'test'.

After the 5th argument, there is a re-direct statement that re-directs the STDOUT to a file called 'output.txt', and the terminating ampersand runs the program in the background.

More Details

  • If you run just a single trajectory (Argument 1 has the value '1'), then the program will automatically write the nuclear trajectory and the electronic populations (in both local and polaritonic bases) in data files in the 'Data/' folder. In particular, the nuclear trajectories will be in a file named '$prefix_nuc_traj.txt' and the electronic populations will be in a file named '$prefix_electronic.txt'

  • You can run multiple independant trajectories (in serial, meaning one after another) by giving Argument 1 a larger value... there is in principle no limit, but each time you increase by 1 the time will increase by ~2.5 hours. If you run more than 1 trajectory in serial, the trajectory information will not be written to file.

  • The program will always write the potential energy surfaces (eigenvalues as a function of $R$ of the total Hamiltonian) and the photonic contributions (which derive from the eigenvectors of the total Hamiltonian) regardless of how many trajectories you run.