Skip to content

Commit 42e0474

Browse files
caseyflexyaugenst-flex
authored andcommitted
Bug fix for EME _extract_mode_solver_data introduced in last PR
1 parent d46f94a commit 42e0474

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

tests/test_components/test_eme.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1160,6 +1160,14 @@ def test_eme_sim_data():
11601160
_ = sim_data.port_modes_tuple
11611161
assert len(sim_data.port_modes_list_sweep) == 1
11621162

1163+
with AssertLogLevel("WARNING", contains_str="flux"):
1164+
_ = sim_data._extract_mode_solver_data(
1165+
data=sim_data.port_modes.updated_copy(
1166+
monitor=sim.port_modes_monitor.updated_copy(size=(0, td.inf, td.inf))
1167+
),
1168+
eme_cell_index=0,
1169+
)
1170+
11631171
# test freq sweep smatrix_in_basis
11641172
sim = sim.updated_copy(sweep_spec=td.EMEFreqSweep(freq_scale_factors=np.linspace(1, 2, 10)))
11651173
port_modes = _get_eme_port_modes(num_sweep=10)

tidy3d/components/eme/data/sim_data.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from tidy3d.components.geometry.base import Box
1616
from tidy3d.components.types import annotate_type
1717
from tidy3d.exceptions import SetupError
18+
from tidy3d.log import log
1819

1920
from .dataset import EMESMatrixDataset
2021
from .monitor_data import EMEFieldData, EMEModeSolverData, EMEMonitorDataType
@@ -73,12 +74,20 @@ def _extract_mode_solver_data(
7374
}
7475

7576
monitor = self.simulation.mode_solver_monitors[eme_cell_index]
77+
monitor = monitor.updated_copy(colocate=data.monitor.colocate)
7678
box = Box.from_bounds(
7779
*Box.bounds_intersection(monitor.geometry.bounds, data.monitor.geometry.bounds)
7880
)
7981
size = box.size
8082
center = box.center
81-
monitor = monitor.updated_copy(colocate=data.monitor.colocate, size=size, center=center)
83+
if size.count(0.0) == 1:
84+
monitor = monitor.updated_copy(size=size, center=center)
85+
else:
86+
log.warning(
87+
"'ModeSolverData' extracted from 'EMEModeSolverData' "
88+
"is not 2D, so it may not be possible to compute "
89+
"certain derived quantities, like the flux."
90+
)
8291
grid_expanded = self.simulation.discretize_monitor(monitor=monitor)
8392
return ModeSolverData(**update_dict, monitor=monitor, grid_expanded=grid_expanded)
8493

tidy3d/components/eme/simulation.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
from tidy3d.components.types import Ax, Axis, FreqArray, Symmetry, annotate_type
2828
from tidy3d.components.validators import MIN_FREQUENCY, validate_freqs_min, validate_freqs_not_empty
2929
from tidy3d.components.viz import add_ax_if_none, equal_aspect
30-
from tidy3d.constants import C_0
30+
from tidy3d.constants import C_0, inf
3131
from tidy3d.exceptions import SetupError, ValidationError
3232
from tidy3d.log import log
3333

@@ -560,9 +560,11 @@ def mode_solver_monitors(self) -> list[ModeSolverMonitor]:
560560
@property
561561
def port_modes_monitor(self) -> EMEModeSolverMonitor:
562562
"""EME Mode solver monitor for only the port modes."""
563+
size = [inf, inf, inf]
564+
size[self.axis] = self.size[self.axis]
563565
return EMEModeSolverMonitor(
564566
center=self.center,
565-
size=self.size,
567+
size=size,
566568
eme_cell_interval_space=self.eme_grid.num_cells,
567569
name="_eme_port_modes_monitor",
568570
colocate=False,

0 commit comments

Comments
 (0)