Python Kwant孤立体系本征态计算

导入模块

import kwant
# 画图设置模块
%run matplotlib_setup.ipy

# 线性代数特征值求解模块
import scipy.linalg as la

设置体系

# 晶格类型
lat = kwant.lattice.square(a=1)
t = 1
r = 15

# 体系形状函数
def circle(pos):
    x, y = pos
    return x**2 + y**2 < r**2


sys = kwant.Builder()
# 座位能
sys[lat.shape(circle, (0,0))] = 4 * t
# 最近邻hooping
sys[lat.neighbors()] = -t

# 可视化体系
kwant.plot(sys);

# 确定体系完成
sys = sys.finalized()

开始计算

# 得到体系的哈密顿量
ham = sys.hamiltonian_submatrix()
# 可视化哈密顿矩阵
plt.matshow(ham==0, cmap="gray", interpolation=None)
# 本征值求解
eval, evec = la.eigh(ham)
# 画出第0个本征态
kwant.plotter.map(sys, abs(evec[:,0])**2);

利用Ipython可视化技巧,观察任意i个本征态

from ipywidgets import interact

def plot_wf(i=0):
    print("Plotting wave function with index", i)
    print("energy:", eval[i],"x t") 
    kwant.plotter.map(sys, abs(evec[:, i])**2)
    
interact(plot_wf, i=(0, 30))

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值