目录

题目1:画一个十字叉+四个扇形

建模逻辑

所需要的变量

脚本编写

生成结果

附完整代码

题目2:一组正六边形

建模逻辑

所需要的变量

脚本编写

生成结果

附完整代码


程序:zhangjiali1201/Lumerical_demo (github.com)

本文程序为exercise1_model_cross和exercise2_model_hex

题目1:画一个十字叉+四个扇形

建模逻辑

中心的十字叉由交叠的两个矩形组成,使用两次addrect即可。周围的四个扇形可以用addring命令,内径为0,外径为R。

所需要的变量

扇形半径R,十字叉宽度w,十字叉与扇形的间隙gap,整个模型的厚度H,以上参数均为Length类型。

材料为了便于区分,十字叉和扇形选择不同的材料,十字叉为硅,扇形为金。

脚本编写

开始前先删除所有模型。

deleteall;

然后建立两个矩形,构成十字叉。

addrect;
set('name','cross1');
set('x',0);
set('y',0);
set('z span',H);
set('x span',2*R+2*gap+w);
set('y span',w);
set('material',silicon);addrect;
set('name','cross2');
set('x',0);
set('y',0);
set('z span',H);
set('x span',w);
set('y span',2*R+2*gap+w);
set('material',silicon);

然后用for循环构建四个扇形。这里扇形的起止角度比较简单,可以直接用90度的倍数,也可以给角度全部列到矩阵里。

#create sector
V=[gap+w/2,gap+w/2;-(gap+w/2),gap+w/2; -(gap+w/2),-(gap+w/2);gap+w/2,-(gap+w/2)];
#the=[0,90,180,270,360];
for(i=1:4)
{addring;set('name','sector'+num2str(i));set('x',V(i,1));set('y',V(i,2));set('z span',H);
#   set('theta start',the(i));
#   set('theta stop',the(i+1));set('theta start',(90*(i-1)));set('theta stop',(90*i));set('inner radius',0);set('outer radius',R);set('material',gold);}

生成结果

附完整代码

#################
#edited by jializhang, 20210418deleteall;#create the cross
addrect;
set('name','cross1');
set('x',0);
set('y',0);
set('z span',H);
set('x span',2*R+2*gap+w);
set('y span',w);
set('material',silicon);addrect;
set('name','cross2');
set('x',0);
set('y',0);
set('z span',H);
set('x span',w);
set('y span',2*R+2*gap+w);
set('material',silicon);#create sector
V=[gap+w/2,gap+w/2;-(gap+w/2),gap+w/2; -(gap+w/2),-(gap+w/2);gap+w/2,-(gap+w/2)];
#the=[0,90,180,270,360];
for(i=1:4)
{addring;set('name','sector'+num2str(i));set('x',V(i,1));set('y',V(i,2));set('z span',H);
#   set('theta start',the(i));
#   set('theta stop',the(i+1));set('theta start',(90*(i-1)));set('theta stop',(90*i));set('inner radius',0);set('outer radius',R);set('material',gold);}

题目2:一组正六边形

建模逻辑

首先构建最中心的六边形,然后用循环构建周围的六个六边形。

lumerical中的addpoly指令是依次连接多边形的端点来构建多边形。例如下图,就会依次连接这五个点来构建一个五边形。

那对于中间的六边形而言,只要列出六个端点的坐标就可以绘制出来。

周围的六个六边形的中心可以通过一个循环列出来,如果将最右侧的六边形记为1,逆时针排序,外侧多边形和中心多边形的连线与x轴的夹角记为theta,那么theta角依次为0°,60°,120°,180°,240°,300°,360°。外侧多边形和中心多边形的连线的长度恒为2*R*cos(pi/3)+gap,所以外围多边形的中心点可以求出。再根据端点绘制出六边形就可以完成整个建模。

所需要的变量

六边形半径R,整个模型的厚度H,六边形之间的间隙gap。

材料选择玻璃。

脚本编写

首先尝试根据六边形端点坐标生成中心的六边形。

deleteall;#create the hexagon in the centertheta=pi/6;
vtx=[R*cos(theta),R*sin(theta);0,R;-R*cos(theta),R*sin(theta);-R*cos(theta),-R*sin(theta);0,-R;R*cos(theta),-R*sin(theta)];
addpoly;
set('name','hexagon');
set('vertices',vtx);
set('z span',H);
set('material',glass);

可以看到成功生成了一个六边形,但这样的写法不具有普遍性,可以将其简化。

deleteall;vtx=zeros(6,2);
for(i=1:6)
{vtx(i,1)=R*cos(pi/6+(i-1)*pi/3);vtx(i,2)=R*sin(pi/6+(i-1)*pi/3);
}
addpoly;
set('name','hexagon');
set('vertices',vtx);
set('z span',H);
set('material',glass);

加下来可以构建周围的六个六边形。六边形的中心点坐标可以通过一个循环得出,而端点的坐标计算与中心六边形的计算方法相同,只要在坐标上加上中心点的x,y值变化即可。

for(i=0:6)
{    Nx=(2*R*cos(pi/6)+gap)*cos(0+(i-1)*pi/3);Ny=(2*R*cos(pi/6)+gap)*sin(0+(i-1)*pi/3);vtx=zeros(6,2);for(j=1:6){vtx(j,1)=R*cos(pi/6+(j-1)*pi/3)+Nx;vtx(j,2)=R*sin(pi/6+(j-1)*pi/3)+Ny;}addpoly;set('name','hexagon'+num2str(i));set('vertices',vtx);set('z span',H);set('material',glass);
}

可以看出,绘制中心六边形的代码和绘制周围六边形的代码重合度非常高,其不同点就在于周围六边形的端点坐标加上了中心点的平移,因此可以将他们整合到一起。设定一个判断条件,在绘制中心六边形的时候将中心点的平移置为0即可满足要求。

deleteall;#create the hexagon
for(i=0:6)
{if (i==0){   Nx=0;Ny=0;}else{Nx=(2*R*cos(pi/6)+gap)*cos(0+(i-1)*pi/3);Ny=(2*R*cos(pi/6)+gap)*sin(0+(i-1)*pi/3);}vtx=zeros(6,2);for(j=1:6){vtx(j,1)=R*cos(pi/6+(j-1)*pi/3)+Nx;vtx(j,2)=R*sin(pi/6+(j-1)*pi/3)+Ny;}addpoly;set('name','hexagon'+num2str(i));set('vertices',vtx);set('z span',H);set('material',glass);
}

生成结果

附完整代码

########################################
#modeling exercise
#draw a couple of hexagons
#edited by jializhang,20210417deleteall; #create the hexagon
for(i=0:6)
{if (i==0){   Nx=0;Ny=0;}else{Nx=(2*R*cos(pi/6)+gap)*cos((i-1)*pi/3);Ny=(2*R*cos(pi/6)+gap)*sin((i-1)*pi/3);}vtx=zeros(6,2);for(j=1:6){vtx(j,1)=R*cos(pi/6+(j-1)*pi/3)+Nx;vtx(j,2)=R*sin(pi/6+(j-1)*pi/3)+Ny;}addpoly;set('name','hexagon'+num2str(i));set('vertices',vtx);set('z span',H);set('material',glass);
}

Lumerical练习1-建模练习相关推荐

  1. 基于Lumerical FDTD的等离子体光子晶体分析

    等离子体光子晶体是等离子体和介质或真空构成的周期性结构.通过Lumerical FDTD软件可以实现分析等立体光子晶体的各项参数对带隙的影响. 目标结构:PPC方形柱体结构 建模步骤: 1. 点击Ma ...

  2. Lumerical官方案例、FDTD时域有限差分法仿真学习(十四)——超透镜(Metalens)

    案例链接:Metalens - Zemax Interoperability 注:该文纯翻译,无任何拓展. 案例下载链接: 链接:https://pan.baidu.com/s/1FgQGnfXy10 ...

  3. Lumerical Mode 的电场分布数据导出到 Matlab 进行处理

    内容介绍 本文分为两部分: 首先是 Lumerical 中如何导出数据 然后是 Matlab 中如何对数据进行处理 Lumerical 部分 1. 运行 Lumerical 文件计算电场分布 calc ...

  4. [个人笔记]EME Solver自学笔记---参照lumerical官网视频

    因为课题需要学习了几天lumerical公司MODE软件中的EME Solver,参考官网视频整理了学习笔记,因为作者水平有限并且刚开始该领域的研究,所以笔记难免有遗漏或者自己理解不足的地方,做笔记的 ...

  5. Ansys Lumerical | 行波马赫曾德尔调制器的仿真设计与优化

    说明 本案例将Lumerical和HFSS在行波MZM调制器建模中的功能与optiSLang相结合,提供了强大的优化能力以寻找最佳性能设计. 下载 联系工作人员获取附件 综述 本案例建立在已有的硅波导 ...

  6. Lumerical Suite 2015a windows_linux光学设计软件

    Lumerical Suite 2015a windows_linux光学设计软件 Lumerical Suite 2015a Linux Lumerical Suite 2015a解决方案,公司光子 ...

  7. Lumerical官方案例、FDTD时域有限差分法仿真学习(十)——光栅耦合器(Grating coupler)

    设计一个光栅耦合器,将光子芯片表面的单模光纤连接到集成波导. 内置粒子群优化工具用于最大化耦合效率,并使用组件 S 参数创建 INTERCONNECT 中的紧凑模型. 它还展示了如何使用 CML 编译 ...

  8. 基于Lumerical的超透镜模型搭建和整体结构仿真

    超透镜是一种通过控制表面纳米结构来调制光束的幅度和相位,进而实现波前操控(如光束偏转.光束聚焦和偏振分束等)的新型技术,在之前的文章中已经简单介绍了介质天线结构和金属谐振结构的单元仿真,在扫描了不同结 ...

  9. Lumerical官方案例、FDTD时域有限差分法仿真学习(七)——纳米孔阵列(Nanohole array)

    我们将计算金属薄膜中纳米孔阵列的透射和反射光谱. 我们还将考虑薄膜表面的近场分布和局部场增强. 一.模拟设置 文件 sp_array.fsp 可用于在 100 nm 厚的金层中模拟半径为 100 nm ...

  10. Lumerical学习1-建立仿真结构

    目录 一.简介 二.使用图形化界面建模 三.示例 一.简介 仿真结构包含三个要素:几何形状.位置和材料. 几何形状和位置涉及到仿真对象包含Yee Grid的个数及范围,材料则决定了介电常数.磁导率.电 ...

最新文章

  1. python读取浮点数与源文件不同
  2. 石墨计算机,高性能计算机助力石墨烯生产工艺的优化
  3. opencv cv2.flip()函数(图像翻转、镜像、颠倒)(沿x轴翻转0、沿y轴翻转【正值】、同时沿x轴y轴翻转-【负值】)
  4. docker 安装openmaptiles
  5. C语言调用python代码
  6. 安装inde.html使用babel,reactjs – 使用Babel Standalone进行单个React组件渲染,仅使用index.html和Component...
  7. LinuxMint/Ubuntu 关机重启等待 90 秒问题的解决办法
  8. 计算机术语解ssh,将Bash脚本SSH到计算机中而不提示密码和不使用密钥
  9. Cesium为3dTile模型添加气泡框
  10. 如何看出一个程序员的技术能力和水平?
  11. [python]---药品数据分析及预测(包括数据集,源码,报告)
  12. 书写NDIS过滤钩子驱动实现ip包过滤
  13. Windows搭建web站点:免费内网穿透发布至公网 1-2
  14. mysql使用报错1142(42000)解决方法
  15. SwiftUI之NavigationView的基础使用与进阶实践
  16. 郝健: Linux内存管理学习笔记-第2节课【转】
  17. HTML超级链接标记
  18. springboot+jsp+ssm手办周边商城购物网站306
  19. HP DL580 / DL380 G7 定制ESXI 6.0/6.5/6.7
  20. 面向IoT/VR时代的应用驱动网络(ADN)架构

热门文章

  1. tar: Cannot utime: Operation not permitted
  2. Java开发者跳槽面试,看这一篇就够了!
  3. Pbuilder编译PHP文件,2016 年 1 月 23 日
  4. 芒果tvvip_那么,如何切芒果?
  5. 海中月是天上月,眼前人是心上人。
  6. 【工具资源】—— Gitbash命令行上传代码到Github仓库
  7. 人工智能基础-作业4
  8. Scss或Less中:global{...}的作用
  9. 消费类智能设备市场报告出炉,真无线蓝牙耳机将爆炸性增长
  10. LabVIEW开发 XY Graph DoubleScale双刻度