Solvers
High level interface
Closed system
OpenQuantumTools.solve_schrodinger
— Methodsolve_schrodinger(A, tf; tspan, kwargs...)
Solve Schrodinger equation defined by A
for a total evolution time tf
.
...
Arguments
A::Annealing
: theAnnealing
/Evolution
object.tf::Real
: the total annealing time.tspan
= (0, tf): time interval to solve the dynamics.kwargs
: other keyword arguments supported byDifferentialEquations
.
...
OpenQuantumTools.solve_unitary
— Methodsolve_unitary(A, tf; vectorize, tspan, kwargs...)
Solve the unitary defined by A
for a total evolution time tf
.
...
Arguments
A::Annealing
: theAnnealing
/Evolution
object.tf::Real
: the total annealing time.vectorize::Bool = false
: whether to vectorize the density matrix.tspan
= (0, tf): time interval to solve the dynamics.kwargs
: other keyword arguments supported byDifferentialEquations
.
...
OpenQuantumTools.solve_von_neumann
— Methodsolve_von_neumann(A, tf; tspan, vectorize, kwargs...)
Solve the von Neumann equation defined by A
for a total evolution time tf
.
...
Arguments
A::Annealing
: theAnnealing
/Evolution
object.tf::Real
: the total annealing time.vectorize::Bool = false
: whether to vectorize the density matrix.tspan
= (0, tf): time interval to solve the dynamics.kwargs
: other keyword arguments supported byDifferentialEquations
.
...
Open system
OpenQuantumTools.solve_lindblad
— Methodsolve_lindblad(A, tf; tspan, vectorize, kwargs...)
Solve the Lindblad equation defined by A
for a total evolution time tf
.
...
Arguments
A::Annealing
: the Annealing object.tf::Real
: the total annealing time.tspan
= (0, tf): time interval to solve the dynamics.vectorize::Bool = false
: whether to vectorize the density matrix.kwargs
: other keyword arguments supported byDifferentialEquations
.
...
OpenQuantumTools.solve_redfield
— Methodsolve_redfield(
A,
tf,
unitary;
vectorize,
int_atol,
int_rtol,
Ta,
kwargs...
)
Solve the time-dependent Redfield equation defined by A
for a total evolution time tf
.
...
Arguments
A::Annealing
: theAnnealing
/Evolution
object.tf::Real
: the total evolution time.unitary
: precomputed unitary operator of the corresponding closed-system evolution.vectorize::Bool = false
: whether to vectorize the density matrix.int_atol = 1e-8
: the absolute error tolerance for integration.int_rtol = 1e-6
: the relative error tolerance for integration.Ta = tf
: the timescale of the backward integration.kwargs
: other keyword arguments supported byDifferentialEquations
.
...
OpenQuantumTools.solve_cgme
— Methodsolve_cgme(
A,
tf,
unitary;
vectorize,
Ta,
int_atol,
int_rtol,
kwargs...
)
Solve the time-dependent coarse-grained master equation (CGME) defined by A
for a total evolution time tf
.
...
Arguments
A::Annealing
: theAnnealing
/Evolution
object.tf::Real
: the total evolution time.unitary
: precomputed unitary operator of the corresponding closed-system evolution.vectorize::Bool = false
: whether to vectorize the density matrix.Ta = nothing
: coarse-graining time. If set to nothing, the solver will automatically choose the value.int_atol = 1e-8
: the absolute error tolerance for integration.int_rtol = 1e-6
: the relative error tolerance for integration.kwargs
: other keyword arguments supported byDifferentialEquations
.
...
OpenQuantumTools.solve_ule
— Methodsolve_ule(
A,
tf,
unitary;
vectorize,
int_atol,
int_rtol,
Ta,
kwargs...
)
Solve the time-dependent universal Lindblad equation (ULE) defined by A
for a total evolution time tf
.
...
Arguments
A::Annealing
: theAnnealing
/Evolution
object.tf::Real
: the total evolution time.unitary
: precomputed unitary operator of the corresponding closed-system evolution.vectorize::Bool = false
: whether to vectorize the density matrix.int_atol = 1e-8
: the absolute error tolerance for integration.int_rtol = 1e-6
: the relative error tolerance for integration.Ta = tf
: the timescale of the integration region.kwargs
: other keyword arguments supported byDifferentialEquations
.
...
Missing docstring for solve_ame( A::Annealing, tf::Real; tspan=(0.0, tf), ω_hint=[], lambshift::Bool=true, lvl::Int=size(A.H, 1), vectorize::Bool=false, kwargs..., )
. Check Documenter's build log for details.
Parallel
OpenQuantumTools.build_ensembles
— Methodbuild_ensembles(
A,
tf,
type;
tspan,
output_func,
reduction,
initializer,
save_positions,
kwargs...
)
Build EnsembleProblem
object for different open-system models. For :lindblad
and :ame
, it build the ensemble for the quantum trajectories method. For :stochastic
, it builds the ensemble for the stochastic Schrödinger equation. For :redfield
, it builds the ensemble to infuse stochastic nosie into the Redfield equation.
...
Arguments
A::Annealing
: theAnnealing
/Evolution
object.tf::Real
: the total annealing time.type::Symbol
: type of the ensemble to build. Available options are:lindblad
,:ame
,:stochastic
and:redfield
.tspan = (0, tf)
: time interval to solve the dynamics.initializer = DEFAULT_INITIALIZER
: initializer for the ensemble problem. Currently it is only supported by the:stochastic
ensemble.save_positions = (false, false)
: Boolean tuple for whether to save before and after the callbacks. This saving will occur just before and after the event, only at event times, and does not depend on options like saveat, save_everystep, etc. (i.e. if saveat=[1.0,2.0,3.0], this can still add a save point at 2.1 if true).output_func
: The function determines what is saved from the solution to the output array. Defaults to saving the solution itself. The output is (out,rerun) where out is the output and rerun is a boolean which designates whether to rerun. It is part of theDifferentialEquations
's parallel interface.reduction
: This function determines how to reduce the data in each batch. Defaults to appending the data from the batches. The second part of the output determines whether the simulation has converged. If true, the simulation will exit early. By default, this is always false. It is part of theDifferentialEquations
's parallel interface.kwargs
: other keyword arguments supported by the specific solver or byDifferentialEquations
.
...