Mode-Resolved Bulk Data#
The material underlying the structure is described by the following mode-resolved quantities:
Property [symbol] |
Shape |
Units |
---|---|---|
|
\(N\) |
s |
|
\(N\) |
Jm \(^{-3}\) K \(^{-1}\) |
|
\(N\times 3\) |
ms \(^{-1}\) |
where \(N=N_q\times N_b\), with \(N_q\) and \(N_b\) being the number of wave-vectors and polarization, respectively. The bulk thermal conductivity tensor is given by
The (specific) heat capacity is defined by
with \(\eta_\mu = \hbar \omega_\mu/(2 k_b T)\). Note that the presence of \(N_q\) in the heat capacity is not standard but introduced here for convenience.
The material data is stored as a sqlite3
database (with .db extension), which can be conveniently handled by sqlitedict. With your material file, say foo.db
, is in the current directory, you can load it with
from openbte import load_rta
rta_data = load_rta('foo',source='local')
The above code is nothing than a wrapper to the sqlite3
’s loader. Note that there is also a minimal database of precomputed materials. Currently, it includes silicon at room temperature, computed with AlmaBTE.
from openbte import load_rta
rta_data = load_rta('Si_rta',source='database')
To save your own material data, you can also use a wrapper
import openbte.utils
#C = ...
#v = ...
#tau = ...
utils.save('rta',{'scattering_time':tau,'heat_capacity':C,'group_velocity':v}
You can double-check the consistency of your data by comparing the resulting thermal conductivity with the expected one
import numpy as np
#C = ...
#v = ...
#tau = ...
#kappa = ... #Expected thermal conductivity tensor
print(np.allclose(np.einsum('u,ui,uj,u->ij',C,v,v,tau)-kappa))