2D TW-MZM cross-section with PN junction and CPW electrodes - #193
Open
mdmaas wants to merge 6 commits into
Open
Conversation
mdmaas
requested review from
cdaunt,
flaport,
joamatab,
nikosavola and
vvahidd
as code owners
July 21, 2026 22:15
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #193 +/- ##
==========================================
+ Coverage 57.19% 57.66% +0.46%
==========================================
Files 69 71 +2
Lines 11506 12235 +729
Branches 2395 2543 +148
==========================================
+ Hits 6581 7055 +474
- Misses 4194 4422 +228
- Partials 731 758 +27 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Contributor
Author
…tering, and per-face colors
…ped PN capacitance
…ault, PyVista return type, ty)
…l override - interactive param is tri-state (None/True/False): explicit True forces a live view, False forces static, None follows set_interactive_mode (off by default) - notebook live views render as one widget per plot on the single shared trame server (server-side by default; GSIM_TRAME_BACKEND / set_trame_backend to switch to client-side vtk.js) - keep live plotters in a registry (interactive_views/close_interactive_views/ close_interactive_view) so multiple views coexist without concurrent servers - front-facing camera for plot_mesh on planar meshes; plot_fields_2d camera preserved through the interactive path - fall back to a static image if a trame widget cannot be created
Contributor
Author
|
@vvahidd I think we could merge this PR, while I continue working on the optical SIM and the overlap integral in future PRs on the notebook, in order to prevent this branch from diverging from the main package too much. The changes are structured around two main goals
|
Adds a simplified all-dielectric cross-section for the TW-MZM optical analysis and makes the Palace 2D background medium configurable. - build_optical_cross_section(): minimal LayerStack where rib/slab/PN all map to plain Si, embedded in a single uniform SiO2 cladding. - set_airbox(material=...): retunes the native-2D BoundaryMode background from air to a cladding material (e.g. "sio2"); default unchanged. The unclaimed domain merges into one SiO2 physical group, so no air volume is emitted. mesh() margin overrides now preserve the material. - Palace boundary-mode configs resolve material dispersion at the operating frequency (Sellmeier Si/SiO2 at 1550 nm) like driven sims. - Quiet trame's debug INFO logging while live views are built. - Notebook: split RF/optical components, run the optical sim on the all-Si rib+slab+PN stack in a uniform SiO2 background, and fix the optical mode-plot cell (field + physical-group constants).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
2D travelling-wave Mach-Zehnder modulator (TW-MZM) cross-section for Palace
BoundaryModeanalysis (RF + optical), with a PN junction modelled as doped semiconductors (finite Drude conductivity) and CPW electrodes.Commits (history rebased from 23 to 4)
Initial cross-section build, doping gradient/vias, native 2D BoundaryMode mesh fixes.
plot_fields_2don PyVista with zoom, physical-group filtering, and per-face colorsSelf-contained visualization rework of the 2D field renderer.
build_doped_cross_section(),make_doping_profile(),plot_plane_section(),ImpedanceBoundaryConfig, PN junction lumped capacitance, palace-cpu bump.Apptainer default,
plot_fields_2dreturn type, Palace parallel defaults, ty/ruff cleanups.Scope
pyproject.toml.nbs/palace_2d_twmzm.ipynb: simplified TW-MZM cross-section (SOI rib, 400 nm / 90 nm slab, CPW signal 20 um / gap 20 um / ground 40 um), 50 GHz RF + 1550 nm opticalBoundaryModeSimruns.make_doping_profile().Conductivityentry for shaped dielectrics with finite sigma.