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
# 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)
- 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