Source code for tidy3d.components.tcad.monitors.charge

"""Objects that define how data is recorded from simulation."""

from __future__ import annotations

from typing import Literal

from pydantic import Field

from tidy3d.components.tcad.monitors.abstract import HeatChargeMonitor


[docs] class SteadyPotentialMonitor(HeatChargeMonitor): """ Electric potential (:math:`\\psi`) monitor. Example ------- >>> import tidy3d as td >>> voltage_monitor_z0 = td.SteadyPotentialMonitor( ... center=(0, 0.14, 0), size=(0.6, 0.3, 0), name="voltage_z0", unstructured=True, ... ) """
[docs] class SteadyFreeCarrierMonitor(HeatChargeMonitor): """ Free-carrier monitor for Charge simulations. Example ------- >>> import tidy3d as td >>> carrier_monitor_z0 = td.SteadyFreeCarrierMonitor( ... center=(0, 0.14, 0), size=(0.6, 0.3, 0), name="carrier_z0", unstructured=True, ... ) """ # NOTE: for the time being supporting unstructured unstructured: Literal[True] = Field( True, title="Unstructured Grid", description="Return data on the original unstructured grid.", )
[docs] class SteadyEnergyBandMonitor(HeatChargeMonitor): """ Energy bands monitor for Charge simulations. Example ------- >>> import tidy3d as td >>> energy_monitor_z0 = td.SteadyEnergyBandMonitor( ... center=(0, 0.14, 0), size=(0.6, 0.3, 0), name="bands_z0", unstructured=True, ... ) """ # NOTE: for the time being supporting unstructured unstructured: Literal[True] = Field( True, title="Unstructured Grid", description="Return data on the original unstructured grid.", )
[docs] class SteadyCapacitanceMonitor(HeatChargeMonitor): """ Capacitance monitor associated with a charge simulation. Example ------- >>> import tidy3d as td >>> capacitance_global_mnt = td.SteadyCapacitanceMonitor( ... center=(0, 0.14, 0), size=(td.inf, td.inf, 0), name="capacitance_global_mnt", ... ) """ # NOTE: for the time being supporting unstructured unstructured: Literal[True] = Field( True, title="Unstructured Grid", description="Return data on the original unstructured grid.", )
[docs] class SteadyElectricFieldMonitor(HeatChargeMonitor): """ Electric field monitor for Charge/Conduction simulations. Example ------- >>> import tidy3d as td >>> electric_field_monitor_z0 = td.SteadyElectricFieldMonitor( ... center=(0, 0.14, 0), size=(0.6, 0.3, 0), name="electric_field_z0", ... ) """ unstructured: Literal[True] = Field( True, title="Unstructured Grid", description="Return data on the original unstructured grid.", )
[docs] class SteadyCurrentDensityMonitor(HeatChargeMonitor): """ Current density monitor for Charge/Conduction simulations. Example ------- >>> import tidy3d as td >>> current_density_monitor_z0 = td.SteadyCurrentDensityMonitor( ... center=(0, 0.14, 0), size=(0.6, 0.3, 0), name="current_density_z0", ... ) """ unstructured: Literal[True] = Field( True, title="Unstructured Grid", description="Return data on the original unstructured grid.", )
[docs] class SteadyChargeResidualMonitor(HeatChargeMonitor): """ Per-node residual monitor for Charge simulations (debug tool). Notes ----- Records the per-node signed residual of each governing equation: :math:`R_\\psi` (Poisson), :math:`R_n` (electron continuity), :math:`R_p` (hole continuity), and :math:`R_T` (heat) when the thermal solver is active. The electron and hole continuity equations express carrier conservation. The values are dimensionless and on the same scale as the simulation's convergence tolerance, so the nodes with the largest :math:`|R|` (those approaching or exceeding that tolerance) are where the solution least satisfies the equations (the least-converged regions). Available only through the accelerated solver. Example ------- >>> import tidy3d as td >>> residual_monitor = td.SteadyChargeResidualMonitor( ... center=(0, 0.14, 0), size=(0.6, 0.3, 0), name="residual_z0", ... ) """ unstructured: Literal[True] = Field( True, title="Unstructured Grid", description="Return data on the original unstructured grid.", )