inter/intra breakdown, better max carrier val

This commit is contained in:
andy 2021-03-22 17:51:55 +00:00
parent eea2bc4b79
commit c29ffe96bb
4 changed files with 87 additions and 19 deletions

View File

@ -4,42 +4,72 @@
close all; clear all; clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% FLAGS & OPTIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%
DISPLAY_HZ = true;
MIN_F = 0;
MAX_F = 15; % Hz
F_TOTAL = 50;
MAX_Y = 30; % carriers
MAX_Y = 17; % carriers (m-2)
Y_TOTAL = 50;
%EXCITATION_TYPE = 'intra';
EXCITATION_TYPE = 'inter';
%EXCITATION_TYPE = 'all';
t = 2.8; % eV
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% CALCULATE
%%%%%%%%%%%%%%%%%%%%%%%%%%%
f_vals = logspace(MIN_F, MAX_F, F_TOTAL); % hz
f_vals = f_vals .* (2*pi); % rads-1
carrier_vals = logspace(0, MAX_Y, Y_TOTAL); % m-2
%carrier_vals = carrier_vals + 273.15;
% below turns turns carrier densities into Fermi energies
fermi_vals = zeros(1, length(carrier_vals));
for carr=1:length(carrier_vals)
fermi_vals(carr) = fermi_from_carrier_density(carrier_vals(carr), ev_to_j(t));
end
cond = zeros(length(f_vals), length(fermi_vals));
% CALCULATE SHEET CONDUCTIVITY
cond = zeros(length(f_vals), % frequency
length(fermi_vals), % fermi
2); % intra/inter
for freq=1:length(f_vals)
for y=1:length(fermi_vals)
% omega (rads-1), fermi_level (eV), temp (K), scatter_lifetime (s-1)
cond(freq, y) = sheet_conductivity(f_vals(freq), fermi_vals(y), 300, 5e-12);
cond(freq, y, :) = sheet_conductivity(f_vals(freq), % omega (rads-1)
fermi_vals(y), % fermi_level (J)
300, % temp (K)
5e-12); % scatter_lifetime (s-1)
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% RENDER
%%%%%%%%%%%%%%%%%%%%%%%%%%%
if DISPLAY_HZ % divide radians back to hertz
f_vals = f_vals ./ (2*pi);
end
figure(1)
surf(f_vals, carrier_vals, transpose(real(cond)));
if EXCITATION_TYPE == 'intra'
surf(f_vals, carrier_vals, transpose(real(cond(:, :, 1))));
elseif EXCITATION_TYPE == 'inter'
surf(f_vals, carrier_vals, transpose(real(cond(:, :, 2))));
else
surf(f_vals, carrier_vals, transpose(real(sum(cond, 3))));
end
h = gca;
rotate3d on
grid;
@ -47,7 +77,7 @@ colorbar;
set(h, 'xscale', 'log')
set(h, 'yscale', 'log')
title('2D Sheet Real Conductivity');
ylabel('Net Carrier Density');
ylabel('Net Carrier Density (m-2)');
zlabel('Conductivity (S/m)');
if DISPLAY_HZ
xlabel('Frequency (Hz)');
@ -56,7 +86,14 @@ else
end
figure(2)
surf(f_vals, carrier_vals, transpose(imag(cond)));
if EXCITATION_TYPE == 'intra'
surf(f_vals, carrier_vals, transpose(imag(cond(:, :, 1))));
elseif EXCITATION_TYPE == 'inter'
surf(f_vals, carrier_vals, transpose(imag(cond(:, :, 2))));
else
surf(f_vals, carrier_vals, transpose(imag(sum(cond, 3))));
end
surf(f_vals, carrier_vals, transpose(imag(sum(cond, 3))));
h = gca;
rotate3d on
grid;
@ -64,7 +101,7 @@ colorbar;
set(h, 'xscale', 'log')
set(h, 'yscale', 'log')
title('2D Sheet Imaginary Conductivity');
ylabel('Net Carrier Density');
ylabel('Net Carrier Density (m-2)');
zlabel('Conductivity (S/m)');
if DISPLAY_HZ
xlabel('Frequency (Hz)');

View File

@ -2,31 +2,58 @@
%%
%% calculate and present 2D sheet conductivty for graphene
close all;clear all; clc;
close all; clear all; clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% FLAGS & OPTIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%
DISPLAY_HZ = true;
MIN_F = 9;
MAX_F = 15;
F_TOTAL = 1e2;
%EXCITATION_TYPE = 'intra';
EXCITATION_TYPE = 'inter';
%EXCITATION_TYPE = 'all';
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% CALCULATE
%%%%%%%%%%%%%%%%%%%%%%%%%%%
x_vals = logspace(MIN_F, MAX_F, F_TOTAL); % hz
x_vals = x_vals .* (2*pi); % rads-1
cond = [];
for x=x_vals
% omega (rads-1), fermi_level (J), temp (K), scatter_lifetime (s-1)
cond = [cond sheet_conductivity(x, fermi_from_carrier_density(7e7, ev_to_j(2.8)), 3000, 5e-12)];
% CALCULATE SHEET CONDUCTIVITY
cond = zeros(length(x_vals), 2);
for x=1:length(x_vals)
cond(x, :) = sheet_conductivity(x_vals(x), % omega (rads-1)
fermi_from_carrier_density(2.2e17, ev_to_j(2.8)), % fermi_level (J)
300, % temp (K)
0.135e-12); % scatter_lifetime (s-1)
end
if DISPLAY_HZ % divide radians back to hertz
x_vals = x_vals ./ (2*pi);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% RENDER
%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1);
hold on;
%plot(x_vals, real(cond));
semilogx(x_vals, real(cond));
semilogx(x_vals, imag(cond));
if EXCITATION_TYPE == 'intra'
semilogx(x_vals, real(cond(:, 1)));
semilogx(x_vals, imag(cond(:, 1)));
elseif EXCITATION_TYPE == 'inter'
semilogx(x_vals, real(cond(:, 2)));
semilogx(x_vals, imag(cond(:, 2)));
else
semilogx(x_vals, real(sum(cond, 2)));
semilogx(x_vals, imag(sum(cond, 2)));
end
legend('Real', 'Imaginary');
grid;

View File

@ -1,4 +1,4 @@
function fermi = fermi_from_carrier_density(carrier_density, energy_scale), % cm-2, J
function fermi = fermi_from_carrier_density(carrier_density, energy_scale), % m-2, J
if carrier_density > 0
sf = 1;

View File

@ -6,7 +6,7 @@ e = 1.602e-19; % coulombs
kb = 1.380e-23; % J/K
hbar = 6.626e-34 / (2*pi); % Js
%% TERM 1
%% TERM 1 - INTRABRAND
term1_coeff = (2i*(e^2)*kb*temp) ...
/ ...
(pi*hbar^2*(omega + (1i/scatter_lifetime)));
@ -14,7 +14,9 @@ term1 = log(2*cosh(fermi_level ...
/ ...
(2*kb*temp)));
%% TERM 2
intraband = term1_coeff*term1;
%% TERM 2 - INTERBAND
term2_coeff = (e^2) ...
/ ...
(4*hbar);
@ -30,8 +32,10 @@ term_2_term_3 = (1i/2*pi) * ...
/ ...
((hbar*omega - 2*fermi_level)^2 + 4*((kb*temp)^2)));
interband = term2_coeff*(term_2_term_1 + term_2_term_2 - term_2_term_3);
%% OUTPUT
conductivity = term1_coeff*term1 + term2_coeff*(term_2_term_1 + term_2_term_2 - term_2_term_3);
conductivity = [intraband interband]; % return separately for display or summing
end