- #1
Daniel Lima
- 3
- 2
- TL;DR Summary
- I'm currently trying to plot a graph wich describes a photoionization cross section as a function of incident photon energy for optical transition in a semiconductor for different values of the γ factor. But the the outcome is pretty different of what it should be, as one can see in the attachments
I attached a file with some explanations of the variables in the code and the plot that I should get. I don't know what is wrong. Any help will appreciated.
Python:
from scipy.integrate import quad
import numpy as np
from scipy.special import gamma as gamma_function
from scipy.constants import e
import matplotlib.pyplot as plt
#Constants
epsilon = 13.1 # dielectric constant of the material
gamma_C = 0.5 # donor impurity linewidth
nr = 3.2 # refractive index of semiconductor
flux = 0.0 # Phi in eqn 8 magnetic flux
R = 5.0 # radius of the quantum ring in nm
hbar = 1.0 # reduced Planck constant in eV
h = 2*np.pi*hbar # Planck constant in eV
c = 1.0
alpha = e**2/hbar*c
R = 5 # nm
r = np.linspace(0, 6 * R,100)
nu = np.linspace(0,100, 100)
# Function that calculates the integrand
def func(rho):
betai = gamma**2 / 2.0
betaf = np.sqrt(1.0 + gamma**4 / 4.0)
return (gamma * rho)**(betai + betaf) * np.exp(-0.5 * (gamma * rho)**2) * rho**2
def compute_matrix_element(gamma):
betai = gamma**2 / 2.0
betaf = np.sqrt(1.0 + gamma**4 / 4.0)
integral = quad(func, 0, np.infty)[0]
first_sqrt = (1.0 / (2.0**betai * gamma_function(betai + 1)))**0.5
second_sqrt = (1.0 / (2.0**betaf * gamma_function(betaf + 1)))**0.5
return gamma**2 / 2.0 / np.pi * R * first_sqrt * second_sqrt * integral
def compute_cross_section(hnu, gamma):
# function that calculates the photoionisation cross section
betai = gamma**2 / 2.0
betaf = np.sqrt(1.0 + gamma**4 / 2.0)
Ei = gamma**2 * (1.0 + betai) - gamma**4 / 2.0
Ef = gamma**2 * (1.0 + betaf) - gamma**4 / 2.0
delta = hbar / np.pi * gamma_C / ( nu - (Ef - Ei )**2 + (hbar * gamma_C)**2)
matrix_element = compute_matrix_element(gamma)
return nr / epsilon * 4.0 * np.pi / 3.0 * alpha * h*nu * (abs(matrix_element))**2 * delta
#Plot
plt.figure()
for gamma in [1.0, 1.5, 2.0]:
plt.plot(h*nu, (compute_cross_section(h*nu, gamma)))
plt.legend(['$\gamma = 1.0$', '$\gamma = 1.5$', '$\gamma = 2.0$'] )
plt.ylabel('$\\times$-section $\sigma$ (cm$^{2}$)')
plt.xlabel('Photon energy $h\\nu$ (meV)')
plt.xlim(0,100)
plt.show()
Attachments
Last edited by a moderator: