Kwantの実行例(MateriApps LIVE!)
Last Update:2021/12/09
はじめに
Kwantは散乱理論に基づく輸送特性評価を行うソフトウェアである。Pythonを利用し、可読性・柔軟性に優れている。メゾスコピック系の様々な対象(量子細線、量子ポイントコンタクト、量子ドット、超伝導金属界面など)の透過係数やコンダクタンスを簡単に評価することができる。ここでは、MateriApps LIVE!上でのKwantのインストール方法、および、マニュアルの最初に記述されている例(量子細線のコンダクタンス)を実行するまでの手順を紹介する。インストール方法は環境によらずほとんど同じであるので、他のOS環境でも同様に試すことができるであろう。
Kwantのインストール方法
1.Pythonのパッケージ管理ソフトであるAnacondaもしくはMinicondaを利用するインストール方法が推奨されている(他の方法でもインストール可能)。ここではMinicondaを使おう。
https://conda.io/miniconda.html
MateriApps LIVE!のWebブラウザから上記のURLにアクセスし、Python3・L64-bit・Linux版のインストーラ(Miniconda3-latest-Linux-x86_64.sh)をダウンロードする。
2.Minicondaのインストーラを実行する。MateriApps LIVE!上で端末(LXTerminalなど)を立ち上げ、以下のコマンドを実行する。
cd Downloads
bash Miniconda3-latest-Linux-x86_64.sh
最初にライセンスに同意するかどうか聞かれるので、yesとタイプしてリターンを押す。次にインストールするディレクトリを聞かれるので、リターン(デフォルトを選択)を押す。最後に.bashrcの設定をするかどうか聞かれるのでyesとする。その設定を有効化する(次回ログイン時以降は不要)。
cd ..
source .bashrc
3.Minicondaを用いて、kwant, matplotlibをインストールする。
conda install -c conda-forge kwant
conda install matplotlib
4.以下のスクリプトをカット・ペーストして、kwanttest.pyのファイルを作る。(例えば、端末のコマンドラインからemacsを起動し、ブラウザで下記のスクリプトを選択してコピーし、emacs上でペーストする。)
import kwant
from matplotlib import pyplot
syst = kwant.Builder()
a = 1
lat = kwant.lattice.square(a)
t = 1.0
W = 10
L = 30
for i in range(L):
for j in range(W):
syst[lat(i,j)] = 4*t
if j>0:
syst[lat(i,j),lat(i,j-1)] = -t
if i>0:
syst[lat(i,j),lat(i-1,j)] = -t
sym_left_lead = kwant.TranslationalSymmetry((-a, 0))
left_lead = kwant.Builder(sym_left_lead)
for j in range(W):
left_lead[lat(0, j)] = 4 * t
if j > 0:
left_lead[lat(0, j), lat(0, j - 1)] = -t
left_lead[lat(1, j), lat(0, j)] = -t
syst.attach_lead(left_lead)
sym_right_lead = kwant.TranslationalSymmetry((a, 0))
right_lead = kwant.Builder(sym_right_lead)
for j in range(W):
right_lead[lat(0, j)] = 4 * t
if j > 0:
right_lead[lat(0, j), lat(0, j - 1)] = -t
right_lead[lat(1, j), lat(0, j)] = -t
syst.attach_lead(right_lead)
syst = syst.finalized()
energies = []
data = []
for ie in range(100):
energy = ie * 0.01
smatrix = kwant.smatrix(syst, energy)
energies.append(energy)
data.append(smatrix.transmission(1, 0))
pyplot.figure()
pyplot.plot(energies, data)
pyplot.xlabel("energy [t]")
pyplot.ylabel("conductance [e^2/h]")
pyplot.show()
5.スクリプトを実行する。量子細線のコンダクタンスの化学ポテンシャル依存性がグラフとして描画される。幅方向の量子化準位に化学ポテンシャルが到達すると、コンダクタンスがe^2/hだけジャンプすることがわかる。この現象はコンダクタンスの量子化と呼ばれる。
python kwanttest.py

おわりに
上記のスクリプトの記述している内容や、より進んだ計算については、Kwantのドキュメントを参考にしてください。
https://kwant-project.org/doc/