资源描述:
《二维光子晶体能带的程序采用平面波传输法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、pwm法计算二维光了晶体能带的另一个程序已经分享了一个,这是另一个編写方法不同滞度更高。程序完整含冇注释,能同时显示TE和TM波的能带结构。略作修改也可分开显示。function[output_args]=Untitlcd2(input_args)%UNTITLED2Summaryofthisfunctiongoeshere%Detailedexplanationgoeshere%二维光子晶体带结构计算%计算二维正方格子或三角格子,%介质圆柱(介电常数a)立于背景(介电常数b)之屮clear;clc;tic;epssys=1.0e-6;%设定一个最小量,避免系
2、统截断误差或除()错误%定义实际的止空间格了基欠latticetype=O;%定义格子类型,1计算正方格子,0计算三角格子switchlatticetypecase1a=1;al=a*[100];a2=a*[010];a3=a*LOO1J;case0a=1;al=a*[sqrt(3)/21/20];a2=a*[-sqrt(3)/21/20];a3=a*[001J;end;%定义晶格的参数epsa=1;%介质柱的介电常数epsb=10.5;%背景的介电常数Pf=0.28274;%Pf=Ac/Au填充率,可根据需要B行设定Au=norm(cross(al,a2))
3、;%二维格子原胞面积Rc=(Pf*Au/pi)A(l/2);%介质柱截面半径Ac=pi*(Rc)A2;%介质柱横截面积%/匸成倒格基失ral1=(2*pi/a)*cross(a2,a3)/dot(al,cross(a2,a3));ra22=(2*pi/a)*cross(a3,al)/dot(al,cross(a2,a3));ral=ral1(1:2);ra2=ra22(l:2);%选定参与运算的倒空间格矢量,即参与运算的平面波数量。%设定一个l,m的取值范F用,变化l,m即可得出参与运算的平面波集合。NrSquare=10;%选定k空间的尺度,即l,m(倒格欠
4、G=l*bl+m*b2)的取值范围,NrSquare确定后,使用平面波数冃可能为(2*NrSquare+l)A2G=zeros((2*NrSquare+l)A2,2);%初始化叮能使用的倒格矢矩阵i=1;for1=-NrSquare:NrSquareform=-NrSquarc:NrSquarcG(i,:)=l*ral+m*ra2;i=i+1;end;end;NG=i-1;%实际使用的平面波数目G=G(1:NG:);%还有另一种选取的原则,即考虑到园对称的话,则尽可能使平面波波矢的集合均匀分布%在一个球内,根据这样的原则,可先选取一个比较大的NrSquare,
5、同时确定最人%G的模,变化l,m,当G的模值不超过最大值时就选入参与运算的集合中。这样上面一段%代码可以改写成%NrSquare=20;%Gmax=0.5*NrSquare*norm(ral);%G=zeros((2*NrSquare+l)A2,2);%i=1;%for1=-NrSquare:NrSc]uare%form=-NrSquare:NrSquare%Glm=l*ral+m*ra2;%if(norm(Glm<=Gmax))%G(i,:)=Glm;%i=i+1;%end%end;%end;%NG=i-1;%G=G(1:NG,:);%生成k空间中的f(Gi
6、・Gj)的值,ij从1到NG。f=zeros(NG,NG);fori=l:NGforj=l:NGGij=norm(G(i,:)-G(j,:));讦(Gij7、2()];case0T=(2*pi/a)*[epssys0];M=(2*pi/a)*[sqrt(3)/30J;K=(2*pi/a)*[sqrt(3)/31/3];end;%对于简约布里渊区边界上的每个k,求解其特征频率THETA_TM=zeros(NG,NG);%待解的TM波矩阵THETA_TE=zcros(NG,NG);%待解的TE波矩阵Nkpoints=10;%每个方向上取的点数,stepsize=0:l/(Nkpoints-l):1;%每个方向上的步长switchlatticetypecase1TX_TM_cig=zcros(Nkpoints,NG);%
8、沿TX方向的TM波的待解的特征频率矩阵