From 3d08a1e7297e5b46c04facdd507853f2c02a4ae9 Mon Sep 17 00:00:00 2001 From: Weiliang Jin Date: Fri, 28 Jan 2022 17:12:38 -0800 Subject: [PATCH] Update cSi and positive requirement in some dispersive model --- tests/test_components.py | 9 +++++++++ tidy3d/components/medium.py | 7 ++++--- tidy3d/components/types.py | 1 + tidy3d/material_library.py | 5 +---- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/tests/test_components.py b/tests/test_components.py index a93d7b7555..a7bf07d2da 100644 --- a/tests/test_components.py +++ b/tests/test_components.py @@ -375,6 +375,15 @@ def test_medium_dispersion(): m_DR = Drude(eps_inf=1.0, coeffs=[(1, 3), (2, 4)]) m_DB = Debye(eps_inf=1.0, coeffs=[(1, 3), (2, 4)]) + with pytest.raises(pydantic.ValidationError) as e_info: + mf_SM = Sellmeier(coeffs=[(2, 0), (2, 4)]) + + with pytest.raises(pydantic.ValidationError) as e_info: + mf_DR = Drude(eps_inf=1.0, coeffs=[(1, 0), (2, 4)]) + + with pytest.raises(pydantic.ValidationError) as e_info: + mf_DB = Debye(eps_inf=1.0, coeffs=[(1, 0), (2, 4)]) + freqs = np.linspace(0.01, 1, 1001) for medium in [m_PR, m_SM, m_LZ, m_LZ2, m_DR, m_DB]: eps_c = medium.eps_model(freqs) diff --git a/tidy3d/components/medium.py b/tidy3d/components/medium.py index b4e0d2b05e..7c66c7d9ed 100644 --- a/tidy3d/components/medium.py +++ b/tidy3d/components/medium.py @@ -5,6 +5,7 @@ from typing import List, Tuple, Union, Callable import pydantic import numpy as np +from pydantic import PositiveFloat from .base import Tidy3dBaseModel from .types import PoleAndResidue, Ax, FreqBound @@ -473,7 +474,7 @@ class Sellmeier(DispersiveMedium): >>> eps = sellmeier_medium.eps_model(200e12) """ - coeffs: List[Tuple[float, float]] = pydantic.Field( + coeffs: List[Tuple[float, PositiveFloat]] = pydantic.Field( title="Coefficients", description="List of Sellmeier (:math:`B_i, C_i`) coefficients." ) @@ -615,7 +616,7 @@ class Drude(DispersiveMedium): description="Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).", ) - coeffs: List[Tuple[float, float]] = pydantic.Field( + coeffs: List[Tuple[float, PositiveFloat]] = pydantic.Field( ..., title="Coefficients", description="List of (:math:`f_i, \\delta_i`) values for model." ) @@ -682,7 +683,7 @@ class Debye(DispersiveMedium): description="Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).", ) - coeffs: List[Tuple[float, float]] = pydantic.Field( + coeffs: List[Tuple[float, PositiveFloat]] = pydantic.Field( ..., title="Coefficients", description="List of (:math:`\\Delta\\epsilon_i, \\tau_i`) values for model.", diff --git a/tidy3d/components/types.py b/tidy3d/components/types.py index f4ff873a9d..6985494bfd 100644 --- a/tidy3d/components/types.py +++ b/tidy3d/components/types.py @@ -155,6 +155,7 @@ def __modify_schema__(cls, field_schema): """Sets the schema of NumpyArray.""" field_schema.update(NumpyArray.schema()) + class ArrayMeta(type): """metclass for Array, enables Array[type] -> TypedArray""" diff --git a/tidy3d/material_library.py b/tidy3d/material_library.py index 92f5f0029c..9192ec3691 100644 --- a/tidy3d/material_library.py +++ b/tidy3d/material_library.py @@ -642,10 +642,7 @@ def export_matlib_to_file(fname: str = "matlib.json") -> None: cSi_Li1993_293K = PoleResidue( eps_inf=1.0, - poles=[ - ((0.0 + 1j * 4010819041318578.0), (0.0 + 1j * 1.2156273362672036e16)), - ((0.0 + 1j * 5022626939326166.0), (-0.0 - 1j * 4.1977794227247144e16)), - ], + poles=[((0.0 + 1j * 6241549589084091.0), (0.0 - 1j * 3.3254308736142404e16))], frequency_range=(21413747041496.2, 249827048817455.7), )