Hierarchy Equations of Motion
This module provides the necessary tools for doing HEOM simulations. While the equations of motion have been reported in many articles, the current implementation is based on a relatively recent paper, HEOM1. It should be noted that this is a particularly naive implementation of the algorithm that only works for the simplest of case of a Drude-Lorentz spectral density. Scaling of the auxiliary density operators is employed. The integration of the equations of motion is done using the DifferentialEquations.jl package.
API
QuantumDynamics.HEOM.get_vecs
— Functionget_vecs(len::Int, L::Int)
Get a vector of vectors of length len
, where the sum is L.
QuantumDynamics.HEOM.setup_simulation
— Functionsetup_simulation(num_baths::Int, num_modes::Int, Lmax::Int)
Sets up the simulation parameters for a problem with num_baths
baths, num_modes
extra matsubara modes, and a hierarchy Lmax
levels deep.
Returns a tuple of:
nveclist
: List of the possible subscripts,n
, in HEOM. Each element in the list is a represented as a matrix. Every row corresponds to a bath.npluslocs[b,m,l]
: Given thel
th nvector, returns the location of the nvector if theb
th bath'sm
th Matsubara mode is increased by one.nminuslocs[b,m,l]
: Given thel
th nvector, returns the location of the nvector if theb
th bath'sm
th Matsubara mode is decreased by one.
QuantumDynamics.HEOM.propagate
— Functionpropagate(; Hamiltonian::AbstractMatrix{ComplexF64}, ρ0::AbstractMatrix{ComplexF64}, β::Real, Jw::AbstractVector{SpectralDensities.DrudeLorentz}, sys_ops::Vector{Matrix{ComplexF64}}, num_modes::Int, Lmax::Int, dt::Real, ntimes::Int, threshold::Float64=0.0, external_fields::Union{Nothing,Vector{Utilities.ExternalField}}=nothing, extraargs::Utilities.DiffEqArgs=Utilities.DiffEqArgs())
Uses HEOM to propagate the initial reduced density matrix, ρ0
, under the given Hamiltonian
, and set of spectral densities, Jw
, interacting with the system through sys_ops
.
ρ0
: initial reduced density matrixHamiltonian
: system Hamiltonianexternal_fields
: eithernothing
or a vector of external time-dependent fieldsJw
: array of spectral densitiessys_ops
: system operators through which the corresponding baths interactnum_modes
: number of Matsubara modes to be consideredLmax
: cutoff for maximum number of levelsdt
: time-step for recording the density matricesntimes
: number of time steps of simulationthreshold
: filtration thresholdextraargs
: extra arguments for the differential equation solver