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

📄 gerfield.m

📁 用传输矩阵的方法来计算光子晶体带隙
💻 M
字号:
function field=gerField(r,n,k,order,X,RoW,W,L)
% function field=gerField(r,n,k,order,X,RoW,W,L)
% yhwsoft 2005.4.25

O=[W/2, L/2];
field=zeros(W,L);
for w=1:W,
    for l=1:L
        rr=sqrt((w-O(1))^2+(l-O(2))^2)*RoW;
        theta=abs(angle((w-O(1))+(l-O(2))*i));
        % To detect this point is belong to which layer.
        for j=2:width_y(r)
            if rr>r(j)
                J=j-1;
                break
            end
            J=j;
        end
        % End of this part.
        
tt=[0 1];
for order_n=2:order
    tt(order_n+1)=(2*order-1)/(order-1)*cos(theta)*tt(order_n)-order/(order-1)*tt(order_n-1);
end
t=order*cos(theta)*tt(order+1)-(order+1)*tt(order);
tt=tt(end);
        
        rho=n(J)*k*rr;
        if rho<eps
            rho=eps;
        end
        
        if J==width_y(r)
                preX=[t*besselj(order,rho),
                t*besselj(order,rho),
                tt*(besselj(order,rho)/rho+order/(2*order+1)*besselj(order-1,rho)-(order+1)/(2*order+1)*besselj(order+1,rho)),
                tt*(besselj(order,rho)/rho+order/(2*order+1)*besselj(order-1,rho)-(order+1)/(2*order+1)*besselj(order+1,rho))
                ];
        else
            preX=[t*besselh(order,1,rho),
                t*besselh(order,2,rho),
                tt*(besselh(order,1,rho)/rho+order/(2*order+1)*besselh(order-1,1,rho)-(order+1)/(2*order+1)*besselh(order+1,1,rho)),
                tt*(besselh(order,2,rho)/rho+order/(2*order+1)*besselh(order-1,2,rho)-(order+1)/(2*order+1)*besselh(order+1,2,rho))
                ];
        end
        En=i^order*(2*order+1)/order/(order+1);
        field(w,l)=-En*sin(pi/2)*X(J,:)*preX;
        
    end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -