-
Notifications
You must be signed in to change notification settings - Fork 0
/
eta_complete.m
57 lines (46 loc) · 1.54 KB
/
eta_complete.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function [eta1, eta2] = eta_complete( it_probe, it_signal )
%ETA_COMPLETE Signal quasiparticle creation efficiency with probe and
%signal, compares increase in quasiparticle generation rate to expected rate if all generated qp have E=Delta
%%
N_qp_r = @(x) 4*x.N0*x.bin_width*sum(-recombination_power(x).*x.rho(1:x.N));
B = it_probe.tf.sc.RT_B;
N2D = N_2Delta_thermal(it_probe.tf.sc, it_probe.tf.sc.T_B);
taul = it_probe.tf.sc.tau_l;
Pabs = it_probe.tf.Pabs_p;
Nnet = (N_qp_r(it_probe.tf.sc) - 2*B*N2D) / (1 + B*taul);
if Pabs > 0
if Nnet < 0
warning('Negative probe eta!');
eta1 = NaN;
else
eta1 = Nnet*it_probe.tf.sc.Delta/Pabs;
end
else
Nnet = 0;
eta1 = NaN;
end
if nargin > 1
if it_signal.tf.enable_signal && (~isempty(it_signal.tf.enable_phonon) && it_signal.tf.enable_phonon)
error('Cant calculate eta when both signal and phonon are on');
end
B = it_signal.tf.sc.RT_B;
N2D = N_2Delta_thermal(it_signal.tf.sc, it_signal.tf.sc.T_B);
taul = it_signal.tf.sc.tau_l;
if it_signal.tf.enable_signal && (isempty(it_signal.tf.enable_phonon) || ~it_signal.tf.enable_phonon)
Pabs = it_signal.tf.Pabs_s;
elseif ~it_signal.tf.enable_signal && (~isempty(it_signal.tf.enable_phonon) && it_signal.tf.enable_phonon)
Pabs = it_signal.tf.Pabs_phonon;
else
Pabs = 0;
end
Nnet2 = (N_qp_r(it_signal.tf.sc) - 2*B*N2D) / (1 + B*taul) - Nnet;
if Pabs > 0
if Nnet2 < 0
warning('Negative signal eta!'); %Probably just floating point error
end
eta2 = Nnet2*it_signal.tf.sc.Delta/Pabs;
else
eta2 = NaN;
end
end
end