在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

相关文章

python如何创建等差数列

《python如何创建等差数列》:本文主要介绍python如何创建等差数列的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python创建等差数列例题运行代码回车输出结果总结python创建等差数列import numpy as np x=int(in

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

Macos创建python虚拟环境的详细步骤教学

《Macos创建python虚拟环境的详细步骤教学》在macOS上创建Python虚拟环境主要通过Python内置的venv模块实现,也可使用第三方工具如virtualenv,下面小编来和大家简单聊聊... 目录一、使用 python 内置 venv 模块(推荐)二、使用 virtualenv(兼容旧版 P

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Java 如何创建和使用ExecutorService

《Java如何创建和使用ExecutorService》ExecutorService是Java中用来管理和执行多线程任务的一种高级工具,可以有效地管理线程的生命周期和任务的执行过程,特别是在需要处... 目录一、什么是ExecutorService?二、ExecutorService的核心功能三、如何创建

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.