Source code for tidy3d.components.microwave.data.data_array
from __future__ import annotations
from tidy3d.components.data.data_array import FreqModeDataArray
from tidy3d.constants import NEPERPERMETER, PERMETER, RADPERMETER, VELOCITY_SI
[docs]
class PropagationConstantArray(FreqModeDataArray):
"""Data array for the complex propagation constant :math:`\\gamma = -\\alpha + j\\beta` with units of 1/m.
Notes
-----
In the physics convention where time-harmonic fields evolve with :math:`e^{-j\\omega t}`, a wave
propagating in the +z direction varies as :math:`E(z) = E_0 e^{\\gamma z} = E_0 e^{-\\alpha z} e^{j\\beta z}`.
"""
__slots__ = ()
_data_attrs = {"units": PERMETER, "long_name": "propagation constant"}
[docs]
class PhaseConstantArray(FreqModeDataArray):
"""Data array for the phase constant :math:`\\beta = \\text{Im}(\\gamma)` with units of rad/m."""
__slots__ = ()
_data_attrs = {"units": RADPERMETER, "long_name": "phase constant"}
[docs]
class AttenuationConstantArray(FreqModeDataArray):
"""Data array for the attenuation constant :math:`\\alpha = -\\text{Re}(\\gamma)` with units of Nepers/m."""
__slots__ = ()
_data_attrs = {"units": NEPERPERMETER, "long_name": "attenuation constant"}
[docs]
class PhaseVelocityArray(FreqModeDataArray):
"""Data array for the phase velocity :math:`v_p = c/n_{\\mathrm{eff}}` with units of m/s."""
__slots__ = ()
_data_attrs = {"units": VELOCITY_SI, "long_name": "phase velocity"}
[docs]
class GroupVelocityArray(FreqModeDataArray):
"""Data array for the group velocity :math:`v_g = c/n_{\\mathrm{group}}` with units of m/s."""
__slots__ = ()
_data_attrs = {"units": VELOCITY_SI, "long_name": "group velocity"}