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)

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)

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.

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\) if x <= 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.