Source code for tidy3d.components.tcad.data.monitor_data.mesh

"""Monitor data for unstructured volume mesh monitors."""

from __future__ import annotations

from typing import Union

import pydantic.v1 as pd

from tidy3d.components.data.utils import TetrahedralGridDataset, TriangularGridDataset
from tidy3d.components.tcad.data.monitor_data.abstract import HeatChargeMonitorData
from tidy3d.components.tcad.monitors.mesh import VolumeMeshMonitor

UnstructuredFieldType = Union[TriangularGridDataset, TetrahedralGridDataset]


[docs] class VolumeMeshData(HeatChargeMonitorData): """Data associated with a :class:`VolumeMeshMonitor`: stores the unstructured mesh. Example ------- >>> import tidy3d as td >>> import numpy as np >>> mesh_mnt = td.VolumeMeshMonitor(size=(1, 2, 3), name="mesh") >>> tet_grid_points = td.PointDataArray( ... [[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [1.0, 1.0, 0.0], [0.0, 0.0, 1.0]], ... dims=("index", "axis"), ... ) >>> tet_grid_cells = td.CellDataArray( ... [[0, 1, 2, 4], [1, 2, 3, 4]], ... dims=("cell_index", "vertex_index"), ... ) >>> tet_grid_values = td.IndexedDataArray( ... np.zeros((tet_grid_points.shape[0],)), ... dims=("index",), ... name="Mesh", ... ) >>> tet_grid = td.TetrahedralGridDataset( ... points=tet_grid_points, ... cells=tet_grid_cells, ... values=tet_grid_values, ... ) >>> mesh_mnt_data = td.VolumeMeshData(monitor=mesh_mnt, mesh=tet_grid) # doctest: +SKIP """ monitor: VolumeMeshMonitor = pd.Field( ..., title="Monitor", description="Mesh monitor associated with the data." ) mesh: UnstructuredFieldType = pd.Field( ..., title="Mesh", description="Dataset storing the mesh.", ) @property def field_components(self) -> dict[str, UnstructuredFieldType]: """Maps the field components to their associated data.""" return {"mesh": self.mesh}
[docs] def field_name(self, val: str) -> str: """Gets the name of the fields to be plot.""" return "Mesh"