added start of conductivity calculations

This commit is contained in:
andy 2021-02-23 10:30:12 +00:00
parent feebd8eef6
commit 49748226a8
5 changed files with 122 additions and 0 deletions

View File

@ -0,0 +1,44 @@
%% conductivity_calc_surface.m
%%
%% calculate and present 2D sheet conductivty for graphene
close all; clear all; clc;
DISPLAY_HZ = true;
MAX_F = 1e12; % Hz
F_TOTAL = 1e3;
MAX_Y = 10; % ev
Y_TOTAL = 100;
f_vals = 1:MAX_F/F_TOTAL:MAX_F; % hz
f_vals = f_vals .* (2*pi); % rads-1
y_vals = 1:MAX_Y/Y_TOTAL:MAX_Y; % ev
%y_vals = y_vals + 273.15;
cond = zeros(length(f_vals), length(y_vals));
for freq=1:length(f_vals)
for y=1:length(y_vals)
% omega (rads-1), fermi_level (J), temp (K), scatter_lifetime (s-1)
cond(freq, y) = sheet_conductivity(f_vals(freq), ev_to_j(y_vals(y)), 300, 5e-12);
end
end
if DISPLAY_HZ % divide radians back to hertz
f_vals = f_vals ./ (2*pi);
end
surf(f_vals, y_vals, transpose(abs(cond)));
h = gca;
rotate3d on
grid();
set(h, 'xscale', 'log')
title('2D Sheet Conductivity');
ylabel('Fermi Level (ev)');
zlabel('Conductivity (S/m)');
if DISPLAY_HZ
xlabel('Frequency (Hz)');
else
xlabel('Frequency (rads-1)');
end

View File

@ -0,0 +1,31 @@
%% conductivity_calculations.m
%%
%% calculate and present 2D sheet conductivty for graphene
close all; clear all; clc;
DISPLAY_HZ = true;
MAX_F = 1e12;
F_TOTAL = 1e4;
x_vals = 1:MAX_F/F_TOTAL:MAX_F; % hz
x_vals = x_vals .* (2*pi); % rads-1
% omega (rads-1), fermi_level (J), temp (K), scatter_lifetime (s-1)
cond = arrayfun(@(x) sheet_conductivity(x, ev_to_j(3), 300, 5e-12), x_vals);
if DISPLAY_HZ % divide radians back to hertz
x_vals = x_vals ./ (2*pi);
end
%plot(x_vals, cond);
semilogx(x_vals, cond);
grid();
title('2D Sheet Conductivity');
ylabel('Conductivity (S/m)');
if DISPLAY_HZ
xlabel('Frequency (Hz)');
else
xlabel('Frequency (rads-1)');
end

View File

@ -0,0 +1,5 @@
function J = ev_to_j(electron_volts)
%EV_TO_J Transform electron-volts into Joules
J = electron_volts * 1.602e-19;
end

View File

@ -0,0 +1,5 @@
function omega = hz_to_omega(Hz)
%HZ_TO_OMEGA Transform Hz into angular frequency
omega = 2*pi*Hz;
end

View File

@ -0,0 +1,37 @@
function conductivity = sheet_conductivity(omega, fermi_level, temp, scatter_lifetime)
%SHEET_CONDUCTIVITY Calculate 2D sheet conductivity
%% CONSTANTS
e = 1.602e-19; % coulombs
kb = physconst('Boltzmann'); % J/K
hbar = 6.626e-34 / (2*pi); % Js
%% TERM 1
term1_coeff = (2i*(e^2)*kb*temp) ...
/ ...
(pi*hbar^2*(omega + (1i/scatter_lifetime)));
term1 = log(2*cosh(fermi_level ...
/ ...
(2*kb*temp)));
%% TERM 2
term2_coeff = (e^2) ...
/ ...
(4*hbar);
term_2_term_1 = 1/2;
term_2_term_2 = (1/pi) * ...
atan((hbar*omega - 2*fermi_level) ...
/ ...
(2*kb*temp));
term_2_term_3 = (1i/2*pi) * ...
log((hbar*omega + 2*fermi_level)^2 ...
/ ...
((hbar*omega - 2*fermi_level)^2 + 4*((kb*temp)^2)));
%% OUTPUT
conductivity = term1_coeff*term1 + term2_coeff*(term_2_term_1 + term_2_term_2 - term_2_term_3);
end