Drude Model¶
Plots the dielectric function and loss function in the Drude model
In [1]:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
#from cycler import cycler
matplotlib.rcParams['figure.figsize'] = (8,6)
In [2]:
import numpy as np
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
from bokeh.io import push_notebook, show, output_notebook
from bokeh.plotting import figure
output_notebook()
$\epsilon_1$, $\epsilon_2$ and loss function
$$\epsilon_1 = 1-\frac{\omega_p^2}{\omega^2+\Gamma^2}$$
$$\epsilon_2 = \omega^2_p\frac{\Gamma/\omega}{\omega^2+\Gamma^2}$$
$$\Im(-1/\epsilon)=\frac{\epsilon_2}{\epsilon_1^2+\epsilon_2^2}$$
In [3]:
def eps1(omegap,gamma,omega):
eps1 = 1-omegap**2/(omega**2+gamma**2)
return eps1
def eps2(omegap,gamma,omega):
eps2 = omegap**2*gamma/omega/(omega**2+gamma**2)
return eps2
def lossfunction(omegap,gamma,omega):
lf = eps2(omegap,gamma,omega)/(eps1(omegap,gamma,omega)**2+eps2(omegap,gamma,omega)**2)
return lf
In [4]:
omegas = np.linspace(5,50,1000)
omegap = 20
gamma = 3
omegap0 = 20
gamma0 = 3
ep1 = eps1(omegap,gamma,omegas)
ep2 = eps2(omegap,gamma,omegas)
lf = lossfunction(omegap,gamma,omegas)
p = figure(title="dielectric and loss functions", height=500, width=750)
p.xaxis.axis_label = 'omega'
p.yaxis.axis_label = ''
l1 = p.line(omegas,ep1,legend_label="epsilon 1", line_width=2.5)
l2 = p.line(omegas,ep2,legend_label="epsilon2",line_width=2.5,color="orange")
l3 = p.line(omegas,lf,legend_label="loss function",line_width=2.5,color="red")
#show(p)
def update(omegap=20, gamma=3):
l1.data_source.data['y']=eps1(omegap,gamma,omegas)
l2.data_source.data['y']=eps2(omegap,gamma,omegas)
l3.data_source.data['y']=lossfunction(omegap,gamma,omegas)
push_notebook()
p.legend.click_policy="hide"
show(p, notebook_handle=True)
interact(update, \
omegap=widgets.IntSlider(min=3,max=40,value=omegap0,description="omega_p"), \
gamma=widgets.IntSlider(min=1,max=10,value=gamma0,description="gamma"));
interactive(children=(IntSlider(value=20, description='omega_p', max=40, min=3), IntSlider(value=3, descriptio…
In [ ]: