Transfer Tensor Method (TTM)
This module provides the interface for generating propagators beyond an entanglement length using TTM.
API
QuantumDynamics.TTM.propagate
— Functionpropagate(; fbU::Array{ComplexF64, 3}, Jw::Vector{T}, β::Real, ρ0::Matrix{ComplexF64}, dt::Real, ntimes::Int, rmax::Int, path_integral_routine, extraargs::Utilities.ExtraArgs, svec=[1.0 -1.0], QuAPI::Bool=false, verbose::Bool=false, reference_prop=false) where {T<:SpectralDensities.SpectralDensity}
Uses TTM to propagate the dynamics starting from ρ0
. TTM uses propagators for different time-spans and these are calculated using the path_integral_routine
, which returns these propagators after solving the Feynman-Vernon influence functional. If QuAPI
is set to false
, the default TTM method is used. Setting QuAPI
to true
lifts the time-translational invariance requirements of the method. Currently it is possible to use QuAPI
, Blip
, TEMPO
, and PCTNPI
to generate the propagators when QuAPI=false
. The functions are called build_augmented_propagators
. The additional propagators required when QuAPI=true
can be simulated using the build_augmented_propagators_QuAPI_TTM
of QuAPI
and Blip
modules.
Unlike the base methods, TTM.propagate
cannot assume the default type of extraargs
required for the path_integral_routine
. Therefore, unlike QuAPI.propagate
or QuAPI.build_augmented_propagator
, TTM.propagate
needs to be supplied an extraargs
parameter compatible with the path_integral_routine
passed in. Passing in incompatible extraargs
, eg. Blip.BlipArgs
with QuAPI.build_augmented_propagator
, would result in errors.
QuantumDynamics.TTM.get_propagators
— Functionget_propagators(; fbU::Array{<:Complex,3}, Jw::Vector{T}, β, dt, ntimes, rmax, kmax::Union{Int, Nothing}=nothing, path_integral_routine, extraargs::Utilities.ExtraArgs, svec=[1.0 -1.0], verbose::Bool=false, reference_prop=false, output::Union{Nothing,HDF5.Group}=nothing) where {T<:SpectralDensities.SpectralDensity}
Calculates a timeseries of forward-backward propagators for an open quantum system using base TTM. It calls the path_integral_routine
with the bare system's forward-backward propagator and the spectral density to obtain the propagators till rmax
time-points. Then it uses TTM to generate the other propagators.
QuantumDynamics.TTM.get_propagators_QuAPI
— Functionget_propagators_QuAPI(; fbU::Array{ComplexF64,3}, Jw::Vector{T}, β, dt, ntimes, rmax, path_integral_routine, extraargs::Utilities.ExtraArgs, svec=[1.0 -1.0], verbose::Bool=false, reference_prop=false) where {T<:SpectralDensities.SpectralDensity}
Calculates a timeseries of forward-backward propagators for an open quantum system using a generalized TTM fit for QuAPI. It calls the path_integral_routine
with the bare system's forward-backward propagator and the spectral density to obtain the propagators till rmax
time-points. Then it uses TTM to generate the other propagators.
QuantumDynamics.TTM.get_Ts
— Functionget_Ts(U0e::Array{<:Complex,3})
Returns the sequence of transfer tensors computed from the dynamical maps U0e
.
Relevant references:
- Cerrillo, J.; Cao, J. Non-Markovian Dynamical Maps: Numerical Processing of Open Quantum Trajectories. Phys. Rev. Lett. 2014, 112 (11), 110401. https://doi.org/10.1103/PhysRevLett.112.110401.
QuantumDynamics.TTM.get_memory_kernel
— Functionget_memory_kernel(T0e::Array{<:Complex,3}, fbU::AbstractMatrix{<:Complex}, dt)
Returns the memory kernels computed from the transfer tensors T0e
, and the short-time dynamical map fbU
.
Relevant references:
- Cerrillo, J.; Cao, J. Non-Markovian Dynamical Maps: Numerical Processing of Open Quantum Trajectories. Phys. Rev. Lett. 2014, 112 (11), 110401. https://doi.org/10.1103/PhysRevLett.112.110401.