qtcad.device.materials module
Defines the material class along with a database of default materials.
- class qtcad.device.materials.Material(inp_dict=None, alloy_func=None, alloy_composition=0, ignore_warn=False)
Bases:
Material
A material is a dictionary of parameters and a method to display them.
- Attributes:
name (str) – Chemical formula of the material
valleys (2D field) – Location of the valleys (in the Brillouin zone). Each valley has a corresponding inverse effective-mass tensor. These tensors are listed in the attribute ‘Me_inv_valley’. First index: valley index. Second index: Cartesian direction index
mc (1D field) – Electron effective mass (bulk density of states) for each band
mv (1D field) – Hole effective mass (bulk density of states) for each band
Me_inv (2D field) – Inverse effective-mass tensor to use in 2D and 3D Schroedinger solvers.
Me_inv_valley (3D field) – Inverse effective-mass tensor corresponding to each valley of the ‘valleys’ attribute. These tensors can be used in the 2D and 3D Schroedinger solvers. First index: valley index. Second and third index: Cartesian direction index.
mc_xc (0D field) – Electron effective mass used in exchange-correlation potential calculation
mv (0D field) – Hole effective mass (bulk density of states)
gc (1D field of int) – Total (spin and valley) conduction band degeneracy (bulk) for each band
gv (1D field of int) – Total valence band degeneracy (bulk) for each band
gqc (0D field of int) – Total degeneracy (spin and valley) of electrons to use when populating energy eigenstates. Default: 4, for spin degeneracy and two-fold valley degeneracy of the Delta_2 valley in silicon under strong confinement.
gqv (0D field of int) – Total degeneracy (spin and valley) for holes to use when populating energy eigenstates. Default: 1, the models currently implmented solve explicitly for each band of the system.
eps (0D field) – Permittivity
Eg (0D field) – Bandgap
chi (0D field) – Electron affinity
insulator (0D field of bool) – If True, the material is modeled as an ideal insulator (no wavefunction penetration). Default: False.
hole_kp_params (1D array) – Values of all k.p parameters for holes. In order we have \(\gamma_1\), \(\gamma_2\), \(\gamma_3\), and \(\Delta\) (spin-orbit splitting).
hole_Zeeman_params (1D array) – Hole g factors. First entry is the kappa g factor which couples the spin-3/2 matrices to the B field and the second entry is the q g factor which couples the cube of the spin-3/2 matrices to the B field
macro_diff (0D field) – Difference between the macroscopic potential of the material and that of the reference material.
vlnce_band_macro (0D field) – Position of the valence band edge with respect to the macroscopic potential in the bulk material.
cond_band_def_pot (1d array) – Conduction band deformation potential parameters.
vlnce_band_def_pot (1d array) – Valence band deformation potential parameters.
- __init__(inp_dict=None, alloy_func=None, alloy_composition=0, ignore_warn=False)
Constructor of the Materials class.
- Parameters:
inp_dict (Dictionary or None, optional) – Dictionary defining all materials parameters. If None, use default materials parameters, which are those of silicon.
alloy_func (function) – A function that outputs an input dictionary. The function should be a function of a float between 0 and 1 which determines the alloy composition.
alloy_composition (float) – The scalar value between 0 and 1 indicating the default alloy composition.
ignore_warn (bool) – Whether to ignore the warning for the unassigned value in the material.
- copy()
Creates a deep copy of the current material.
- Returns:
Material object – The copy of this material.
- print()
Displays parameters of given material.
- set_alloy_composition(x)
Sets the alloy composition fraction x in a binary alloy of the form \(\mathrm{A}_x\mathrm{B}_{1-x}\) or \(\mathrm{A}_{1-x}\mathrm{B}_{x}\).
- Parameters:
x (float) – The composition fraction \(x\).
- set_param(param_name, param_val)
Sets the value of a material parameter.
- Parameters:
param_name (str) – The string labeling the parameter to modify.
param_val – The value of the material parameter.
- qtcad.device.materials.alloy_bowing(prop, mat_1, mat_2, x, bowing=0.0)
Function to evaluate binary alloy property from a linear or quadratic interpolation between two material parameters.
- Parameters:
prop (str) – Material property to evaluate.
mat_1 (material obj) – First material in binary alloy
mat_2 (material obj) – Second material in binary alloy
x (float) – The concentration of the first material in the alloy.
bowing (float, optional) – Bowing parameter giving the coefficient of the quadratic term in the property evaluation.
- Returns:
float or ndarray – The value of the material property for the binary alloy.
Note
See S. Adachi, III-V Ternary and Quaternary Compounds, Springer Handbook of Electronic and Photonic Materials, Springer International Publishing (2017).
- qtcad.device.materials.alloy_cubic(a, b, c, d, x, material=1)
Define an alloy property based on a cubic fit.
The alloy is of the form \(\mathrm{A}_{x}\mathrm{B}_{1-x}\) where \(x\) is the concentration of material \(\mathrm A\).
The material property is given by \(a+bx+cx^2+dx^3\).
- Parameters:
a (float) – Value of the \(a\) coefficient in the cubic fit.
b (float) – Value of the \(b\) coefficient in the cubic fit.
c (float) – Value of the \(c\) coefficient in the cubic fit.
d (float) – Value of the \(d\) coefficient in the cubic fit.
x (float) – Concentration of material \(\mathrm A\).
material (int, optional) – If 1, \(x\) gives the concentration of material \(\mathrm A\). If 2, \(x\) gives the concentration of material \(\mathrm B\), and the alloy is \(\mathrm A_{1-x} \mathrm B_x\). In this latter case, the values of the \(a\) and \(b\) are still interpreted as the values of the coefficients if \(x\) were the concentration of material \(\mathrm A\).
Note
Use
material=2
if fitting coefficients are known for \(\mathrm{A}_{x}\mathrm{B}_{1-x}\) but \(x\) is instead given for \(\mathrm{A}_{1-x}\mathrm B_x\).
- qtcad.device.materials.alloy_linear(y_intercept, slope, x, material=1)
Define an alloy property based on a linear fit.
The alloy is of the form \(\mathrm{A}_{x}\mathrm{B}_{1-x}\) where \(x\) is the concentration of material \(\mathrm A\).
The material property is given by \(a+bx\).
- Parameters:
y_intercept (float) – Value of the \(a\) coefficient in the linear fit.
slope (float) – Value of the \(b\) coefficient in the linear fit.
x (float) – Concentration of material \(\mathrm A\).
material (int, optional) – If 1, \(x\) gives the concentration of material \(\mathrm A\). If 2, \(x\) gives the concentration of material \(\mathrm B\), and the alloy is \(\mathrm A_{1-x} \mathrm B_x\). In this latter case, the values of the \(a\) and \(b\) are still interpreted as the values of the coefficients if \(x\) were the concentration of material \(\mathrm A\).
Note
Use
material=2
if fitting coefficients are known for \(\mathrm{A}_{x}\mathrm{B}_{1-x}\) but \(x\) is instead given for \(\mathrm{A}_{1-x}\mathrm B_x\).
- qtcad.device.materials.alloy_quadratic(a, b, c, x, material=1)
Define an alloy property based on a quadratic fit.
The alloy is of the form \(\mathrm{A}_{x}\mathrm{B}_{1-x}\) where \(x\) is the concentration of material \(\mathrm A\).
The material property is given by \(a+bx+cx^2\).
- Parameters:
a (float) – Value of the \(a\) coefficient in the quadratic fit.
b (float) – Value of the \(b\) coefficient in the quadratic fit.
c (float) – Value of the \(c\) coefficient in the quadratic fit.
x (float) – Concentration of material \(\mathrm A\).
material (int, optional) – If 1, \(x\) gives the concentration of material \(\mathrm A\). If 2, \(x\) gives the concentration of material \(\mathrm B\), and the alloy is \(\mathrm A_{1-x} \mathrm B_x\). In this latter case, the values of the \(a\) and \(b\) are still interpreted as the values of the coefficients if \(x\) were the concentration of material \(\mathrm A\).
Note
Use
material=2
if fitting coefficients are known for \(\mathrm{A}_{x}\mathrm{B}_{1-x}\) but \(x\) is instead given for \(\mathrm{A}_{1-x}\mathrm B_x\).
- qtcad.device.materials.alloy_threshold(prop, mat_1, mat_2, threshold, x)
Define an alloy property based on a threshold value on concentration.
The alloy is of the form \(\mathrm{A}_{x}\mathrm{B}_{1-x}\) where \(x\) is the concentration of material \(\mathrm A\), and where \(\mathrm A\) (\(\mathrm B\)) is given by
mat_1
(mat_2
).The material property is the one from material \(\mathrm A\) if
x > threshold
and is the one from material \(\mathrm B\) ifx <= threshold
- Parameters:
prop (str) – Material property to evaluate.
mat_1 (material obj) – First material in binary alloy
mat_2 (material obj) – Second material in binary alloy
threshold (float) – Value of
x
below which the property is given by the first material.x (float) – Concentration of material \(\mathrm A\).
- qtcad.device.materials.gen_AlGaAs(x)
Alloy-generating function for \(\mathrm{Al}_x\mathrm{Ga}_{1-x}\mathrm{As}\).
- Parameters:
x (float) – Float indicating alloy composition; here this is the fraction \(x\) of Al in \(\mathrm{Al}_x\mathrm{Ga}_{1-x}\mathrm{As}\).
- Returns:
dict – Dictionary of values for each x-dependent material parameter in the alloy.
- qtcad.device.materials.gen_SiGe(x)
Alloy-generating function for SiGe.
- Parameters:
x (float) – Float indicating alloy composition; here this is the fraction of Ge in SiGe.
- Returns:
dict – Dictionary of values for each x-dependent material parameter in the alloy.