-
Notifications
You must be signed in to change notification settings - Fork 0
/
SBM_Parabolic.py
156 lines (114 loc) · 3.89 KB
/
SBM_Parabolic.py
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# -*- coding: utf-8 -*-
"""
Created on Wed Aug 16 12:21:32 2023
@author: viola
"""
# 2D SINGLE-PARABOLIC-BAND MATERIALS #
# import necessary modules
import numpy as np
import mpmath
from scipy.integrate import quad
from functions import exp1
# useful functions
plog = np.frompyfunc(mpmath.polylog, 2, 1)
def func_Fi(x,
i,
eta):
"""
function to calculate the F_i function integrand
Parameters
----------
x : TYPE nd.ndarray
DESCRIPTION variable with respect to which the integration will be done,
corresponding to the difference between the energy level and chemical potential
i : TYPE int
DESCRIPTION index parameter to be entered in the function,
indicating the corresponding transport integral
eta : TYPE float
DESCRIPTION chemical potential value to be entered in the function
Returns
-------
calculated function : TYPE float
DESCRIPTION calculated value for the F_i function integrand
"""
return (x)**i/(exp1(x - eta))
def Fic(func_Fi,
i,
eta):
"""
function to calculate the F_i function for the conduction band
Parameters
----------
func_Fi : TYPE function
DESCRIPTION integrand function
i : TYPE int
DESCRIPTION index parameter to be entered in the function,
indicating the corresponding transport integral
eta : TYPE float
DESCRIPTION chemical potential value to be entered in the function
Returns
-------
calculated function : TYPE float
DESCRIPTION calculated value for the F_i function
"""
return 0.5*quad(func_Fi, 0, 100, (i, eta))[0]
############## TE QUANTITIES OF THE MATERIAL ##############
def sigma_SBMP(eta):
"""
function to calculate the electrical conductivity sigma of the material
Parameters
----------
eta : TYPE float
DESCRIPTION chemical potential value to be entered in the function
Returns
-------
calculated function : TYPE float
DESCRIPTION calculated value for sigma
"""
return Fic(func_Fi, 0, eta)
def S_SBMP(eta):
"""
function to calculate the Seebeck coefficient of the material
Parameters
----------
eta : TYPE float
DESCRIPTION chemical potential value to be entered in the function
Returns
-------
calculated function : TYPE float
DESCRIPTION calculated value for S
"""
return (2*Fic(func_Fi, 1, eta) - eta*Fic(func_Fi, 0, eta))/Fic(func_Fi, 0, eta)
def ke_SBMP(eta):
"""
function to calculate the thermal electronic conductivity k_e of the material
Parameters
----------
eta : TYPE float
DESCRIPTION chemical potential value to be entered in the function
Returns
-------
calculated function : TYPE float
DESCRIPTION calculated value for k_e
"""
F_2 = 3*Fic(func_Fi, 2, eta) # 1st term (F2 contribution)
F_1 = 4*eta*Fic(func_Fi, 1, eta) # 2nd term (F1 contribution)
F_0 = (eta**2)*Fic(func_Fi, 0, eta) # 3rd term (F0 contribution)
F_1_0 = ((2*Fic(func_Fi, 1, eta) - eta*Fic(func_Fi, 0, eta))**2)/Fic(func_Fi, 0, eta) # 4th term (F1 and F0 contribution)
return F_2 - F_1 + F_0 - F_1_0
def ZT_SBMP(eta,
rk):
"""
function to calculate the figure of merit ZT of the material
Parameters
----------
eta : TYPE float
DESCRIPTION chemical potential value to be entered in the function
rk : TYPE float
DESCRIPTION thermal lattice conductivity value to be entered in the function
Returns
-------
calculated function : TYPE float
DESCRIPTION calculated value for ZT
"""
return ((S_SBMP(eta)**2)*sigma_SBMP(eta))/(ke_SBMP(eta) + rk)