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
- the description of the
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_unit
— Functionparse_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. TypicallyeV
,meV
,cm^-1
, orha
.time_unit_name
[Default:au
]: Specifies the time units. Typicallyfs
, orau
.
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_system
— Functionparse_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:
type
[Default:real
, Optionally:complex
]: the type of elements in the Hamiltonian.Htype
[Default:file
]: How to parse the Hamiltonian file. Typicallyfile
to read a file,nearest_neighbor
to specify the Hamiltonian as a nearest-neighbor tight-binding model, ornearest_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 sitecoupling
: the intersite coupling elementnum_sites
: the number of sites
- if
Htype = "nearest_neighbor_cavity"
, in addition to the same variables as theHtype = "nearest_neighbor"
case, also specify:cavity_energy
: the energy of the cavity modecavity_coupling
: coupling of the cavity to the monomers
The 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.
If external time-dependent fields have to be incorporated, the subsection [external_field]
should be used. By default no external fields are involved. If used, the subsection would have two variables:
coupling_op
: the operator through which the external time-dependent field interacts with the systemV_t
: this is a single line expression which evaluates to the value of the field as a function of time, t. This variable needs to be calledt
.
Bath Hamiltonian
QuantumDynamicsCLI.ParseInput.parse_bath
— Functionparse_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 byQuantumDynamicsCLI.ParseInput.get_bath
.
QuantumDynamicsCLI.ParseInput.get_bath
— Functionget_bath(b, unit)
Parse individual baths
Parameters:
type
[Default:ohmic
]: Type of harmonic bath. Can beohmic
,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 unitsDs
[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 unitsgamma
: cutoff frequency, $\gamma$, in energy unitsDs
[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 injw_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 inhuang_rhys_file
Simulation File
The simulation file has only a single TOML section [simulation]
. Every simulation file should have a name
to identify the simulation and an output
file that specifies an HDF5 file for storing all the data.
There are broadly three types of simulations that are currently supported:
dynamics
simulations that simulate the non-equilibrium dynamics of the given problemequilibrium_rho
simulations that simulate the equilibrium density at the given temperaturecomplex_corr
simulations for calculating equilibrium correlation functions of various flavors
These are specified in the calculation
field which, if unspecified, is taken to be dynamics
by default.
The rest of the parameters required for a simulation file are specific to the type of simulation being run.
Dynamics Simulations
Various methods of simulation are supported:
- Path Integral Methods using Feynman-Vernon Influence Functional[1]:
- Hierarchical Equations of Motion (HEOM) [7]
- Generalized Quantum Master Equation (GQME) [8, 9]
- Multichromophore Incoherest Forster Resonance Energy Transfer [10, 11]
- Bloch-Redfield Master Equation
- Transfer Tensor Method (TTM) [12] coupled with any of the path integral methods
All of these dynamics 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 in the units specified in the system filensteps
: for the number of steps of simulation of the dynamics
Feynman-Vernon Influence Functional Simulations
There are two ways of incorporating the effect of non-Markovian memory in path integral simulations: iterative propagation beyond memory or using the transfer tensor method. To use TTM, one can choose one of the following:
method = "QuAPI-TTM"
: for using QuAPI within memorymethod = "Blip-TTM"
: for using Blip within memorymethod = "TEMPO-TTM"
: for using TEMPO within memory
Finally, if one does not intend on using TTM, we suggest using TEMPO for accessing long memory lengths efficiently. This is chosen by setting method = "TEMPO"
.
In this family of methods, the non-Markovian memory is incorporated explicitly by specifying the number of time-steps it spans. For all the TTM-based methods, this memory length is set through the parameter, rmax
. For method = "TEMPO"
, it is set through the parameter, kmax
.
Every method has a separate set of parameters that handle the balance between accuracy and efficiency. In case of "QuAPI-TTM", that parameter is called cutoff
and it is by default set to $10^{-10}$. All paths with absolute value of amplitude below this cutoff are ignored.
In the case of "Blip-TTM", the accuracy is set via the maximum number of blips allowed, max_blips
. If this is set to $-1$, that means all blips are included.
For "TEMPO-TTM", the accuracy is set through the tensor network evaluation parameters. The cutoff
of the singular value decomposition, and the maximum bond dimension, maxdim
, used in obtaining the matrix product state representation of the path amplitude tensor are the two parameters that are used for controlling the accuracy. The default values of these two parameters are $10^{-10}$ and $1000$ respectively.