二维紧束缚模型求解程序

假如我们已经推导出了二维紧束缚模型的哈密顿量矩阵H(kx,ky)的解析形式,那么在整个布里渊区对角化矩阵就可以得到能带。从技术上说这里面有以下几个问题。

1. 缺少实空间和倒空间的坐标,使得能带难以和布里渊区高对称点对应。

2. 最容易处理的布里渊区是矩形,对于其他多边形,如果全布里渊区mesh画费米面有一定技术困难。

 

因此一个好的处理框架是首先给出实空间原子坐标,给出实空间哈密顿量,并处理边界给出变换到H(kx,ky)的过程,同时给出布里渊区,并按照输入k空间坐标求解。最好原子坐标和K空间求解从配置文件(例如Vasp的POSCAR和KPOINS读取)。原子坐标的给出容易,K空间坐标的给出仍然有部分难度。

 

这里先给出矩阵边界的解决方法,暂时只画费米面附近的能带

dk = 0.05;
Es =[];
for kx=-2*pi:dk:2*pi
    for ky = -2*pi:dk:2*pi
        Hk=Hamiltonian_TaS2_k(kx,ky);
        [~,Ek]=eig(Hk);
        Es = [Es, diag(Ek)];
    end
end
kx=-2*pi:dk:2*pi;
ky=-2*pi:dk:2*pi;
[kX,kY]=meshgrid(kx,ky);
dim = size(Es);
for i = 1:1
    En = reshape(Es(i,:),length(kx),length(kx));
%     mesh(kX,kY,En)
%     hold on;
end
[C,h] = contour(kX,kY,En,[0,-0.5,0.5]);
set(h, 'ShowText', 'on', 'TextStep', get(h,'LevelStep')*2);

费米面

 附录给出的是TaS2的k空间哈密顿量

function H=Hamiltonian_TaS2_k(kx,ky)
e1 = 1.4052;
e2 = 1.3440;
t0 = -0.1046;
t11 = 0.2406;
t22 = -0.5320;
t2 = -0.3701;
rt3 = sqrt(3);
a = 0.5*kx;
b = rt3/2*ky;
h0 = 2*t0*(cos(2*a)+2*cos(a)*cos(b))+e1;
h1 = -2*rt3*t2*sin(a)*sin(b);
h2 = 2*t2*(cos(2*a)-cos(a)*cos(b));
h11 = 2*t11*cos(2*a)+(t11+3*t22)*cos(a)*cos(b)+e2;
h22 = 2*t22*cos(2*a)+(3*t11+t22)*cos(a)*cos(b)+e2;
h12 = rt3*(t22-t11)*sin(a)*sin(b);
H = [h0,h1,h2;h1',h11,h12;h2',h12',h22];

 

 

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB是一种非常强大的工具,可以用于解决各种数学和工程问题,包括求解二维雷诺方程。二维雷诺方程是描述流体力学中的速度场和压力场的方程。 首先,我们需要在MATLAB中定义问题的边界条件和初始条件。边界条件是指在边界上给定的速度和压力值,初始条件是指在初始时刻给定的速度和压力值。 然后,我们可以使用MATLAB中的偏微分方程求解器,如pdepe函数,来求解二维雷诺方程。pdepe函数使用有限差分方法将偏微分方程离散化,并使用显式或隐式方法求解。 在使用pdepe函数之前,我们需要定义偏微分方程的形式。对于二维雷诺方程,其形式为: rho * (du/dt + u * du/dx + v * du/dy) = -dp/dx + mu * (d^2u/dx^2 + d^2u/dy^2) rho * (dv/dt + u * dv/dx + v * dv/dy) = -dp/dy + mu * (d^2v/dx^2 + d^2v/dy^2) d^2p/dx^2 + d^2p/dy^2 = - rho * (dudx^2 + 2 * dv/dxdy + dvdy^2) 其中,rho代表密度,u和v分别表示x和y方向的速度,p表示压力,t表示时间,x和y表示空间坐标,du/dt和dv/dt分别表示速度的时间导数。 将上述方程转化为MATLAB代码,并使用pdepe函数求解,并将结果可视化,即可得到二维雷诺方程的数值解。 总而言之,MATLAB可以用于求解二维雷诺方程的程序。我们可以使用MATLAB中的偏微分方程求解器,如pdepe函数,来求解离散化后的方程,并通过可视化工具将结果展示出来。这样,我们就可以得到二维雷诺方程的数值解。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值