wannier拟合能带总是拟合不上_pybinding+Wannier90拟合三代模型

本文介绍了如何利用Wannier90进行能带拟合并导出hr.dat文件,然后借助pybinding库计算能带结构。尽管参数敏感,但通过调整参数可以更准确地描述材料特性。示例中展示了如何设置不同能带结构的hopping参数,并最终绘制能带图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先用Wannier90拟合输出hr.dat文件,人工读取hr.dat文件中的hopping参数,通过pybinding算对应的能带

色散高度依赖于参数,需要刻画出特征还需要进一步想办法

import pybinding as pb

import numpy as np

import matplotlib.pyplot as plt

from math import sqrt, pi

pb.pltutils.use_style()

d = 1 # [nm] unit cell length

t = 1 # [eV] hopping energy

rt3 = sqrt(3)

e1 = -0.699734+1.3285

delta1 = -0.027311

h0 = [[e1,delta1,delta1],[delta1,e1,delta1],[delta1,delta1,e1]]

t1_11 = -0.248774

t1_21 = -0.033678

t1_31 = -0.015000

t1_12 = -0.064970

t1_22 = 0.107549

t1_32 = 0.062797

t1_13 = -0.098159

t1_23 = 0.013446

t1_33 = 0.107787

T1_01 = [[t1_11,t1_12,t1_13],[t1_21,t1_22,t1_23],[t1_31,t1_32,t1_33]]

T1_10 = [[t1_33,t1_13,t1_23],[t1_31,t1_11,t1_21],[t1_32,t1_12,t1_22]]

T1_11 = [[t1_22,t1_23,t1_21],[t1_32,t1_33,t1_31],[t1_12,t1_13,t1_11]]

t2_11 = 0.024829

t2_21 = -0.071677

t2_31 = 0.002483

t2_12 = -0.014436

t2_22 = 0.018802

t2_32 = -0.009754

t2_13 = 0.003559

t2_23 = 0.028743

t2_33 = 0.025042

T2_m11 = [[t2_11,t2_12,t2_13],[t2_21,t2_22,t2_23],[t2_31,t2_32,t2_33]]

T2_21 = [[t2_33,t2_31,t2_32],[t2_13,t2_11,t2_12],[t2_23,t2_21,t2_22]]

T2_12 = [[t2_22,t2_32,t2_12],[t2_23,t2_33,t2_13],[t2_21,t2_31,t2_11]]

t3_11 = -0.076167

t3_21 = 0.002559

t3_31 = 0.005791

t3_12 = 0.006461

t3_22 = 0.002903

t3_32 = -0.010356

t3_13 = -0.012489

t3_23 = -0.008995

t3_33 = 0.012197

T3_02 = [[t3_11,t3_12,t3_13],[t3_21,t3_22,t3_23],[t3_31,t3_32,t3_33]]

T3_20 = [[t3_33,t3_13,t3_23],[t3_31,t3_11,t3_21],[t3_32,t3_12,t3_22]]

T3_22 = [[t3_22,t3_23,t3_21],[t3_32,t3_33,t3_31],[t3_12,t3_13,t3_11]]

# create a simple 2D lattice with vectors a1 and a2

lattice = pb.Lattice(a1=[d, 0], a2=[-0.5*d, d*rt3/2])

lattice.add_sublattices(

('A', [0, 0], h0) # add an atom called 'A' at position [0, 0]

)

lattice.add_hoppings(

# (relative_index, from_sublattice, to_sublattice, energy)

([0, 1], 'A', 'A', T1_01),

([1, 0], 'A', 'A', T1_10),

([1, 1], 'A', 'A', T1_11),

([1, -1], 'A', 'A', T2_m11),

([2, 1], 'A', 'A', T2_21),

([1,2], 'A', 'A', T2_12),

([0, 2], 'A', 'A', T3_02),

([2, 0], 'A', 'A', T3_20),

([2, 2], 'A', 'A', T3_22)

)

#lattice.plot()

#lattice.plot_brillouin_zone()

model = pb.Model(lattice, pb.translational_symmetry())

solver = pb.solver.lapack(model)

Gamma = [0, 0]

M = [0, 2*pi/3]

K = [2*pi/(3*sqrt(3)), 2*pi/3]

bands = solver.calc_bands(Gamma, M, K, Gamma)

bands.plot(point_labels=[r'$\Gamma$', 'M', 'K',r'$\Gamma$'])

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值