Esempio n. 1
0
L = Berreman4x4.RepeatedLayers([L_TiO2, L_SiO2], 8, 0, 1)

# To reduce the number of printed characters in the numbers:
# numpy.set_printoptions(suppress=True, precision=3)
Kx = 0.0

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

# Calculation
(lbda1, lbda2) = (1.1e-6, 2.5e-6)
lbda_list = numpy.linspace(lbda1, lbda2, 200)

data = numpy.array([s.getJones(Kx, 2*pi/lbda) for lbda in lbda_list])

r = Berreman4x4.extractCoefficient(data, 'r_ss')
R = abs(r)**2
t = Berreman4x4.extractCoefficient(data, 't_ss')
T = s.getPowerTransmissionCorrection(Kx) * abs(t)**2

# Plotting 
fig = pyplot.figure()
ax = fig.add_subplot("111")
ax.plot(lbda_list, R, label="$R$")
ax.plot(lbda_list, T, label="$T$")

ax.legend(loc='center right')
ax.set_xlabel(r"Wavelength $\lambda$ (m)")
ax.set_ylabel(r"Power reflection $R$ or transmission $T$")
ax.set_title(r"Bragg mirror: Air/{TiO$_2$/SiO$_2$}x8/TiO$_2$/Glass")
Esempio n. 2
0
def plotTransmission(label):
    """Plots power transmission vs. wavenumber."""
    data = numpy.array([s.getJones(Kx,k0) for k0 in k0_list])
    t_pp = Berreman4x4.extractCoefficient(data, 't_pp')
    T = abs(t_pp)**2    # valid if back and front media are identical
    ax.plot(k0_list, T, 'x', label=label)
      "'Spectroscopic Ellipsometry',\nby H. Fujiwara.\n")
print("*** Air / anisotropic sample ***")
print("We reproduce figure 6.16, p. 238...")

# Orientations of the anisotropic substrate
Φ_E = pi/2                      # 1st Euler angle
θ_E_list = [0, pi/4, pi/2]      # 2nd Eulet angle

# Incidence angles
Φ_i_list = numpy.linspace(0, 0.999*pi/2, 300)   # array of Φ_i values
Φ_i_deg = Φ_i_list*180/pi
Kx_list = front.get_Kx_from_Phi(Φ_i_list)       # array of Kx values

data = Berreman4x4.DataList()
for θ_E in θ_E_list:
    R = Berreman4x4.rotation_Euler((Φ_E, θ_E, 0))
    back.setMaterial(uniaxialMaterialRef.rotated(R))
    data.append([s.evaluate(Kx) for Kx in Kx_list])

Psi = data.get('Ψ')

fig = pyplot.figure()
ax = fig.add_subplot(111)
ax.plot(Φ_i_deg, Psi.T)
ax.set_xlabel(r"$\theta_i$")
ax.set_ylabel(r"$\Psi_{pp}$")

pyplot.tight_layout()

##############################################################################
# We reproduce figure 6.17
from Berreman4x4 import c, pi, e_y, C, D, invC, invD
import matplotlib.pyplot as pyplot

############################################################################
# Structure

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

# Liquid crystal oriented along the x direction
(no, ne) = (1.5, 1.7)
Dn = ne-no
n_med = (ne + no)/2
LC = Berreman4x4.UniaxialNonDispersiveMaterial(no, ne)  # ne along z
R = Berreman4x4.rotation_v_theta(e_y, pi/2)         # rotation round y
LC = LC.rotated(R)              # apply rotation from z to x
# Cholesteric pitch:
p = 0.65e-6
# One half turn of a right-handed helix:
TN = Berreman4x4.TwistedMaterial(LC, p/2, angle=+pi, div=25)

# Inhomogeneous layer, repeated layer, and structure
IL = Berreman4x4.InhomogeneousLayer(TN)
N = 5 # number half pitch repetitions
h = N * p/2
L = Berreman4x4.RepeatedLayers([IL], N)
s = Berreman4x4.Structure(front, [L], back)

# Normal incidence: 
Kx = 0.0
#!/usr/bin/python
# encoding: utf-8

# Berreman4x4 example
# Author: O. Castany

# Simple example: reflection on an air/glass interface, at normal indicence.

print("*** Air / glass interface ***\n")

import numpy, Berreman4x4
from Berreman4x4 import c, pi

# Materials:
air = Berreman4x4.IsotropicNonDispersiveMaterial(1.0)
glass = Berreman4x4.IsotropicNonDispersiveMaterial(1.5)

# Half-spaces:
front = Berreman4x4.IsotropicHalfSpace(air)
back = Berreman4x4.IsotropicHalfSpace(glass)

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

# Incidence angle (Kx = n sin(Φ):
Kx = 0.0

print("When the basis is the linear polarizations ('p','s')...")
J = s.getJones(Kx, k0=1e6)
(Jr, Jt) = J
print("Jones matrix for reflection (Jr):")
      "'Spectroscopic Ellipsometry',\nby H. Fujiwara.\n")
print("*** Air / anisotropic sample ***")
print("We reproduce figure 6.16, p. 238...")

# Orientations of the anisotropic substrate
Phi_E = pi/2                        # 1st Euler angle
Theta_E_list = [0, pi/4, pi/2]      # 2nd Eulet angle

# Incidence angles
Phi_i_list = numpy.linspace(0, 0.999*pi/2, 37)  # array of Phi_i values
Phi_i_deg = Phi_i_list*180/pi
Kx_list = front.get_Kx_from_Phi(Phi_i_list)     # array of Kx values

data = []
for Theta_E in Theta_E_list:
    R = Berreman4x4.rotation_Euler((Phi_E, Theta_E, 0))
    back.setMaterial(uniaxialMaterialRef.rotated(R))
    l = []
    for Kx in Kx_list:
        Jr = s.getJones(Kx)[0]
        l.append(Berreman4x4.extractEllipsoParam(Jr))
    data.append(l)
data = numpy.array(data)

fig = pyplot.figure()
ax = fig.add_subplot(111)
ax.plot(Phi_i_deg, data[:,:,0,0].T)
ax.set_xlabel(r"$\theta_i$")
ax.set_ylabel(r"$\Psi_{pp}$")

pyplot.tight_layout()
Esempio n. 7
0
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
s = Berreman4x4.Structure(front, [IL], back)

# Normal incidence: 
Kx = 0.0

# Calculation parameters
(lbda_min, lbda_max) = (200e-9, 1)   # (m)
Esempio n. 8
0
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([0,1,0], pi/2)
LC = LC.rotated(R)
d = 4.33e-6
TN = Berreman4x4.TwistedMaterial(LC, d)

# Inhomogeneous layer
IL = Berreman4x4.InhomogeneousLayer(TN)
# IL.setMethod("symplectic","Padé",3)

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

# Normal incidence: 
Kx = 0.0

# Calculation
Esempio n. 9
0
import numpy, Berreman4x4
from Berreman4x4 import c, pi
from numpy import exp, cos, arcsin, real, sqrt
import matplotlib.pyplot as pyplot

print("\n*** Glass / Air ***\n")

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

# Refractive indices
n_f = 1.5
n_b = 1.0

# Materials:
glass = Berreman4x4.IsotropicNonDispersiveMaterial(n_f)
air = Berreman4x4.IsotropicNonDispersiveMaterial(n_b)

# Layer and half-spaces:
front = Berreman4x4.IsotropicHalfSpace(glass)
back = Berreman4x4.IsotropicHalfSpace(air)

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

# Wavelength and wavenumber:
lbda = 1e-6
k0 = 2 * pi / lbda

# Variation of incidence angle
Phi_list = numpy.linspace(0, pi / 2 * 0.999)
Esempio n. 10
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
Esempio n. 11
0
def plotTransmission(label):
    """Plots power transmission vs. wavenumber."""
    data = Berreman4x4.DataList([s.evaluate(Kx, k0) for k0 in k0_list])
    T = data.get('T_pp')
    ax.plot(k0_list, T, 'x', label=label)
Esempio n. 12
0
#!/usr/bin/python
# encoding: utf-8

# Berreman4x4 example
# Author: O. Castany

# The simplest example: a homogeneous glass layer in air

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

print("\n*** Air / glass / air ***\n")

# Materials:
air = Berreman4x4.IsotropicNonDispersiveMaterial(1.0)
glass = Berreman4x4.IsotropicNonDispersiveMaterial(1.5)

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

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

# Wavelength and wavenumber:
lbda = 1e-6
k0 = 2*pi/lbda

# Incidence angle (Kx = n sin(Φ):
Kx = 0.5
numpy.set_printoptions(suppress=True, precision=4)

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
w = 3.04e15	# pulsation (rad/s)
Phi_i = 70*pi/180   # 70° indicence angle (rad)
d = 0.1e-6      # thin layer thickness (m)
# Orientation of the anisotropy of the thin layer
Phi_E = pi/4    # 1st Euler angle
Theta_E = pi/4  # 2nd Eulet angle

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
Esempio n. 14
0
# Berreman4x4 example
# Author: O. Castany, C. Molinaro

# Example of a cholesteric liquid crystal 

import numpy, Berreman4x4
from numpy import sin, sqrt, abs, exp
from Berreman4x4 import c, pi, e_y
import matplotlib.pyplot as pyplot

############################################################################
# Structure

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

# Liquid crystal oriented along the x direction
(no, ne) = (1.5, 1.7)
Dn = ne-no
n_med = (ne + no)/2
LC = Berreman4x4.UniaxialNonDispersiveMaterial(no, ne)  # ne along z
R = Berreman4x4.rotation_v_theta(e_y, pi/2)         # rotation round y
LC = LC.rotated(R)              # apply rotation from z to x
# Cholesteric pitch:
p = 0.65e-6
# One half turn of a right-handed helix:
TN = Berreman4x4.TwistedMaterial(LC, p/2, angle=+pi, div=25)

# Inhomogeneous layer, repeated layer, and structure
Esempio n. 15
0
Kx = 0.0

print("When the basis is the linear polarizations ('p','s')...")
J = s.getJones(Kx, k0=1e6)
(Jr, Jt) = J
print("Jones matrix for reflection (Jr):")
print(Jr)
print("Jones matrix for transmission (Jt):")
print(Jt)
"""
(matrix([[-0.2,  0. ],     matrix([[ 0.8,  0. ],
        [ 0. , -0.2]]),           [ 0. ,  0.8]]))
"""

print("\nWhen the basis is the circular polarizations ('L','R')...")
Jc = Berreman4x4.circularJones(J)
(Jcr,Jct) = Jc
print("Jones matrix for reflection (Jcr):")
print(Jcr)
print("Jones matrix for transmission (Jct):")
print(Jct)
"""
array([[ 0.0+0.j, -0.2+0.j],      array([[ 0.8+0.j,  0.0+0.j],
       [-0.2+0.j,  0.0+0.j]])            [ 0.0+0.j,  0.8+0.j]])
"""
print(
"""
In a reflexion, the handedness of an elliptic polarization is reversed, 
so the matrix 'Jcr' is anti-diagonal.
""")
import numpy, Berreman4x4
from numpy import sin, sqrt, abs
from Berreman4x4 import c, pi, e_y
import matplotlib.pyplot as pyplot

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

# Liquid crystal oriented along the x direction
(no, ne) = (1.5, 1.7)
Dn = ne-no
n_med = (ne + no)/2
LC = Berreman4x4.UniaxialNonDispersiveMaterial(no, ne)  # ne along z
R = Berreman4x4.rotation_v_theta(e_y, pi/2) # rotation of pi/2 along y
LC = LC.rotated(R)                          # apply rotation from z to x
# Cholesteric pitch (m):
p = 0.65e-6
# One half turn of a right-handed helix:
TN = Berreman4x4.TwistedMaterial(LC, p/2, angle=+pi, div=35)

# Inhomogeneous layer, repeated layer, and structure
IL = Berreman4x4.InhomogeneousLayer(TN)
N = 15      # number half pitch repetitions
h = N * p/2
L = Berreman4x4.RepeatedLayers([IL], N)
s = Berreman4x4.Structure(front, [L], back)

# Normal incidence: 
Kx = 0.0
Esempio n. 17
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

############################################################################
Esempio n. 19
0
t2_th_p= (abs((t_bs_p*t_sf_p*exp(1j*kz_s*d)) \
          /(1+r_bs_p*r_sf_p*exp(2j*kz_s*d))))**2

correction = real(n_b*cos(Phi_b)/(n_f*cos(Phi_list.astype(complex))))
# This is a correction term used in R +T*correction = 1

T_th_s = t2_th_s*correction
T_th_p = t2_th_p*correction

############################################################################
# Calculation with Berreman4x4
data = numpy.array([s.getJones(kx,k0) for kx in Kx])

data = abs(data)**2
R_p  = Berreman4x4.extractCoefficient(data, 'r_pp')
R_s  = Berreman4x4.extractCoefficient(data, 'r_ss')
t2_p = Berreman4x4.extractCoefficient(data, 't_pp')
t2_s = Berreman4x4.extractCoefficient(data, 't_ss')
T_s = t2_s*correction
T_p = t2_p*correction

############################################################################
# Plotting
fig = pyplot.figure(figsize=(12., 6.))
pyplot.rcParams['axes.color_cycle'] = ['b','g','r','c','b','g']
ax = fig.add_axes([0.1, 0.1, 0.7, 0.8])

y = numpy.vstack((R_s,R_p,t2_s,t2_p,T_s,T_p)).T
legend1 = ("R_s","R_p","t2_s","t2_p","T_s","T_p")
lines1 = ax.plot(Kx, y)
Esempio n. 20
0
import numpy, Berreman4x4
from numpy import sin, sqrt, abs
from Berreman4x4 import c, pi
import matplotlib.pyplot as pyplot

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

# Liquid crystal oriented along the x direction
(no, ne) = (1.5, 1.7)
Dn = ne-no
n_med = (ne + no)/2
LC = Berreman4x4.UniaxialNonDispersiveMaterial(no, ne)  # ne along z
R = Berreman4x4.rotation_v_theta([0,1,0], pi/2) # rotation of pi/2 along y
LC = LC.rotated(R)                              # apply rotation from z to x
# Cholesteric pitch:
p = 0.65e-6
# One half turn of a right-handed helix:
TN = Berreman4x4.TwistedMaterial(LC, p/2, angle=+pi, div=35)

# Inhomogeneous layer, repeated layer, and structure
IL = Berreman4x4.InhomogeneousLayer(TN)
N = 15      # number half pitch repetitions
h = N * p/2
L = Berreman4x4.RepeatedLayers([IL], N)
s = Berreman4x4.Structure(front, [L], back)

# Normal incidence: 
Kx = 0.0
Esempio n. 21
0
              / (1 + r_ab[p-1] * U(p)*exp(2j*kz[p]*d[p]))
        return res

    return U(0)

# Power reflexion coefficient for different incidence angles and polarisations
R_th_ss_0 = (abs(ReflectionCoeff(0, 's')))**2       # Phi_i = 0 
R_th_ss = (abs(ReflectionCoeff(pi/4, 's')))**2      # Phi_i = pi/4
R_th_pp = (abs(ReflectionCoeff(pi/4, 'p')))**2

############################################################################
# Calculation with Berreman4x4
# Incidence angle Phi_i = 0, 's' polarization
Kx = front.get_Kx_from_Phi(0)
data = numpy.array([s.getJones(Kx, 2*pi/lbda) for lbda in lbda_list])
r_ss = Berreman4x4.extractCoefficient(data, 'r_ss')
R_ss_0 = abs(r_ss)**2

# Incidence angle Phi_i = pi/4, 's' and 'p' polarizations
Kx = front.get_Kx_from_Phi(pi/4)
data = numpy.array([s.getJones(Kx, 2*pi/lbda) for lbda in lbda_list])
r_ss = Berreman4x4.extractCoefficient(data, 'r_ss')
r_pp = Berreman4x4.extractCoefficient(data, 'r_pp')
R_ss = abs(r_ss)**2
R_pp = abs(r_pp)**2

############################################################################
# Plotting
fig = pyplot.figure(figsize=(12., 6.))
pyplot.rcParams['axes.color_cycle'] = ['b','g','r']
ax = fig.add_axes([0.1, 0.1, 0.7, 0.8])
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)
Esempio n. 23
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
Esempio n. 24
0
# reduces the number of printed figures in numbers:
numpy.set_printoptions(suppress=True, precision=4)

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
w = 3.04e15  # pulsation (rad/s)
Phi_i = 70 * pi / 180  # 70° indicence angle (rad)
d = 0.1e-6  # thin layer thickness (m)
# Orientation of the anisotropy of the thin layer
Phi_E = pi / 4  # 1st Euler angle
Theta_E = pi / 4  # 2nd Eulet angle

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