Esempio n. 1
0
# 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...")

# 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()
Esempio n. 2
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 = Berreman4x4.DataList(
    [s.evaluate(Kx, 2 * pi / lbda) for lbda in lbda_list])
R_ss_0 = data.get('R_ss')

# Incidence angle Phi_i = pi/4, 's' and 'p' polarizations
Kx = front.get_Kx_from_Phi(pi / 4)
data = Berreman4x4.DataList(
    [s.evaluate(Kx, 2 * pi / lbda) for lbda in lbda_list])
R_ss = data.get('R_ss')
R_pp = data.get('R_pp')

############################################################################
# Plotting
fig = pyplot.figure(figsize=(12., 6.))
pyplot.rcParams['axes.prop_cycle'] = pyplot.cycler('color', 'bgr')
ax = fig.add_axes([0.1, 0.1, 0.7, 0.8])
# Reflection and transmission coefficients, polarisation s and p
R_th_ss = abs(r_s)**2
R_th_pp = abs(r_p)**2
t2_th_ss = abs(t_s)**2
t2_th_pp = abs(t_p)**2
# The power transmission coefficient is T = Re(kz2/kz1) × |t|^2
correction = numpy.real(kz2 / kz1)
T_th_ss = correction * t2_th_ss
T_th_pp = correction * t2_th_pp

############################################################################
# Calculation with Berreman4x4
Kx_list = front.get_Kx_from_Phi(Phi_i, k0)

data = Berreman4x4.DataList([s.evaluate(Kx, k0) for Kx in Kx_list])

# Extraction of the power coefficients
for name in ['R_ss', 'R_pp', 't_ss', 't_pp', 't_ss', 't_pp', 'T_ss', 'T_pp']:
    exec("{0:} = data.get('{0:}')".format(name))
t2_ss = data.get('t_ss')**2
t2_pp = data.get('t_pp')**2

############################################################################
# Plotting
fig = pyplot.figure(figsize=(12., 6.))
pyplot.rcParams['axes.prop_cycle'] = pyplot.cycler('color', 'bgrcbg')
ax = fig.add_axes([0.1, 0.1, 0.7, 0.8])

d = numpy.vstack((R_ss, R_pp, t2_ss, t2_pp, T_ss, T_pp)).T
lines1 = ax.plot(Kx_list, d)
Esempio n. 4
0
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)
Kx = front.get_Kx_from_Phi(Phi_list)

############################################################################
# Calculation with Berreman4x4
data = Berreman4x4.DataList([s.evaluate(kx, k0) for kx in Kx])

R_p = data.get('R_pp')
R_s = data.get('R_ss')
T_p = data.get('T_pp')
T_s = data.get('T_ss')

############################################################################
# Plotting
fig = pyplot.figure(figsize=(12., 6.))
pyplot.rcParams['axes.prop_cycle'] = pyplot.cycler('color', 'bgrcbg')
ax = fig.add_axes([0.1, 0.1, 0.7, 0.8])

y = numpy.vstack((R_s, R_p)).T
legend = ("R_s", "R_p")
# lines = ax.plot(Kx, y)
Esempio n. 5
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. 6
0
q = 2*pi/p
alpha = q/k0
epsilon = (no**2+ne**2)/2
delta = (no**2-ne**2)/2
n2 = sqrt((alpha**2 + epsilon \
     - sqrt(4*epsilon*alpha**2+delta**2)).astype(complex))
w = 1j*(ne**2-n2**2-alpha**2)/(2*alpha*n2) # not k0/c 
A = -2j*k0*n2*h

R_th = abs((w**2+1)*(1-exp(-2j*k0*n2*h)) \
           / (2*w*(1+exp(-2j*k0*n2*h)) \
           - 1j*(w**2-1)*(1-exp(-2j*k0*n2*h))))**2

############################################################################
# Calculation with Berreman4x4
data = Berreman4x4.DataList([s.evaluate(Kx,_k0) for _k0 in k0])

# Jones matrices for the circular wave basis
# Right-circular wave is reflected in the stop-band
# R_LR, T_LR close to zero
R_RR = data.get('R_RR')

############################################################################
# Plotting
fig = pyplot.figure()
ax = fig.add_subplot("111")

ax.plot(lbda, R_RR, label='R_RR')
ax.plot(lbda, R_th, 'r', label='R_th')

ax.legend(loc='center right', bbox_to_anchor=(1.00, 0.50))
Esempio n. 7
0
Kx = 0.0

# Calculation parameters
lbda_min, lbda_max = 0.8e-6, 1.2e-6  # (m)
lbda_B = p * n_med
lbda_list = numpy.linspace(lbda_min, lbda_max, 100)
k0_list = 2 * pi / lbda_list

############################################################################
# Analytical calculation for the maximal reflection
R_th = numpy.tanh(Dn / n_med * pi * h / p)**2
lbda_B1, lbda_B2 = p * no, p * ne

############################################################################
# Calculation with Berreman4x4
data = Berreman4x4.DataList([s.evaluate(Kx, k0) for k0 in k0_list])

T_pp = data.get('T_pp')
T_ps = data.get('T_ps')
T_ss = data.get('T_ss')
T_sp = data.get('T_sp')

# Transmission coefficients for incident unpolarized light:
T_pn = 0.5 * (T_pp + T_ps)
T_sn = 0.5 * (T_sp + T_ss)
T_nn = T_sn + T_pn

# Transmission coefficients for 's' and 'p' polarized light, with
# unpolarized measurement.
T_ns = T_ps + T_ss
T_np = T_pp + T_sp