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)

# Air thickness variation range
d = numpy.linspace(0, 1.0e-6)

############################################################################
# Analytical calculation

Kx = n_f * numpy.sin(Phi_i)  # Reduced wavenumber

# Incidence angle
Esempio n. 2
0
# Layers
L_SiO2 = Berreman4x4.HomogeneousIsotropicLayer(SiO2, ("QWP", lbda0))
L_TiO2 = Berreman4x4.HomogeneousIsotropicLayer(TiO2, ("QWP", lbda0))

print("Thickness of the SiO2 QWP: {:.1f} nm".format(L_SiO2.h * 1e9))
print("Thickness of the TiO2 QWP: {:.1f} nm".format(L_TiO2.h * 1e9))

# Repeated layers: n periods
L = Berreman4x4.RepeatedLayers([L_TiO2, L_SiO2], 4, 0, 0)

# Number of interfaces
N = 2 * L.n + 1

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

############################################################################
# Analytical calculation
n = numpy.ones(N + 1, dtype=complex)
n[0] = n_a
n[1::2] = n_TiO2
n[2::2] = n_SiO2
n[-1] = n_g

n.shape = (-1, 1)

d = numpy.ones(N + 1)
d[1::2] = L_TiO2.h  # d[0] is not used
d[2::2] = L_SiO2.h
Esempio n. 3
0
"""

n_t = 3.898 + 0.016j  # refractive index of substrate
silicon = Berreman4x4.IsotropicNonDispersiveMaterial(n_t)
back = Berreman4x4.IsotropicHalfSpace(silicon)
numpy.set_printoptions(suppress=True, precision=4)
print("\nValue of cos(Φt): " + str(numpy.cos(back.get_Phi_from_Kx(Kx))))
print("Value of cos(Φi): " + str(numpy.cos(front.get_Phi_from_Kx(Kx))))
"""
cos(back.get_Phi_from_Kx(Kx)) = 
(0.97050916278673638+0.00024578299783964012j)
cos(front.get_Phi_from_Kx(Kx)) =
0.34202014332566882
"""

s = Berreman4x4.Structure(front, [film], back)
T = s.getStructureMatrix(Kx, k0)
print("\nTransfer matrix T (eq 6.67, p. 242):")
print(T)
"""                                                                 (eq 6.67)
Fujiwara uses the ellipsometry convention for the orientation of the 'p' 
polarized electric fields (see figures 2.15 and 6.14). With my convention, 
Erp is reversed. Consequently, T_{4j} and T_{i4} have a reversed sign, except
T_{44}.
T = 
matrix([[-1.949-3.588j,  1.671-1.548j,  0.273-0.03j , -0.630+0.147j],
        [ 1.617+1.679j, -1.992+3.434j, -0.301-0.064j,  0.861+0.101j],
        [ 0.065-0.086j,  0.039+0.097j, -0.712-3.485j,  0.004+1.265j],
        [-0.167-0.403j,  0.593+0.386j,  0.370-1.199j, -1.662+3.093j]])
"""
Jr = s.getJones(Kx, k0)[0]  # Jones reflexion matrix