Skip to content

Commit 168309c

Browse files
daquinteroflexmarc-flex
authored andcommitted
still trying to debug this validator?
1 parent 9d731ac commit 168309c

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

Diff for: tidy3d/components/tcad/simulation/heat_charge.py

+17-11
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
plot_params_heat_bc,
8080
plot_params_heat_source,
8181
)
82-
from tidy3d.components.types import TYPE_TAG_STR, Ax, Bound, ScalarSymmetry, Shapely
82+
from tidy3d.components.types import TYPE_TAG_STR, Ax, Bound, ScalarSymmetry, Shapely, annotate_type
8383
from tidy3d.components.viz import PlotParams, add_ax_if_none, equal_aspect
8484
from tidy3d.constants import VOLUMETRIC_HEAT_RATE, inf
8585
from tidy3d.exceptions import SetupError
@@ -260,22 +260,24 @@ class HeatChargeSimulation(AbstractSimulation):
260260
Background medium of simulation, defaults to a standard dispersion-less :class:`Medium` if not specified.
261261
"""
262262

263-
sources: Tuple[HeatChargeSourceType, ...] = pd.Field(
263+
sources: Tuple[annotate_type(HeatChargeSourceType), ...] = pd.Field(
264264
(),
265265
title="Heat and Charge sources",
266266
description="List of heat and/or charge sources.",
267267
discriminator=TYPE_TAG_STR,
268268
)
269269

270-
monitors: Tuple[HeatChargeMonitorType, ...] = pd.Field(
270+
monitors: Tuple[annotate_type(HeatChargeMonitorType), ...] = pd.Field(
271271
(), title="Monitors", description="Monitors in the simulation.", discriminator=TYPE_TAG_STR
272272
)
273273

274-
boundary_spec: Tuple[Union[HeatChargeBoundarySpec, HeatBoundarySpec], ...] = pd.Field(
275-
(),
276-
title="Boundary Condition Specifications",
277-
description="List of boundary condition specifications.",
278-
discriminator=TYPE_TAG_STR,
274+
boundary_spec: Tuple[annotate_type(Union[HeatChargeBoundarySpec, HeatBoundarySpec]), ...] = (
275+
pd.Field(
276+
(),
277+
title="Boundary Condition Specifications",
278+
description="List of boundary condition specifications.",
279+
discriminator=TYPE_TAG_STR,
280+
)
279281
)
280282
# NOTE: creating a union with HeatBoundarySpec for backwards compatibility
281283

@@ -320,7 +322,7 @@ def _check_cross_solids(objs: Tuple[Box, ...], values: Dict) -> Tuple[int, ...]:
320322

321323
# NOTE: when considering CONDUCTION or CHARGE cases, both conductors and semiconductors
322324
# will be accepted
323-
ValidElectricTypes = Union[SemiconductorMedium, ChargeConductorMedium]
325+
valid_electric_medium = (SemiconductorMedium, ChargeConductorMedium)
324326

325327
try:
326328
size = values["size"]
@@ -356,7 +358,8 @@ def _check_cross_solids(objs: Tuple[Box, ...], values: Dict) -> Tuple[int, ...]:
356358
isinstance(medium.heat_spec, SolidSpec) for medium in medium_set
357359
)
358360
crosses_elec_spec = any(
359-
isinstance(medium.charge, ValidElectricTypes) for medium in medium_set
361+
any([isinstance(medium.charge, medium_i)] for medium_i in valid_electric_medium)
362+
for medium in medium_set
360363
)
361364
else:
362365
# approximate check for volumetric objects based on bounding boxes
@@ -369,7 +372,10 @@ def _check_cross_solids(objs: Tuple[Box, ...], values: Dict) -> Tuple[int, ...]:
369372
crosses_elec_spec = any(
370373
obj.intersects(structure.geometry)
371374
for structure in total_structures
372-
if isinstance(structure.medium.charge, ValidElectricTypes)
375+
if any(
376+
[isinstance(structure.medium.charge, medium_i)]
377+
for medium_i in valid_electric_medium
378+
)
373379
)
374380

375381
if not crosses_solid:

0 commit comments

Comments
 (0)