Example #1
0
import numpy, Berreman4x4
import scipy.linalg
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
Example #2
0
# Verification of the code against results presented in Fujiwara's book
# 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...")
if len(sys.argv) > 1 and (sys.argv[1] == '-h' or sys.argv[1] == '--help'):
    print("Usage: interface-reflection.py [-h, --help] n1 n2\n")
    sys.exit()

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

############################################################################
from Berreman4x4 import c, pi
from numpy import exp, cos, arcsin, real, sqrt
import matplotlib.pyplot as pyplot

print("\n*** Glass1 / Air / Glass2 ***\n")

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

# Refractive indices
n_f = 1.5
n_s = 1.0
n_b = 1.7

# Materials:
glass1 = Berreman4x4.IsotropicNonDispersiveMaterial(n_f)
air = Berreman4x4.IsotropicNonDispersiveMaterial(n_s)
glass2 = Berreman4x4.IsotropicNonDispersiveMaterial(n_b)

# Layer and half-spaces:
front = Berreman4x4.IsotropicHalfSpace(glass1)
layer = Berreman4x4.HomogeneousIsotropicLayer(air)
back = Berreman4x4.IsotropicHalfSpace(glass2)

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

# Wavelength and wavenumber:
lbda = 1e-6
k0 = 2 * pi / lbda
Phi_i = pi / 2 * 0.6  # Incidence angle (higher than the limit angle)
Example #5
0
- liquid crystal aligned along x at z=0.
- input and output polarizers aligned parallel to x

Gooch-Tarry law gives: T_pp = sin²(pi/2·√(1+u²)) / (1+u²),
with u = 2dΔn/λ. 
The transmission minima are given by u = ((2m)²-1)^{-1/2} = √(3),√(15),√(35),…

We consider a birefringence Δn = 0.10 and a thickness d = 4.33 µm. The first
minimum should be at λ = 500 nm, or k0 = 1.257e7 m⁻¹.

Note: Gooch-Tarry law does not take into account interferences between the two
glass substrates. A glass with n = 1.55 minimizes the interferences.
"""

# Materials
glass = Berreman4x4.IsotropicNonDispersiveMaterial(1.55)
front = back = Berreman4x4.IsotropicHalfSpace(glass)

# Liquid crystal oriented along the x direction
(no, ne) = (1.5, 1.6)
Dn = ne - no
LC = Berreman4x4.UniaxialNonDispersiveMaterial(no, ne)
R = Berreman4x4.rotation_v_theta(e_y, pi / 2)
LC = LC.rotated(R)
d = 4.33e-6
TN = Berreman4x4.TwistedMaterial(LC, d)

# Inhomogeneous layer
IL = Berreman4x4.InhomogeneousLayer(TN)

# Structure