Simulation Experiment: Silicon Waveguide #36

Open
opened 2024-05-04 19:23:12 +02:00 by so-rose · 1 comment

A benchmarking simulation with the following parameters:

  • Square silicon monoxide waveguide on silicon dioxide membrane
  • Injected plane wave of finite extent into the waveguide.
    • Fundamentally, two ways to do this: Either inject from a source in air, or inject into the waveguide itself.
  • Analyze transmission at entry, 20um, 40um, 80um.
  • Plot transmission losses on logarithmic scale.
  • Parameterize transmission loss by symbolic \lambda.
  • Optimize transmission by running simulations w/\lambda in a gradient-based optimization.
A benchmarking simulation with the following parameters: - [x] Square silicon monoxide waveguide on silicon dioxide membrane - [x] Injected plane wave of finite extent into the waveguide. - Fundamentally, two ways to do this: Either inject from a source in air, or inject into the waveguide itself. - [x] Analyze transmission at entry, 20um, 40um, 80um. - [x] Plot transmission losses on logarithmic scale. - [x] Parameterize transmission loss by symbolic $\lambda$. - [ ] Optimize transmission by running simulations w/$\lambda$ in a gradient-based optimization.
so-rose added the
physical
label 2024-05-04 19:23:49 +02:00
so-rose added the
simulation
label 2024-05-04 19:25:08 +02:00
so-rose added a new dependency 2024-05-04 19:25:28 +02:00
so-rose started working 2024-05-05 09:59:02 +02:00
Poster
Owner

Ran simulation with PointDipoleNode instead of a finite-extent plane wave, "get it going" (top next step is implementing an angled finite-extent gaussian plane wave).

Managed to get it working quite well w/end-to-end design-run-analysis.

Transmission Curves

The following plots are computed directly in the .blend, per-\lambda using F_{\text{inj}}(\lambda) / F_{\text{*}}(\lambda), where inj refers to

Flux (0um).png

and * refers to:

10um
T(10um).png

40um
T(40um).png

80um
T(80um).png

Next Steps

  • I want to see a cross section of the fields when using PointDipoleNode, since they should experience a characteristic "leakage" - "leakage" that makes them generally unsuitable for doing this kind of analysis with them. I did manage to get a 3D voxel field of the first and last micrometer (w/space around) out, but with a resolution of x,y,z,t = 17,3,12,1025, it's quite pointless to look at (though fun playback!)
  • While I can do transmission loss analysis on the above curves, the PointDipole really messes up any hope of useful results (if the idea is to analyze the waveguide's transmission loss. I need a finite-extent angled source, and I'd like to impelement the GaussianBeam to that end.
    • While Tidy3D does have a ModeSource for automating the process of finding/solving for guided mode resonances, as well as helper utilities to build waveguides, I'd rather focus on understanding the primitives that let me inject EM waves in more flexible ways. The node tools are very good at turning flexibility into usability, and right now I need to be able to say "I need an angled wave".
  • It needs to be a vacwl -> watt graph, not a freq -> watt. We also will be needing to combine them. On the whole, one is already missing the TODO math nodes Transform and Expand.

Bugs

Many bugs were found. None so far are show-stoppers; simply annoyances that I've been doing my very best to document, fix, etc. .

Some are also simply papercuts in terms of UX. Like the lack of unit-dimension-guided socket colors. These kinds of things are equally important to fix - "confusing" is a bug.

Before I continue, I'll be making Issues for what I find and closing them as a way to document my progress.

Ran simulation with `PointDipoleNode` instead of a finite-extent plane wave, "get it going" (top next step is implementing an angled finite-extent gaussian plane wave). Managed to get it working quite well w/end-to-end design-run-analysis. # Transmission Curves The following plots are computed directly in the `.blend`, per-$\lambda$ using $F_{\text{inj}}(\lambda) / F_{\text{*}}(\lambda)$, where `inj` refers to ![Flux (0um).png](/attachments/95de8a4f-910d-44c7-9aa1-61a6119434f1) and `*` refers to: **10um** ![T(10um).png](/attachments/888a2b46-23b0-4200-bae1-0107e8b90322) **40um** ![T(40um).png](/attachments/c3825f4f-86a4-4de9-bf68-b0090f0505fa) **80um** ![T(80um).png](/attachments/a27e1b25-eb8a-400e-a519-518368dee952) # Next Steps - I want to see a cross section of the fields when using `PointDipoleNode`, since they should experience a characteristic "leakage" - "leakage" that makes them generally unsuitable for doing this kind of analysis with them. I did manage to get a 3D voxel field of the first and last micrometer (w/space around) out, but with a resolution of `x,y,z,t = 17,3,12,1025`, it's quite pointless to look at (though fun playback!) - While I can do transmission loss analysis on the above curves, the `PointDipole` really messes up any hope of useful results (if the idea is to analyze the waveguide's transmission loss. **I need a finite-extent angled source**, and I'd like to impelement the `GaussianBeam` to that end. - While Tidy3D does have a `ModeSource` for automating the process of finding/solving for guided mode resonances, as well as helper utilities to build waveguides, I'd rather focus on understanding the primitives that let me inject EM waves in more flexible ways. The node tools are very good at turning flexibility into usability, and right now I need to be able to say "I need an angled wave". - It needs to be a `vacwl -> watt` graph, not a `freq -> watt`. We also will be needing to combine them. On the whole, one is already missing the TODO math nodes `Transform` and `Expand`. # Bugs Many bugs were found. None so far are show-stoppers; simply annoyances that I've been doing my very best to document, fix, etc. . Some are also simply papercuts in terms of UX. Like the lack of unit-dimension-guided socket colors. These kinds of things are equally important to fix - **"confusing" is a bug**. Before I continue, I'll be making Issues for what I find and closing them as a way to document my progress.
so-rose stopped working 2024-05-05 14:00:00 +02:00
4 hours
so-rose added this to the Robust Simulation milestone 2024-05-07 10:03:35 +02:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Total Time Spent: 4 hours
so-rose
4 hours
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Blocks
Reference: so-rose/oscillode#36
There is no content yet.