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

"""Defines heat material specifications"""

from __future__ import annotations

import pydantic.v1 as pd

from tidy3d.components.spice.sources.types import CurrentSourceType, VoltageSourceType
from tidy3d.components.tcad.boundary.abstract import HeatChargeBC
from tidy3d.constants import CURRENT_DENSITY, VOLT


[docs] class VoltageBC(HeatChargeBC): """ Constant electric potential (voltage) :math:`= \\text{V}` boundary condition. Sets a potential at the specified boundary. Notes ----- In charge simulations it also accepts an array of voltages. In this case, a solution for each of these voltages will be computed. Example ------- >>> import tidy3d as td >>> voltage_source = td.DCVoltageSource(voltage=1) >>> voltage_bc = td.VoltageBC(source=voltage_source) """ source: VoltageSourceType = pd.Field( ..., title="Voltage", description="Electric potential to be applied at the specified boundary.", units=VOLT, )
[docs] class CurrentBC(HeatChargeBC): """ Current boundary conditions. Example ------- >>> import tidy3d as td >>> current_source = td.DCCurrentSource(current=1) >>> current_bc = CurrentBC(source=current_source) """ source: CurrentSourceType = pd.Field( ..., title="Current Source", description="A current source", units=CURRENT_DENSITY, )
# TODO translation between currentsource amps and currentdensity, why not amps here?
[docs] class InsulatingBC(HeatChargeBC): """Insulation boundary condition. Notes ----- Ensures the electric potential to the normal :math:`\\nabla \\psi \\cdot \\mathbf{n} = 0` as well as the surface recombination current density :math:`J_s = \\mathbf{J} \\cdot \\mathbf{n} = 0` are set to zero where the current density is :math:`\\mathbf{J_n}` and the normal vector is :math:`\\mathbf{n}` Example ------- >>> bc = InsulatingBC() """