Skip to content

Commit 85fdc8b

Browse files
tylerflexmomchil-flex
authored andcommitted
add Structure.background_medium
1 parent e8867ca commit 85fdc8b

File tree

6 files changed

+130
-42
lines changed

6 files changed

+130
-42
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1919
- `CustomMedium` design regions require far less data when performing inverse design by reducing adjoint field monitor size for dims with one pixel.
2020
- Calling `.values` on `DataArray` no longer raises a `DeprecationWarning` during automatic differentiation.
2121
- Minimum number of PML layers set to 6.
22+
- `Structure.background_permittivity : float` for specifying background medium for shape differentiation deprecated in favor of `Structure.background_medium : Medium` for more generality.
2223

2324
### Fixed
2425
- Regression in local field projection leading to incorrect results for `far_field_approx=True`.

tests/sims/simulation_sample.json

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"length": 1.0
4242
},
4343
"name": "traced_dieletric_cylinder",
44-
"background_permittivity": null,
44+
"background_medium": null,
4545
"type": "Structure",
4646
"medium": {
4747
"attrs": {},
@@ -73,7 +73,7 @@
7373
]
7474
},
7575
"name": "traced_dieletric_box",
76-
"background_permittivity": null,
76+
"background_medium": null,
7777
"type": "Structure",
7878
"medium": {
7979
"attrs": {},
@@ -117,7 +117,7 @@
117117
]
118118
},
119119
"name": "traced custom polyslab",
120-
"background_permittivity": null,
120+
"background_medium": null,
121121
"type": "Structure",
122122
"medium": {
123123
"attrs": {},
@@ -152,7 +152,7 @@
152152
]
153153
},
154154
"name": "dieletric_box",
155-
"background_permittivity": null,
155+
"background_medium": null,
156156
"type": "Structure",
157157
"medium": {
158158
"attrs": {},
@@ -184,7 +184,7 @@
184184
]
185185
},
186186
"name": "lossy_box",
187-
"background_permittivity": null,
187+
"background_medium": null,
188188
"type": "Structure",
189189
"medium": {
190190
"attrs": {},
@@ -212,7 +212,7 @@
212212
]
213213
},
214214
"name": "sellmeier_sphere",
215-
"background_permittivity": null,
215+
"background_medium": null,
216216
"type": "Structure",
217217
"medium": {
218218
"attrs": {},
@@ -252,7 +252,7 @@
252252
]
253253
},
254254
"name": "lorentz_box",
255-
"background_permittivity": null,
255+
"background_medium": null,
256256
"type": "Structure",
257257
"medium": {
258258
"attrs": {},
@@ -290,7 +290,7 @@
290290
]
291291
},
292292
"name": null,
293-
"background_permittivity": null,
293+
"background_medium": null,
294294
"type": "Structure",
295295
"medium": {
296296
"attrs": {},
@@ -322,7 +322,7 @@
322322
}
323323
},
324324
"name": null,
325-
"background_permittivity": null,
325+
"background_medium": null,
326326
"type": "Structure",
327327
"medium": {
328328
"attrs": {},
@@ -359,7 +359,7 @@
359359
]
360360
},
361361
"name": "drude_box",
362-
"background_permittivity": null,
362+
"background_medium": null,
363363
"type": "Structure",
364364
"medium": {
365365
"attrs": {},
@@ -396,7 +396,7 @@
396396
]
397397
},
398398
"name": null,
399-
"background_permittivity": null,
399+
"background_medium": null,
400400
"type": "Structure",
401401
"medium": {
402402
"attrs": {},
@@ -472,7 +472,7 @@
472472
]
473473
},
474474
"name": null,
475-
"background_permittivity": null,
475+
"background_medium": null,
476476
"type": "Structure",
477477
"medium": {
478478
"attrs": {},
@@ -522,7 +522,7 @@
522522
]
523523
},
524524
"name": null,
525-
"background_permittivity": null,
525+
"background_medium": null,
526526
"type": "Structure",
527527
"medium": {
528528
"attrs": {},
@@ -592,7 +592,7 @@
592592
]
593593
},
594594
"name": "pec_group",
595-
"background_permittivity": null,
595+
"background_medium": null,
596596
"type": "Structure",
597597
"medium": {
598598
"attrs": {},
@@ -622,7 +622,7 @@
622622
"length": 2.0
623623
},
624624
"name": "anisotopic_cylinder",
625-
"background_permittivity": null,
625+
"background_medium": null,
626626
"type": "Structure",
627627
"medium": {
628628
"attrs": {},
@@ -700,7 +700,7 @@
700700
]
701701
},
702702
"name": "pole_slab",
703-
"background_permittivity": null,
703+
"background_medium": null,
704704
"type": "Structure",
705705
"medium": {
706706
"attrs": {},
@@ -743,7 +743,7 @@
743743
]
744744
},
745745
"name": null,
746-
"background_permittivity": null,
746+
"background_medium": null,
747747
"type": "Structure",
748748
"medium": {
749749
"attrs": {},
@@ -778,7 +778,7 @@
778778
]
779779
},
780780
"name": null,
781-
"background_permittivity": null,
781+
"background_medium": null,
782782
"type": "Structure",
783783
"medium": {
784784
"attrs": {},
@@ -817,7 +817,7 @@
817817
]
818818
},
819819
"name": null,
820-
"background_permittivity": null,
820+
"background_medium": null,
821821
"type": "Structure",
822822
"medium": {
823823
"attrs": {},
@@ -857,7 +857,7 @@
857857
]
858858
},
859859
"name": null,
860-
"background_permittivity": null,
860+
"background_medium": null,
861861
"type": "Structure",
862862
"medium": {
863863
"attrs": {},
@@ -896,7 +896,7 @@
896896
]
897897
},
898898
"name": null,
899-
"background_permittivity": null,
899+
"background_medium": null,
900900
"type": "Structure",
901901
"medium": {
902902
"attrs": {},
@@ -935,7 +935,7 @@
935935
]
936936
},
937937
"name": null,
938-
"background_permittivity": null,
938+
"background_medium": null,
939939
"type": "Structure",
940940
"medium": {
941941
"attrs": {},
@@ -973,7 +973,7 @@
973973
]
974974
},
975975
"name": null,
976-
"background_permittivity": null,
976+
"background_medium": null,
977977
"type": "Structure",
978978
"medium": {
979979
"attrs": {},
@@ -1014,7 +1014,7 @@
10141014
]
10151015
},
10161016
"name": null,
1017-
"background_permittivity": null,
1017+
"background_medium": null,
10181018
"type": "Structure",
10191019
"medium": {
10201020
"attrs": {},
@@ -1071,7 +1071,7 @@
10711071
]
10721072
},
10731073
"name": null,
1074-
"background_permittivity": null,
1074+
"background_medium": null,
10751075
"type": "Structure",
10761076
"medium": {
10771077
"attrs": {},
@@ -1135,7 +1135,7 @@
11351135
]
11361136
},
11371137
"name": null,
1138-
"background_permittivity": null,
1138+
"background_medium": null,
11391139
"type": "Structure",
11401140
"medium": {
11411141
"attrs": {},
@@ -1192,7 +1192,7 @@
11921192
]
11931193
},
11941194
"name": null,
1195-
"background_permittivity": null,
1195+
"background_medium": null,
11961196
"type": "Structure",
11971197
"medium": {
11981198
"attrs": {},
@@ -1249,7 +1249,7 @@
12491249
]
12501250
},
12511251
"name": null,
1252-
"background_permittivity": null,
1252+
"background_medium": null,
12531253
"type": "Structure",
12541254
"medium": {
12551255
"attrs": {},
@@ -1299,7 +1299,7 @@
12991299
]
13001300
},
13011301
"name": null,
1302-
"background_permittivity": null,
1302+
"background_medium": null,
13031303
"type": "Structure",
13041304
"medium": {
13051305
"attrs": {},
@@ -1336,7 +1336,7 @@
13361336
]
13371337
},
13381338
"name": null,
1339-
"background_permittivity": null,
1339+
"background_medium": null,
13401340
"type": "Structure",
13411341
"medium": {
13421342
"attrs": {},
@@ -1414,7 +1414,7 @@
14141414
]
14151415
},
14161416
"name": null,
1417-
"background_permittivity": null,
1417+
"background_medium": null,
14181418
"type": "Structure",
14191419
"medium": {
14201420
"attrs": {},
@@ -1452,7 +1452,7 @@
14521452
}
14531453
},
14541454
"name": "dieletric_mesh",
1455-
"background_permittivity": null,
1455+
"background_medium": null,
14561456
"type": "Structure",
14571457
"medium": {
14581458
"attrs": {},
@@ -1494,7 +1494,7 @@
14941494
]
14951495
},
14961496
"name": null,
1497-
"background_permittivity": null,
1497+
"background_medium": null,
14981498
"type": "Structure",
14991499
"medium": {
15001500
"attrs": {},
@@ -1545,7 +1545,7 @@
15451545
}
15461546
},
15471547
"name": "clip_operation",
1548-
"background_permittivity": null,
1548+
"background_medium": null,
15491549
"type": "Structure",
15501550
"medium": {
15511551
"attrs": {},
@@ -1607,7 +1607,7 @@
16071607
]
16081608
},
16091609
"name": "transformed_box",
1610-
"background_permittivity": null,
1610+
"background_medium": null,
16111611
"type": "Structure",
16121612
"medium": {
16131613
"attrs": {},
@@ -2842,7 +2842,7 @@
28422842
]
28432843
},
28442844
"name": null,
2845-
"background_permittivity": null,
2845+
"background_medium": null,
28462846
"type": "Structure",
28472847
"medium": {
28482848
"attrs": {},

tests/test_components/test_autograd.py

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ def make_structures(params: anp.ndarray) -> dict[str, td.Structure]:
281281
size_element = td.Structure(
282282
geometry=td.Box(center=(0, 0, 0), size=(1, size_y, 1)),
283283
medium=med,
284-
background_permittivity=5.0,
284+
background_medium=td.Medium(permittivity=5.0),
285285
)
286286

287287
# custom medium with variable permittivity data
@@ -1710,6 +1710,55 @@ def objective(params):
17101710
g = ag.grad(objective)(params0)
17111711

17121712

1713+
def test_background_medium(log_capture):
1714+
geo = td.Box(size=(1, 1, 1), center=(0, 0, 0))
1715+
med = td.Medium(permittivity=2.0)
1716+
1717+
background_permittivity = 5.0
1718+
background_medium = td.Medium(permittivity=background_permittivity)
1719+
1720+
# nothing
1721+
s = td.Structure(
1722+
geometry=geo,
1723+
medium=med,
1724+
)
1725+
1726+
# both supplied, consistent
1727+
td.Structure(
1728+
geometry=geo,
1729+
medium=med,
1730+
background_permittivity=background_permittivity,
1731+
background_medium=background_medium,
1732+
)
1733+
1734+
# both supplied, inconsistent
1735+
with pytest.raises(ValueError):
1736+
td.Structure(
1737+
geometry=geo,
1738+
medium=med,
1739+
background_permittivity=background_permittivity + 1,
1740+
background_medium=background_medium,
1741+
)
1742+
1743+
# background medium (preferred)
1744+
s = td.Structure(
1745+
geometry=geo,
1746+
medium=med,
1747+
background_medium=background_medium,
1748+
)
1749+
1750+
# background permittivity (deprecated)
1751+
with AssertLogLevel(log_capture, "WARNING", contains_str="deprecated"):
1752+
s_warn = td.Structure(
1753+
geometry=geo,
1754+
medium=med,
1755+
background_permittivity=background_permittivity,
1756+
)
1757+
1758+
assert s_warn.background_medium is not None
1759+
assert s_warn.background_medium.permittivity == background_permittivity
1760+
1761+
17131762
class TestTidyArrayBox:
17141763
def test_is_tidy_box(self):
17151764
da = DataArray(tracer_arr, dims=map(str, range(tracer_arr.ndim)))

0 commit comments

Comments
 (0)