基于Matlab绘制二维光子晶体在恒定频率下的光子带

2023-10-21 04:59

本文主要是介绍基于Matlab绘制二维光子晶体在恒定频率下的光子带,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

光子晶体具有光子带隙特性的电介质结构,是一种能够操控光的人造物质.具有简便,廉价,高速,大容量和强抗干扰性能的更多光子晶体产品将在各个领域发挥重要作用.

⛄ 部分代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% this program calculates and plots the wave-vector diagram (i.e. photonic bands at constant frequency)

%%% for a 2D photonic crystal consisting of cylinders with circular cross-section and

%%% infinite height, arranged in a triangular lattice; oblique propagation is implicit, so 

%%% the polarization states cannot be separated in E-pol and H-pol; 'omega'is taken as input; 

%%% Fourier coefficients for the expansion of dielectric constant are calculated analytically; 

%%% the materials considered here are dielectric and dispersionless;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% the package contains the following programs:

%%%     pwem2Db.m - main program

%%%     epsgg.m - routine for calculating the matrix of Fourier coefficients

%%%                 of dielectric function

%%%     bz_irr2.m - routine for 2D discretization of irreducible Brillouin zone polygon;

%%%     kvect2.m - routine for calculating diagonal matrices with elements

%%%                 (kx+Gx) and (ky+Gy), where G=(Gx,Gy) is a reciprocal

%%%                 lattice vector

%%%     oblic_eigs.m - routine for solving the eigenvalue problem for

%%%                     H-field

close all

clear all

tic

omega=0.45; % normalized frequency "a/lambda"

r=0.43; % radius of cylindrical holes (normalized w.r.t. lattice constant "a")

na=1; nb=3.45; % refractive indices (cylinders-atoms, background) 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

No1=7; No2=No1; 

N1=2*No1+1; N2=2*No2+1;

N=N1*N2; % total number of plane waves used in Fourier expansions

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% primitive vectors of direct lattice (normalized w.r.t. lattice constant "a")

a1=[sqrt(3)/2, -1/2, 0]; a2=[sqrt(3)/2, 1/2, 0]; 

%%% area of primitive cell

ac=norm(cross(a1,a2)); 

%%% primitive vectors of direct lattice (normalized w.r.t. lattice constant "2*pi/a"): b1=[1/sqrt(3),-1]; b2=[1/sqrt(3),1]; 

b1=(1/ac)*[a2(2),-a2(1)]; b2=(1/ac)*[-a1(2), a1(1)]; 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% matrix of Fourier coefficients

eps1 = feval ('epsgg',r,na,nb,b1,b2,N1,N2); 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% 2D discretization of irreducible Brillouin zone polygon

Nr=20; % even number

[BZx,BZy]=feval('bz_irr2', Nr);

kx=[]; ky=[]; kz=[];

S=2.5; % point size for scatter plot

for j=1:length(BZx)

    %%% diagonal matrices with elements (kx+Gx) si (ky+Gy)

    [kGx, kGy] = feval('kvect2',BZx(j),BZy(j),b1,b2,N1,N2);

    [P, beta]=feval('oblic_eigs',omega,kGx,kGy,eps1,N);

    L=imag(beta)==0; 

    qp=sort(beta(L)); %%% keep only the propagative modes

    display(sprintf('Calculation for k[%d] is finished',j));

    for r=1:length(qp)

        kx(j,r)=BZx(j); ky(j,r)=BZy(j); kz(j,r)=qp(r);

    end  

end

M=length(BZx)*length(qp);

scatter3(reshape(kx,1,M), reshape(ky,1,M), reshape(kz,1,M), S,'r','filled'), view(65,10)

title(sprintf('Wavevector diagram for omega=%0.5g',omega)); 

xlabel('kx'); ylabel('ky'); zlabel('kz');

toc

⛄ 运行结果

⛄ 参考文献

[1]许江勇. 基于Matlab研究光子晶体的特性[J]. 兴义民族师范学院学报, 2012(4):4.

[2]吴炳坚, 沈廷根. 基于Matlab的光子晶体波导仿真研究[J]. 微计算机信息, 2007(01S):3.

⛄ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

这篇关于基于Matlab绘制二维光子晶体在恒定频率下的光子带的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/252105

相关文章

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

Python绘制土地利用和土地覆盖类型图示例详解

《Python绘制土地利用和土地覆盖类型图示例详解》本文介绍了如何使用Python绘制土地利用和土地覆盖类型图,并提供了详细的代码示例,通过安装所需的库,准备地理数据,使用geopandas和matp... 目录一、所需库的安装二、数据准备三、绘制土地利用和土地覆盖类型图四、代码解释五、其他可视化形式1.

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

poj2576(二维背包)

题意:n个人分成两组,两组人数只差小于1 , 并且体重只差最小 对于人数要求恰好装满,对于体重要求尽量多,一开始没做出来,看了下解题,按照自己的感觉写,然后a了 状态转移方程:dp[i][j] = max(dp[i][j],dp[i-1][j-c[k]]+c[k]);其中i表示人数,j表示背包容量,k表示输入的体重的 代码如下: #include<iostream>#include<

hdu2159(二维背包)

这是我的第一道二维背包题,没想到自己一下子就A了,但是代码写的比较乱,下面的代码是我有重新修改的 状态转移:dp[i][j] = max(dp[i][j], dp[i-1][j-c[z]]+v[z]); 其中dp[i][j]表示,打了i个怪物,消耗j的耐力值,所得到的最大经验值 代码如下: #include<iostream>#include<algorithm>#include<

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

HDU 2159 二维完全背包

FATE 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,xhd就不会玩这游戏。xhd还说了他最多只杀s只怪。请问他能

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。