Differences between revisions 3 and 5 (spanning 2 versions) Back to page
Revision 3 as of 5:20PM, Apr 28, 2011
Size: 6520
Editor: Sam
Comment:
Revision 5 as of 5:23PM, Apr 28, 2011
Size: 6632
Editor: Sam
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
<<TableOfContents>>

== 2.9 ==

Here is the source code in python that produced this image.
Line 147: Line 152:

== 2.10b ==

2.9

Here is the source code in python that produced this image.

#!/usr/bin/env python

from pylab import *

T = 300 # K 
kB = 0.02585 / 300 # eV/K
EG = 1.170 - 4.730e-4 * T ** 2 / (T + 636) # pages 69,70
mnr = 1.028 + 6.11e-4 * T - 3.09e-7 * T ** 2 # mnstar / m_e -- page 55
mpr = 0.610 + 7.83e-4 * T - 4.46e-7 * T ** 2 # mpstar / m_e -- page 55

# What do we need to plot?
#   e distribution function, edf = gc(E)*f(E)      -- for E >= Ec
#   h distribution function, hdf = gv(E)*(1-f(E))  -- for E <= Ec
# Define gcp(x) = gc(x+Ec).
# Then,
#   gc(E)*f(E) = gcp(x)*f(x+Ec)
#   where x = E - Ec >= 0 is the electron excitation energy.
# Likewise, define gvp(x) = gv(Ev-x)
#   gv(E)*(1-f(E)) = gvp(x)*(1-f(Ev-x))
#   where x = Ev - E >= 0 is the hole excitation energy.

# x is in unit of eV -- it is positive and used both for e and h.
# We are taking it to go to 7 kB T.
x = linspace (0, 5, 100) * kB * T

# Check that they are reasonable.
print 'mnr =', mnr
print 'mpr =', mpr

# These are from Eqs. T2.6a,b with x = E-Ec or Ev-E.
# If x is in unit of eV, then gcp, gvp are in unit of
#     eV ** 0.5  * eV ** 1.5 / eV ** 3 / Angstrom ** 3
#   = 1 / eV / Angstrom ** 3
gcp = sqrt(2. * x) * (mnr * 0.511e6) ** 1.5 / pi ** 2 / 1973 ** 3
gvp = sqrt(2. * x) * (mpr * 0.511e6) ** 1.5 / pi ** 2 / 1973 ** 3

# As given in the problem.
Ev = 0.
Ec = EG
EF = 0.75 * EG

# Multiply by f(x+Ec) and 1-f(Ev-x) respectively, as shown above.
edf = gcp / (exp ((x + Ec - EF) / kB / T) + 1)
hdf = gvp / (exp ((x - Ev + EF) / kB / T) + 1)

# Finally, convert the unit to 1 / eV / cm ** 3
edf *= 1.e24
hdf *= 1.e24

# Check the orders of magnitude.
print 'max (edf) / max (hdf) = %g' % (max (edf) / max (hdf))

# However, the hole counts are very low -- blow them up.
# Based on what we learnd just now.
hdf *= 5.e9

# All hard compuations now done -- plot them!
plot (x / kB / T, edf, label = 'Electron')
plot (x / kB / T, hdf, label = r'Hole ($\times$  $5\times10^9$)')
grid ()

# matplotlib comes with its own LaTeX parser -- cool!
xlabel (r'Carrier Excitation Energy (in unit of kT)')
ylabel ('Carrier Distribution (1/(eV cm$^3$))')
title ('Carrier Distribution Functions at T = 300 K')
legend ()

# Sort of equivalent to "print" of matlab.  "print" is a python keyword.
# Comment out one of these lines to get a print-out in batch mode.
#savefig ('E2p3.svg')
#savefig ('E2p3.eps')
savefig ('P2p9.png')

% Clean slate
close
clear

T = 300 % K 
kB = 0.02585 / 300 % eV/K
EG = 1.170 - 4.730e-4 * T ^ 2 / (T + 636) % pages 69,70
mnr = 1.028 + 6.11e-4 * T - 3.09e-7 * T ^ 2 % mnstar / m_e -- page 55
mpr = 0.610 + 7.83e-4 * T - 4.46e-7 * T ^ 2 % mpstar / m_e -- page 55

% What do we need to plot?
%   e distribution function, edf = gc(E)*f(E)      -- for E >= Ec
%   h distribution function, hdf = gv(E)*(1-f(E))  -- for E <= Ec
% Define gcp(x) = gc(x+Ec).
% Then,
%   gc(E)*f(E) = gcp(x)*f(x+Ec)
%   where x = E - Ec >= 0 is the electron excitation energy.
% Likewise, define gvp(x) = gv(Ev-x)
%   gv(E)*(1-f(E)) = gvp(x)*(1-f(Ev-x))
%   where x = Ev - E >= 0 is the hole excitation energy.

% x is in unit of eV -- it is positive and used both for e and h.
% We are taking it to go to 7 kB T.
x = linspace (0, 5, 100) * kB * T

% Check that they are reasonable.
mnr
mpr

% These are from Eqs. T2.6a,b with x = E-Ec or Ev-E.
% If x is in unit of eV, then gcp, gvp are in unit of
%     eV ** 0.5  * eV ** 1.5 / eV ** 3 / Angstrom ** 3
%   = 1 / eV / Angstrom ** 3
gcp = sqrt(2. * x) * (mnr * 0.511e6) ^ 1.5 / pi ^ 2 / 1973 ^ 3
gvp = sqrt(2. * x) * (mpr * 0.511e6) ^ 1.5 / pi ^ 2 / 1973 ^ 3

% As given in the problem.
Ev = 0.
Ec = EG
EF = 0.75 * EG

% Multiply by f(x+Ec) and 1-f(Ev-x) respectively, as shown above.
edf = gcp ./ (exp ((x + Ec - EF) / kB / T) + 1)
hdf = gvp ./ (exp ((x - Ev + EF) / kB / T) + 1)

% Finally, convert the unit to 1 / eV / cm ** 3
edf = edf * 1.e24
hdf = hdf * 1.e24

% Check the orders of magnitude.
max (edf) / max (hdf)

% However, the hole counts are very low -- blow them up.
% Based on what we learnd just now.
hdf = hdf * 5.e9

% All hard compuations now done -- plot them!
f (1, :) = edf
f (2, :) = hdf
plot (x / kB / T, f)
grid ()

% matplotlib comes with its own LaTeX parser -- cool!
xlabel ('Carrier Excitation Energy (in unit of kT)')
ylabel ('Carrier Distribution (1/(eV cm^3))')
title ('Carrier Distribution Functions at T = 300 K')
legend ('Electron', 'Hole (x 5x10^9)')

print -dpng P2p9_m.png

2.10b

#!/usr/bin/env python

from pylab import *

kB = 0.02585 / 300 # eV/K

# What do we need to plot?
#   the normalized e distribution function
#   nedf = gc f / n = ... as given in part (a) of this problem (and below).

# x is in unit of eV
# Need many points for a smooth curve at 300 K.
x = linspace (0, 0.4, 800)

for T in [300, 600, 1200]:
        EG = 1.170 - 4.730e-4 * T ** 2 / (T + 636) # pages 69,70
        mnr = 1.028 + 6.11e-4 * T - 3.09e-7 * T ** 2 # mnstar / m_e -- page 55
        mpr = 0.610 + 7.83e-4 * T - 4.46e-7 * T ** 2 # mpstar / m_e -- page 55
        # Check that they are reasonable.
        print 'mnr =', mnr, 'at T =', T
        print 'mpr =', mpr, 'at T =', T
        nedf = 2 * sqrt (x) / sqrt (pi) / (kB * T) ** 1.5 * exp (-x / (kB * T))
        plot (nedf, x, label = 'T = %g K' % T)
grid ()
legend ()
xlim ([0, 20])
ylim ([0, 0.4])

# matplotlib comes with its own LaTeX parser -- cool!
xlabel ('Normalized Electron Distribution Function (1/eV)')
ylabel ('Excitation Energy (eV)')

savefig ('P2p10.png')

% Clean slate
close
clear

kB = 0.02585 / 300 % eV/K

% What do we need to plot?
%   the normalized e distribution function
%   nedf = gc f / n = ... as given in part (a) of this problem (and below).

% x is in unit of eV
% Need many points for a smooth curve at 300 K.
x = linspace (0, 0.4, 800)

for ii=1:3;
        T = 300 * ii
        if ii == 3
                T = 1200
    end
        EG = 1.170 - 4.730e-4 * T ^ 2 / (T + 636) % pages 69,70
        mnr = 1.028 + 6.11e-4 * T - 3.09e-7 * T ^ 2 % mnstar / m_e -- page 55
        mpr = 0.610 + 7.83e-4 * T - 4.46e-7 * T ^ 2 % mpstar / m_e -- page 55
        nedf = 2 * sqrt (x) / sqrt (pi) / (kB * T) ^ 1.5 .* exp (-x / (kB * T))
        f(:,ii) = nedf
end
plot (f, x)
grid ()
legend ('T = 300 K', 'T = 600 K', 'T = 1200 K')
axis ([0 20 0 0.4])

xlabel ('Normalized Electron Distribution Function (1/eV)')
ylabel ('Excitation Energy (eV)')

print -dpng P2p10_m.png