diff --git a/2D-Conductivity/conductivity_calc_surface.m b/2D-Conductivity/conductivity_calc_surface.m new file mode 100644 index 0000000..590fccf --- /dev/null +++ b/2D-Conductivity/conductivity_calc_surface.m @@ -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 diff --git a/2D-Conductivity/conductivity_calculations.m b/2D-Conductivity/conductivity_calculations.m new file mode 100644 index 0000000..88d7c33 --- /dev/null +++ b/2D-Conductivity/conductivity_calculations.m @@ -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 diff --git a/2D-Conductivity/ev_to_j.m b/2D-Conductivity/ev_to_j.m new file mode 100644 index 0000000..a232405 --- /dev/null +++ b/2D-Conductivity/ev_to_j.m @@ -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 + diff --git a/2D-Conductivity/hz_to_omega.m b/2D-Conductivity/hz_to_omega.m new file mode 100644 index 0000000..c29c008 --- /dev/null +++ b/2D-Conductivity/hz_to_omega.m @@ -0,0 +1,5 @@ +function omega = hz_to_omega(Hz) +%HZ_TO_OMEGA Transform Hz into angular frequency +omega = 2*pi*Hz; +end + diff --git a/2D-Conductivity/sheet_conductivity.m b/2D-Conductivity/sheet_conductivity.m new file mode 100644 index 0000000..14c1f80 --- /dev/null +++ b/2D-Conductivity/sheet_conductivity.m @@ -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 +