1
+ %%
2
+ % Provide Drude model Fitting with n,k data
3
+ % By comparing complex conductivity with classical EM theory
4
+ % Date : 2020/03/03
5
+ % Check epi_inf at line 12
6
+ % Initial guess at line 47
7
+ % Revised : 2020/04/10
8
+ %% Data I/O and Basic Treatment
9
+ D = fscanf(fopen(' ThinFilm-RIX-RTA-1e14.txt' ,' r' ),' %f %f %f ' ,[3 ,inf ]);
10
+ global epi0
11
+ epi0 = 8 .85e- 12 ;
12
+ epi_inf = 10.89 ;
13
+ fTHz = D(1 ,: );
14
+ n = D(2 ,: );
15
+ k = D(3 ,: );
16
+ Range = and(fTHz >= 0.2 ,fTHz <= 1.2 );
17
+ fTHz = fTHz(Range );
18
+ n = n(Range );
19
+ k = k(Range );
20
+ f = fTHz * 1e+ 12 ;
21
+ w = 2 * pi * f ;
22
+
23
+ figure(1 );
24
+ title(' Complex Refractive Index' );
25
+ yyaxis left
26
+ plot(fTHz ,n ,' Linewidth' ,0.9 );
27
+ xlabel(' Frequency(THz)' );
28
+ ylabel(' Real Refractive Index' );
29
+ yyaxis right
30
+ plot(fTHz ,k ,' Linewidth' ,0.9 );
31
+ ylabel(' Imag Refractive Index' );
32
+ %% Complex Conductivity from Classical EM Wave Theory
33
+ ReCond_EM = 2 * n .* k .* w * epi0 ;
34
+ ImCond_EM = epi0 * w .*(epi_inf - n .^ 2 + k .^ 2 );
35
+ ComplexCond_EM = complex(ReCond_EM ,ImCond_EM );
36
+
37
+ figure(2 );
38
+ title(' Complex Conductivity' );
39
+ yyaxis left
40
+ plot(fTHz ,ReCond_EM ,' Linewidth' ,0.9 );
41
+ xlabel(' Frequency(THz)' );
42
+ ylabel(' Real Conductivity' );
43
+ yyaxis right
44
+ plot(fTHz ,ImCond_EM ,' Linewidth' ,0.9 );
45
+ ylabel(' Imag Conductivity' );
46
+ %% Drude Model Fitting
47
+ iniguess = [3e+ 14 ,10e- 15 ];
48
+ % Initial Guess for plasma freq
49
+ g = @(x ) sum(abs(CondDrude(epi0 ,w ,x(1 ),x(2 )) - ComplexCond_EM ));
50
+ [result ,residue ] = fminsearch(g ,iniguess );
51
+ wp = result(1 );
52
+ tau = result(2 );
53
+ fprintf(' Plasma Frequency = %g (rad*THz)\n ' ,wp / 1e+ 12 );
54
+ fprintf(' Collision Time = %g (fs)\n ' ,tau * 1e+ 15 );
55
+ %% Comparison between Experimental Result and Drude Model Fitting
56
+ ReCondFit = real(CondDrude(epi0 ,w ,wp ,tau ));
57
+ ImCondFit = imag(CondDrude(epi0 ,w ,wp ,tau ));
58
+ CondFit = complex(ReCondFit ,ImCondFit );
59
+
60
+ figure(3 );
61
+ sgtitle(' Comparsion of Experiment and Drude Fitting' );
62
+ subplot(2 ,1 ,1 );
63
+ plot(fTHz ,ReCond_EM ,' Linewidth' ,0.9 );
64
+ xlabel(' Frequency(THz)' );
65
+ ylabel(' Real Conductivity' );
66
+ hold on
67
+ plot(fTHz ,ReCondFit ,' o' );
68
+ hold off
69
+ legend(' Experimental' ,' Drude Fitting' );
70
+ subplot(2 ,1 ,2 );
71
+ plot(fTHz ,ImCond_EM ,' Linewidth' ,0.9 );
72
+ xlabel(' Frequency(THz)' );
73
+ ylabel(' Imag Conductivity' );
74
+ hold on
75
+ plot(fTHz ,ImCondFit ,' o' );
76
+ hold off
77
+ legend(' Experimental' ,' Drude Fitting' );
78
+ %% Error Contour
79
+ % wp_err = linspace(0.5*wp,1.5*wp,1000);
80
+ % tau_err = linspace(0.5*tau,1.5*tau,1000);
81
+ % err = zeros(1000);
82
+ %
83
+ % for a = 1:1000
84
+ % for b = 1:1000
85
+ % err(a,b) = abs(g([wp_err(a),tau_err(b)]));
86
+ % end
87
+ % end
88
+ %
89
+ % figure(4);
90
+ % contourf(wp_err,tau_err,err,50);
91
+ % title('Residue Contour of Drude Fitting');
92
+ % xlabel('Variation of Plasma Frequency');
93
+ % ylabel('Variation of Collision Time');
94
+ % colormap (jet(51))
95
+ % colorbar
96
+ %% Derivation of Carrier Concentration, Mobility and DC Conductivity
97
+ q = 1 .6e- 19 ;
98
+ m0 = 9 .1e- 31 ;
99
+ effm = 0.063 * m0 ;
100
+ Ne = epi0 * wp ^ 2 * effm / q ^ 2 ;
101
+ mobility = q * tau / effm ;
102
+ DCCond = epi0 * wp ^ 2 * tau ;
103
+ fprintf(' Carrier Concentration = %g (cm^-3)\n ' ,Ne / 1e+6 );
104
+ fprintf(' Mobility = %g (cm^2/V/s)\n ' ,mobility * 1e+4 );
105
+ fprintf(' DC Conductivity = %g (S/cm)\n ' ,DCCond / 100 );
106
+ %% Generation of Comparison Plots of Complex RIX
107
+ epi = epi_inf + 1i * CondFit ./ w / epi0 ;
108
+ n_pre = real(sqrt(epi ));
109
+ k_pre = imag(sqrt(epi ));
110
+
111
+ figure(4 );
112
+ sgtitle(' Comparsion of Refractive Index' );
113
+ subplot(2 ,1 ,1 );
114
+ plot(fTHz ,n ,' o' );
115
+ xlabel(' Frequency(THz)' );
116
+ ylabel(' n' );
117
+ title(' Real Refractive Index' );
118
+ hold on
119
+ plot(fTHz ,n_pre ,' Linewidth' ,0.9 );
120
+ legend(' Experimental' ,' Predicted' );
121
+ hold off
122
+ subplot(2 ,1 ,2 );
123
+ plot(fTHz ,k ,' o' );
124
+ xlabel(' Frequency(THz)' );
125
+ ylabel(' k' );
126
+ title(' Imag Refractive Index' );
127
+ hold on
128
+ plot(fTHz ,k_pre ,' Linewidth' ,0.9 );
129
+ legend(' Experimental' ,' Predicted' );
130
+ hold off
131
+ fclose(' all' );
132
+ %% Function Body (Do Not Modify)
133
+ function CompCond = CondDrude(epi0 ,w ,wp ,tau )
134
+ numer = epi0 * wp ^ 2 * tau ;
135
+ denom = 1 - 1i * w * tau ;
136
+ CompCond = numer ./ denom ;
137
+ end
0 commit comments