SLH systems
SystemLevelHamiltonian.SLH
— TypeSLH(name, inputs, outputs, S, L, H)
An SLH triple describes an open quantum system. See Combes, arXiv.1611.00375
The name of the system should be unique. When multiple systems are combined, the names of their inputs and outputs will have the system name appended to them. The inputs and outputs describe 'ports' where signals leave and enter the system. Quantum systems must have the same number of inputs and outputs, which we denote by n.
size(S) = (n, n) <- S is an nxn matrix size(L) = (n,) size(H) = ()
The two ways of combining SLH systems are concatenate() and feedbackreduce()
SystemLevelHamiltonian.concatenate
— Functionconcatenate(name, syslist::Vector{SLH})
creates a composite system with no interconnections. Combes eq. 59
SystemLevelHamiltonian.feedbackreduce
— Functionfeedbackreduce(A::SLH,output,input)
Connects the output port to the input port, reducing the number of outputs and inputs by one each. Combes eq 61.
SystemLevelHamiltonian.operators
— Functionoperators(sys)
returns all the quantum operators contained in the system's Hamiltonian.
SystemLevelHamiltonian.parameters
— Functionparameters(sys)
returns all the symbolic numbers contained in the system's Hamiltonian and coupling vector L.
Quantum information
SystemLevelHamiltonian.sld_operator
— Functionsld_operator(rho::AbstractMatrix, drho::AbstractMatrix; tol=1e-12)
Compute the symmetric logarithmic derivative (SLD) L
for a given density matrix rho
and its parameter derivative drho
, using the eigenbasis method. Returns L
in the original basis.
Arguments
rho
: Hermitian density matrix (N×N)drho
: Derivative of the density matrix with respect to some parametertol
: Threshold for eigenvalues considered nonzero (default: 1e-5)
Returns
L
: Symmetric logarithmic derivative (N×N Hermitian matrix)
SystemLevelHamiltonian.compute_qfi
— Functioncompute_qfi(sys,Ncutoff, T, params, param, backend)
Computes the quantum Fisher information of the final state of the system after evolving for time T, with respect to the parameter 'param.' The nominal values of all parameters must be provided as a dictionary mapping parameters to values in 'params.' The differentiation required to calculate the symmetric logarithmic derivative is carried out by DifferentiationInterface, so an autodiff backend is passed as 'backend.' For now use AutoFiniteDiff().