在FDTD中创建锥体

2024-03-23 14:38
文章标签 创建 fdtd 锥体

本文主要是介绍在FDTD中创建锥体,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

居然没有锥体这个基础几何体!再不济圆柱加一个末端半径缩成锥不行吗?然而并没有。
去官网找了一下,看到了一个类似的。是使用自定义形状在结构组中创建的。
官网给出的创建原代码(不是锥体,是一个圆台掏空内部。)
在这里插入图片描述
用户属性
在这里插入图片描述
结构组的脚本

deleteall;
##############################################
# Truncated Cone
# A tapered cylinder with a flat bottom and rop
#
# Input properties
# index: index of dielectric
# material
# r top: radius of top surface
# r bottom: radius of bottom surface
# z span: height of cone
#
# Tags: cylinder cone point truncated pillar
#
# Copyright 2010 Lumerical Solutions Inc
############################################### simplify variable names by removing spaces
r_top = %r top%;
r_bottom = %r bottom%;
z_span = %z span%;r_top=r_top+1e-20;  # avoid divice by zero problem?theta=atan((r_bottom-r_top)/z_span); # half angle of cone tip
?ht=r_top/tan(theta);     # clipped length of tipaddcustom;
set("x",0);
set("y",0);
set("z",0);set("first axis","y");# rotate so cone is oriented along Z axis
set("rotation 1",90);
set("x span",z_span);               # remember the 90 deg rotation when trying to understand the meaning of the x/y/z span  
set("y span",2*max([r_bottom,r_top]));
set("z span",2*max([r_bottom,r_top]));set("name","cone");
set("create 3D object by","revolution");?eqn = num2str(r_top/ht)+"*(x+"+num2str((z_span/2+ht)*1e6)+")";
set("equation 1",eqn); #equation of line to be revolvedset("material",material);   # set material properies
if(get("material")=="<Object defined dielectric>") { set("index",index); }

在这根据他的代码整理一下如何构建圆锥的方法

圆锥

使用custom创建

在结构中选择自定义结构
在这里插入图片描述
默认设置x,y,z为零(现在原点创建,创建完成后再调整对创建过程来说会更加清晰)
接下来来选择x span;y span;z span。
这里先设定x span 和y span 先设置哪个没有强制要求,但我比较习惯先考虑xy坐标系下,考虑其他坐标系也只是对物体进行了旋转,没有本质区别
假设你的圆锥的剖面(能剖出三角面的那个面)在这个平面
灰色部分是你通过x span与y span设定的区域。这一区域是你的结构可以存在的区域,超出部分会被削去。
在这里插入图片描述
虚线部分不会被创建
在这里插入图片描述
圆锥是旋转体,这里假设创建时以x轴为对称轴,equation就是自定义中custom的equation 1 选项。,creat 3D object by 这个选项选择 revolution,即旋转。另一个选项是延伸(大意)。
在这里插入图片描述
这里以x=0.2um,y=0.1um为例,若三角形的顶角(左侧角)位于原点。
equation=0.5*x
这也是为什么我喜欢用xy坐标系,这个equation的x不能改变,改成y或z都不识别。
z span还没有设置,道理同上面xy平面,不过yz面是旋转面,所以它要能包住旋转后的面
注意,设置的是x span; y span ;z span所以x span=2 * x,y sapn=2 * y ; z span=2 * z
在这里插入图片描述
让我们看一下设置的参数
在这里插入图片描述
在这里插入图片描述
我同时在0,0,0创建了一个半径为0.1um的球来对比
在这里插入图片描述
接下来就是变换到你想要的位置了,xyz的设置我就不再写了,这里说一下旋转的问题
在custom的rotation中旋转,这个旋转是关于选中轴逆时针旋转(轴的正向箭头对象你)
下图旋转轴为y,逆时针转九十度,旋转的结果就是圆锥的尖端将在xy平面对着你,也就是锥尖沿z轴正向
在这里插入图片描述
没有问题
在这里插入图片描述

使用结构组代码创建

deleteall;
addcustom;
set("x",0);
set("y",0);
set("z",0);set("x span",0.4e-6); 
set("y span",0.2e-6);
set("z span",0.2e-6);set("create 3D object by","revolution");?eqn = num2str(0.5)+"*x";#???test??????????
set("equation 1",eqn);set("first axis","y");
set("rotation 1",90);

延伸

在创建圆锥的时候,我们的equation是过圆心的,实际上equation可以是任意一条线。在这里插入图片描述
甚至是曲线也可以
奇奇怪怪的东西,可能因为分段数过低导致出现了大的间距在这里插入图片描述

这篇关于在FDTD中创建锥体的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/838614

相关文章

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Java中对象的创建和销毁过程详析

《Java中对象的创建和销毁过程详析》:本文主要介绍Java中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时