Skip to content

Commit 954a43a

Browse files
Add ContourPath averaging option to dielectric subpixel
1 parent 14f326d commit 954a43a

File tree

4 files changed

+21
-2
lines changed

4 files changed

+21
-2
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111
- `fill` and `fill_structures` argument in `td.Simulation.plot_structures()` and `td.Simulation.plot()` respectively to disable fill and plot outlines of structures only.
12+
- New subpixel averaging option `ContourPathAveraging` applied to dielectric material boundaries.
13+
1214
### Fixed
1315
- Compatibility with `xarray>=2025.03`.
1416

docs/api/subpixel_averaging.rst

+1
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ Types of Subpixel Averaging Methods
2020
tidy3d.VolumetricAveraging
2121
tidy3d.HeuristicPECStaircasing
2222
tidy3d.PolarizedAveraging
23+
tidy3d.ContourPathAveraging
2324
tidy3d.PECConformal
2425
tidy3d.SurfaceImpedance

tidy3d/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,7 @@
333333

334334
# subpixel
335335
from .components.subpixel_spec import (
336+
ContourPathAveraging,
336337
HeuristicPECStaircasing,
337338
PECConformal,
338339
PolarizedAveraging,
@@ -627,6 +628,7 @@ def set_logging_level(level: str) -> None:
627628
"Staircasing",
628629
"VolumetricAveraging",
629630
"PolarizedAveraging",
631+
"ContourPathAveraging",
630632
"HeuristicPECStaircasing",
631633
"PECConformal",
632634
"SurfaceImpedance",

tidy3d/components/subpixel_spec.py

+16-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ class Staircasing(AbstractSubpixelAveragingMethod):
3939

4040

4141
class PolarizedAveraging(AbstractSubpixelAveragingMethod):
42-
"""Apply a polarized subpixel averaging method to dielectric boundaries.
42+
"""Apply a polarized subpixel averaging method to dielectric boundaries, which
43+
is a phenomenological approximation of :class:`.ContourPathAveraging`.
4344
4445
Note
4546
----
@@ -51,7 +52,20 @@ class PolarizedAveraging(AbstractSubpixelAveragingMethod):
5152
"""
5253

5354

54-
DielectricSubpixelType = Union[Staircasing, PolarizedAveraging]
55+
class ContourPathAveraging(AbstractSubpixelAveragingMethod):
56+
"""Apply a contour-path subpixel averaging method to dielectric boundaries.
57+
58+
Note
59+
----
60+
The algorithm is based on:
61+
62+
A. Mohammadi, H. Nadgaran and M. Agio, "Contour-path effective
63+
permittivities for the two-dimensional finite-difference
64+
time-domain method", Optics express, 13(25), 10367-10381 (2005).
65+
"""
66+
67+
68+
DielectricSubpixelType = Union[Staircasing, PolarizedAveraging, ContourPathAveraging]
5569

5670

5771
class VolumetricAveraging(AbstractSubpixelAveragingMethod):

0 commit comments

Comments
 (0)