网格划分
什么是网格划分?
网格划分是将连续的物理区域划分为一组可由计算机处理的离散点的过程。 例如,设想热量沿着一根金属棒从一端的蜡烛火焰传导到另一端的冰块。 在现实中,温度沿棒连续变化,但仿真无法存储无限多个数值。 因此,用有限数量的采样点(网格)来表示金属棒,并只在这些位置进行计算 (见 ??)。 通过使用网格,我们将原本连续的问题转化为离散问题,从而可用数值方法求解。 这一原理是有限差分、有限元以及其他在物理与工程中广泛使用的计算方法的基础。
不同问题对应不同网格
在 OghmaNano 中,求解三类核心物理模型:光学模型(光吸收与传播)、 热学模型(热生成与传导)以及 电学模型(电荷输运与复合)。 这些过程通常发生在截然不同的长度尺度上,因此各自需要独立的网格。例如:
- 有机太阳能电池:与电学相关的效应集中在有源层中 (厚度约 ≈100 nm),因此 drift–diffusion 方程只需要在该区域求解。 然而,光与器件堆叠的 所有 层相互作用(总厚度约 ≈1 µm),因此光学问题 必须在整个器件上求解。在这种情况下,光学网格覆盖整个堆叠,而电学网格 聚焦于有源层。
- 量子阱激光二极管:器件可能在量子阱中产生显著热量 (厚度约 ≈30 nm)以及在波导层中产生热量(厚度约 ≈1 µm),但这些热量最终通过 厚度达厘米级的大铜散热器耗散。在此,电学效应必须在器件内部的 纳米至微米尺度上建模,而热学效应则需要网格延伸到 散热器的厘米尺度。
在实践中,这意味着不同的物理效应必须在不同的长度尺度上进行仿真。 此外,器件结构往往包含厚度仅数纳米的极薄接触或界面层。 从光学角度看,此类层远小于光的波长,往往可以忽略, 但从电学角度看它们却至关重要,因为它们决定器件的电流–电压行为。 为了捕捉这些效应,你会在这些区域使用非常细的电学网格, 而光学网格可以保持更粗,并跨越这些区域。
当模型耦合时,OghmaNano 会自动在网格之间进行 插值。 例如,如果你在热学网格上定义了温度分布,但电学求解器需要局部 温度值,它们会通过插值传递。 光学量(例如载流子产生率)也是如此, 会在需要时从光学网格插值到电学网格。 作为用户,你不需要手动管理这些传递。
OghmaNano 的三种网格
OghmaNano 提供三种相互独立的网格——thermal、optical、 以及 electrical——可根据所求解的问题分别定义。 每种网格可在其对应的功能区选项卡中访问,如图 ?? 所示。
电学网格
在 Electrical 功能区中点击 Electrical mesh 按钮会打开网格编辑器窗口 (图 ??)。 在该窗口顶部有 X、Y 与 Z 按钮。 它们用于切换仿真中启用的空间维度。 例如,仅启用 Y 将进行 1D 仿真,而同时启用 X 与 Y 将设置 2D 仿真。在所示示例中,X 与 Y 都处于启用状态,因此网格被配置为 2D OFET 仿真。中央表格类似电子表格,用于定义每个启用维度的网格结构。其主要列为:
- Thickness:每个网格区域的物理厚度。
- Mesh points:该区域内的离散化点数。
- Step multiply:区域内网格间距的增长倍率。
例如,
1.1表示每一步相对于前一步增加 10%。 - Left/Right:设置从器件的哪一侧生成网格。
生成的网格会绘制在窗口底部的图中,从而立即反馈 点间距与分布。Import from layer editor 按钮为复杂器件提供了快捷方式。它会清空 Y-网格,并自动从 Layer Editor 导入所有层,为每层分配四个网格点。 这对包含许多层的结构(例如激光二极管)尤其有用。
光学网格
光学网格编辑器(图 ??) 在布局上类似电学网格编辑器,但增加了一个用于定义 波长网格 的面板。在窗口顶部,X、Y 与 Z 按钮用于切换启用的空间维度,而 λ (Wavelength) 按钮用于启用谱网格。
左侧面板以纳米为单位指定空间离散化,使用与电学网格相同的列 (Thickness、Mesh points、Step multiply 与 Left/Right)。右侧面板通过设置 Start 与 Stop 波长、points 点数以及 步长倍率来定义谱范围。这些波长点会在所有光学求解器中一致使用,包括 ray tracing、FDTD 与 transfer matrix 仿真。
热学网格
热学网格编辑器(图 ??) 与电学和光学网格编辑器工作方式相同,使用 X、Y 与 Z 按钮来激活空间维度。此外,它还包含专用的 T (Temperature) 网格。
温度网格用于需要考虑温度依赖性的仿真,例如启用 自热效应,或在温度范围内评估电学性质时。在仿真运行之前, OghmaNano 会预先计算并制表诸如载流子密度随费米能级与温度变化的关系, 或费米–狄拉克积分等量。这些表格使求解器在运行期间能够快速查表,而不是 反复计算。
在大多数情况下,热学网格会自动处理,但高级用户可以调整范围与分辨率, 以确保在强温度依赖问题中具有足够精度。
电学网格详解
图 ?? 展示了电学网格的构建方式。注意网格并非从器件边界处精确开始, 而是从边界内侧半个网格步长处开始。这确保第一个计算节点位于有源 仿真区域内部,从而可以在网格外侧的明确位置施加边界条件(例如接触)。同样的约定也适用于器件的远端边界,因此网格会超出 最后一个物理点半个步长。该偏置布置带来两点主要优势:
- 避免在边界处直接计算导数时出现的数值问题。
- 将首末网格点放置在最能代表器件物理内部的位置,同时 仍能一致地施加外部条件。
我何时需要在 OghmaNano 中关注网格划分?
电学网格
Layer Editor 将器件划分为不同材料的层 (见第 3.1.3 节)。 标记为 active 的层是应用电学模型的区域。 对这些层必须定义有限差分网格。 网格长度必须与有源层长度完全一致——否则会报错。 OghmaNano 通常会自动生成合适的网格,因此对大多数简单器件你不需要考虑这些细节。 然而,当存在多个有源层,或当你希望减少网格点数以加速仿真 (或增加点数以获得更高精度)时,你可能需要手动配置电学网格。
光学网格
光学网格同时控制位置与波长采样。 如果你希望改变仿真的波长范围,或细化 光与器件各层相互作用的描述,你可能需要调整它。 增加网格点数会提高光学精度,但代价是更长的仿真时间。
热学网格
只有在启用自热效应时,热学网格才相关。 在这种情况下,它提供对器件中温度演化建模所需的分辨率, 或用于描述热效应如何与陷阱与复合过程耦合。 否则,它由 OghmaNano 自动处理。
网格划分建议
我应该进行 1D、2D 还是 3D 仿真?
选择正确的维数是建立仿真时最重要的决策之一。 始终使用能够捕捉目标物理过程所需的最少维数——这能节省时间与计算资源。
- 太阳能电池:通常只需要 1D 网格,因为变化主要沿垂直(厚度)方向。
- 光学滤波器:通常也为 1D,因为关键的光学干涉发生在堆叠方向。
- OFET:需要 2D,因为必须同时分辨半导体中的垂直电流以及源漏之间的横向电流。
速度与精度
增加网格点数通常会提高精度,但会减慢仿真速度。 相反,减少网格点数会加快计算,但可能丢失重要的物理细节。 关键在于取得平衡:先用粗网格测试设置,然后只在必要时细化网格, 以获得稳定且可靠的结果。
在 OghmaNano 中建立器件时,请记住以下指南:
- 尽可能减少网格点数:目标是在仍能捕捉 关键物理的前提下使用尽可能少的点数。这能提高计算速度而不牺牲精度。
- 更多点数 ≠ 总是更好:在电学模型中,方程作为边值问题在网格点之间求解, 而不是简单的线性插值。这意味着你常常可以用出乎意料的少量点数获得良好结果——从而实现非常快速的仿真。
- 用粗网格进行探索:在测试拟合或研究一般器件行为时, 可以大胆降低网格密度,以获得快速反馈。一旦你对设置有信心, 再细化网格以提高精度。