# Path: EMpy/constants.py



from builtins import str
from builtins import object
from functools import partial
from scipy.integrate import quad
from EMpy.constants import eps0
import numpy
        return quad(self.TOC, self.T0, T)[0]


class IsotropicMaterial(Material):

    """Subclasses Material to describe isotropic materials.

    Frequency dispersion and thermic aware.
    In all the member functions, wls must be an ndarray.
    """

    def __init__(
        self, name="", n0=RefractiveIndex(n0_const=1.0), toc=ThermalOpticCoefficient()
    ):
        """Set name, default temperature, refractive index and TOC
        (thermal optic coefficient)."""
        Material.__init__(self, name)
        self.n0 = n0
        self.toc = toc

    def n(self, wls, T=None):
        """Return the refractive index at T as a [1 x wls] array."""
        if T is None:
            T = self.toc.T0
        return self.n0(wls) + self.toc.dnT(T)

    def epsilon(self, wls, T=None):
        """Return the epsilon at T as a [1 x wls] array."""
        if T is None:
            T = self.toc.T0

# Path: EMpy/constants.py



# Path: EMpy/materials.py
from builtins import str
from builtins import object
from functools import partial
from scipy.integrate import quad
from EMpy.constants import eps0
import numpy

        return quad(self.TOC, self.T0, T)[0]


class IsotropicMaterial(Material):

    """Subclasses Material to describe isotropic materials.

    Frequency dispersion and thermic aware.
    In all the member functions, wls must be an ndarray.
    """

    def __init__(
        self, name="", n0=RefractiveIndex(n0_const=1.0), toc=ThermalOpticCoefficient()
    ):
        """Set name, default temperature, refractive index and TOC
        (thermal optic coefficient)."""
        Material.__init__(self, name)
        self.n0 = n0
        self.toc = toc

    def n(self, wls, T=None):
        """Return the refractive index at T as a [1 x wls] array."""
        if T is None:
            T = self.toc.T0
        return self.n0(wls) + self.toc.dnT(T)

    def epsilon(self, wls, T=None):
        """Return the epsilon at T as a [1 x wls] array."""
        if T is None:
            T = self.toc.T0

        return self.n(wls, T) ** 2 * eps0