Associated methods

The HQS Bath Mapper needs to be used in conjunction with the open-source HQS quantum computing library struqture, designed for representing Hamiltonians and physical models. These objects are used for inputs or outputs of all the functions described below.

The functionalities associated with the SpinBRNoiseOperator and FermionBRNoiseOperator of the the Bath Mapper are described in this section.

calculate_excitation_spectral_function

This method determines the bath excitation spectral function for a given Hamiltonian. It takes the following inputs:

  • mode_fermion_system- A MixedHamiltonian composed of a spin/fermion system coupled to a noninteracting fermionic bath.
  • temperature - The bath temperature. Enters later via Fermi distributions of the bath.
  • number_frequencies - The number of frequency points on which the excitation spectral function is calculated.

The function returns the SpinBRNoiseOperator/FermionBRNoiseOperator corresponding to the input MixedHamiltonian.

In the case of a spin-fermion MixedHamiltonian

As described in the introduction section, HQS Bath Mapper is tailored to functionalities that allow studies of the interaction between the system and the bath. Therefore, the function calculate_excitation_spectral_function is intended to deal with couplings only, and does not take into account any operators acting only on the system.

To use this function, the user defines a spin system coupled to a bath of free fermions. The system-bath coupling operator is of the form: \(t_{sij} * \sigma_s \otimes c^{\dagger}_i c_j\), with summation over \(s, i, j\) and where \( \sigma_s \in \lbrace \sigma_s^-, \sigma_s^+, or \sigma_s^z \rbrace \), but is not specified.

In the case of fermion-fermion MixedHamiltonian

The same applies for the fermion-fermion case, with a the user defining a fermionic system coupled to a bath with of free fermions. Here, the system-bath operator is of the form: \(t_{ijkl} * c^{\dagger}_i c_j \otimes c^{\dagger}_k c_l\), with summation over \(i, j, k, l\) and where \(c^{\dagger}_i c_j\) is a system term and \(c^{\dagger}_k c_l\) is a bath term. Also here, the operators acting only on the system are not taken into account, since the resulting spectral function describes only the interaction terms.

spectral_function_to_coupling

This method converts a spectral function into a Hamiltonian that corresponds to a physical coupling, which describes how a spin system or a fermion system interacts with the bosonic bath it is coupled to. It takes the following inputs:

  • spectral_function- A set of spectral functions for number_modes baths.
  • number_modes - The number of spins or fermionic modes in the system.

This function returns the calculated MixedLindbladOpenSystem.

In the case of a SpinBRNoiseOperator

If the input spectral function is a SpinBRNoiseOperator, the MixedLindbladOpenSystem constructed has one spin subsystem (with number_modes spins) and 3 * number_modes bosonic subsystems, each with frequencies.len() modes. This is because each spin is coupled to 3 bosonic baths, one for each of the \(X, Y, Z\) couplings. Additionally, each energy interval (and therefore each frequency) contains one bosonic mode.

In the case of FermionBRNoiseOperator

If the input spectral function is a FermionBRNoiseOperator, the MixedLindbladOpenSystem constructed has one fermionic subsystem (with number_modes fermionic modes) and number_modes * number_modes bosonic subsystems each with frequencies.len() modes. This is because each fermionic mode is coupled to number_modes bosonic baths, as \(c^{\dagger}_0\) can couple to all \(c_0, ..., c_N\) terms. Additionally, each energy interval (and therefore each frequency) contains one bosonic mode.

coupling_to_spectral_function

This method converts a Hamiltonian representing a physical coupling (describing how a spin system or fermion system is coupled to a bosonic bath) into a spectral function. It takes the following inputs:

  • mode_boson_system- A coupled open spin-boson system or fermion-boson system in the form of a MixedLindbladOpenSystem. The coupling between the fermion/spin and bosonic subsystems is limited to one single Pauli operator (in the case of a SpinBRNoiseOperator) or a \(c^{\dagger}_i c_j\) operator (in the case of a FermionBRNoiseOperator) coupling to a single bosonic creation operator plus its Hermitian conjugate. The bosonic subsystem is limited to an interaction-free system, with the eigenfrequencies directly given by the coefficients of the occupation operators in the Hamiltonian \(\omega b^{\dagger} b\). The Lindblad terms of the open system can only act on the bosonic subsystem and are limited to pure damping.
  • frequencies- The frequencies for which every datapoint in the spectral function is defined.
  • background - A constant background/offset that is included in the on-diagonal spectral function.
  • additional_damping - An optional constant damping to be added to the one calculated from the open system.
  • allow_empty_coupling - Allow a mixed system input with no coupling between subsystems. Will produce a zero spectral function.

This function returns the calculated spectral function.

In the case of a spin-fermion MixedHamiltonian

If the system part of the input MixedLindbladOpenSystem is a spin system, the MixedLindbladOpenSystem should adhere to the following assumptions:

  • The coherent system terms can be of any form as they are not taken into account here.
  • The coherent pure bosonic (bath) terms should be interaction-free, and should therefore only be of the form \(\omega b^{\dagger}b\)
  • The coherent coupling terms between system and bath should be limited to one single Pauli operator coupling to a single bosonic creation operator plus its Hermitian conjugate: \(\sigma_{x, y, z} \otimes ( b + b^{\dagger})\)
  • The noise terms should only act on the bosonic bath and should be limited to pure damping.

In the case of fermion-fermion MixedHamiltonian

If the system part of the input MixedLindbladOpenSystem is a fermionic system, the MixedLindbladOpenSystem should adhere to the following assumptions:

  • The coherent system terms can be of any form as they are not taken into account here.
  • The coherent pure bosonic (bath) terms should be interaction-free, and should therefore only be of the form \(\omega b^{\dagger}b\)
  • The coherent coupling terms between system and bath should be limited to \(c^{\dagger}_i c_j\) operator coupling to a single bosonic creation operator plus its Hermitian conjugate: \( c^{\dagger}_i c_j \otimes (b + b^{\dagger})\)
  • The noise terms should only act on the bosonic bath and should be limited to pure damping.

Chain selection and mapping

Candidate creation

Given a device and the length of a chain, the bath-mapper library contains functions to create all possible (simple) chains of system qubits, where each system qubit is coupled to either one or two bath qubits.

  • create_candidates_bilinear: this function finds all of the simple chains with the given number of system qubits (length of the chain), where each system qubit is coupled to an associated bath qubit.
  • chain_with_environment_candidates: this function finds all of the chains with the given number of system qubits (length of the chain), where each system qubit is coupled to an associated bath qubit. This function differs to the one above in that the create_candidates_bilinear only accepts a SquareLatticeDevice as input, while this function accepts any device implementing the ChainWithEnvironmentDevice trait.
  • create_candidates_trilinear: this function finds all of the simple chains with the given number of system qubits (length of the chain), where each system qubit is coupled to two associated bath qubits.

As there isn't any optimization that occurs here, in the worst-case scenario, these functions should scale to produce \( \mathcal{O}(N) \) candidates where \( N \) is the number of qubits in the device.

We call these candidate chains, as they can they can then be the input for the selection algorithms we have.

Candidate selection

Given a device and a list of candidates, these function select the best chain of system qubits with associated bath qubits in the list of candidates.

Similarly to the candidate creation, we have two functions for candidate selection:

  • select_optimised_bilinear_chain: accepts bilinear chains.
  • select_optimised_trilinear_chain: accepts trilinear chains.

The user can select the optimization chosen for these chains, and we invite the user to look further into this in the Python API documentation.

Broadening of bath qubits

The broadenings function offers the functionality to calculate the broadening of a chain of bath qubits, where we define the broadening $ b $ for each bath qubit as:

\[ b = \gamma_{damp} / 2 + \gamma_{depol} + 2 \gamma_{deph} \]

where

  • \( \gamma_{damp} \) is the damping rate of the qubit
  • \( \gamma_{depol} \) is the depolarising rate of the qubit
  • \( \gamma_{deph} \) is the dephasing rate of the qubit.