Solvers

High level interface

Closed system

OpenQuantumTools.solve_schrodingerMethod
solve_schrodinger(A, tf; tspan, kwargs...)

Solve Schrodinger equation defined by A for a total evolution time tf.

...

Arguments

  • A::Annealing: the Annealing/Evolution object.
  • tf::Real: the total annealing time.
  • tspan = (0, tf): time interval to solve the dynamics.
  • kwargs: other keyword arguments supported by DifferentialEquations.

...

source
OpenQuantumTools.solve_unitaryMethod
solve_unitary(A, tf; vectorize, tspan, kwargs...)

Solve the unitary defined by A for a total evolution time tf.

...

Arguments

  • A::Annealing: the Annealing/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 by DifferentialEquations.

...

source
OpenQuantumTools.solve_von_neumannMethod
solve_von_neumann(A, tf; tspan, vectorize, kwargs...)

Solve the von Neumann equation defined by A for a total evolution time tf.

...

Arguments

  • A::Annealing: the Annealing/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 by DifferentialEquations.

...

source

Open system

OpenQuantumTools.solve_lindbladMethod
solve_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 by DifferentialEquations.

...

source
OpenQuantumTools.solve_redfieldMethod
solve_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: the Annealing/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 by DifferentialEquations.

...

source
OpenQuantumTools.solve_cgmeMethod
solve_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: the Annealing/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 by DifferentialEquations.

...

source
OpenQuantumTools.solve_uleMethod
solve_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: the Annealing/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 by DifferentialEquations.

...

source
Missing docstring.

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_ensemblesMethod
build_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: the Annealing/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 the DifferentialEquations'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 the DifferentialEquations's parallel interface.
  • kwargs: other keyword arguments supported by the specific solver or by DifferentialEquations.

...

source