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