当前位置: 首页 > news >正文

使用lumerical脚本语言创建绘制波导并进行数据分析(纯代码实现)(1)

        使用lumerical脚本语言创建绘制波导、配置二维模式求解器、计算模式轮廓、计算有效折射率(neff)和群折射率(ng)随波长的变化关系、计算有效折射率(neff)随波导宽度的变化关系及针对有效折射率法进行相关数据处理(代码均有注释详解)。

一、绘制波导结构

1.1 代码实现

wg_2D_draw

#按照设定的参数依次绘制波导结构中的各个部分,如包层、埋氧层、硅晶圆、波导本身
#以及肋形波导所需的平板层等#用于在 Lumerical MODE 软件中初始化新的模式或项目,并关闭重绘功能
#为了提高性能或避免不必要的图形更新,直到所有设置完成后再统一显示图形
newmode; newmode; redrawoff;#分别定义了包层、硅层、埋氧层的厚度
thick_Clad = 2.0e-6;
thick_Si = 0.22e-6;
thick_BOX = 2.0e-6;
#用于定义肋形波导中平板层的厚度,初始设置为 0 表示当前考虑的是条形波导,
#若改为其他值(如0.22e-6)则可用于模拟肋形波导。
thick_Slab = 0; # for strip waveguides
# thick_Slab = 0.13e-6; # for rib waveguides
width_ridge = 0.5e-6; 
# 定义 materials
material_Clad = "SiO2 (Glass) - Const";
material_BOX = "SiO2 (Glass) - Const";
material_Si = "Si (Silicon) - Dispersive & Lossless";
materials; # 运行脚本 add materialswidth_margin = 2.0e-6; # space to include on the side of the waveguide
height_margin = 1.0e-6; # space to include above and below the waveguide
# calculate simulation volume
# propagation in the x-axis direction; z-axis is wafer-normal
#确定了模拟区域的范围
Xmin = -2e-6; Xmax = 2e-6; # length of the waveguide
#其中 Zmin 是在硅层下方预留一定空间(-height_margin),Zmax 是在硅层
#上方预留一定空间(thick_Si + height_margin)
Zmin = -height_margin; Zmax = thick_Si + height_margin;
Y_span = 2*width_margin + width_ridge; Ymin = -Y_span/2;
Ymax = -Ymin;#绘制包层
addrect; set("name","Clad"); set("material", material_Clad);
set("y", 0); set("y span", Y_span+1e-6);
set("z min", 0); set("z max", thick_Clad);
set("x min", Xmin); set("x max", Xmax);
#关于网格划分顺序的操作,将包层的网格划分顺序设置为类似 “置于底层” 的效果,使其作为背景显示
set("override mesh order from material database",1);
set("mesh order",3); 
set("alpha", 0.05);#绘制埋氧层
# draw buried oxide
addrect; set("name", "BOX"); set("material", material_BOX);
set("x min", Xmin); set("x max", Xmax);
set("z min", -thick_BOX); set("z max", 0);
set("y", 0); set("y span", Y_span+1e-6);
set("alpha", 0.05);#绘制硅晶圆
# draw silicon wafer
addrect; set("name", "Wafer"); set("material", material_Si);
set("x min", Xmin); set("x max", Xmax);
set("z max", -thick_BOX); set("z min", -thick_BOX-2e-6);
set("y", 0); set("y span", Y_span+1e-6);
set("alpha", 0.1);# draw waveguide
addrect; set("name", "waveguide");
set("material",material_Si);
set("y", 0); set("y span", width_ridge);
set("z min", 0); set("z max", thick_Si);
set("x min", Xmin); set("x max", Xmax);#绘制肋形波导平板层
# draw slab for rib waveguides
addrect; set("name", "slab"); set("material",material_Si);
#如果 thick_Slab 为 0(表示当前是条形波导),则将其在 y 轴方向上的
#范围设置为一个点(即 y min 和 y max 都为 0);如果 thick_Slab 不为 0
#(表示是肋形波导),则设置其在 y 轴方向上的范围为整个模拟区域在 y 轴方向上
#的跨度(y span),同时设置其在 z 轴方向上的范围根据 thick_Slab 的值确定,
#最后设置其透明度为 0.2。
if (thick_Slab==0) {
set("y min", 0); set("y max", 0);
} else {
set("y", 0); set("y span", Y_span+1e-6);
}
set("z min", 0); set("z max", thick_Slab);
set("x min", Xmin); set("x max", Xmax);
set("alpha", 0.2);

1.2 知识讲解

(1)肋型波导与条形波导

① 结构形状

  • 肋型波导:是在波导板顶部具有肋形截面的波导,通常由一个较宽的平板波导和在其表面上形成的一条或多条肋条构成,肋条的高度和宽度相对较小,用于限制和引导光的传播。
  • 条形波导:具有矩形横截面的波导,其形状类似于一个长条状的矩形通道,光在这个矩形的芯层中传播,芯层周围是包层材料。

② 制造工艺

  • 肋型波导:制造工艺相对复杂一些,需要先制作平板波导,然后再通过光刻、蚀刻等工艺在平板波导上形成肋条结构。例如在硅基材料上,先沉积一层二氧化硅作为下包层,再沉积一层硅作为平板波导层,最后通过光刻和蚀刻工艺制作出肋条 。
  • 条形波导:制造工艺相对简单直接,通常

相关文章:

使用lumerical脚本语言创建绘制波导并进行数据分析(纯代码实现)(1)

使用lumerical脚本语言创建绘制波导、配置二维模式求解器、计算模式轮廓、计算有效折射率(neff)和群折射率(ng)随波长的变化关系、计算有效折射率(neff)随波导宽度的变化关系及针对有效折射率法进行相关数据处理(代码均有注释详解)。 一、绘制波导结构 1.1 代码实现 w…...

redis.conf

tracking-table-max-keys tracking-table-max-keys 是 Redis 中的一个配置选项,它与 Key Tracking 功能有关。Key Tracking 是 Redis 6.0 引入的一项功能,用于追踪哪些键在被客户端操作时发生了变化。 tracking-table-max-keys 的作用: 该配置…...

泷羽sec学习打卡-shell命令8

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于shell的那些事儿-shell8 until循环(直到为止)case语句func函数定义实践是检验真理的唯一标准 别问&…...

割草机器人架构设计和技术应用

题目:割草机器人项目的系统架构设计与技术应用 摘要: 随着智能家居和自动化技术的发展,割草机器人作为一种便捷的园艺工具逐渐进入市场。本论文以我参与管理和开发的割草机器人项目为例,详细阐述了项目中采用的关键技术、系统架…...

基于SSM闪光点映像摄影工作室预约系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…...

Windows 和 Linux 系统命令行操作详解:从文件管理到进程监控

1.切换盘符与目录操作 在命令行中,切换盘符和目录是最常见的操作。尽管 DOS 和 Linux 在这些操作上有所不同,但它们都能实现相似的功能。 (1)切换盘符 ①DOS命令:在 DOS 中,切换盘符非常简单,使用 盘符名:&#xff…...

【Calibre-Web】Calibre-Web服务器安装详细步骤(个人搭建自用的电子书网站,docker-compose安装)

文章目录 一、Calibre-Web和Calibre的区别是什么?使用场景分别是什么?二、服务器安装docker和docker-compose三、服务器安装Calibre-Web步骤1、安装完成后的目录结构2、安装步骤3、初始配置4、启动上传 四、安装Calibre五、docker-compose常用命令六、客…...

服务器数据恢复—服务器raid0阵列硬盘指示灯显示黄颜色的数据恢复案例

服务器数据恢复环境&故障情况: 某品牌服务器上有一组由两块SAS硬盘组建的raid0阵列,上层是windows server操作系统ntfs文件系统。服务器上一个硬盘指示灯显示黄颜色,该指示灯对应的硬盘离线,raid不可用。 服务器数据恢复过程…...

.nii.gz文件读取方式

".nii.gz"文件的介绍: ".nii.gz"文件是一种常见的用于存储神经影像数据的格式,它通常包含了三维或四维的图像体素数据,以及与磁共振扫描相关的一些重要元数据,比如扫描参数、特征描述等等。而".nii"表示未经压…...

Kube-Prometheus-Stack安装时初始化导入自定义Grafana dashboards

获取Grafana dashboards的JSON文件 这里是获取已经编辑好的Grafana dashboards的JSON文件;以便内置到Kube-Prometheus-Stack的helm charts的安装zip文件中。 编辑自定义dashboards JSON文件 获取dashboards JSON文件模板 其实Kube-Prometheus-Stack内部本身已经内…...

【SNIP】《An Analysis of Scale Invariance in Object Detection – SNIP》

CVPR-2018 Singh B, Davis L S. An analysis of scale invariance in object detection snip[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 3578-3587. https://github.com/bharatsingh430/snip?tabreadme-ov-file 文章目录 …...

JAVA基础学习笔记_异常

文章目录 异常异常的作用处理异常的方式异常中的常见方法捕获异常自定义异常 异常 应该知道出了异常怎么处理 java.lang.Throwable Error(错误,硬件出错或内存不足,不是程序员能解决的) Exception(异常) RuntimeException(运行时异常),代码出错导致程序出现的问题 其他异…...

Modern Effective C++条款三十四:考虑lambda而非std::bind

C11中的std::bind是C98的std::bind1st和std::bind2nd的后续,C11 lambda几乎总是比std::bind更好的选择。 从C14开始,lambda的作用不仅强大,而且是完全值得使用的。与item32中一样,我们将从std::bind返回的函数对象称为bind对象(bi…...

lyapunov指数的绘制

有如下方程: %% 方程式 % x(n1)1y(n)-a*x(n)^2 % y(n1)b*x(n)绘制其对应的lyapunov指数。 MATLAB实现方式: clc; clearvars; close all;%% 方程式 % x(n1)1y(n)-a*x(n)^2 % y(n1)b*x(n)%% 代码 N 1000; a (0:0.001:1.4); b 0.3; na length(a…...

Ansible 运维工具

安装 apt install ansible /etc/ansible/hosts , 指定密码或密钥访问分组机器 [k8s_masters] master0.c0.k8s.sb[k8s_nodes] node0.c0.k8s.sb node1.c0.k8s.sb[k8s:children] k8s_masters k8s_nodes[k8s_masters:vars] ansible_ssh_usersbadmin ansible_ssh_pass"***&q…...

【AI系统】MobileNet 系列

MobileNet 系列 在本文会介绍 MobileNet 系列,重点在于其模型结构的轻量化设计,主要介绍详细的轻量化设计原则,基于这原则,MobileNetV1 是如何设计成一个小型,低延迟,低功耗的参数化模型,可以满…...

MATLAB在生态环境数据处理与分析中的应用

专题一 MATLAB编程入门 要点:介绍、案例演示、软件界面、语法基础、基本运算等 专题二(试听) MATLAB编程入门 要点:脚本编写、函数调用、循环控制、代码调试、文件读写等 专题三 MATLAB可视化与绘图 要点:交互式…...

tensorrt

engine /*tensorrt创建builder1. 创建builder2. 创建网络定义:builder-->network3. 配置参数:builder-->config4. 生成engine:builder-->engine()5. 序列化保存:engine-->serialize6. 释放资源:delete */ #include&l…...

利用Grounding DINO进行自动标注——目标检测任务——YOLO格式

关于Grounding DINO的环境搭建可以参考我的以前的博客,链接如下所示 如何在Linux上离线部署Grounding DINO-CSDN博客 这个博客主要来介绍如何利用Grounding DINO这个项目去进行目标检测的自动化标注。并且给出了相关的代码已经实验验证。 1.数据集准备 2. 开始实…...

网际协议(IP)与其三大配套协议(ARP、ICMP、IGMP)

网际协议(Internet Protocol,IP),又称互联网协议。是OSI中的网络层通信协议,用于跨网络边界分组交换。它的路由功能实现了互联互通,并从本质上建立了互联网。网际协议IP是 TCP/IP 体系中两个最主要的协议之…...

踩坑实录:用YOLOv8训练小目标(足球)数据集时,我是如何通过调整图像尺寸把mAP提上去的

小目标检测优化实战:YOLOv8图像尺寸调整如何提升足球识别精度 足球在绿茵场上划出的弧线总是令人着迷,但当这份优雅遇上目标检测算法时,却常常变成开发者的噩梦——那些直径不足20像素的小球,在常规训练参数下往往成为模型"视…...

Qt QSettings管理Windows环境变量:原理、实现与实战优化

1. 项目概述最近在做一个Qt开发的桌面工具,里面有个功能点需要动态修改用户的系统环境变量,比如把一些我们自己打包的工具路径加到用户的PATH里,这样用户在其他地方打开命令行也能直接调用。一开始想着用系统API或者直接写注册表,…...

别再只会拖控件了!FastReport 实战:手把手教你用代码搞定复杂报表(含分组、过滤、合计)

代码驱动报表革命:FastReport高级开发实战指南 在电商后台系统中,销售报表往往需要处理动态分组、条件过滤和跨页合计等复杂需求。传统拖拽式设计工具虽然入门简单,但面对这类业务场景时常常捉襟见肘。本文将带你突破界面限制,通过…...

Linux命令行玩转CAN总线:像查日志一样用grep分析candump实时数据流

Linux命令行玩转CAN总线:像查日志一样用grep分析candump实时数据流 在Linux系统管理领域,日志分析是每个开发者都熟悉的日常操作。当面对CAN总线这样的专业数据流时,其实可以运用同样的思维——将candump视为持续输出的数据源,用g…...

新手避坑指南:STM32用Makefile编译时,遇到‘junk at end of line’错误怎么办?

STM32 Makefile编译实战:彻底解决junk at end of line汇编错误 第一次用Makefile编译STM32项目时,看到满屏的junk at end of line错误提示,确实容易让人头皮发麻。这就像你兴冲冲地下载了一个开源项目准备大展身手,结果刚执行make…...

告别龟速下载!Windows下用VSCode离线包5分钟搞定ESP-IDF环境(附镜像加速)

5分钟极速部署:Windows下VSCode与ESP-IDF开发环境实战指南 当第一次接触ESP32开发时,许多开发者都会遇到一个共同的难题——官方工具链的下载速度慢如蜗牛。这不仅浪费宝贵时间,还可能让初学者在配置阶段就失去耐心。本文将分享一套经过实战…...

2026年高清家用投影仪推荐:明基W系列领衔

一、前言:高清家用投影仪的核心,在于4K清晰度与真实色彩还原2026年的家用投影仪市场,“高清”早已不是简单的1080P,而是全面迈入4K UHD时代。但真正意义上的“高清家用投影仪”,不仅需要830万像素的真4K分辨率&#xf…...

【Perplexity文献管理终极指南】:20年科研老炮亲授AI时代参考文献零误差管理法

更多请点击: https://intelliparadigm.com 第一章:Perplexity文献管理的底层逻辑与范式革命 Perplexity 并非传统意义上的本地文献数据库工具,其核心突破在于将文献管理从“静态存储—手动索引”范式,跃迁至“动态语义理解—上下…...

别再手动填Excel了!用EasyExcel 3.3.2 + SpringBoot实现模板化导出(附金额大写工具类)

告别手工填表:SpringBootEasyExcel智能报表生成实战 财务小张每周五下午都要面对同样的噩梦:从ERP系统导出销售数据,然后对照模板手动填写上百行Excel报表。金额大写转换要逐个核对,格式错位要反复调整,加班到深夜已成…...

LeetCode 找到最终的安全状态题解

LeetCode 找到最终的安全状态题解 题目描述 给定一个有向图,找到所有安全节点。安全节点是永远不会走向环的节点。 示例: 输入:graph [[1,2],[2,3],[5],[0],[5],[],[]]输出:[2,4,5,6] 解题思路 方法:拓扑排序 思路&am…...