예제 #1
0
파일: ex_RCWA.py 프로젝트: Chronum94/EMpy
    AnisotropicMaterial,
    RefractiveIndex,
    EpsilonTensor,
)

alpha = 0.
delta = 0.
# psi = EMpy.utils.deg2rad(0.)  # TM
# psi = EMpy.utils.deg2rad(90.)  # TE
psi = EMpy.utils.deg2rad(70.)  # hybrid
phi = EMpy.utils.deg2rad(90.)

LAMBDA = 1016e-9  # grating periodicity
n = 2  # orders of diffraction

UV6 = IsotropicMaterial("UV6", n0=RefractiveIndex(n0_const=1.560))
SiN = AnisotropicMaterial(
    "SiN",
    epsilon_tensor=EpsilonTensor(
        epsilon_tensor_const=EMpy.constants.eps0 * EMpy.utils.euler_rotate(
            np.diag(np.asarray([1.8550, 1.8750, 1.9130])**2),
            EMpy.utils.deg2rad(14),
            EMpy.utils.deg2rad(25),
            EMpy.utils.deg2rad(32),
        )),
)
BPTEOS = IsotropicMaterial("BPTEOS", n0=RefractiveIndex(n0_const=1.448))
ARC1 = IsotropicMaterial("ARC1", n0=RefractiveIndex(n0_const=1.448))

EFF = IsotropicMaterial("EFF", n0=RefractiveIndex(n0_const=1.6))
예제 #2
0
파일: ex_RCWA.py 프로젝트: zhufangjia/EMpy
    IsotropicMaterial, AnisotropicMaterial, RefractiveIndex, EpsilonTensor)


alpha = 0.
delta = 0.
# psi = EMpy.utils.deg2rad(0.)  # TM
# psi = EMpy.utils.deg2rad(90.)  # TE
psi = EMpy.utils.deg2rad(70.)  # hybrid
phi = EMpy.utils.deg2rad(90.)

LAMBDA = 1016e-9  # grating periodicity
n = 2  # orders of diffraction

UV6 = IsotropicMaterial(
    'UV6',
    n0=RefractiveIndex(n0_const=1.560))
SiN = AnisotropicMaterial(
    'SiN',
    epsilon_tensor=EpsilonTensor(
        epsilon_tensor_const=EMpy.constants.eps0 * EMpy.utils.euler_rotate(
            numpy.diag(numpy.asarray([1.8550, 1.8750, 1.9130]) ** 2),
            EMpy.utils.deg2rad(14),
            EMpy.utils.deg2rad(25),
            EMpy.utils.deg2rad(32))))
BPTEOS = IsotropicMaterial(
    'BPTEOS',
    n0=RefractiveIndex(n0_const=1.448))
ARC1 = IsotropicMaterial(
    'ARC1', n0=RefractiveIndex(n0_const=1.448))

EFF = IsotropicMaterial(
예제 #3
0
#!/usr/bin/python

import numpy, EMpy, pylab
from EMpy.materials import IsotropicMaterial, RefractiveIndex

alpha = EMpy.utils.deg2rad(30.)
delta = EMpy.utils.deg2rad(45.)
psi = EMpy.utils.deg2rad(0.)  # TE
phi = EMpy.utils.deg2rad(90.)

wls = numpy.linspace(1.5495e-6, 1.550e-6, 101)

LAMBDA = 1.e-6  # grating periodicity
n = 3  # orders of diffraction

Top = IsotropicMaterial('Top', n0=RefractiveIndex(n0_const=1.))
Bottom = IsotropicMaterial('Bottom', n0=RefractiveIndex(n0_const=3.47))

multilayer = EMpy.utils.Multilayer([ \
    EMpy.utils.Layer(Top, numpy.inf), \
    EMpy.utils.BinaryGrating(Top, Bottom, .4, LAMBDA, .01), \
    EMpy.utils.Layer(Bottom, numpy.inf), \
    ])

solution = EMpy.RCWA.IsotropicRCWA(multilayer, alpha, delta, psi, phi,
                                   n).solve(wls)

pylab.plot(wls, solution.DE1[n,:], 'ko-', \
           wls, solution.DE3[n,:], 'ro-', \
           wls, solution.DE1[n-1,:], 'kx-', \
           wls, solution.DE3[n-1,:], 'rx-', \
예제 #4
0
import pylab

import EMpy
from EMpy.materials import IsotropicMaterial, RefractiveIndex

alpha = EMpy.utils.deg2rad(30.0)
delta = EMpy.utils.deg2rad(45.0)
psi = EMpy.utils.deg2rad(0.0)  # TE
phi = EMpy.utils.deg2rad(90.0)

wls = numpy.linspace(1.5495e-6, 1.550e-6, 101)

LAMBDA = 1.0e-6  # grating periodicity
n = 3  # orders of diffraction

Top = IsotropicMaterial("Top", n0=RefractiveIndex(n0_const=1.0))
Bottom = IsotropicMaterial("Bottom", n0=RefractiveIndex(n0_const=3.47))

multilayer = EMpy.utils.Multilayer([
    EMpy.utils.Layer(Top, numpy.inf),
    EMpy.utils.BinaryGrating(Top, Bottom, 0.4, LAMBDA, 0.01),
    EMpy.utils.Layer(Bottom, numpy.inf),
])

solution = EMpy.RCWA.IsotropicRCWA(multilayer, alpha, delta, psi, phi,
                                   n).solve(wls)

pylab.plot(
    wls,
    solution.DE1[n, :],
    "ko-",
예제 #5
0
파일: ex_RCWA_2.py 프로젝트: Chronum94/EMpy
import EMpy
from EMpy.materials import IsotropicMaterial, RefractiveIndex

alpha = EMpy.utils.deg2rad(10.)
delta = EMpy.utils.deg2rad(0.)
psi = EMpy.utils.deg2rad(0.)  # TE
phi = EMpy.utils.deg2rad(90.)

wl = np.array([1.55e-6])
ds = np.linspace(0., 5., 100) * wl
LAMBDA = 10 * wl

n = 3  # orders of diffraction

Top = IsotropicMaterial("Top", n0=RefractiveIndex(n0_const=1.))
Bottom = IsotropicMaterial("Bottom", n0=RefractiveIndex(n0_const=2.04))

solutions = []
for d in ds:
    multilayer = EMpy.utils.Multilayer([
        EMpy.utils.Layer(Top, np.inf),
        EMpy.utils.BinaryGrating(Top, Bottom, .3, LAMBDA, d),
        EMpy.utils.Layer(Bottom, np.inf),
    ])

    solution = EMpy.RCWA.IsotropicRCWA(multilayer, alpha, delta, psi, phi,
                                       n).solve(wl)
    solutions.append(solution)

DE1 = np.zeros(len(solutions))
예제 #6
0
import numpy, EMpy, pylab
from EMpy.materials import IsotropicMaterial, AnisotropicMaterial, RefractiveIndex, EpsilonTensor

alpha = 0.
delta = 0.
# psi = EMpy.utils.deg2rad(0.)                       # TM
# psi = EMpy.utils.deg2rad(90.)                      # TE
psi = EMpy.utils.deg2rad(70.)                      # hybrid
phi = EMpy.utils.deg2rad(90.)

LAMBDA = 1016e-9                        # grating periodicity
n = 2                                   # orders of diffraction

UV6    = IsotropicMaterial('UV6',
        n0=RefractiveIndex(n0_const=1.560))
SiN    = AnisotropicMaterial('SiN',
        epsilon_tensor=EpsilonTensor(epsilon_tensor_const=EMpy.constants.eps0 * \
         EMpy.utils.euler_rotate(numpy.diag(numpy.asarray([1.8550, 1.8750, 1.9130])**2), \
                                 EMpy.utils.deg2rad(14), \
                                 EMpy.utils.deg2rad(25), \
                                 EMpy.utils.deg2rad(32))))
BPTEOS = IsotropicMaterial('BPTEOS',
        n0=RefractiveIndex(n0_const=1.448))
ARC1   = IsotropicMaterial('ARC1', n0=RefractiveIndex(n0_const=1.448))

EFF    = IsotropicMaterial('EFF', n0=RefractiveIndex(n0_const=1.6))

multilayer1 = EMpy.utils.Multilayer([ \
    EMpy.utils.Layer(EMpy.materials.Air, numpy.inf), \
    EMpy.utils.Layer(SiN, 226e-9), \