Source code for qDNA.environment.relax_ops

import numpy as np
import qutip as q

# ----------------------------------------------------------------------


[docs] def get_relax_op(tb_basis, tb_site): """ Annihilation operator of an exciton on a given tight-binding site. Represents the relaxation of the DNA system to its ground state. Parameters ---------- tb_basis : list List of tight-binding site basis states. tb_site : str Tight-binding site. Returns ------- qutip.Qobj Relaxation operator as a Qobj instance. """ tb_site_idx = tb_basis.index(tb_site) num_sites = len(tb_basis) relax_op = np.zeros((num_sites**2 + 1, num_sites**2 + 1)) relax_op[0, 1 + tb_site_idx * (num_sites + 1)] = 1 return q.Qobj(relax_op)
def get_relax_ops(tb_basis, tb_basis_sites_dict, relax_rates): """ Generate relaxation operators for a given tight-binding basis. Parameters ---------- tb_basis : list List of tight-binding basis states. tb_basis_sites_dict : dict Dictionary mapping tight-binding basis states to site indices. relax_rates : dict Dictionary mapping site indices to relaxation rates. Returns ------- list of qutip.Qobj List of relaxation operators, each scaled by the square root of the corresponding relaxation rate. """ relax_ops = [] for tb_site in tb_basis: relax_rate = relax_rates[tb_basis_sites_dict[tb_site]] if relax_rate != 0: relax_op = get_relax_op(tb_basis, tb_site) relax_ops.append(np.sqrt(relax_rate) * relax_op) return relax_ops # ----------------------------------------------------------------------