Recommended resources
The freely available resources this lesson will direct you to.
Hello! Welcome to the final lesson in our module on numerical methods for quantum systems.
In our last session, you built a simulation to study the time evolution of a wavepacket scattering off a potential barrier. We focused on a time-domain picture, watching the packet evolve and split to calculate transmission and reflection probabilities. This was an excellent exercise in solving the time-dependent Schrödinger equation directly.
Today, we'll approach quantum transport from a different, and often more powerful, perspective. Instead of a single scattering event in time, we will consider the steady-state flow of electrons through a device. This is the natural framework for calculating one of the most fundamental properties in condensed matter physics: electrical conductance.
Your learning outcome is to implement the Landauer-Büttiker formalism for a 1D tight-binding model to calculate quantum conductance. We will connect the microscopic quantum theory of scattering to a macroscopic, measurable quantity. This lesson bridges single-particle dynamics with the language of electronic devices, a cornerstone of your interest in condensed matter physics.
1. The Landauer Formula: Connecting Transmission and Conductance
The central idea of this lesson is the Landauer formula. It makes a profound statement: the electrical conductance of a small conductor is fundamentally determined by its probability of transmitting electrons.
At zero temperature, for a system with a single conduction channel, the formula is remarkably simple:
Let's break this down:
- is the conductance, the inverse of resistance ().
- is the transmission probability for an electron at the Fermi energy, . This is the same concept of transmission we explored in the last lesson, but now viewed as a function of energy.
- is the quantum of conductance. The factor of 2 accounts for spin degeneracy. Its inverse, , is a fundamental unit of resistance that appears in quantum Hall systems.
This formula elegantly states that even a perfectly clean, defect-free wire does not have infinite conductance. The resistance arises from the mismatch between the finite number of modes in the wire and the infinite modes in the reservoirs (the leads) it connects to.

To build some intuition for this quantum origin of resistance, let's explore a simple derivation for a perfect 1D wire.
Greens function Approach to Transport: Basic Training in ...
The following notes from a course at Cornell University provide a clear and concise derivation of quantized conductance in a perfect 1D wire, a result known as the Landauer formula.
Please read Section C, 'Quantized Conductance (Landauer)' (pages 4-5). Follow the short derivation from Problem 1.2.1 to 1.2.5. It shows how the current arises from the difference in occupied states in the left and right leads, leading directly to the quantized conductance.
The key takeaway is that conductance isn't about how fast electrons move, but about how many transmission channels are open at the Fermi energy. If we introduce a scatterer into the wire, will be less than 1, and the conductance will decrease. Our main goal is now to figure out how to calculate for a given system.
2. The Setup: A Tight-Binding Model with Leads
To calculate , we need a model of our system. For problems in condensed matter, it's often more natural to work on a discrete lattice rather than in continuous space. This is the tight-binding approximation. You can think of it as the result of discretizing the Schrödinger equation, just as we did in the last lesson.
Quantum transport workshop: basic concepts
This video from a workshop on the quantum transport package Kwant gives an excellent overview of how a continuous 1D Schrödinger equation is discretized into a tight-binding model, which is the starting point for our calculation.
Watch the segment from 01:48 to 04:14. The speaker starts with the 1D continuous Schrödinger equation and shows how a finite-difference approximation leads directly to the discrete tight-binding equation. Notice the on-site energy terms (V_n) and the hopping terms (t).
The resulting tight-binding Hamiltonian for a 1D chain looks like this:
where is the on-site energy at site and is the hopping energy between adjacent sites.
To model a transport experiment, we divide our system into three parts: a central scattering region where the potential might vary, and two semi-infinite, perfect leads on the left and right that act as electron reservoirs.

Solving this infinite system directly is impractical. Instead, we use the Green's function formalism. The core idea is to replace the infinite leads with a complex, energy-dependent potential called the self-energy, , which acts on the boundaries of the central scattering region.
3. The Green's Function Method
The self-energy encapsulates all the physics of a lead's connection to the device. The Green's function of the isolated device, , is modified by the presence of the leads:
Here, is the Hamiltonian of just the central scattering region, and and are the self-energies from the left and right leads. The self-energy has a real part, which shifts the energy levels in the device, and an imaginary part, which broadens them. This broadening represents the fact that states in the device can "decay" into the leads, giving them a finite lifetime.
This broadening is described by the coupling matrices:
These matrices are crucial because they connect the device to the leads and allow for current to flow. With these pieces, we can state the central result for calculating the transmission function, known as the Fisher-Lee relation:
This powerful formula allows us to calculate the transmission probability through a device of arbitrary complexity, provided we know its Hamiltonian and the self-energies of the leads.
Greens function Approach to Transport: Basic Training in ...
The theoretical framework we've just outlined is a cornerstone of what's known as Non-Equilibrium Green's Functions (NEGF). The provided notes derive these results in detail. You don't need to follow every step, but it's valuable to see where the formulas come from.
Skim through these chapters to appreciate the structure of the theory: Chapter 5 (pages 37-45): See how the self-energy \Sigma is derived for a semi-infinite wire (Eq. 5.37). The key idea is integrating out the lead's degrees of freedom. Chapter 6 (pages 59-67): This chapter derives the final expression for the current and conductance (Eq. 6.2, which is a multi-lead version of the Fisher-Lee relation). Notice how the final linear response result (Eq. 6.67) relates the current to the transmission probability Tr[\Gamma_s G \Gamma_{s'} G^\dagger].
Test your understanding!
The matrices are non-zero only if the self-energies have an imaginary part. The imaginary part of the self-energy is related to the density of states in the leads. What happens to the transmission if you choose an energy that falls within a band gap of the leads?
Show answer
If the energy is in a band gap of the leads, there are no available states for an electron to propagate into. This means the density of states in the leads is zero at that energy. Consequently, the imaginary part of the self-energy, and thus the coupling matrix , will be zero. Looking at the Fisher-Lee relation, , if either or is zero, the transmission will also be zero. No current can flow at energies where the leads cannot support propagating states.
4. Your Task: Implementation with Kwant
While you have the skills to implement this formalism from scratch using Numpy and Scipy, we will use a specialized Python library called Kwant. Kwant is designed for quantum transport calculations and handles the complexities of building Hamiltonians, computing self-energies, and solving for the scattering matrix efficiently. This allows us to focus on the physics.
Your task is to write a Python script that calculates the conductance of a 1D wire containing a potential barrier.
setting up a simple system and computing conductance - Kwant
The official Kwant documentation provides a step-by-step tutorial for setting up a quantum wire and calculating its conductance. We will follow this structure closely.
Please read through the tutorial sections 'Discretization of a Schrödinger Hamiltonian' and 'Transport through a quantum wire'. This will guide you through the main steps of a Kwant simulation. Pay attention to: Defining a kwant.lattice. Using a kwant.Builder to add sites and hoppings. Defining a lead with kwant.TranslationalSymmetry. Attaching the leads to the system. Finalizing the system and using kwant.smatrix to calculate transmission. Finally, look at the section 'Tips for organizing your simulation scripts' for best practices on structuring your code with functions.
Here is a guide for your implementation. The goal is to reproduce the quantum version of Ohm's law for a device with a scatterer.
-
Set up the environment:
- Import
kwantandmatplotlib.pyplot. Define constants like and . We will set the hopping energy and the lattice constant .
- Import
-
Create the system (
make_systemfunction):- Define a 1D lattice:
lat = kwant.lattice.chain(a). - Instantiate a
Builder:syst = kwant.Builder(). - Define the scattering region: This is a segment of the 1D chain. Add the sites and the nearest-neighbor hoppings.
# Example for a scattering region of length L for i in range(L): syst[lat(i)] = 4 * t # On-site energy, 4t comes from the 2D example, for 1D it's 2t for i in range(L - 1): syst[lat(i), lat(i+1)] = -t # Hopping - Introduce a potential barrier: Modify the on-site energy for a few sites in the middle of the scattering region.
# Example for a barrier of height V0 at site L/2 syst[lat(L//2)] = 4 * t + V0 - Define the leads: Create a lead builder with translational symmetry. It only needs one unit cell.
sym_left = kwant.TranslationalSymmetry((-a,)) lead = kwant.Builder(sym_left) lead[lat(0)] = 4 * t lead[lat(0), lat(1)] = -t - Attach leads: Attach the left lead and a reversed copy for the right lead.
syst.attach_lead(lead) syst.attach_lead(lead.reversed()) - Return the builder.
- Define a 1D lattice:
-
Main execution block:
- Call
make_system()and finalize it:final_syst = system.finalize(). - Create a list of energies to sweep over. The valid energy range for this model is from 0 to
4*t. - Loop through the energies:
- Calculate the scattering matrix:
smatrix = kwant.smatrix(final_syst, energy). - Get the transmission from lead 0 to lead 1:
T = smatrix.transmission(1, 0). - Calculate conductance in units of :
conductance = T. Store this value.
- Calculate the scattering matrix:
- Plot the conductance vs. energy.
- Call
You should observe that for energies below the barrier height, the conductance is low (due to tunneling), and for energies above, it approaches 1 but may show oscillations (resonances). Experiment with changing the height (V0) and width of your barrier.
Conclusion
Today, we've explored the powerful Landauer-Büttiker formalism, which provides a direct link between the quantum mechanical transmission properties of a system and its electrical conductance.
Key Takeaways:
- The Landauer formula () quantifies conductance in terms of microscopic transmission probability.
- Tight-binding models are a natural way to represent electronic systems on a lattice, common in condensed matter physics.
- The Green's function method allows us to solve for transport properties by modeling the infinite leads through a self-energy term .
- The Fisher-Lee relation, , is the computational heart of this method.
- Software packages like Kwant provide a robust and efficient implementation of this formalism, enabling us to simulate quantum transport in complex nanostructures.
Preview of the Next Module:
This lesson concludes our module on numerical methods for single-particle and non-interacting systems. You've simulated time-evolution and now steady-state transport, building a strong computational foundation.
We will now move into the core of your interest: many-body quantum theory. The next module, "Advanced Computational Many-Body Methods," will introduce you to the powerful techniques used to tackle interacting quantum systems that cannot be solved analytically. We will begin by learning how to represent many-body states efficiently using Matrix Product States (MPS), the foundational concept behind the Nobel Prize-winning Density Matrix Renormalization Group (DMRG) algorithm.