Source code for simudo.materials.indiumarsenide

from math import pi
import numpy as np 
from simudo.physics import Material

from .helpers import thermal_velocity 


[docs] class IndiumArsenideMaterial(Material): """ InAs material data based on Palankovski V. Palankovski and R. Quay, "Analysis and Simulation of Heterostructure Devices", Springer-Verlag (2004). Both gamma and X valley properties are included here for later use in the valleyPV InGaAs alloy. The CB energy level is still taken to be that of the lowest valley """ name = "IndiumArsenide"
[docs] def get_dict(self): d = super().get_dict() U = self.unit_registry d.update( { # Static dielectric constant, Palankovski Table 3.3 "poisson/permittivity": U("14.6 vacuum_permittivity"), # Springer's handbook (2017) , Table 30.12 "CB/Eg_300K": U("0.359 eV"), "CBX/Eg_300K": U("1.37 eV"), "CBL/Eg_300K": U("1.07 eV"), # Table 3.15 band edge alignment "VB/E_off": U("-0.286 eV"), # Table 3.21 Parameter for energy minima in the DOS model "CB/MC": U("1"), "CBX/MC": U("3"), "CBL/MC": U("4"), # Springer handbook Table 30.17 Effective electron masses. Temperature dependence can be later "CB/mn": U("0.024"), "CBX/mn": U("0.98"), "CBL/mn": U("0.94"), # Springer Table 3.20 Effective hole masses "VB/mp": U("0.36"), # Table 3.22 Mobility "CB/mobility": U("32500 cm^2/V/s"), #Gamma valley "CBX/mobility": U("480 cm^2/V/s"), #X valley "CBL/mobility": U("480 cm^2/V/s"), #TODO - update L valley mobility "VB/mobility": U("510 cm^2/V/s"), # conductivity mass, Springer Table 30.17 "CBX/mc": U("0.38"), "CBL/mc": U("0.18"), # Include other parameters for SRH etc. here. # SRH recombination lifetimes, Table 3.38 "SRH/CB/tau": U("0.3e-9 s"), "SRH/CBX/tau": U("0.3e-9 s"), "SRH/CBL/tau": U("0.3e-9 s"), #TODO - find appropriate lifetimes for these valleys "SRH/VB/tau": U("10e-9 s"), } ) T = self.temperature E_off = d["VB/E_off"] # Effective electron and hole mass mn = d["CB/mn"] mnX = d["CBX/mn"] mnL = d["CBL/mn"] mp = d["VB/mp"] # Effective DOS. Palankovski eq. 3.111 & 3.112 m_e = U.electron_mass k_B = U.boltzmann_constant h = U.planck_constant DOS_term = lambda m : (2 * pi * m * m_e * k_B * T / h ** 2) ** (3 / 2) NC = 2 * d["CB/MC"] * DOS_term(mn) NCX = 2 * d["CBX/MC"] * DOS_term(mnX) NCL = 2 * d["CBL/MC"] * DOS_term(mnL) NV = 2 * DOS_term(mp) # Thermal velocity vth = lambda m : thermal_velocity(U, T, m) #Gamma valley mtc = d["CB/mn"] vth_c = vth(mtc) #X valley mtcX = d["CBX/mc"] vth_cX = vth(mtcX) #L valley mtcL = d["CBL/mc"] vth_cL = vth(mtcL) # For valence band, just use the DOS effective mass mtv = d["VB/mp"] vth_v = vth(mtv) Eg = d["CB/Eg_300K"] EgX = d["CBX/Eg_300K"] EgL = d["CBL/Eg_300K"] d.update( { "CB/mDOS": mn, "CBX/mDOS": mnX, "CBL/mDOS": mnL, "VB/mDOS": mp, "CB/energy_level": E_off + Eg, "CBX/energy_level": E_off + EgX, "CBL/energy_level": E_off + EgL, "VB/energy_level": E_off, # Midgap trap level for SRH. The material sets the SRH # lifetimes above, so it should set the level they go with; # without it a project using SRHRecombination has to supply # <proc>/energy_level by hand. Midgap is the usual default. # TODO it should be source- and destination-band dependent. "SRH/energy_level": E_off + Eg / 2, "VB/effective_density_of_states": NV, "CB/effective_density_of_states": NC, "CBX/effective_density_of_states": NCX, "CBL/effective_density_of_states": NCL, "CB/vth": vth_c, "CBX/vth": vth_cX, "CBL/vth": vth_cL, "VB/vth": vth_v, } ) # alpha(E) for a BeerLambert process named 'opt_cv', from the measured # table below. A top-hat set on a layer or overlay overrides this: # material rules have the lowest priority. # Keep this a literal dict -- the GUI detects it by AST scan. d["opt_cv/alpha_function"] = { "type": "wavelength_table", "data": self.optical_properties_table()[:, 0:2], "arg_unit": "nm", "value_unit": "1/cm", } return d
# Optical data sourced from: # S. Adachi. Optical dispersion relations for GaP, GaAs, GaSb, InP, InAs, InSb, AlxGa1−xAs, and In1−xGaxAsyP1−y. J. Appl. Phys. 66, 6030-6040 (1989) # Data was collated into CSV files from: # https://refractiveindex.info/?shelf=main&book=InAs&page=Adachi
[docs] def optical_properties_table(self): '''Array of arrays, where each element is of the form [wl, alpha, n, k].''' return np.array([ [207.00, 9.59172250e+05, 1.27000, 1.58000e+00], [210.00, 9.75389719e+05, 1.28000, 1.63000e+00], [213.00, 9.97050063e+05, 1.29000, 1.69000e+00], [216.00, 1.01229097e+06, 1.30000, 1.74000e+00], [220.00, 1.03386958e+06, 1.31000, 1.81000e+00], [223.00, 1.05940703e+06, 1.33000, 1.88000e+00], [227.00, 1.07948999e+06, 1.34000, 1.95000e+00], [231.00, 1.10975740e+06, 1.36000, 2.04000e+00], [234.00, 1.14923218e+06, 1.39000, 2.14000e+00], [238.00, 1.18799722e+06, 1.42000, 2.25000e+00], [243.00, 1.22560899e+06, 1.46000, 2.37000e+00], [247.00, 1.28207506e+06, 1.51000, 2.52000e+00], [251.00, 1.34675446e+06, 1.60000, 2.69000e+00], [256.00, 1.41862543e+06, 1.72000, 2.89000e+00], [261.00, 1.50218683e+06, 1.92000, 3.12000e+00], [266.00, 1.58260683e+06, 2.23000, 3.35000e+00], [271.00, 1.62296299e+06, 2.70000, 3.50000e+00], [276.00, 1.55258420e+06, 3.29000, 3.41000e+00], [282.00, 1.34130410e+06, 3.78000, 3.01000e+00], [288.00, 1.08646746e+06, 3.95000, 2.49000e+00], [294.00, 8.93323625e+05, 3.88000, 2.09000e+00], [300.00, 7.74926188e+05, 3.74000, 1.85000e+00], [307.00, 7.04044217e+05, 3.61000, 1.72000e+00], [314.00, 6.64336790e+05, 3.50000, 1.66000e+00], [321.00, 6.42020181e+05, 3.42000, 1.64000e+00], [328.00, 6.28318531e+05, 3.37000, 1.64000e+00], [336.00, 6.20838548e+05, 3.35000, 1.66000e+00], [345.00, 6.15570039e+05, 3.35000, 1.69000e+00], [353.00, 6.15858956e+05, 3.38000, 1.73000e+00], [362.00, 6.10961665e+05, 3.42000, 1.76000e+00], [372.00, 6.08050191e+05, 3.47000, 1.80000e+00], [382.00, 6.05291150e+05, 3.55000, 1.84000e+00], [393.00, 6.01139358e+05, 3.64000, 1.88000e+00], [405.00, 5.95739051e+05, 3.75000, 1.92000e+00], [417.00, 5.90649554e+05, 3.88000, 1.96000e+00], [429.00, 5.82915560e+05, 4.04000, 1.99000e+00], [443.00, 5.73003807e+05, 4.21000, 2.02000e+00], [458.00, 5.62468554e+05, 4.41000, 2.05000e+00], [473.00, 5.55258236e+05, 4.61000, 2.09000e+00], [490.00, 5.53946133e+05, 4.78000, 2.16000e+00], [508.00, 4.67528356e+05, 4.71000, 1.89000e+00], [527.00, 3.02832840e+05, 4.44000, 1.27000e+00], [548.00, 1.68315986e+05, 4.22000, 7.34000e-01], [570.00, 1.54985238e+05, 4.12000, 7.03000e-01], [594.00, 1.40895671e+05, 4.02000, 6.66000e-01], [621.00, 1.26068420e+05, 3.93000, 6.23000e-01], [650.00, 1.11357377e+05, 3.85000, 5.76000e-01], [681.00, 9.65082501e+04, 3.79000, 5.23000e-01], [716.00, 8.17867138e+04, 3.72000, 4.66000e-01], [755.00, 6.75754499e+04, 3.67000, 4.06000e-01], [798.00, 5.40133474e+04, 3.62000, 3.43000e-01], [847.00, 4.15417210e+04, 3.58000, 2.80000e-01], [902.00, 3.03710509e+04, 3.55000, 2.18000e-01], [964.00, 2.11177597e+04, 3.52000, 1.62000e-01], [1040.00, 1.42579974e+04, 3.49000, 1.18000e-01], [1120.00, 1.05804353e+04, 3.48000, 9.43000e-02], [1220.00, 1.00427962e+04, 3.46000, 9.75000e-02], [1330.00, 9.82633492e+03, 3.45000, 1.04000e-01], [1470.00, 9.40340658e+03, 3.45000, 1.10000e-01], [1650.00, 7.84446166e+03, 3.45000, 1.03000e-01], [1870.00, 7.72798193e+03, 3.44000, 1.15000e-01], [2160.00, 7.44673814e+03, 3.46000, 1.28000e-01], [2550.00, 6.60350456e+03, 3.49000, 1.34000e-01], [3130.00, 4.29585194e+03, 3.56000, 1.07000e-01], [4030.00, 5.95577367e+01, 3.51000, 1.91000e-03], [5670.00, 3.01415591e+01, 3.48000, 1.36000e-03], [9560.00, 1.06340940e+01, 3.47000, 8.09000e-04], ])