Source code for scqubits.core.sweeps

# sweeps.py
#
# This file is part of scqubits: a Python package for superconducting qubits,
# Quantum 5, 583 (2021). https://quantum-journal.org/papers/q-2021-11-17-583/
#
#    Copyright (c) 2019 and later, Jens Koch and Peter Groszkowski
#    All rights reserved.
#
#    This source code is licensed under the BSD-style license found in the
#    LICENSE file in the root directory of this source tree.
############################################################################

from typing import TYPE_CHECKING, Tuple

import numpy as np

from qutip import Qobj

from scqubits.core.qubit_base import QubitBaseClass

if TYPE_CHECKING:
    from scqubits.core.param_sweep import ParameterSweep


[docs]def bare_matrixelement( sweep: "ParameterSweep", paramindex_tuple: Tuple[int, ...], paramvals_tuple: Tuple[float, ...], operator_name: str, subsystem: QubitBaseClass, ) -> np.ndarray: """ Given parameter sweep data, compute and return a matrix element table using the bare states of the specified subsystem. Parameters ---------- sweep: `ParameterSweep` object to be used for the computation paramindex_tuple: a complete set of parameter indices (i.e. a single point in the multi-dim parameter space) paramvals_tuple: [not used, but required by `generator` interface] operator_name: operator for which matrix elements are requested, given in string form subsystem: subsystem belonging to the underlying Hilbert space and compatible with the specified operator name Returns ------- ndarray of matrix elements, in general complex-valued; shape: square array of size set by the truncated_dim of the subsystem """ subsys_index = sweep.get_subsys_index(subsystem) bare_evecs = sweep["bare_evecs"][subsys_index][paramindex_tuple] return subsystem.matrixelement_table( operator=operator_name, evecs=bare_evecs, evals_count=subsystem.truncated_dim, )
[docs]def dressed_matrixelement( sweep: "ParameterSweep", paramindex_tuple: Tuple[int, ...], paramvals_tuple: Tuple[float, ...], operator: Qobj, ) -> np.ndarray: """ Given parameter sweep data, compute and return a matrix element table using the dressed states of the composite Hilbert space. Parameters ---------- sweep: `ParameterSweep` object to be used for the computation paramindex_tuple: a complete set of parameter indices (i.e. a single point in the multi-dim parameter space) paramvals_tuple: [not used, but required by `generator` interface] operator: given as `Qobj`, valid operator in the full Hilbert space Returns ------- ndarray of matrix elements, in general complex-valued; shape: square array of size set by the truncated_dim of the subsystem """ evecs = sweep["evecs"][paramindex_tuple] return np.asarray( [[operator.matrix_element(evec1, evec2) for evec1 in evecs] for evec2 in evecs] )