Source code for tidy3d.components.heat.monitor

"""Objects that define how data is recorded from simulation."""
from abc import ABC
import pydantic.v1 as pd
from typing import Union

from ..types import ArrayFloat1D
from ..base_sim.monitor import AbstractMonitor


BYTES_REAL = 4


class HeatMonitor(AbstractMonitor, ABC):
    """Abstract base class for heat monitors."""


[docs] class TemperatureMonitor(HeatMonitor): """Temperature monitor.""" unstructured: bool = pd.Field( False, title="Unstructured Grid", description="Return data on the original unstructured grid.", ) conformal: bool = pd.Field( False, title="Conformal Monitor Meshing", description="If ``True`` the heat simulation mesh will conform to the monitor's geometry. " "While this can be set for both Cartesian and unstructured monitors, it bears higher " "significance for the latter ones. Effectively, setting ``conformal = True`` for " "unstructured monitors (``unstructured = True``) ensures that returned temperature values " "will not be obtained by interpolation during postprocessing but rather directly " "transferred from the computational grid.", )
[docs] def storage_size(self, num_cells: int, tmesh: ArrayFloat1D) -> int: """Size of monitor storage given the number of points after discretization.""" # stores 1 real number per grid cell, per time step, per field num_steps = self.num_steps(tmesh) return BYTES_REAL * num_steps * num_cells * len(self.fields)
# types of monitors that are accepted by heat simulation HeatMonitorType = Union[TemperatureMonitor]