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()
Loading BokehJS ...

$\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 [ ]: