📄 piecewise_band_2d.m
字号:
function [OH,OE]=piecewise_band_2D(FCx,FCy,FCz,Gx,Gy,ON,kx,ky,k1,Nk,N,str)
%FCx,FCy,FCz=Fourier coefficients along x,y and z axises,respectively
%Gx,Gy=reciprocal-lattice component along x,y axies,respectively
%ON=retained omega order
%kx,ky=wave number along given direction
%k1=modulus of maximal wave vector
%Nk=number of wave vector steps
%N=number of total frequency components
omegaH=zeros(Nk,N);
omegaE=zeros(Nk,N);
h=waitbar(0,str{1});
for m=1:Nk
waitbar(m/Nk,h);
Kx=eye(N)*kx(m)+Gx;
Ky=eye(N)*ky(m)+Gy;
MH=Kx*inv(FCy)*Kx+Ky*inv(FCx)*Ky;
ME=inv(FCz)*(Kx.^2+Ky.^2);
[V,D]=eig(MH);
for n=1:N
omegaH(m,n)=D(n,n);
end
[V,D]=eig(ME);
for n=1:N
omegaE(m,n)=D(n,n);
end
end
disp('finish compute eigen')
close(h);
for m=1:Nk
omegaH(m,:)=sort(omegaH(m,:));
omegaE(m,:)=sort(omegaE(m,:));
end
OE=omegaE(:,1:ON(2));
OH=omegaH(:,1:ON(1));
OE=real(OE);
OH=sqrt(OH)/k1;
OE=sqrt(OE)/k1;
OE=real(OE);
OH=real(OH);
OE(find(OE>1))=1;
OH(find(OH>1))=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -