FDTD操作案例2
- 格式:docx
- 大小:1.58 MB
- 文档页数:24
Lumerical公司是一家致力于提供光电子设计软件解决方案的国际知名企业。
其旗下的FDTD解决方案是一款基于有限差分时域(FDTD)算法的光学结构仿真软件,被广泛应用于光学通信、光电子器件设计、纳米光学等领域。
在本文中,我们将重点介绍Lumerical的FDTD解决方案在光学结构仿真方面的特点和应用。
1. FDTD算法有限差分时域(FDTD)算法是一种数值求解Maxwell方程组的方法,可以用于模拟光学结构中的电磁波传输、吸收、散射等过程。
FDTD算法是一种非常灵活、高效的仿真方法,能够准确地模拟复杂的光学结构,包括光子晶体、光波导、光栅等。
相比于传统的有限元法(FEM)和有限差分法(FDFD),FDTD算法具有更好的模拟效果和更快的计算速度。
2. Lumerical的FDTD解决方案Lumerical公司推出的FDTD解决方案是基于FDTD算法的一款专业光学结构仿真软件。
该软件集成了强大的仿真引擎和直观的用户界面,可以帮助用户快速、准确地设计和优化光学器件。
与传统的FDTD软件相比,Lumerical的FDTD解决方案具有以下几个突出特点:(1)高性能计算引擎:Lumerical的FDTD解决方案采用了最新的并行计算技术,能够充分利用多处理器和多核心,实现快速、高效的仿真计算。
(2)丰富的模拟功能:该软件支持多种光学模式的仿真,包括线偏振光、圆偏振光、自由空间光波等。
用户可以根据需要进行灵活的设置和仿真,以获取更准确的仿真结果。
(3)直观的用户界面:Lumerical的FDTD解决方案具有简洁直观的用户界面,支持图形化编辑和仿真设置,使用户能够快速上手并进行高效的工作。
3. 应用案例Lumerical的FDTD解决方案在光学结构仿真方面具有广泛的应用,下面将介绍几个典型的应用案例:(1)光子晶体器件设计:光子晶体是一种具有周期性结构的光学材料,在光子学器件中有重要的应用。
利用Lumerical的FDTD解决方案,用户可以对光子晶体的光子带隙、光子波导等性质进行准确的仿真和优化,为器件设计和性能调控提供重要参考。
时域有限差分法(FDTD算法)的基本原理及仿真时域有限差分法(FDTD 算法)时域有限差分法是1966年K.S.Yee 发表在AP 上的一篇论文建立起来的,后被称为Yee 网格空间离散方式。
这种方法通过将Maxwell 旋度方程转化为有限差分式而直接在时域求解, 通过建立时间离散的递进序列, 在相互交织的网格空间中交替计算电场和磁场。
FDTD 算法的基本思想是把带时间变量的Maxwell 旋度方程转化为差分形式,模拟出电子脉冲和理想导体作用的时域响应。
需要考虑的三点是差分格式、解的稳定性、吸收边界条件。
有限差分通常采用的步骤是:采用一定的网格划分方式离散化场域;对场内的偏微分方程及各种边界条件进行差分离散化处理,建立差分格式,得到差分方程组;结合选定的代数方程组的解法,编制程序,求边值问题的数值解。
1.FDTD 的基本原理FDTD 方法由Maxwell 旋度方程的微分形式出发,利用二阶精度的中心差分近似,直接将微分运算转换为差分运算,这样达到了在一定体积内和一段时间上对连续电磁场数据的抽样压缩。
Maxwell 方程的旋度方程组为:E E H σε+∂∂=⨯∇t H HE m tσμ-∂∂-=⨯∇ (1) 在直角坐标系中,(1)式可化为如下六个标量方程:⎪⎪⎪⎪⎭⎪⎪⎪⎪⎬⎫+∂∂=∂∂-∂∂+∂∂=∂∂-∂∂+∂∂=∂∂-∂∂z z x y y y z x x x yz E t E y H x H E t E x H z H E t E z H y H σεσεσε,⎪⎪⎪⎪⎭⎪⎪⎪⎪⎬⎫-∂∂-=∂∂-∂∂-∂∂-=∂∂-∂∂-∂∂-=∂∂-∂∂z m zx y y m y z x x m x y z H t H y E x E H t H x E z E H t H z E y E σμσμσμ (2)上面的六个偏微分方程是FDTD 算法的基础。
Yee 首先在空间上建立矩形差分网格,在时刻t n ∆时刻,F(x,y,z)可以写成),,(),,,(),,,(k j i F t n z k y j x i F t z y x F n =∆∆∆∆= (3)用中心差分取二阶精度: 对空间离散:()[]2),,21(),,21(),,,(x O xk j i F k j i F x t z y x F n n xi x ∆+∆--+≈∂∂∆= ()[]2),21,(),21,(),,,(y O yk j i F k j i F y t z y x F n n yj y ∆+∆--+≈∂∂∆= ()[]2)21,,()21,,(),,,(z O zk j i F k j i F z t z y x F n n zk z ∆+∆--+≈∂∂∆=对时间离散:()[]22121),,(),,(),,,(t O tk j i F k j i F t t z y x F n n tn t ∆+∆-≈∂∂-+∆= (4) Yee 把空间任一网格上的E 和H 的六个分量,如下图放置:oyxzEyHzExEzHxEyEyEzEx HyEzEx图1 Yee 氏网格及其电磁场分量分布在FDTD 中,空间上连续分布的电磁场物理量离散的空间排布如图所示。
fdtd api python代码FDTD API Python代码:模拟电磁波传播的利器FDTD(Finite-Difference Time-Domain)方法是一种数值求解电磁波传播问题的方法,它将Maxwell方程组离散化为差分方程,通过时间步进的方式求解电磁场的分布。
FDTD方法在电磁波传播问题的数值模拟中得到了广泛应用,而Python作为一种高效的编程语言,也提供了FDTD API Python代码,使得使用FDTD方法进行电磁波传播问题的模拟变得更加简单和方便。
FDTD API Python代码的使用方法非常简单,只需要导入相应的库,设置模拟参数,然后进行模拟即可。
下面是一个简单的FDTD API Python代码示例:```pythonimport fdtdimport numpy as np# 设置模拟参数nx, ny, nz = 100, 100, 100dx, dy, dz = 0.01, 0.01, 0.01dt = 0.01# 创建模拟对象sim = fdtd.Simulation(nx, ny, nz, dx, dy, dz, dt)# 设置边界条件sim.set_boundary_conditions(fdtd.BC_PERIODIC, fdtd.BC_PERIODIC, fdtd.BC_PERIODIC)# 设置电磁场源source = fdtd.GaussianPulseSource(0.5, 0.5, 0.5, 0.1, 0.1, 0.1, 0.5, 0.5, 0.5, 0.1, 0.1, 0.1)sim.add_source(source)# 进行模拟for i in range(100):sim.update()# 获取电磁场分布ex = sim.get_array('ex')ey = sim.get_array('ey')ez = sim.get_array('ez')hx = sim.get_array('hx')hy = sim.get_array('hy')hz = sim.get_array('hz')# 可以对电磁场分布进行进一步的处理和分析```在上面的代码中,我们首先导入了fdtd库和numpy库,然后设置了模拟参数,包括模拟区域的大小和分辨率,时间步长等。
以下先描述本设计软件需要用到的几个基本设置,在了解这些基本设置后,最后从总体上总结下模型设计步骤。
(一)软件需要用到的几个基本设置(1)wafer的意义及其设置Wafer是设计模型的工作区域。
一个文件只能有一个wafer。
Wafer可以理解为背景空间。
Wafer有三维构成,x轴和z轴可以在平面上看到,如上图所示。
Y轴垂直于屏幕。
长度:沿着屏幕的水平方向(z轴)宽度:沿着平面的垂直方向(x轴)Wafer的包层是一个块状区域。
长度沿着z轴(屏幕水平方向),宽度沿着x轴(屏幕垂直方向),高度是沿着y正半轴(垂直屏幕向外)。
Wafer的衬底层是一个块状区域。
长度沿着z轴(屏幕水平方向),宽度沿着x轴(屏幕垂直方向),高度是沿着y负半轴(垂直屏幕向里)。
(2)profile、material的意义和基本设置。
Wafer设置中长度和宽度单位都是微米。
X轴方向向上,z轴方向向右。
XYZ三周方向满足右手螺旋定则。
Y轴负半轴空间对应wafer中的衬底区域。
Y轴正半轴空间对应wafer中的包层区域。
层状波导轮廓的设置:Width:x方向上的波导轮廓尺寸Thickness:y方向上的波导轮廓尺寸波导轮廓截面默认为xy面。
波导轮廓截面所在xy平面上,截面在某方向上具有渐变特性。
这里的水平和垂直就是对应z方向和x方向。
Start和end中的水平和垂直坐标,对应的是线性波导结构在zx平面内截面的中分线两端点的坐标。
Width指zx截面内与中分线垂直方向上的结构的尺度。
Depth指结构沿着y轴最靠内的截面所在的y轴坐标。
对于linear waveguide 而言。
从y=depth开始到wafer空间y的正半轴最大值,一直都分布着这种linear waveguide。
这里指厚度(即y方向上)的尺寸渐变。
这里的start和end下面的水平和垂直坐标分别对应波导在xz截面内中分线两端点的坐标。
Width下面的start和end分别指两端点所在端的宽度。
以上面图像为例子,设置时只需要设置一个周期,然后将边界设为周期结构即可。
1.打开fdtd软件
2.单击structures设置结构。
3.选中物体单击右键设置参数。
给结构命名,x,y,z确定结构在各个方向上的范围。
5设置选中结构的材料,如果material里有想要的材料直接选中即可,没有的可以通过查询,将其折射率直接输入到index中。
6.当结构重叠时,可勾选下面按钮,设置重叠部分的优先性,数字越小优先性越高。
7.设置基底上的光栅结构,先设置下层Al。
8.设置中间层PMMA
9.设置上层Al
10.单击Simulation选中region设置模拟区域。
Geometry设置单元结构参数,一般选取一个周期即可,所以X span和Y span就是周期,然后在boundary conditions中将x,y都选为periodic。
点击OK.
11.在Source中选取plane wave,genaral中入射方向改为向下入射,geometry中X span和Y span选取的要比周期大,Frequency/wavelength中改变入射波长范围。
12.在Monitor中选取frequency domain field and power探测器。
勾选第一项,将frequency points变为200,将探测器放于光源上方探测反射率。
还可以在选取一个探测器放于下方探测投射,一次模拟可以放入多个探测器。
13.结构设置完成之后,点击RUN,运行,待运行完毕后,选择对应的探测器,可以看出探测到的结果。
一基于Au薄膜正三角形孔阵列提取光场强度分布图本例子中取Au薄膜厚度30nm,三角形孔阵周期800nm,小孔直径600nm。
Au的材料模型选取“Au (Gold)–CRC”,或者自建材料模型。
参见hole arrays_E fied pro文件。
1.添加金薄膜,打开FDTD Solution 软件后点击“structure”,添加长方体模块。
如下图所示。
点击,对几何参数和材料类型等进行编辑。
参照下图。
先将“name”改为“Au 30nm”,在“Geometry”下设置金薄膜的几何尺寸,我们只需要对下图红框所示的左边一栏进行编辑,其中“x span、y span、z span”分别对应金薄膜的长、宽和厚度,而“x、y、z”表示其几何中心的坐标值,均设置为0。
在“x span”中输入“0.8*2+0.6”,“y span”中输入“0.8*sqrt(3)+0.6”,“z span”中输入“0.03”,对应金薄膜厚度为30nm,便可得到如下图所示的结果。
点击“material”,选择所使用的材料类型,如下图所示,选中“Au (Gold) - CRC”,点“OK”保存即可。
现在对金膜的几何尺寸和材料类型设置完成。
2.在金薄膜中添加小孔阵列。
点击中的三角形,在下拉菜单中选择“Photonic crystals”。
然后在屏幕右侧的“Object”一栏中选中“Hexagonal lattice PC array”,点击“Insert”进行添加。
在左侧的结构树“object tree”中选中“hex_pc”,即我们刚才添加进去的六边形阵列,点击对它进行编辑。
各参数设置如下图所示,其中“a”表示小孔之间的间距,即三角形孔阵的周期,“radius”表示小孔半径。
设置完成后,点“ok”保存。
经过上面的步骤,我们搭建的模型的如下图所示。
我们发现经过上面的设置所得到的三角形孔阵列其中两个小孔超出了金膜,为了好看起见,希望将多余的这两个小孔删掉,首先,如下图所示,在结构树下选中“hex_pc”,单击鼠标右键在菜单中选择“break groups”,不进行这项操作无法删掉多余的小孔。
一基于AU 薄膜正三角形孔阵列提取光场强度分布图本例子中取AU薄膜厚度30nm ,三角形孔阵周期800nm,小孔直径600nm。
AU的材料模型选取"AU (Gold) - CRC ”,或者自建材料模型。
参见hole arrays_E fied Profile.fsp文件。
1.添加金薄膜,打开FDTD Solution软件后点击“StrUCtUre”,添加长方体模块。
如下图所示。
IVn Ala e⅛ιl 先将“ name'改为“ AU 30nm”,在“ Geometry”下设置金薄膜的几何尺寸, IiJul ÷lF-I♦ < * ∙T wWModel• ITrtBPgle⅛C⅛∏fl⅛■1III__________ _ ”对几何参数和材料类型等进行编辑。
参照下图。
⅜•*4 ,□ T/** 迦^⅞4 ・⅝ ▼B ∙βilcrτ 门零S⅞j⅛c⅞urts ftttribnUi CwfOMntE ⅛f OTflIS ArllIyEi ιI*P4iFt Scnurcis两In £灯E BtE4TKf<!⅛G ct⅞⅛HLame⅛* m□t⅛lιA<lpr⅛∣lririlMame-DimefISECIm∕⅛akIB.■Iy XJ-Iripa-ClLm Ti.I oll I JllrStE Tr-Iril;2寻XFnD LTKau⅛Dlm» & o M点击T J-∣4XT TIrR 5⅛-jp∣KS 址Farl l H⅞UVl VL*τRιτul LTIrH我们只需要对下图红框所示的左边一栏进行编辑,其中“X SPan、y SPan、z SPan” 分别对应金薄膜的长、宽和厚度,而“ x、y、z”表示其几何中心的坐标值,均设置为0。
在“X span” 中输入“0.8*2+0.6 ”,“y SPan” 中输入"0.8*sqrt(3)+0.6 ”“Z SPan ”中输入“ 0.03 ”,对应金薄膜厚度为30nm便可得到如下图所示的结果。
点击"material”,选择所使用的材料类型,如下图所示,选中" AU (Gold) - CRC ”,点“OK ”保存即可。
现在对金膜的几何尺寸和材料类型设置完成。
然后在屏幕右侧的“ ObjeCt ” 一栏中选中“ HeXagOnal IattiCe PCarray ”, 点击“ InSert ”进行添加。
在左侧的结构树“ ObjeCt tree ”中选中“ hex_pc ” ,即我们刚才添加进去的六边形阵列,点击对它进行编辑。
各参数设置如下图所示,其中“ a ”表示小孔之间的间距,即三角形孔阵的周期,“radius ”表示小孔半径。
设置完成后,2.在金薄膜中添加小孔阵列。
点击“ PhOt OniC CryStaISComponents中的三角形,在下拉菜单中选择1, < — - :/l ΓΓ,TD⅛>M I∙>∙^ ■ ∣.⅛i⅝,⅝¾B⅛∙ f⅛l: ,⅛⅛∙ £网闻 ⅞⅛,daθαħ HeiP• .∣2 . ■石"}1⅛ . □. .B.圍.I . V .lι⅞KriIlIa BlrRIeLqrSlal l^triWUa jl⅛*c -M⅛<r ∣⅛.--⅛ssra E⅛ΛrL3<<⅛ Iiuilyai a I*c⅛rL Sβ,κrcR3⅛sitSOIrT□⅞j∙iEtιs I JTHB a MFVTIi LtgFiOfri-J⅛L3U⅛L+I * +NiSrtlfr 1⅛MJ⅛ model Madri Rflclanglfl'W I IinjiiEt : Ij fcirarJg⅛HΠ⅛GM KETF :T atUs< IalaitiilSfPI*⅛rftts ,∣ i** Ei 舸E⅛⅛ ħ⅛dii⅛d •i*i-s ∣h©::; ^IB *cr ≡c CrPl^aHeMaciMniSodC!:■ PC a*rjp 2DL 护和 LEl 出L4 ・ELE ・I I H**j jgl ■丁 _ _ 】⅛L⅛f∙*1 IO ]££1 BklhU laL ∣ιM3"VC43⅛ X FHfEhHfElin FiaaL- Ili V.-.z l⅛d ‘Mn"ΓR3⅛e TS W ff ⅛eiTW<i≡CΓiJEPiiTTMu⅛gH⅝≡i^1 K-M]kri ∣tnψ: I!./XIEI i JtLijzLBH^.S.α.⅛n∕p4H IMm/9Pr Ldrl WeW ⅛e⅛∏g ⅛∏j ∣jjtw∏ HdP4tj⅜f ∣i ∣ TMqB X≡τ TldW& 英(Ibj 电戏 LikvyOED L IJXI L:LLliiErr JiLL⅛∏e ITIjd-=LlNamttHt⅞*⅞c ∣M ∣ kinice PC 町“卩 z ⅛013∕4∕⅛ 1⅛D⅛InR ⅞ U fls 1⅛JVbl ∣∆l Vj⅛r□I -IbJBC⅛ JDaar⅞*J,Zl^dFFiF□tlMl⅛li -ir>TnM : Strwliri ■ RrF■ Wds Δ 画•区3⅞IW44I -C⅛⅜4⅛≡⅛Pi E r ETi rfic UTiJ 诂 FlK-LlU ■: ETFlLkll 3ħ *h*≡⅞<M⅞⅛L ⅝4⅛U⅞*5≡wrt ∣ ≡⅛>Mws* I-Cddl⅜ 吨3(师 雇电咛且SaJfflJir⅛^rr -・・Ii , <j∣⅞∣i⅞r⅞⅛lG DnHqm Aiijibqi IiR*∣∣4f 曲弭点“ok ”保存飞- ' -S予V LUmrnCal FDTD Salmions. - Ljysut经过上面的步骤,我们搭建的模型的如下图所示。
我们发现经过上面的设置所得到的三角形孔阵列其中两个小孔超出了金膜, 为了好看起见,希望将多余的这两个小孔删掉, 首先,如下图所示,在结构树下选中" hex_pc ”,单击鼠标右键在菜单中选择" break groups ”,不进行这项操作无法删掉多余的小孔。
甘 IB Edifc ^1MW ⅛<H⅛tg ⅞i∏]iJBtκπ j>⅛p・ * ii T<∣ •绘 *■ l⅛ •孟.—■ Tl ■N I >.-KI^3 S ,Lrflκ⅛<rRaU⅛rι⅛l -n C⅞⅝∣}4MJI ⅝34rτκ∣ιιSInLa>∙∣⅞ħte^jn^33ιp⅞r⅛I WRTEIIMIaJ L∙on:Δ 0 - θ i j L 3 4∙ —J banreai CkI 吐 In.ξ∏i^KL LIEfVFS I WhI? KIT T3-M J X F*ΓXF*iιC⅞Ln Tl M lffSrR-J-Kll TrBbΛΛ. τFP≠ 1十 “L,ff X 11∙nι∙E H :戏M ≡LS1□ ⅛THΠNJinWu⅞ι>κL ιιu4rnsd⅛∙W⅛3 JlW= HFHlJir*≡<wjr I ZnTJjld.w1 αwαβ S ft⅛√⅛≡8CD t⅛MLΛ5ImiliavtaTii ∣?OI<≡MeMi ETlMow □v⅛ Dr qιmpMWC ⅛WD 曽*s ^⅞eEd⅛ C b j art IHMb⅛ I⅛H⅛ ⅝ ⅛≡⅛m ⅞κτ⅛flg⅛tit 丄丄j.B-e4kα∣∣ι<⅛jpi≤ι JL⅛w∏⅞J 筝 E■III!■■■■I IKi ⅞B ∣Tjφ+ 5ifWΠSΓri 習 I K4^1riΓi ∣E Cal⅞fκy: [Ml 可[I IH I; ∣∣ l⅛∙cl.]iiiB%聲日陽 11J E 战 SlfUlrtLJ 蔭 grouphii*E⅛O }⅛T L L *E 5⅞τiyt I ⅛⅝I L L L ⅜H l⅛ipιName T f Pe VdIUe UntSind&iNUfriMf IAInriCriBlMgljrrijl c⅛hE span LCngrh 谄 micronsπy NUmber 3πxNLimbef 3al⅛i∣9tii佛radus LengthmkroπsDbjKl Libr-Xry1J r P 1-C<UE ≡∣T Γ:Objtci:XI⅛tulsClbJ⅞crl ∣j⅞5⅛rtcd.QninC∣Z⅜>.3Πħ: □∏ΦT1UStT IrIfiIrtiisXszh KalLnIStIni∕=tUΓ4IJZWtSETipt IB : h«E j⅞ λ.4Z I nIdLC ITrli7 JfPlMiI<nLC QflrttAIS 3K4 b⅞⅞⅞cmlU⅝h⅞⅞在结构树种选择希望删除掉的小孔,所选择的部分会对应于结构视图中,如下图所示,此时,可单击右键选择“delete ”进行删除,或者直接点左侧工具栏中的按钮删除。
£ito fd⅛ ^MW ⅛<ti⅛τg Si(IId Htni⅜” Ii ” <i ”化””血””■ g ”∙∙∣∙4∣π*j S,lrαc⅛<ΓR□Λ⅛⅛rι½*.⅞,τC⅛≡f4MiL*zn4rτκ∣ιa SmlaLi-XU Aħh]γ7-3 3>F⅞Γ*; J>rκrEaι∙RU14ΓX血玄▼胡-rv.k .d... Jl e I L- 5] Friamrcsa tiuιc⅛:ILKan-J∙H7l TrBh(Π^κL LJbr-U,p* PJiTJ LBTMrlHt丄占占®HT rPe■石皿dπ⅛-Cr^<⅝--■ Ciixir UlCh■ dndι-GΓE⅛・d∣x⅛α∏⅛Tl■Ci曲■⅞pdκ—Gnfh- -C⅛⅛l⅛ffiS7 o⅛ Ξ3>a I J J R7*i ≡L>ΠJ ≡ ΓT Tl-M J 雷F-H-XM!ECLn VI W lff "■ nn)d t,* ⅜ - Tjφ+ Ξ Lrud STd F ElJfiririlEAlLE⅜j≡c⅛ιl⅛W Mkrfrtrf •lαft⅞E,ur'o∙f曲1押5辰施」■—―鼻—,}∏h⅞∣'Jι⅞ IΛ√VΛ≡,■h⅞vLa≤-4<U-El∣j∣ιι∣.Ma NΛΠ,IΛ∣□ ⅛TH IHlDM i r Md U这时得到我们希望的金纳米孔阵列如下图。
在左侧工具栏中选择进行放大和缩小,鼠标左键放大,右键缩小。