SLH systems

SystemLevelHamiltonian.SLHType

SLH(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.feedbackreduceFunction

feedbackreduce(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.

Quantum information

SystemLevelHamiltonian.sld_operatorFunction
sld_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 parameter
  • tol: Threshold for eigenvalues considered nonzero (default: 1e-5)

Returns

  • L: Symmetric logarithmic derivative (N×N Hermitian matrix)
SystemLevelHamiltonian.compute_qfiFunction

compute_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().