QuantumGradientGenerators
API
Index
QuantumGradientGenerators.GradGenerator
QuantumGradientGenerators.GradVector
QuantumGradientGenerators.GradgenOperator
QuantumGradientGenerators.resetgradvec!
Reference
QuantumGradientGenerators.GradGenerator
— TypeExtended generator for the standard dynamic gradient.
G̃ = GradGenerator(G)
contains the original time-dependent generator G
(a Hamiltonian or Liouvillian) in G̃.G
, a vector of control derivatives $∂G/∂ϵₗ(t)$ in G̃.control_derivs
, and the controls in G̃.controls
.
For a generator $G = Ĥ(t) = Ĥ₀ + ϵ₁(t) Ĥ₁ + … + ϵₙ(t) Ĥₙ$, this extended generator encodes the block-matrix
\[G̃ = \begin{pmatrix} +
QuantumGradientGenerators
API
Index
QuantumGradientGenerators.GradGenerator
QuantumGradientGenerators.GradVector
QuantumGradientGenerators.GradgenOperator
QuantumGradientGenerators.resetgradvec!
Reference
QuantumGradientGenerators.GradGenerator
— TypeExtended generator for the standard dynamic gradient.
G̃ = GradGenerator(G)
contains the original time-dependent generator G
(a Hamiltonian or Liouvillian) in G̃.G
, a vector of control derivatives $∂G/∂ϵₗ(t)$ in G̃.control_derivs
, and the controls in G̃.controls
.
For a generator $G = Ĥ(t) = Ĥ₀ + ϵ₁(t) Ĥ₁ + … + ϵₙ(t) Ĥₙ$, this extended generator encodes the block-matrix
\[G̃ = \begin{pmatrix} Ĥ(t) & 0 & \dots & 0 & Ĥ₁ \\ 0 & Ĥ(t) & \dots & 0 & Ĥ₂ \\ \vdots & & \ddots & & \vdots \\ 0 & 0 & \dots & Ĥ(t) & Ĥₙ \\ 0 & 0 & \dots & 0 & Ĥ(t) -\end{pmatrix}\]
Note that the $∂G/∂ϵₗ(t)$ ($Ĥₗ$ in the above example) may be time-dependent, to account for the possibility of non-linear control terms.
QuantumGradientGenerators.GradVector
— TypeExtended state-vector for the dynamic gradient.
Ψ̃ = GradVector(Ψ, num_controls)
for an initial state Ψ
and num_controls
control fields.
The GradVector
conceptually corresponds to a direct-sum (block) column-vector $Ψ̃ = (|Ψ̃₁⟩, |Ψ̃₂⟩, … |Ψ̃ₙ⟩, |Ψ⟩)^T$, where $n$ is num_controls
. With a matching $G̃$ as in the documentation of GradGenerator
, we have
\[G̃ Ψ̃ = \begin{pmatrix} +\end{pmatrix}\]
Note that the $∂G/∂ϵₗ(t)$ ($Ĥₗ$ in the above example) may be time-dependent, to account for the possibility of non-linear control terms.
QuantumGradientGenerators.GradVector
— TypeExtended state-vector for the dynamic gradient.
Ψ̃ = GradVector(Ψ, num_controls)
for an initial state Ψ
and num_controls
control fields.
The GradVector
conceptually corresponds to a direct-sum (block) column-vector $Ψ̃ = (|Ψ̃₁⟩, |Ψ̃₂⟩, … |Ψ̃ₙ⟩, |Ψ⟩)^T$, where $n$ is num_controls
. With a matching $G̃$ as in the documentation of GradGenerator
, we have
\[G̃ Ψ̃ = \begin{pmatrix} Ĥ |Ψ̃₁⟩ + Ĥ₁|Ψ⟩ \\ \vdots \\ Ĥ |Ψ̃ₙ⟩ + Ĥₙ|Ψ⟩ \\ @@ -16,6 +16,6 @@ \vdots \\ \frac{∂}{∂ϵₙ} e^{-i Ĥ dt} |Ψ⟩ \\ e^{-i Ĥ dt} |Ψ⟩ -\end{pmatrix}.\]
QuantumGradientGenerators.GradgenOperator
— TypeStatic generator for the dynamic gradient.
using QuantumPropagators.Controls: evaluate
+\end{pmatrix}.\]
QuantumGradientGenerators.GradgenOperator
— TypeStatic generator for the dynamic gradient.
using QuantumPropagators.Controls: evaluate
-G::GradgenOperator = evaluate(gradgen::GradGenerator; vals_dict)
is the result of plugging in specific values for all controls in a GradGenerator
.
The resulting object can be multiplied directly with a GradVector
, e.g., in the process of evaluating a piecewise-constant time propagation.
QuantumGradientGenerators.resetgradvec!
— MethodReset the given gradient vector for a new gradient evaluation.
resetgradvec!(Ψ̃::GradVector)
zeroes out Ψ̃.grad_states
but leaves Ψ̃.state
unaffected.
resetgradvec!(Ψ̃::GradVector, Ψ)
additionally sets Ψ̃.state
to Ψ
.
Settings
This document was generated with Documenter.jl version 0.27.25 on Friday 6 October 2023. Using Julia version 1.9.3.
is the result of plugging in specific values for all controls in a GradGenerator
.
The resulting object can be multiplied directly with a GradVector
, e.g., in the process of evaluating a piecewise-constant time propagation.
QuantumGradientGenerators.resetgradvec!
— MethodReset the given gradient vector for a new gradient evaluation.
resetgradvec!(Ψ̃::GradVector)
zeroes out Ψ̃.grad_states
but leaves Ψ̃.state
unaffected.
resetgradvec!(Ψ̃::GradVector, Ψ)
additionally sets Ψ̃.state
to Ψ
.