遠場學習_FDTD_dipole(1)

項目4.4 Reflection calculation using a dipole source

在此頁面中,我們采用了一種不同于標準平面波源方法的替代模擬設置,使用偶極子源來計算多層堆疊結構的反射。在此情況下,我們使用空氣 - 玻璃界面。這種技術很有吸引力,因為它能夠在單次模擬中計算出所有角度的反射。另一個優點是,所有模擬邊界都設置為 PML,這可以提高臨界角或接近臨界角時的角度性能。

仿真設置

上圖展示了 dipole_2layer.fsp 的仿真設置。空氣 - 玻璃界面清晰可見,還有偶極子源(藍色圓圈)和剖面監視器(黃色線)。在堆疊結構的正下方放置了一個剖面監視器。前向和后向遠場投影均從該監視器計算得出。反射率可通過后向投影除以前向投影得出。每種偏振態都需要進行一次仿真。

優點:

一次模擬即可得到所有角度下的反射率(R)和透射率(T)。

缺點:

此技術僅適用于無圖案的平板,不適用于光柵。隨著堆疊層數的增加,可能需要非常寬的模擬范圍。

結果:

腳本 dipole_2layer.lsf 將運行兩次模擬,然后計算解析解。對于兩種偏振,模擬得到的反射率和透射率與入射角的關系以及解析解均被繪制出來。

代碼分析

這段代碼是 Lumerical 軟件的腳本文件(.lsf),用于計算雙層介質結構的反射和透射光譜,并將 FDTD 仿真結果與理論結果進行對比

# scriptfile: dipole_2layer.lsf

注釋:標識腳本文件名,說明當前文件為dipole_2layer.lsf。

# This file calculates the reflection spectrum for a single dielectric interface. It does both polarizations (TE and TM) and compares to the analytic result.

注釋:說明腳本功能:計算單層介質界面的反射光譜,處理 TE(S 偏振)和 TM(P 偏振)兩種偏振態,并與解析理論結果進行對比。

# Copyright 2012, Lumerical Solutions, Inc.

注釋:版權聲明,屬于 2012 年 Lumerical Solutions 公司(Lumerical 是光子仿真軟件開發商)。

sweepname="2layer";

定義變量sweepname并賦值為字符串"2layer",用于指定后續要讀取的 “掃描仿真”(sweep simulation)的名稱(這里指 “雙層結構” 的掃描仿真)。

# choose to rerun or load simulations previously run

注釋:說明后續代碼的作用:選擇重新運行仿真或加載之前已運行的仿真結果。

#runsweep;

被注釋的命令:runsweep是 Lumerical 中執行掃描仿真的命令。這里被注釋,說明腳本會直接加載已完成的仿真結果,而不重新運行仿真。

f = getsweepdata(sweepname,"f");

調用getsweepdata函數從名稱為sweepname(即 "2layer")的掃描仿真中,提取參數"f"(頻率)的數據,并賦值給變量f。

theta = getsweepdata(sweepname,"theta");

從掃描仿真中提取參數"theta"(入射角,單位通常為度)的數據,賦值給變量theta。

n = getsweepdata(sweepname,"n");

從掃描仿真中提取參數"n"(介質折射率)的數據,賦值給變量n(可能包含多層介質的折射率)。

d = getsweepdata(sweepname,"d");

從掃描仿真中提取參數"d"(介質厚度)的數據,賦值給變量d(可能包含多層介質的厚度)。

Rs_fdtd = pinch(getsweepdata(sweepname,"r"),2,1);

getsweepdata(sweepname,"r"):提取掃描仿真中反射率("r")的原始數據(通常是一個多維數組,包含不同偏振態的結果)。

pinch(...,2,1):pinch函數用于提取多維數組中特定維度的數據,這里表示 “在第 2 個維度取第 1 個元素”,對應 TE 偏振(S 偏振)的反射率。

最終將 FDTD 仿真得到的 S 偏振反射率賦值給Rs_fdtd。

Ts_fdtd = pinch(getsweepdata(sweepname,"t"),2,1);

類似上一句,提取透射率("t")數據中第 2 維度的第 1 個元素,對應 FDTD 仿真得到的 S 偏振透射率,賦值給Ts_fdtd。

Rp_fdtd = pinch(getsweepdata(sweepname,"r"),2,2);

提取反射率("r")數據中第 2 維度的第 2 個元素,對應 TM 偏振(P 偏振)的反射率(FDTD 仿真結果),賦值給Rp_fdtd。

Tp_fdtd = pinch(getsweepdata(sweepname,"t"),2,2);

提取透射率("t")數據中第 2 維度的第 2 個元素,對應 FDTD 仿真得到的 P 偏振透射率,賦值給Tp_fdtd。

RT_Theory = stackrt(n,d,f,theta);

調用 Lumerical 內置函數stackrt計算多層膜結構的理論反射 / 透射率。

參數:n(折射率)、d(厚度)、f(頻率)、theta(入射角)。

返回值RT_Theory是一個結構體,包含理論計算的反射率(Rs、Rp)和透射率(Ts、Tp)。

plot(theta,Rs_fdtd,RT_Theory.Rs,Rp_fdtd,RT_Theory.Rp,"angle (degrees)","Reflection","Reflection vs angle");

繪制反射率隨入射角變化的曲線:

橫軸:theta(入射角,單位 “度”)。

縱軸:反射率。

曲線包括:FDTD 的 S 偏振反射率(Rs_fdtd)、理論的 S 偏振反射率(RT_Theory.Rs)、FDTD 的 P 偏振反射率(Rp_fdtd)、理論的 P 偏振反射率(RT_Theory.Rp)。

圖表標題為 “Reflection vs angle”(反射率與角度的關系)。

legend("S FDTD","S Theory","P FDTD","P Theory");

為上一個反射率圖添加圖例,依次對應曲線的含義:S 偏振 FDTD 結果、S 偏振理論結果、P 偏振 FDTD 結果、P 偏振理論結果。

plot(theta,Ts_fdtd,RT_Theory.Ts,Tp_fdtd,RT_Theory.Tp,"angle (degrees)","Transmission","Transmission vs incident angle");

繪制透射率隨入射角變化的曲線:

橫軸:theta(入射角,單位 “度”)。

縱軸:透射率。

曲線包括:FDTD 的 S 偏振透射率(Ts_fdtd)、理論的 S 偏振透射率(RT_Theory.Ts)、FDTD 的 P 偏振透射率(Tp_fdtd)、理論的 P 偏振透射率(RT_Theory.Tp)。

圖表標題為 “Transmission vs incident angle”(透射率與入射角的關系)。

legend("S FDTD","S Theory","P FDTD","P Theory");

為透射率圖添加圖例,含義同反射率圖的圖例。

總結:整個腳本的核心邏輯是 “加載 FDTD 仿真數據→提取關鍵參數(反射 / 透射率)→計算理論結果→繪圖對比仿真與理論”,用于驗證雙層介質結構的光學特性仿真結果的準確性

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96238.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96238.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96238.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習入門,用Lima在macOS免費搭建Docker環境,徹底解決鏡像與收費難題!

國內用戶必看】用Lima在macOS免費搭建Docker環境,徹底解決鏡像與收費難題! 為了在不同操作系統有一致操作體驗,我選擇使用docker技術安裝ollama,這樣子還有一個好處,即使玩壞了,刪除重建即可,所…

Java 生成簽名證書

在Java中生成簽名證書通常涉及到使用Java密鑰和證書管理工具(Java Key and Certificate Management API,即Java Keytool)。這個過程通常包括創建密鑰庫(KeyStore),生成密鑰對(Key Pair&#xff…

語法分析:編譯器中的“語法警察”

在編程的世界里,每一種編程語言都有自己的語法規則。就像中文有標點符號和語序規則一樣,編程語言也有自己嚴格的語法規則。語法分析器就像一個嚴格的"語法警察",它的職責是檢查源代碼是否符合語言規范,同時為后續的處理…

容器的定義及工作原理

定義 你可以把 容器 想象成一個 “打包好的軟件快遞箱”。 里面有什么? 這個箱子里不僅裝著你的軟件(比如一個網站程序),還把軟件運行所需要的所有東西都打包進去了,比如它需要哪個版本的Python、需要哪些系統文件、配…

云服務掃盲筆記(2) —— SLS 接入與設置自動化

前篇我們學習了SLS的核心用途及概念,本篇以將一個linux服務器的json格式日志接入阿里云SLS為例,繼續學習SLS接入中的關鍵設置及注意事項,以及如何將其實現簡單自動化快速操作。 一、 SLS 日志接入流程 [1] 準備工作(確定日志路徑…

LwIP入門實戰 — 6 LwIP 網絡數據包

目錄 6.1 pbuf結構體 6.2 pbuf 的類型 6.2.1 PBUF_RAM 類型的pbuf 6.2.2 PBUF_POOL 類型的pbuf 6.2.3 PBUF_ROM 和 PBUF_REF 類型pbuf 6.3 pbuf 6.3.1 pbuf_alloc() 6.3.2 pbuf_free() 6.4 其它pbuf 操作函數 6.5 網卡中使用的 pbuf 6.5.1 low_level_output() 6.5.…

【已解決】Linux中程序腳本可以手動執行成功,但加在rc.local中不能開機自啟

之前開發遇到的一個問題:在Linux中,明明程序腳本可以手動執行成功,但加到開機自啟動里,卻會失敗,屬實讓人摸不著頭腦。 問題排查: 有以下幾種可能: 自啟動腳本,執行權限不足或者腳本…

切塊、清洗、烹飪:RAG知識庫構建的三步曲

嘿,各位AI技術愛好者們,你是不是經常遇到這樣的情況:辛辛苦苦訓練的AI助手,面對專業問題時卻"一問三不知"或者"胡言亂語"?明明你已經喂了它一堆PDF和Word文檔,為啥它就是不會用&#x…

ubuntu 安裝 docker 詳細步驟

登錄,ubuntu版本 22.04 wqbboy192.168.1.2s password: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)* Documentation: https://help.ubuntu.com* Management: https://landscape.canonical.com* Support: https://ubuntu.com/…

AndroidWorld+mobileRL

1、Android地址 https://github.com/google-research/android_world/tree/main?tabreadme-ov-file#installation 這里有排行榜,提交方式為手工提交到共享表格 https://docs.google.com/spreadsheets/d/1cchzP9dlTZ3WXQTfYNhh3avxoLipqHN75v1Tb86uhHo/edit?gid0#g…

《練手:ipv4地址計算和Telnet 遠程設備管理配置實驗文檔》

實驗一:IPv4 地址網段判斷原理及實例 判斷兩個 IPv4 地址是否處于同一網段,核心依據是:將兩個 IP 地址分別與子網掩碼進行AND 運算后,得到的網絡地址是否相同。若相同,則屬于同一網段;反之則不屬于。 實驗拓…

小程序獲取手機號完整流程 彈出框獲取電話號碼

小程序獲取手機號完整流程 彈出框獲取電話號碼 1?? 前提條件 - 使用微信小程序 - 小程序已注冊并通過審核 - 后端可存儲 session_key2?? 小程序端按鈕 <button type"default" open-type"getPhoneNumber" getphonenumber"decryptPhoneNumber&qu…

Nginx 實戰系列(四)—— Nginx反向代理與負載均衡實戰指南

文章目錄前言一、反向代理1.1 反向代理原理1.2 實驗配置示例二、負載均衡2.1 負載均衡基本原理2.2 常見負載均衡策略2.2.1 輪詢&#xff08;Round Robin&#xff09;&#xff08;最常用&#xff09;2.2.2 最少連接數&#xff08;Least Connections&#xff09;2.2.3 IP 哈希&am…

深度學習(一):人工智能、機器學習與深度學習

人工智能 (AI)&#xff1a;宏大的目標 人工智能是最廣泛、最宏大的概念&#xff0c;它的目標是讓機器能夠模仿人類的智能行為&#xff0c;例如&#xff1a; 推理&#xff1a;像下棋程序一樣&#xff0c;通過邏輯來做決策。規劃&#xff1a;為實現一個目標而制定步驟&#xff0c…

[網絡入侵AI檢測] 純卷積神經網絡(CNN)模型 | CNN處理數據

第5章&#xff1a;純卷積神經網絡&#xff08;CNN&#xff09;模型 歡迎回來 在第1章&#xff1a;分類任務配置&#xff08;二分類 vs. 多分類&#xff09;中&#xff0c;我們學習了如何提出正確的問題&#xff1b; 在第2章&#xff1a;數據加載與預處理中&#xff0c;我們準…

Unity AssetBundle詳解

簡介 AssetBundle&#xff08;簡稱&#xff1a;AB包&#xff09; 是 Unity 提供的一種資源壓縮包&#xff0c;用于在應用運行時動態地加載和卸載資源。它可以將非代碼資源&#xff08;如模型、紋理、預制體、音頻、甚至整個場景&#xff09;打包成一個或多個文件&#xff0c;這…

golang-gin包

文章目錄一、了解gin二、html渲染三、gin中get/post獲取值四、路由分組五、中間件六、文件上傳七、gin中的cookie一、了解gin Gin 是一個用 Golang編寫的 高性能的web 框架, 由于http路由的優化&#xff0c;速度提高了近 40 倍。 Gin的特 點就是封裝優雅、API友好。 特性類別…

基于腳手架微服務的視頻點播系統-界面布局部分(二):用戶界面及系統管理界面布局

基于腳手架微服務的視頻點播系統-界面布局部分:二.首頁及播放界面布局一.用戶界面布局1.1用戶界面布局分析與實現1.2更新用戶圖像按鈕及邏輯1.3修改按鈕及邏輯1.4上傳視頻對話框實現邏輯1.4.1頁面跳轉邏輯處理1.4.2頁面控件響應處理二.系統界面布局2.1系統管理頁框架2.2審核管理…

STL庫——二叉搜索樹

? ? ? ? ? づ?ど &#x1f389; 歡迎點贊支持&#x1f389; 個人主頁&#xff1a;勵志不掉頭發的內向程序員&#xff1b; 專欄主頁&#xff1a;C語言&#xff1b; 文章目錄 前言 一、二叉搜索樹的概念 二、二叉搜索樹的性能分析 三、二叉搜索樹的插入 四、二叉搜索樹的查…

【Linux】線程概念與控制

一. 線程的概念1.什么是線程線程是進程內部的一個執行流&#xff0c;是進程調度的基本單位。它具有輕量的特點&#xff0c;它的創建和銷毀所消耗的資源更少&#xff0c;線程間切換比進程間切換消耗的資源更少&#xff1b;它與進程共享一張虛擬地址空間表&#xff0c;通過進程來…