Associated Methods

The HQS Bath Mapper must be used in conjunction with the open-source HQS quantum computing library struqture, which is designed to represent Hamiltonians and physical models. These objects are used as 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 non-interacting fermionic bath.
  • temperature - The bath temperature. Enters later via the 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, the 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 only with couplings, 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 to the fermion-fermion case, where the user defines 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 corresponding to a physical coupling, that describes how a spin system or a fermion system interacts with the bosonic bath to which it is coupled. 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 constructed MixedLindbladOpenSystem 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 constructed MixedLindbladOpenSystem 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 given directly 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 data point 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 of the form \(\omega b^{\dagger}b\)
  • The coherent coupling terms between the system and the 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 act only on the bosonic bath and should be limited to pure damping.

Chain Selection and Mapping

Candidate Creation

Given a device and a chain length, 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 (chain length), 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 (chain length), where each system qubit is coupled to an associated bath qubit. This function differs from 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 (chain length), where each system qubit is coupled to two associated bath qubits.

Since there is no optimization here, in the worst case 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 functions select the best chain of system qubits with associated bath qubits in the candidate list.

Similar 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 into this further 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 depolarization rate of the qubit
  • \( \gamma_{deph} \) is the dephasing rate of the qubit.