From 8577c218b1037b3525cd6a7fc9daf5aafb73262f Mon Sep 17 00:00:00 2001
From: Anton Akhmerov <anton.akhmerov@gmail.com>
Date: Mon, 13 Feb 2012 12:08:57 +0100
Subject: [PATCH] add an example of advanced kwant usage

---
 examples/advanced_construction.py | 48 +++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)
 create mode 100644 examples/advanced_construction.py

diff --git a/examples/advanced_construction.py b/examples/advanced_construction.py
new file mode 100644
index 00000000..e019c7f3
--- /dev/null
+++ b/examples/advanced_construction.py
@@ -0,0 +1,48 @@
+"""An example of advanced system creation."""
+
+from __future__ import division
+import kwant
+import numpy
+from math import tanh, sqrt
+
+
+def make_system(R=50):
+    sigma_0 = numpy.identity(2)
+    sigma_x = numpy.array([[0, 1], [1, 0]])
+    sigma_y = numpy.array([[0, -1j], [1j, 0]])
+    sigma_z = numpy.array([[1, 0], [0, -1]])
+
+    def in_ring(pos):
+        return R**2 / 4 < pos[0]**2 + pos[1]**2 < R**2
+
+    def pot(site):
+        x, y = site.pos
+        return (0.1 * tanh(x / R) + tanh(2 * y / R)) * sigma_z
+
+    def in_lead(pos):
+        return -1 < pos[0] < 1.3 and - R/4 < pos[1] < R/4
+
+    lat = kwant.lattice.Honeycomb()
+
+    sys = kwant.Builder()
+    sys[lat.shape(in_ring, (3 * R / 4, 0))] = pot
+    for hopping in lat.nearest:
+        sys[sys.possible_hoppings(*hopping)] = sigma_y
+
+    lead = kwant.Builder(kwant.TranslationalSymmetry([lat.vec((-1, 0))]))
+    lead[lat.shape(in_lead, (0,0))] = sigma_0
+    for hopping in lat.nearest:
+        lead[lead.possible_hoppings(*hopping)] = sigma_x
+    sys.attach_lead(lead)
+    sys.attach_lead(lead.reversed())
+
+    return sys.finalized()
+
+
+def main():
+    fsys = make_system(100)
+    print kwant.solve(fsys, 0.1).transmission(0, 1)
+
+
+if __name__ == '__main__':
+    main()
-- 
GitLab