Skip to content

Commit 6e9acad

Browse files
update
1 parent 0ae4d61 commit 6e9acad

File tree

4 files changed

+297
-77
lines changed

4 files changed

+297
-77
lines changed

tests/test_components/test_boundaries.py

Lines changed: 40 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -204,35 +204,35 @@ def test_abc_boundary():
204204
with pytest.raises(pydantic.ValidationError):
205205
_ = td.ABCBoundary(permittivity=None, conductivity=-0.1)
206206

207-
# test abc mode spec
207+
# test mode abc
208208
wvl_um = 1
209209
freq0 = td.C_0 / wvl_um
210-
abc_mode_spec = td.ABCModeSpec(
211-
size=(1, 1, 0),
210+
mode_abc = td.ModeABCBoundary(
211+
plane=td.Box(size=(1, 1, 0)),
212212
mode_spec=td.ModeSpec(num_modes=2),
213213
mode_index=1,
214214
frequency=freq0,
215215
)
216216

217217
with pytest.raises(pydantic.ValidationError):
218-
_ = td.ABCModeSpec(
219-
size=(1, 1, 0),
218+
_ = td.ModeABCBoundary(
219+
plane=td.Box(size=(1, 1, 0)),
220220
mode_spec=td.ModeSpec(num_modes=2),
221221
mode_index=1,
222222
frequency=-1,
223223
)
224224

225225
with pytest.raises(pydantic.ValidationError):
226-
_ = td.ABCModeSpec(
227-
size=(1, 1, 0),
226+
_ = td.ModeABCBoundary(
227+
plane=td.Box(size=(1, 1, 0)),
228228
mode_spec=td.ModeSpec(num_modes=2),
229229
mode_index=-1,
230230
frequency=freq0,
231231
)
232232

233233
with pytest.raises(pydantic.ValidationError):
234-
_ = td.ABCModeSpec(
235-
size=(1, 1, 1),
234+
_ = td.ModeABCBoundary(
235+
plane=td.Box(size=(1, 1, 1)),
236236
mode_spec=td.ModeSpec(num_modes=2),
237237
mode_index=0,
238238
frequency=freq0,
@@ -246,24 +246,41 @@ def test_abc_boundary():
246246
mode_index=1,
247247
direction="+",
248248
)
249+
mode_abc_from_source = td.ModeABCBoundary.from_source(mode_source)
250+
assert mode_abc == mode_abc_from_source
249251

250-
abc_mode_spec_from_source = td.ABCModeSpec.from_source(mode_source)
251-
252-
assert abc_mode_spec == abc_mode_spec_from_source
253-
254-
_ = td.ABCBoundary(permittivity=abc_mode_spec)
255-
256-
with pytest.raises(pydantic.ValidationError):
257-
_ = td.ABCBoundary(permittivity=abc_mode_spec, conductivity=0.1)
252+
# from mode monitor
253+
mode_monitor = td.ModeMonitor(
254+
size=(1, 1, 0), mode_spec=td.ModeSpec(num_modes=2), freqs=[freq0], name="mnt"
255+
)
256+
mode_abc_from_monitor = td.ModeABCBoundary.from_monitor(
257+
mode_monitor, mode_index=1, frequency=freq0
258+
)
259+
assert mode_abc == mode_abc_from_monitor
258260

259261
# in Boundary
260262
_ = td.Boundary(
261-
minus=td.ABCBoundary(permittivity=3), plus=td.ABCBoundary(permittivity=abc_mode_spec)
263+
minus=td.ABCBoundary(permittivity=3), plus=td.ModeABCBoundary(plane=td.Box(size=(1, 1, 0)))
262264
)
263265
_ = td.Boundary.abc(permittivity=3, conductivity=1e-5)
266+
abc_boundary = td.Boundary.mode_abc(
267+
plane=td.Box(size=(1, 1, 0)),
268+
mode_spec=td.ModeSpec(num_modes=2),
269+
mode_index=1,
270+
frequency=freq0,
271+
)
272+
abc_boundary_from_source = td.Boundary.mode_abc_from_source(mode_source)
273+
abc_boundary_from_monitor = td.Boundary.mode_abc_from_monitor(
274+
mode_monitor, mode_index=1, frequency=freq0
275+
)
276+
assert abc_boundary == abc_boundary_from_source
277+
assert abc_boundary == abc_boundary_from_monitor
264278

265279
with pytest.raises(pydantic.ValidationError):
266-
_ = td.Boundary(minus=td.Periodic(), plus=td.ABCBoundary(permittivity=abc_mode_spec))
280+
_ = td.Boundary(minus=td.Periodic(), plus=td.ABCBoundary())
281+
282+
with pytest.raises(pydantic.ValidationError):
283+
_ = td.Boundary(minus=td.Periodic(), plus=td.ModeABCBoundary(plane=td.Box(size=(1, 1, 0))))
267284

268285
# in Simulation
269286
_ = td.Simulation(
@@ -390,7 +407,7 @@ def test_abc_boundary():
390407
boundary_spec=td.BoundarySpec.all_sides(td.ABCBoundary()),
391408
)
392409

393-
# need to define frequence for ABCModeSpec
410+
# need to define frequence for ModeABCBoundary
394411
# manually
395412
_ = td.Simulation(
396413
center=[0, 0, 0],
@@ -402,7 +419,7 @@ def test_abc_boundary():
402419
sources=[],
403420
run_time=1e-20,
404421
boundary_spec=td.BoundarySpec.all_sides(
405-
td.ABCBoundary(permittivity=td.ABCModeSpec(size=(1, 1, 0), frequency=freq0))
422+
td.ModeABCBoundary(plane=td.Box(size=(1, 1, 0)), frequency=freq0)
406423
),
407424
)
408425
# or at least one source
@@ -415,9 +432,7 @@ def test_abc_boundary():
415432
),
416433
sources=[mode_source],
417434
run_time=1e-20,
418-
boundary_spec=td.BoundarySpec.all_sides(
419-
td.ABCBoundary(permittivity=td.ABCModeSpec(size=(1, 1, 0)))
420-
),
435+
boundary_spec=td.BoundarySpec.all_sides(td.ModeABCBoundary(plane=td.Box(size=(1, 1, 0)))),
421436
)
422437
# multiple sources with different central freqs is still ok, but show warning
423438
with AssertLogLevel(
@@ -438,6 +453,6 @@ def test_abc_boundary():
438453
],
439454
run_time=1e-20,
440455
boundary_spec=td.BoundarySpec.all_sides(
441-
td.ABCBoundary(permittivity=td.ABCModeSpec(size=(1, 1, 0)))
456+
td.ModeABCBoundary(plane=td.Box(size=(1, 1, 0)))
442457
),
443458
)

tidy3d/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@
9292
from .components.boundary import (
9393
PML,
9494
ABCBoundary,
95-
ABCModeSpec,
9695
Absorber,
9796
AbsorberParams,
9897
BlochBoundary,
@@ -103,6 +102,7 @@
103102
DefaultAbsorberParameters,
104103
DefaultPMLParameters,
105104
DefaultStablePMLParameters,
105+
ModeABCBoundary,
106106
PECBoundary,
107107
Periodic,
108108
PMCBoundary,
@@ -532,7 +532,7 @@ def set_logging_level(level: str) -> None:
532532
"PECBoundary",
533533
"PMCBoundary",
534534
"ABCBoundary",
535-
"ABCModeSpec",
535+
"ModeABCBoundary",
536536
"PML",
537537
"StablePML",
538538
"Absorber",

0 commit comments

Comments
 (0)