⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 piecewise_band_2d.m

📁 通过计算晶体结构来确定其光谱分布
💻 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 + -