Skip to content

Commit e2ae3b8

Browse files
Thin conductor thickness in LossyMetalMedium
1 parent 5f6ddb4 commit e2ae3b8

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
### Added
1111

1212
- Added `eps_lim` keyword argument to `Simulation.plot_eps()` for manual control over the permittivity color limits.
13+
- Added `thickness` parameter to `LossyMetalMedium` for computing surface impedance of a thin conductor.
1314

1415
### Changed
1516
- Relaxed bounds checking of path integrals during `WavePort` validation.

tests/test_components/test_medium.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,11 @@ def test_lossy_metal():
174174
model = mat.scaled_surface_impedance_model
175175
num_poles = mat.num_poles
176176

177+
# thickness
178+
mat = td.LossyMetalMedium(conductivity=1.0, frequency_range=(1e14, 4e14), thickness=0.1)
179+
model = mat.scaled_surface_impedance_model
180+
num_poles = mat.num_poles
181+
177182

178183
def test_lossy_metal_surface_roughness():
179184
mat_orig = td.LossyMetalMedium(

tidy3d/components/medium.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5509,6 +5509,14 @@ class LossyMetalMedium(Medium):
55095509
discriminator=TYPE_TAG_STR,
55105510
)
55115511

5512+
thickness: pd.PositiveFloat = pd.Field(
5513+
None,
5514+
title="Conductor Thickness",
5515+
description="When the thickness of the conductor is not much greater than skin depth, "
5516+
"1D transmission line model is applied to compute the surface impedance of the thin conductor.",
5517+
units=MICROMETER,
5518+
)
5519+
55125520
frequency_range: FreqBound = pd.Field(
55135521
...,
55145522
title="Frequency Range",
@@ -5595,6 +5603,10 @@ def surface_impedance(self, frequencies: ArrayFloat1D):
55955603
skin_depths = 1 / np.sqrt(np.pi * frequencies * MU_0 * self.conductivity)
55965604
correction = self.roughness.roughness_correction_factor(frequencies, skin_depths)
55975605

5606+
if self.thickness is not None:
5607+
k_wave = self.Hz_to_angular_freq(frequencies) / C_0 * (n + 1j * k)
5608+
correction /= -np.tanh(1j * k_wave * self.thickness)
5609+
55985610
return correction * ETA_0 / (n + 1j * k)
55995611

56005612
@cached_property

0 commit comments

Comments
 (0)