Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# Copyright 2011-2013 Kwant authors.
2#
3# This file is part of Kwant. It is subject to the license terms in the file
4# LICENSE.rst found in the top-level directory of this distribution and at
5# https://kwant-project.org/license. A list of Kwant authors can be found in
6# the file AUTHORS.rst at the top-level directory of this distribution and at
7# https://kwant-project.org/authors.
9import numpy as np
10from ..solvers.common import SMatrix
12__all__ = ['two_terminal_shotnoise']
15def two_terminal_shotnoise(smatrix):
16 r"""Compute the shot-noise in a two-terminal setup.
18 In a two terminal system the shot noise is given by `tr((1 - t*t^\dagger) *
19 t*t^\dagger)`.
21 Parameters
22 ----------
23 smatrix : `~kwant.solvers.common.SMatrix` instance
24 A two terminal scattering matrix.
26 Returns
27 -------
28 noise : float
29 Shot noise measured in noise quanta `2 e^3 |V| / pi hbar`.
30 """
32 if not isinstance(smatrix, SMatrix): 32 ↛ 33line 32 didn't jump to line 33, because the condition on line 32 was never true
33 raise NotImplementedError("Noise expressions in terms of Green's "
34 "functions are not implemented.")
36 if len(smatrix.lead_info) != 2:
37 raise ValueError("Only works for two-terminal systems!")
39 t = smatrix.submatrix(smatrix.out_leads[0], smatrix.in_leads[0])
40 ttdag = np.dot(t, t.conj().T)
41 return np.trace(ttdag - np.dot(ttdag, ttdag)).real
44# A general multi-terminal routine for noise would need to also have the
45# voltages at various leads as input. (See
46# https://arxiv.org/abs/cond-mat/9910158) It could still be based on
47# smatrix._a_ttdagger_a_inv, i.e. be also valid also for self-energy leads,
48# provided that only true transmission blocks are used. As long as nobody needs
49# it though, it does make little sense to make such a routine.