ECE_456_Reports/PS1/q3.m
2021-02-06 20:15:01 -07:00

69 lines
1.8 KiB
Matlab
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

% Thermo-electric current
% Physical constants
hbar = 1.054e-34;
q = 1.602e-19;
% Parameters (eV)
kBT_1 = 0.025;
kBT_2 = 0.026;
mu = 0;
gamma_1 = 0.005;
gamma_2 = gamma_1;
gamma_sum = gamma_1 + gamma_2;
% Channel energy levels, varying between -0.25eV and 0.25eV
epsilon = linspace(-0.25, 0.25, 101);
depsilon = epsilon(2) - epsilon(1);
% Energy grid
E = linspace(-1, 1, 501);
dE = E(2) - E(1);
% Contact fermi functions
f_1 = 1 ./ (1 + exp((E - mu)./kBT_1));
f_2 = 1 ./ (1 + exp((E - mu)./kBT_2));
% Iterate through channel energy levels
for n = 1:length(epsilon)
% Compute energy level density functions - integral normalized to unity
D = (gamma_sum./(2*pi))./((E-epsilon(n)).^2+((gamma_sum./2).^2));
%D = (gamma./(2*pi))./((E-epsilon(n)).ˆ2+((gamma_sum./2).ˆ2));
D = D./(dE*sum(D));
% Compute number of channel electrons
N(n) = dE*sum( ((gamma_1./gamma_sum).*f_1 + (gamma_2./gamma_sum).*f_2).*D );
% Compute the current in Amps; factor of q to resolve units
I(n) = q*(q/hbar)*dE*sum((f_1 - f_2).*D.*gamma_1.*gamma_2./gamma_sum);
%plot f_1 - f_2 and D/2
if (abs(epsilon(n) + 0.05) <= depsilon / 2) & (epsilon(n) <= 0)
figure(3);
h = plot(f_1-f_2, E, 'x', D/2500, E, 'k-');
set(gca, 'Fontsize', [18]);
axis([-0.01 0.02 -1 1]);
xlabel('f1(E) - f2(E), D(E)/2500');
ylabel('ENERGY [eV]');
legend('f1-f2', 'D(E)/2500');
title('CHANNEL LEVEL = -0.05 eV');
elseif (abs(epsilon(n)) <= depsilon / 2) & (epsilon(n) <= 0)
figure(4);
h = plot(f_1-f_2, E, 'x', D/2500, E, 'k-');
set(gca, 'Fontsize', [18]);
axis([-0.01 0.02 -1 1]);
xlabel('f1(E) - f2(E), D(E)/2500');
ylabel('ENERGY [eV]');
legend('f1-f2', 'D(E)/2500');
title('CHANNEL LEVEL = 0 eV');
end
end
% Final plots
figure(1);