qtcad.device.materials module
Defines the material class along with a database of default materials.
- class Material(inp_dict=None, alloy_func=None, alloy_composition=0, ignore_warn=False)
Bases:
MaterialA material is a dictionary of parameters and a method to display them. All units are SI.
- 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).
electron_kp_params (dict) – Electron k.p parameters stored by name.
g_star (float) – Effective g factor for electrons.
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 or tuple of floats) – The scalar value(s) 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, y=None, z=None)
Sets the alloy composition fraction(s).
For binary alloys, a single parameter \(x\) describes the chemical composition. Binary alloys can be expressed as \(\mathrm{A}_x\mathrm{B}_{1-x}\) or \(\mathrm{A}_{1-x}\mathrm{B}_{x}\)
For quaternary alloys, three parameters \(x\), \(y\), and \(z\) describe the chemical composition. Quaternary alloys can be expressed as \(\mathrm{A}_{1-x-y-z}\mathrm{B}_{x}\mathrm{C}_{y}\mathrm{D}_{z}\).
- Parameters:
x (float) – The composition fraction \(x\).
y (float, optional) – The composition fraction \(y\) (for quaternary alloys only). Default: None.
z (float, optional) – The composition fraction \(z\) (for quaternary alloys only). Default: None.
- set_electron_kp_param(name: str, value: object) None
Set a named electron k.p parameter on the material.
- Parameters:
name – Name of the electron k.p parameter.
value – Parameter value to store on the material.
- 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.
- 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).
- 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=2if 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\).
- 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=2if 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\).
- 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=2if 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\).
- 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 > thresholdand 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
xbelow which the property is given by the first material.x (float) – Concentration of material \(\mathrm A\).
- 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.
- gen_GeSn(x: float, verbose: bool | None = True)
Alloy-generating function for GeSn.
- Parameters:
x (float) – Float indicating alloy composition; here this is the fraction of Sn in GeSn.
verbose (bool, optional) – Whether to print warnings pertaining to potential issues with generated alloy when x>0.3, near the Γ-L crossover, and about deformation-potential limits. Default: True.
- Returns:
dict – Dictionary of values for each x-dependent material parameter in the alloy.
- gen_Ge_strained_on_SiGe(x: float) dict
Generating function for Ge stained on relaxed SiGe substrate with band alignment from the paper.
- Parameters:
x – Ge concentration in the \(\mathrm{Si}_{1-x}\mathrm{Ge}_x\) alloy.
- Returns:
Dictionary of material parameters.
- gen_SiGe(x: float, verbose: bool | None = True)
Alloy-generating function for SiGe.
- Parameters:
x (float) – Float indicating alloy composition; here this is the fraction of Ge in SiGe.
verbose (bool, optional) – Whether to print warnings pertaining to potential issues with generated alloy when x>0.85. Default: True.
- Returns:
dict – Dictionary of values for each x-dependent material parameter in the alloy.
- gen_SiGe_DFT(x: float) dict
Alloy-generating function for relaxed SiGe with bandgap and valence band maximum from the paper.
- Parameters:
x – Ge concentration in the \(\mathrm{Si}_{1-x}\mathrm{Ge}_x\) alloy.
- Returns:
Dictionary of material parameters.
- gen_SiOCN(x: float, y: float, z: float) dict
Alloy-generating function for SiOCN (silicon oxycarbonitride).
The inputs x, y, and z are numbers between 0 and 1 describing the concentrations of O, C, and N in the alloy, respectively. For example, for SiO2, we have x=2/3, y=0, and z=0; for SiC, we have x=0, y=1/2, and z=0; for Si3N4, we have x=0, y=0, and z=4/7. Due to the sparse availability of parameter value data for SiOCN alloys in the literature, the material parameters produced by this function are obtained by linear interpolations between the parameter values of Si, SiO2, SiC, and Si3N4. In particular, any form of bowing is ignored. The conduction and valence band degeneracies are set to 2 (for spin), as SiOCN alloys are amorphous and do not have well-defined valleys.
- Parameters:
x (float) – Concentration of O in the SiOCN alloy.
y (float) – Concentration of C in the SiOCN alloy.
z (float) – Concentration of N in the SiOCN alloy.
- Returns:
dict – Dictionary of values of material parameter for the SiOCN alloy.
- gen_SiOCN_ideal(x: float, y: float, z: float) dict
Alloy-generating function for SiOCN (silicon oxycarbonitride) modeled as an ideal insulator.
The inputs x, y, and z are numbers between 0 and 1 describing the concentrations of O, C, and N in the alloy, respectively. For example, for SiO2, we have x=2/3, y=0, and z=0; for SiC, we have x=0, y=1/2, and z=0; for Si3N4, we have x=0, y=0, and z=4/7. Due to the sparse availability of parameter value data for SiOCN alloys in the literature, the material parameters produced by this function are obtained by linear interpolations between the parameter values of Si, SiO2, SiC, and Si3N4. In particular, any form of bowing is ignored.
- Parameters:
x (float) – Concentration of O in the SiOCN alloy.
y (float) – Concentration of C in the SiOCN alloy.
z (float) – Concentration of N in the SiOCN alloy.
- Returns:
dict – Dictionary of values of material parameter for the SiOCN alloy modeled as an ideal insulator.
- gen_Si_strained_on_SiGe(x: float)
Generating function for Si stained on relaxed SiGe substrate with band alignment from the paper.
- Parameters:
x – Ge concentration in the \(\mathrm{Si}_{1-x}\mathrm{Ge}_x\) alloy.
- Returns:
Dictionary of material parameters.