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 thelth nvector, returns the location of the nvector if thebth bath'smth Matsubara mode is increased by one.nminuslocs[b,m,l]: Given thelth nvector, returns the location of the nvector if thebth bath'smth Matsubara mode is decreased by one.
QuantumDynamics.HEOM.propagate — Functionpropagate(; Hamiltonian::AbstractMatrix{ComplexF64}, ρ0::AbstractMatrix{ComplexF64}, β::Real, Jw::AbstractVector{SpectralDensities.SpectralDensity}, sys_ops::Vector{Matrix{ComplexF64}}, num_modes::Int, Lmax::Int, dt::Real, ntimes::Int, threshold::Float64=0.0, scaled::Bool=true, L::Union{Nothing,Vector{Matrix{ComplexF64}}}=nothing, 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: eithernothingor a vector of external time-dependent fieldsJw: array of spectral densitiessys_ops: system operators through which the corresponding baths interactL: vector of Lindblad jump operatorsnum_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