現(xiàn)與能帶計(jì)算經(jīng)驗(yàn))
光子晶體仿真看起來(lái)門(mén)檻高實(shí)際上絕大多數(shù)時(shí)間都花在修正模型的細(xì)節(jié)上。我最早跟著論文復(fù)現(xiàn)二維空氣孔光子晶體整整一周都在跟能帶圖里的鋸齒較勁最后才發(fā)現(xiàn)只是材料介電常數(shù)虛部沒(méi)有清零。為了徹底擺脫反復(fù)試錯(cuò)的局面我決定用COMSOL 5.6把《光子晶體》教材中的典型案例完整復(fù)現(xiàn)一遍。目前這套復(fù)現(xiàn)項(xiàng)目積累了40多個(gè)可直接運(yùn)行的mph文件涵蓋一維、二維、三維三種維度的光子晶體結(jié)構(gòu)包括透射譜、反射譜、能帶圖、本征模場(chǎng)分布等完整輸出。這篇文章既是對(duì)這套案例庫(kù)的說(shuō)明也是把復(fù)現(xiàn)過(guò)程中踩過(guò)的坑、總結(jié)的方法和調(diào)參經(jīng)驗(yàn)一次性講清楚。無(wú)論你是剛接觸光子晶體仿真的研究生還是已經(jīng)在算能帶但經(jīng)常對(duì)不上文獻(xiàn)結(jié)果的工程師這套從一維到三維的完整鏈路都值得參考。1. 為什么我要在COMSOL 5.6里復(fù)現(xiàn)光子晶體案例1.1 從“看書(shū)懂”到“動(dòng)手會(huì)”的鴻溝光子晶體相關(guān)書(shū)籍通常會(huì)把能帶理論講得很細(xì)但真正動(dòng)手建模的時(shí)候你會(huì)發(fā)現(xiàn)書(shū)上的信息根本不夠用。比如書(shū)里可能只寫(xiě)了晶格常數(shù)a600 nm、空氣孔半徑r180 nm卻沒(méi)有寫(xiě)清楚Floquet邊界條件的波矢量該怎么設(shè)置也沒(méi)有說(shuō)明用TM模式還是TE模式計(jì)算。這些信息缺失導(dǎo)致一百個(gè)人能跑出一百種結(jié)果。所以我決定換一個(gè)思路不再零散地在網(wǎng)上找示例而是選一本案例最完整、參數(shù)最清晰的光子晶體專(zhuān)著把其中能復(fù)現(xiàn)的算例逐個(gè)做出來(lái)。所謂復(fù)現(xiàn)不是簡(jiǎn)單畫(huà)出幾何而是讓計(jì)算得到的禁帶位置、能帶寬度、透射率曲線和書(shū)中的結(jié)果一致。有了這樣一條校準(zhǔn)線后續(xù)做新結(jié)構(gòu)的時(shí)候我才有底氣去改參數(shù)、換材料知道哪些結(jié)果是合理的哪些是模型出錯(cuò)了。1.2 案例庫(kù)的組織方式與文件規(guī)范40多個(gè)mph文件如果隨意堆在一起半年后連自己都找不到。我在整理案例庫(kù)時(shí)采用“維度—結(jié)構(gòu)類(lèi)型—求解目標(biāo)”的三級(jí)目錄結(jié)構(gòu)根目錄下分1D、2D、3D三大類(lèi)每一類(lèi)再按照具體結(jié)構(gòu)細(xì)分。比如2D目錄下就有正方晶格空氣孔、三角晶格空氣孔、六角晶格介質(zhì)柱、線缺陷波導(dǎo)、微腔諧振器等子目錄。文件命名也有一套固定的規(guī)則。我會(huì)把結(jié)構(gòu)類(lèi)型、關(guān)鍵幾何參數(shù)、折射率組合、計(jì)算模式四個(gè)要素寫(xiě)進(jìn)文件名。例如2D_Triangular_r0.3_n2.34_TM_band.mph看到名字就知道這是三角晶格空氣孔結(jié)構(gòu)r/a0.3背景折射率2.34算的是TM模式能帶。另外每個(gè)子目錄里放一個(gè)README.md記錄案例來(lái)源、章節(jié)號(hào)、預(yù)期結(jié)果和模型注意事項(xiàng)。這樣即使隔幾個(gè)月再打開(kāi)也能快速恢復(fù)上下文。1.3 選擇COMSOL 5.6的具體原因標(biāo)題里的“Comsol56”指的就是COMSOL 5.6版本。我選擇這個(gè)版本主要是看中它的波光學(xué)模塊穩(wěn)定性。5.6對(duì)Floquet周期邊界、端口邊界和散射邊界的底層求解器做了不少優(yōu)化特征值計(jì)算的收斂性比早期版本強(qiáng)很多。特別是對(duì)高介電常數(shù)對(duì)比度的結(jié)構(gòu)早期版本經(jīng)常出現(xiàn)“找不到模式”的提示5.6的容錯(cuò)明顯變好。另一個(gè)重要原因是5.6的“數(shù)學(xué)模塊”里弱形式PDE接口增強(qiáng)了非線性求解能力。后面我要專(zhuān)門(mén)講到的“基于COMSOL弱形式方程求解色散光子晶體能帶”正是依賴(lài)這個(gè)接口。早期版本在這個(gè)功能上偏弱很多頻散材料模型需要額外寫(xiě)代碼才能求解。5.6把弱形式的穩(wěn)定性提升了一個(gè)臺(tái)階才讓我能在原生界面里完成色散能帶計(jì)算。2. 光子晶體仿真的三條核心方法論2.1 布里淵區(qū)、倒格子與k空間路徑不管是幾維結(jié)構(gòu)光子晶體仿真都繞不開(kāi)三個(gè)核心概念正格子、倒格子、布里淵區(qū)。正格子是你在COMSOL里畫(huà)的周期性晶胞倒格子是與之對(duì)應(yīng)的動(dòng)量空間周期單元布里淵區(qū)則是倒格子的原胞。能帶圖描繪的就是本征頻率在這個(gè)布里淵區(qū)內(nèi)沿特定路徑的變化。初學(xué)者最容易混淆的是幾何尺寸和k點(diǎn)路徑之間的關(guān)系。幾何尺寸可以用實(shí)際晶格常數(shù)建模比如三角晶格a600 nm但能帶計(jì)算里的k點(diǎn)必須沿布里淵區(qū)邊界走。三角晶格的高對(duì)稱(chēng)路徑是Γ(0,0) → M(0.5,0) → K(0.333,0.333) → Γ(0,0)這些坐標(biāo)是無(wú)量綱的是相對(duì)于倒格子基矢的。如果直接把路徑坐標(biāo)當(dāng)作普通變量輸入COMSOL得到的能帶會(huì)整體變形。我的處理方法是把倒格子基矢的換算關(guān)系直接寫(xiě)進(jìn)模型的全局參數(shù)里。以三角晶格為例倒格子基矢長(zhǎng)度為4π/(a√3)Floquet邊界需要的波矢量分量定義為kx 4*pi/(a*sqrt(3)) * s1 ky -4*pi/(3*a) * s1這樣掃描參數(shù)s1遍歷0到1的區(qū)間k點(diǎn)就自動(dòng)沿高對(duì)稱(chēng)路徑移動(dòng)。我現(xiàn)在做二維案例時(shí)已經(jīng)把這套表達(dá)式做成了公共參數(shù)組復(fù)制到任意二維模型都能直接用只需根據(jù)晶格類(lèi)型修改系數(shù)。2.2 Floquet周期邊界條件的參數(shù)化Floquet邊界條件是光子晶體能帶計(jì)算的基石。它的作用是讓晶胞兩側(cè)的電磁場(chǎng)滿足一個(gè)相位關(guān)系相當(dāng)于把無(wú)限周期結(jié)構(gòu)的邊界效應(yīng)濃縮到一個(gè)單元里。在COMSOL中設(shè)置周期邊界時(shí)類(lèi)型必須選“Floquet周期性”不能選普通的“周期性”否則邊界兩側(cè)的電場(chǎng)無(wú)法傳播相移。邊界條件界面里需要指定兩個(gè)方向的波矢量分量kFloq1和kFloq2。這兩個(gè)分量的單位是rad/m不是倒格子坐標(biāo)。很多人在這一步出錯(cuò)是因?yàn)橹苯影裬點(diǎn)坐標(biāo)輸入進(jìn)去導(dǎo)致相位積累錯(cuò)誤。正確做法是換算正方晶格中kFloq1 2π·kx/akFloq2 2π·ky/a三角晶格則需要考慮基矢夾角手動(dòng)算出兩個(gè)方向的投影系數(shù)。在參數(shù)化掃描過(guò)程中我會(huì)把kFloq1和kFloq2定義成全局參數(shù)的表達(dá)式然后用“輔助掃描”功能讓k點(diǎn)連續(xù)遍歷高對(duì)稱(chēng)路徑。這里有個(gè)經(jīng)驗(yàn)掃描點(diǎn)數(shù)量不是越多越好。我通常設(shè)置61個(gè)掃描點(diǎn)既能保證能帶曲線平滑又不至于讓求解時(shí)間翻倍。對(duì)于多維參數(shù)掃描COMSOL的“參數(shù)掃描”會(huì)為每一組參數(shù)完整求解一次掃描點(diǎn)過(guò)多時(shí)建議拆成兩段執(zhí)行方便中途查看結(jié)果。2.3 特征值求解器的目標(biāo)設(shè)置與模式篩選特征值求解器是能帶計(jì)算的核心引擎。COMSOL默認(rèn)會(huì)計(jì)算“所需模式數(shù)”個(gè)最低頻率的特征模但光子晶體往往需要特定頻率區(qū)間的模式而不是最低的那幾個(gè)。我的習(xí)慣是把“特征值搜索范圍”設(shè)置為目標(biāo)頻段的1.5倍再通過(guò)模式序號(hào)和場(chǎng)分布圖做篩選。具體參數(shù)方面我通常設(shè)置“所需模式數(shù)”為8到12搜索范圍是[0, 2×f_max]。f_max是目標(biāo)頻率上限。如果范圍太窄高頻率模式會(huì)被漏掉如果范圍太寬會(huì)混入無(wú)效的數(shù)值模式。求解完成后COMSOL會(huì)在日志中給出“拒收特征值”列表這些被剔除的模式往往暗示著數(shù)值偽?;蜻吔缭O(shè)置問(wèn)題值得仔細(xì)查看。3. 一維案例復(fù)現(xiàn)透射譜與一維禁帶3.1 一維多層膜模型的幾何參數(shù)設(shè)定一維光子晶體最常見(jiàn)的形式是交疊膜堆。我復(fù)現(xiàn)的一個(gè)典型算例是紫外波段的多層膜SiO2層與TiO2層交替排列厚度分別為95 nm和65 nm周期數(shù)10。在COMSOL里我選擇用二維模型來(lái)搭建幾何雖然結(jié)構(gòu)是一維周期但二維模型能直觀觀察場(chǎng)分布也為后續(xù)斜入射計(jì)算留了余地。幾何構(gòu)建時(shí)我會(huì)先用一個(gè)矩形代表整個(gè)膜堆再用“分割面”功能按層厚切成一系列子域。如果每一層都建獨(dú)立矩形再拼接后期改厚度會(huì)非常痛苦。分割面的操作在5.6里支持參數(shù)控制把層厚定義成全局參數(shù)后改一個(gè)數(shù)值整個(gè)幾何自動(dòng)更新。材料方面SiO2折射率設(shè)為1.46TiO2設(shè)為2.35特別注意要把材料屬性里的損耗虛部清零否則禁帶位置會(huì)偏移。3.2 端口、周期邊界與入射波設(shè)置一維膜堆的透射和反射譜需要在結(jié)構(gòu)兩側(cè)設(shè)置端口邊界條件。COMSOL的“端口”特性支持多模式設(shè)置入射端口的模式類(lèi)型要選“衍射級(jí)”端口寬度必須包含一個(gè)完整周期。如果端口寬度小于一個(gè)周期透射率曲線會(huì)出現(xiàn)莫名其妙的震蕩這個(gè)問(wèn)題非常隱蔽我調(diào)試了整整一天才找到原因。上下兩側(cè)需要設(shè)置Floquet周期性邊界把x方向的周期落實(shí)到模型中。注意上下邊界不能使用默認(rèn)的PEC或者PBC否則會(huì)引入非物理的反射。頻率掃描范圍設(shè)置為320 nm到440 nm波長(zhǎng)跑完結(jié)果后能看到反射譜在390 nm附近出現(xiàn)明顯的禁帶這是兩材料界面布拉格反射最強(qiáng)烈的波長(zhǎng)位置。3.3 結(jié)果對(duì)照與網(wǎng)格精度控制我最初的版本誤差很大禁帶邊緣頻率比書(shū)中值偏移了7%左右。排查后發(fā)現(xiàn)是網(wǎng)格太粗65 nm厚的薄層里默認(rèn)網(wǎng)格只剖了一層單元邊界處電磁場(chǎng)分布根本沒(méi)解析出來(lái)。把網(wǎng)格最大單元尺寸調(diào)整為25 nm后偏差縮小到了0.8%這個(gè)精度已經(jīng)滿足大多數(shù)工程需求。這個(gè)坑讓我養(yǎng)成了一個(gè)習(xí)慣所有薄膜結(jié)構(gòu)每一層材料至少要跨4層網(wǎng)格。具體做法是使用“邊界層網(wǎng)格”在每層材料介質(zhì)界面處強(qiáng)制加密。多層結(jié)構(gòu)用邊界層網(wǎng)格增加的自由度很少但對(duì)能帶位置的影響非常明顯??梢哉f(shuō)一維光子晶體仿真精度不夠大概率是網(wǎng)格的問(wèn)題而不是求解器或物理設(shè)置的問(wèn)題。4. 二維案例復(fù)現(xiàn)能帶結(jié)構(gòu)中的TM/TE模式4.1 正方晶格與三角晶格的建模差異二維案例是這套案例庫(kù)中數(shù)量最多的部分。二維結(jié)構(gòu)既能展現(xiàn)周期結(jié)構(gòu)的共性又能通過(guò)不同的晶格排列得到豐富的能帶性質(zhì)。正方晶格和三角晶格的差別不僅僅在幾何排布上更關(guān)鍵的是它們的倒格子形狀和高對(duì)稱(chēng)點(diǎn)路徑完全不同。正方晶格的倒格子仍是正方布里淵區(qū)高對(duì)稱(chēng)路徑為Γ-X-M-Γ三角晶格的倒格子是六角對(duì)稱(chēng)高對(duì)稱(chēng)路徑為Γ-M-K-Γ。在幾何搭建時(shí)正方晶格只需一個(gè)正方形晶胞x和y方向設(shè)兩個(gè)周期性邊界。三角晶格則必須用平行四邊形晶胞兩個(gè)基矢長(zhǎng)度相等但夾角120°。這里有一個(gè)常見(jiàn)錯(cuò)誤很多人直接在正方形外框里放一個(gè)圓形空氣孔來(lái)模擬三角晶格這等于改變了晶格對(duì)稱(chēng)性算出的能帶并不屬于真正的三角晶格。我的標(biāo)準(zhǔn)做法是建一個(gè)平行四邊形晶胞使用全局參數(shù)定義頂點(diǎn)坐標(biāo)比如a600 nm、r180 nm然后利用三角函數(shù)關(guān)系算出平行四邊形的斜邊頂點(diǎn)。Floquet邊界恰好映射兩個(gè)基矢方向這樣才保證計(jì)算模型的對(duì)稱(chēng)性正確。4.2 k路徑掃描的參數(shù)化實(shí)現(xiàn)二維案例能帶計(jì)算中k路徑掃描是最容易出錯(cuò)也最耗時(shí)的環(huán)節(jié)。我在全局參數(shù)里定義了三段掃描變量s1、s2、s3分別對(duì)應(yīng)Γ-M、M-K、K-Γ三段路徑。每一段路徑用線性插值把掃描參數(shù)映射到k點(diǎn)坐標(biāo)。比如Γ-M段s從0到1kx從0映射到0.5ky從0映射到0這里的坐標(biāo)都是相對(duì)于倒格子基矢的無(wú)量綱坐標(biāo)。為了把三段路徑拼接到一次研究中我會(huì)定義一個(gè)總的掃描變量s通過(guò)分段函數(shù)判斷s落在哪一段再切換對(duì)應(yīng)的k坐標(biāo)表達(dá)式。這個(gè)寫(xiě)法看起來(lái)繁瑣但在COMSOL中可以用“階梯函數(shù)”或“if條件表達(dá)式”實(shí)現(xiàn)設(shè)置完成后整個(gè)能帶掃描是一次性跑完的。4.3 參數(shù)掃描與禁帶優(yōu)化二維結(jié)構(gòu)最有價(jià)值的應(yīng)用就是禁帶優(yōu)化。比如設(shè)計(jì)工作在通信波長(zhǎng)1550 nm附近的空氣孔光子晶體晶格常數(shù)a和空氣孔半徑r是兩個(gè)最關(guān)鍵的自由度。書(shū)里通常給一組基準(zhǔn)參數(shù)但實(shí)際設(shè)計(jì)時(shí)需要掃描r/a比值。我在案例庫(kù)中準(zhǔn)備了兩類(lèi)參數(shù)掃描模型。第一類(lèi)是固定a、掃描r觀察TM模禁帶寬度變化。典型結(jié)果是r/a從0.2增大到0.35時(shí)TM模禁帶逐漸變寬超過(guò)0.4后禁帶反而開(kāi)始收窄因?yàn)榭諝饪字g的介質(zhì)墻太薄高次模開(kāi)始出現(xiàn)。第二類(lèi)是固定r/a、整體縮放a觀察歸一化禁帶位置的變化。這類(lèi)模型用來(lái)驗(yàn)證光子晶體的縮放定律歸一化頻率a/λ基本保持不變這是周期結(jié)構(gòu)設(shè)計(jì)的理論基礎(chǔ)也是能帶圖與實(shí)驗(yàn)對(duì)照的關(guān)鍵參照。參數(shù)掃描時(shí)內(nèi)存占用不小。我在32 GB內(nèi)存的機(jī)器上一個(gè)三角晶格案例單次求解約2分鐘20組掃描約40分鐘。如果網(wǎng)格超過(guò)10萬(wàn)自由度建議用“輔助掃描”來(lái)代替“參數(shù)掃描”能大幅減少內(nèi)存壓力。我實(shí)測(cè)下來(lái)兩種方式的精度差異可以忽略。5. 三維案例復(fù)現(xiàn)從幾何搭建到資源調(diào)配5.1 木堆結(jié)構(gòu)的幾何布爾與域設(shè)置三維光子晶體案例中木堆結(jié)構(gòu)非常經(jīng)典。它由多層介電柱堆疊而成每層柱子方向旋轉(zhuǎn)90度四層構(gòu)成一個(gè)周期。在COMSOL中搭建木堆結(jié)構(gòu)最讓人頭疼的是幾何布爾運(yùn)算后的材料域標(biāo)記。多個(gè)柱子做布爾并集后COMSOL有時(shí)會(huì)把交疊區(qū)域識(shí)別成內(nèi)部邊界導(dǎo)致后續(xù)網(wǎng)格無(wú)法跨邊界傳播。我的處理方式是在布爾運(yùn)算之前給每根柱子做“顯式選擇”布爾操作時(shí)選擇“保留被選中的實(shí)體”把結(jié)構(gòu)分為若干子域再逐個(gè)賦予材料。這樣即使后續(xù)做參數(shù)掃描修改柱寬材料分配也不會(huì)被打亂。每個(gè)三維案例我都會(huì)記錄幾何構(gòu)建順序因?yàn)镃OMSOL的布爾運(yùn)算是記錄在模型樹(shù)里的順序錯(cuò)了后續(xù)修改幾乎無(wú)法進(jìn)行。5.2 網(wǎng)格策略與內(nèi)存平衡三維能帶計(jì)算對(duì)硬件的需求很高。木堆結(jié)構(gòu)如果直接使用默認(rèn)的四面體網(wǎng)格單個(gè)晶胞就需要大概80萬(wàn)到100萬(wàn)個(gè)自由度內(nèi)存占用逼近16 GB。我的經(jīng)驗(yàn)是兩步走先用粗網(wǎng)格快速試算獲得能帶的大致位置和模式數(shù)量然后再用細(xì)化網(wǎng)格在目標(biāo)頻段精確計(jì)算。COMSOL 5.6的“自適應(yīng)網(wǎng)格細(xì)化”在三維模型中很有效。它能自動(dòng)識(shí)別場(chǎng)梯度大的區(qū)域在不增加整體網(wǎng)格數(shù)量的前提下修正局部精度。但自適應(yīng)細(xì)化會(huì)增加迭代次數(shù)和應(yīng)用時(shí)間所以只適合在最終求解階段開(kāi)啟試算階段要保持關(guān)閉。內(nèi)存方面三維模型建議至少16 GB內(nèi)存求解時(shí)開(kāi)啟多核并行速度提升非常明顯。5.3 三維場(chǎng)分布的后處理技巧三維案例除了能帶曲線通常還需要輸出漂亮的場(chǎng)分布圖。光子晶體場(chǎng)圖能直觀展示光與結(jié)構(gòu)的相互作用線缺陷波導(dǎo)模式場(chǎng)集中在缺陷周?chē)径呀Y(jié)構(gòu)的光子禁帶模式場(chǎng)分布在介電柱之間的空隙里。在COMSOL里輸出場(chǎng)圖關(guān)鍵點(diǎn)是選對(duì)切面和位置。我常用的方法是用一個(gè)“工作平面”切過(guò)結(jié)構(gòu)中間層疊加“高度圖”顯示場(chǎng)強(qiáng)配合透明顯示介質(zhì)結(jié)構(gòu)。顏色表選擇需要注意彩色映射在黑白打印時(shí)會(huì)失真論文投稿建議使用灰度或雙色漸變。如果結(jié)果是復(fù)數(shù)場(chǎng)我會(huì)分別畫(huà)實(shí)部和模值實(shí)部用于觀察相位拓?fù)淠V涤糜谟^察能量分布。這兩種圖配合起來(lái)才能判斷模式是傳播態(tài)還是局域態(tài)。6. 進(jìn)階弱形式方程求解色散光子晶體能帶6.1 內(nèi)置求解器為什么不夠用前面幾節(jié)的內(nèi)容都是基于“電磁波頻域”接口的“特征頻率”研究。這個(gè)方法對(duì)線性、無(wú)頻散、各向同性的介質(zhì)完全夠用。但遇到兩類(lèi)結(jié)構(gòu)內(nèi)置求解器就不太好辦了第一類(lèi)是色散材料比如金屬、等離子體材料、增益介質(zhì)它們的介電常數(shù)隨頻率變化第二類(lèi)是各向異性材料比如磁性光子晶體本構(gòu)關(guān)系是張量形式。“特征頻率”研究的求解流程是固定頻率后解出空間場(chǎng)。它需要先給定一個(gè)明確的介電常數(shù)值再算對(duì)應(yīng)頻率。如果介電常數(shù)本身就是頻率的函數(shù)這個(gè)循環(huán)就變成了需要自洽求解的方程內(nèi)置求解器難以處理。而弱形式方程可以做到這也是“基于COMSOL弱形式方程求解色散光子晶體能帶”這個(gè)方向的初衷。6.2 弱形式方程的具體實(shí)現(xiàn)步驟弱形式的核心是把微分方程兩邊乘以一個(gè)任意檢驗(yàn)函數(shù)再對(duì)整個(gè)求解域積分。以二維光子晶體TM模式為例控制方程是? × (1/ε_(tái)r(r) · ? × E_z) (ω2/c2) · E_z寫(xiě)成等效的弱積分表達(dá)式之后被積函數(shù)中包含兩個(gè)部分第一項(xiàng)涉及電場(chǎng)梯度和檢驗(yàn)函數(shù)梯度的乘積第二項(xiàng)是電場(chǎng)與檢驗(yàn)函數(shù)相乘再乘上頻率項(xiàng)。在COMSOL的“弱形式PDE”接口里我們可以直接把被積函數(shù)寫(xiě)成“Weak Expression”-(1/ε_(tái)r) * (Ex*test(Ex) Ey*test(Ey)) (ω2/c2) * Ez*test(Ez)這里的ε_(tái)r可以是任意表達(dá)式。比如Drude色散模型可以寫(xiě)成ε_(tái)r ε_(tái)inf - ωp2/(ω2 i*γ*ω)其中ωp是等離子體頻率γ是阻尼率在COMSOL里定義為全局變量即可。此時(shí)介電常數(shù)將隨頻率和波矢量變化迭代求解時(shí)會(huì)自動(dòng)滿足色散關(guān)系這正是弱形式方法相比內(nèi)置求解器的核心優(yōu)勢(shì)。操作上我會(huì)把E_z定義為弱形式PDE的因變量在“弱表達(dá)式”中輸入上面的被積函數(shù)然后添加全局方程來(lái)約束k點(diǎn)和本征頻率之間的關(guān)系。這樣在掃描k路徑時(shí)能帶結(jié)果能直接反映材料的頻散特性。6.3 不收斂問(wèn)題的調(diào)試經(jīng)驗(yàn)弱形式求解最大的注意點(diǎn)是初值。弱形式方程本質(zhì)是非線性的需要一個(gè)接近真實(shí)解的初始猜測(cè)。如果從零初值出發(fā)求解器幾乎必然發(fā)散。我的做法是先用無(wú)頻散模型算出同一結(jié)構(gòu)的能帶把某個(gè)特征頻率作為色散模型的初始猜測(cè)再逐步增加色散項(xiàng)的強(qiáng)度。另一個(gè)問(wèn)題是模式簡(jiǎn)并。當(dāng)兩個(gè)模式在同一個(gè)k點(diǎn)頻率相同弱形式求解器可能同時(shí)找到兩個(gè)解并發(fā)生混淆。我通常給結(jié)構(gòu)加入一個(gè)很小的人工擾動(dòng)比如把某個(gè)空氣孔半徑從180 nm改成180.1 nm專(zhuān)門(mén)破缺對(duì)稱(chēng)性。這樣算出的能帶會(huì)有輕微劈裂但模式是干凈的。確認(rèn)完模式屬性后再把擾動(dòng)歸零重新計(jì)算。這個(gè)技巧在三維光子晶體中同樣有效尤其是處理重頻模式時(shí)特別管用。7. 高頻踩坑點(diǎn)與排查速查表7.1 能帶鋸齒網(wǎng)格問(wèn)題還是物理問(wèn)題能帶圖上出現(xiàn)鋸齒狀的尖刺多數(shù)情況下是網(wǎng)格問(wèn)題但偶爾也有物理來(lái)源。判斷方法很簡(jiǎn)單把目標(biāo)頻段附近的網(wǎng)格尺寸減半重新計(jì)算同一區(qū)域。如果尖刺消失說(shuō)明是網(wǎng)格欠分辨如果尖刺還在那可能是模式簡(jiǎn)并劈裂需要用擾動(dòng)法或模式分解來(lái)確認(rèn)物理性質(zhì)。在二維案例中鋸齒經(jīng)常出現(xiàn)在布里淵區(qū)邊界附近這是因?yàn)檫吔缣巿?chǎng)分布劇烈集中局部網(wǎng)格密度不足會(huì)帶來(lái)偽頻移。我專(zhuān)門(mén)在高對(duì)稱(chēng)點(diǎn)附近加“角點(diǎn)細(xì)化”因?yàn)槿蔷Ц裰羞@些區(qū)域場(chǎng)梯度最大。這個(gè)方法在三維案例中也一樣有效能減少不少返工時(shí)間。7.2 模式缺失與特征值搜索范圍特征值缺失是復(fù)現(xiàn)案例時(shí)非常頭疼的問(wèn)題。發(fā)現(xiàn)某個(gè)高對(duì)稱(chēng)點(diǎn)附近缺少一條本該存在的能帶第一反應(yīng)不該是改幾何而是檢查特征值搜索范圍。COMSOL特征值研究設(shè)置中有兩個(gè)關(guān)鍵參數(shù)一個(gè)是“所需模式數(shù)”決定求解器返回多少個(gè)特征模式另一個(gè)是“搜索基準(zhǔn)點(diǎn)”決定搜索中心的頻率位置。如果頻帶跨度大我會(huì)把搜索基準(zhǔn)點(diǎn)設(shè)置到目標(biāo)頻帶中間而搜索范圍設(shè)置為整個(gè)感興趣頻段的1.5倍。同時(shí)把所需模式數(shù)提高到8以上跑完后手動(dòng)過(guò)濾不需要的模式。還有一點(diǎn)務(wù)必注意COMSOL默認(rèn)特征頻率單位是rad/s如果輸入以Hz為單位的值需要先做換算再填入。這個(gè)單位坑我踩過(guò)不止一次。7.3 歸一化頻率換算與單位陷阱光子晶體論文普遍用歸一化頻率a/λ而COMSOL的特征頻率輸出是freq單位rad/s。從freq換算到a/λ的公式很簡(jiǎn)單a/λ a * freq / (2πc)其中c是真空光速。如果你習(xí)慣用波長(zhǎng)作為輸入還要額外注意波長(zhǎng)與頻域求解頻率之間的對(duì)應(yīng)關(guān)系。這個(gè)換算看似簡(jiǎn)單但做40多個(gè)案例時(shí)反復(fù)手動(dòng)換算極容易出錯(cuò)。我的解決方案是在“結(jié)果”節(jié)點(diǎn)中新建一個(gè)“全局變量探針”把換算公式直接定義成變量名作為一維繪圖的橫坐標(biāo)。所有mph文件都采用這種輸出方式打開(kāi)模型就能直接看到歸一化頻率的能帶圖免去了每次換算的工作量。7.4 常見(jiàn)問(wèn)題速查表錯(cuò)誤現(xiàn)象可能原因解決方向能帶曲線鋸齒形抖動(dòng)網(wǎng)格過(guò)疏或界面網(wǎng)格不均勻加密界面網(wǎng)格開(kāi)啟局部自適應(yīng)細(xì)化禁帶位置偏移明顯材料折射率虛部未清零檢查材料屬性刪除損耗虛部特征值缺失頻率搜索范圍太窄增大搜索區(qū)間并調(diào)整所需模式數(shù)模式重復(fù)或發(fā)生交叉高對(duì)稱(chēng)點(diǎn)簡(jiǎn)并或?qū)ΨQ(chēng)性太高加入人工微擾破缺對(duì)稱(chēng)性結(jié)果全部為0端口或邊界條件錯(cuò)誤檢查是否使用Floquet周期邊界而非通用周期邊界三維模型內(nèi)存溢出網(wǎng)格自由度過(guò)高關(guān)閉自適應(yīng)細(xì)化簡(jiǎn)化幾何或用輔助掃描弱形式方法不收斂初始猜測(cè)偏差過(guò)大先用無(wú)頻散能帶的計(jì)算結(jié)果做初值能帶圖整體變形k點(diǎn)坐標(biāo)未做倒基矢變換重新設(shè)置Floquet邊界波矢量表達(dá)式透射率曲線震蕩端口寬度不等于一個(gè)完整周期將端口寬度調(diào)整為一個(gè)周期長(zhǎng)度最后再分享一個(gè)小技巧mph文件保存前最好執(zhí)行一次“文件-壓縮模型”把求解過(guò)程中遺留的臨時(shí)數(shù)據(jù)和無(wú)效網(wǎng)格節(jié)點(diǎn)清理掉文件體積能縮小兩到三成。這不僅方便版本管理也方便和同行交換模型時(shí)減少傳輸壓力。另外復(fù)現(xiàn)案例時(shí)建議把每個(gè)模型的物理單位、頻段、材料參數(shù)記錄下來(lái)寫(xiě)在README里否則三個(gè)月后回看你可能連自己的建模思路都忘了。這套案例庫(kù)目前仍在擴(kuò)充下一步我準(zhǔn)備加入更多拓?fù)涔庾泳w和谷態(tài)輸運(yùn)的內(nèi)容有新的進(jìn)展會(huì)繼續(xù)整理出來(lái)跟大家交流。