Esempio n. 1
0
import matplotlib.pyplot as pyplot
from Berreman4x4 import c, pi
from numpy import newaxis, exp, sin

print("\n*** TiO2/SiO2 Bragg mirror ***\n")

############################################################################
# Structure definition

# Front and back materials
n_a = 1.0
n_g = 1.5
air = Berreman4x4.IsotropicNonDispersiveMaterial(n_a)
glass = Berreman4x4.IsotropicNonDispersiveMaterial(n_g)

front = Berreman4x4.IsotropicHalfSpace(air)
back = Berreman4x4.IsotropicHalfSpace(glass)

# Materials for a SiO2/TiO2 Bragg mirror
lbda0 = 1.550e-6
k0 = 2 * pi / lbda0
nr_SiO2 = 1.47
nr_TiO2 = 2.23
alpha_SiO2 = 0e2  # (m⁻¹)
alpha_TiO2 = 42e2  # (m⁻¹)
ni_SiO2 = alpha_SiO2 * lbda0 / (4 * pi)
ni_TiO2 = alpha_TiO2 * lbda0 / (4 * pi)
n_SiO2 = nr_SiO2 + 1j * ni_SiO2
n_TiO2 = nr_TiO2 + 1j * ni_TiO2

SiO2 = Berreman4x4.IsotropicNonDispersiveMaterial(n_SiO2)
if len(sys.argv) > 2:
    (n1, n2) = map(float, sys.argv[1:3])
else:
    (n1, n2) = (1.0, 1.5)  # default values

print("\n*** Interface n1 = {:} / n2 = {:} ***\n".format(n1, n2))

############################################################################
# Structure definition

# Materials
medium1 = Berreman4x4.IsotropicNonDispersiveMaterial(n1)
medium2 = Berreman4x4.IsotropicNonDispersiveMaterial(n2)

# Half-spaces
front = Berreman4x4.IsotropicHalfSpace(medium1)
back = Berreman4x4.IsotropicHalfSpace(medium2)

# Structure
s = Berreman4x4.Structure(front, [], back)

# Parameters for the calculation
lbda = 1e-6
k0 = 2 * pi / lbda
Phi_i = numpy.linspace(0, pi / 2 * 0.9999)  # range for the incidence angles

############################################################################
# Analytical calculation
Phi_t = numpy.arcsin((n1 * numpy.sin(Phi_i) / n2).astype(complex))
kz1 = n1 * k0 * numpy.cos(Phi_i)
kz2 = n2 * k0 * numpy.cos(Phi_t)
Esempio n. 3
0
# p. 237 (section 6.4.1). We reproduce figures 6.16 and 6.17.

import numpy, Berreman4x4
from Berreman4x4 import c, pi
import matplotlib.pyplot as pyplot

n_i = 1.0  # incident medium is air
n_o = 2.0  # ordinary index of thin layer
n_e = 2.5  # extraordinary index of thin layer

##############################################################################
# Setting up the structure

# Front half-space (air)
air = Berreman4x4.IsotropicNonDispersiveMaterial(n_i)
front = Berreman4x4.IsotropicHalfSpace(air)

# Anisotropic substrate
uniaxialMaterialRef = Berreman4x4.UniaxialNonDispersiveMaterial(n_o, n_e)
back = Berreman4x4.HalfSpace()

s = Berreman4x4.Structure(front, [], back)

##############################################################################
# We reproduce figure 6.16
print("\nWe reproduce results from section 6.4.1 in " +
      "'Spectroscopic Ellipsometry',\nby H. Fujiwara.\n")
print("*** Air / anisotropic sample ***")
print("We reproduce figure 6.16, p. 238...")

# Orientations of the anisotropic substrate
Esempio n. 4
0
print("\n*** Air / anisotropic film / silicon substrate ***")

filmMaterialRef = Berreman4x4.UniaxialNonDispersiveMaterial(n_o, n_e)
R = Berreman4x4.rotation_Euler((Phi_E, Theta_E, 0))
filmMaterial = filmMaterialRef.rotated(R)
print("\nPermittivity tensor of the anisotropic film (eq 6.63, p. 241):")
print(filmMaterial.getTensor())
"""
matrix([[ 4.5625, -0.5625,  0.7955],
        [-0.5625,  4.5625, -0.7955],
        [ 0.7955, -0.7955,  5.125 ]])
"""

air = Berreman4x4.IsotropicNonDispersiveMaterial(n_i)
front = Berreman4x4.IsotropicHalfSpace(air)  # Front half-space
Kx = front.get_Kx_from_Phi(Phi_i)
print("\nValue of Kx: {:.4f}".format(Kx))
"""
Kx = 0.9397
"""

film = Berreman4x4.HomogeneousLayer(filmMaterial, d)
Delta = film.getDeltaMatrix(Kx)
print("\nDelta matrix:")
print(Delta)
"""
matrix([[-0.1459,  0.1459,  0.    ,  0.8277],
        [ 0.    ,  0.    , -1.    ,  0.    ],
        [ 0.439 , -3.556 ,  0.    , -0.1459],
        [ 4.439 , -0.439 ,  0.    , -0.1459]])