Inputs to qdsim

A simulation depends upon the specification of the system. This is done in the system TOML file, which specifies three different things:

  • the units in use
  • the Hamiltonian for the problem being simulated:
    • the description of the system
    • the description of the bath or environment

Along with this system TOML file, a simulation TOML file also needs to be prepared that provides the details of the simulation.

System File

Each of the three sections in the system file has a dedicated function for parsing the data. Before giving a full example of a system input file, we discuss the parameters accepted by the various sections.

Specifying the Units

QuantumDynamicsCLI.ParseInput.parse_unitFunction
parse_unit(input_dict)

Parses the [units] section of the system TOML file. It takes two variables:

Parameters obtained:

  • energy_unit_name [Default: ha]: Specifies the energy units. Typically eV, meV, cm^-1, or ha.
  • time_unit_name [Default: au]: Specifies the time units. Typically fs, or au.
source

Specifying the Hamiltonian

The basic problem under study has a general form, $\hat{H} = \hat{H}_0 + \hat{H}_\text{env}$, where $\hat{H}_0$ forms the system Hamiltonian and the $\hat{H}_\text{env}$ is the environment or bath Hamiltonian.

System Hamiltonian

QuantumDynamicsCLI.ParseInput.parse_systemFunction
parse_system(sys_inp, unit)

Parses the [system] portion of the system file for the Hamiltonian and converts it to atomic units for internal use.

Parameters obtained:

  • Htype [Default: file]: How to parse the Hamiltonian file. Typically file to read a file, nearest_neighbor to specify the Hamiltonian as a nearest-neighbor tight-binding model, or nearest_neighbor_cavity for a Hamiltonian consisting of a nearest-neighbor tight-binding part and a cavity with interacts with all the sites.

Then the Hamiltonian needs to be specified in the energy units that are being used. This can be done in several ways depending on the value of Htype:

  • if Htype = file, put in the variable, Hamiltonian with the name of a file containing the elements of the Hamiltonian matrix.
  • if Htype = "nearest_neighbor", specify the following variables:
    • site_energy: the energy of each site
    • coupling: the intersite coupling element
    • num_sites: the number of sites
  • if Htype = "nearest_neighbor_cavity", in addition to the same variables as the Htype = "nearest_neighbor" case, also specify:
    • cavity_energy: the energy of the cavity mode
    • cavity_coupling: coupling of the cavity to the monomers

Finally a parameter is_QuAPI [Default: true] specifies if the specified system Hamiltonian should be interpreted to be a part of the QuAPI system-bath Hamiltonian form or not.

source

Bath Hamiltonian

QuantumDynamicsCLI.ParseInput.parse_bathFunction
parse_bath(baths, sys, unit)

This function parses the bath(s) interacting with the system. Currently only harmonic baths are supported.

Parameters:

  • The temperature for the simulation needs to be specfied. This can be done in one of two ways:
    • beta in units of 1/ha for the inverse temperature $\beta = \frac{1}{k_BT}$.
    • or temperature in the units of Kelvin.
  • A list of baths that interact with the system specified under [[baths.bath]] heading in the TOML file. Each bath is parsed by QuantumDynamicsCLI.ParseInput.get_bath.
source
QuantumDynamicsCLI.ParseInput.get_bathFunction
get_bath(b, unit)

Parse individual baths

Parameters:

  • type [Default: ohmic]: Type of harmonic bath. Can be ohmic, drude_lorentz, tabular, tabular_jw_over_w, huang_rhys

The parameters for the bath are specified in different ways for each different bath:

  • if type="ohmic", the bath spectral density $J(\omega)=\frac{2\pi}{\Delta s^2}\hbar\xi\omega_c\exp\left(-\frac{\omega}{\omega_c}\right)$
    • xi: dimensionless Kondo parameter ($\xi$)
    • omegac: cutoff frequency ($\omega_c$) in energy units
    • Ds [Default: 2]: $\Delta s$ value. Typically set to 1 for exciton transfer problems.
    • npoints [Default: 100000]: Number of points used in integration for the influence functional coefficients.
    • omega_max [Default: 30.0 * omegac]: Upper limit of influence functional coefficient integrations
  • if type="drude_lorentz", the bath spectral density $J(\omega) = \frac{2\lambda}{\Delta s^2}\frac{\omega \gamma}{\omega^2+\gamma^2}$
    • lambda: reorganization energy, $\lambda$, in energy units
    • gamma: cutoff frequency, $\gamma$, in energy units
    • Ds [Default: 2]: $\Delta s$ value. Typically set to 1 for exciton transfer problems.
    • npoints [Default: 100000]: Number of points used in integration for the influence functional coefficients.
    • omega_max [Default: 1000.0 * gamma]: Upper limit of influence functional coefficient integrations
  • if type="tabular", the bath spectral density is provided as a table in the file specified in jw_file
  • if type="huang_rhys", the bath spectral density is provided in the form of a table of frequency-dependent Huang-Rhys factors in the file specified in huang_rhys_file
source

Simulation File

There are broadly three types of simulations that are currently supported:

  • dynamics simulations that simulate the non-equilibrium dynamics of the given problem
  • equilibrium_rho simulations that simulate the equilibrium density at the given temperature
  • complex_corr simulations for calculating equilibrium correlation functions of various flavors

Dynamics Simulations

Various methods of simulation are supported:

  • Path Integral Methods based on Feynman-Vernon Influence Functional[1]:
    • Quasi-adiabatic Propagator Path Integrals (QuAPI)
    • Blip QuAPI
    • Time-Evolved Matrix Product Operators (TEMPO)
    • Pairwise-Connected Tensor Network Path Integral (PC-TNPI)
  • Hierarchical Equations of Motion (HEOM)
  • Generalized Quantum Master Equation
  • Multichromophore Incoherest Forster Theory
  • Bloch-Redfield Master Equation
  • Transfer Tensor Method coupled with any of the path integral methods

All of these methods require some core common parameters and then more specfic method-dependent parameters. The core parameters of all the dynamics methods are:

  • dt: for the time-step
  • nsteps: for the number of steps that the dynamics needs to be calculated for

Example

Spin-Boson Example

Let us say we are trying to simulate a typical Spin-Boson problem, where all parameters are specified in atomic units.

[system]
Hamiltonian = "Hamiltonian"

[baths]
beta = 5.0
[[baths.bath]]
type = "ohmic"
xi = 0.1
omegac = 7.5
svec = [1.0, -1.0]

Notice that the [units] section is completely skipped over because the default values specify atomic units.