Source code for simudo.example.heterojunction.germanium
from math import pi
from simudo.physics import Material
[docs]class GermaniumMaterial(Material):
"""Germanium material data based on Palankovski.
V. Palankovski and R. Quay, "Analysis and Simulation of Heterostructure Devices",
Springer-Verlag (2004).
"""
name = "Germanium"
[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("16.0 vacuum_permittivity"),
# Table 3.9
# These X value are for strained Ge on Si, not bulk Ge. Used for interpolating alloys.
"CB/EgX_0K": U("0.57 eV"),
"CB/ChiX_0K": U("4.199 eV") - U("4 eV"),
"CB/EgL_0K": U("0.7437 eV"),
"CB/ChiL_0K": U("4.0253 eV"),
"CB/varshni_alphaL": U("4.774e-4 eV/K"),
"CB/varshni_betaL": U("636 K"),
# Table 3.21
"CB/MCL": U("4"),
# Table 3.18
"CB/mL": U("0.222"),
"CB/m1n": U("0.0068"),
# Table 3.19
"VB/m0p": U("0.28"),
"VB/m1p": U("0.1"),
"VB/m2p": U("0.0"),
"CB/SRV": U("4000 cm/s"),
"VB/SRV": U("4000 cm/s"),
"SRH/CB/tau": U("1e-9 s"),
"SRH/VB/tau": U("1e-6 s"),
# Properties for band-to-band tunneling
"CB/eff_mass_tunnel": U("0.05"),
"VB/eff_mass_tunnel": U("0.1"),
"CB/tunnel_offset_energy": U("0 eV"),
"VB/tunnel_offset_energy": U("0 eV"),
}
)
T = self.temperature
Eg = d["CB/EgL_0K"] - d["CB/varshni_alphaL"] * T ** 2 / (
d["CB/varshni_betaL"] + T
)
Chi = d["CB/ChiL_0K"] + d["CB/varshni_alphaL"] * T ** 2 / (
d["CB/varshni_betaL"] + T
)
mn = d["CB/mL"] + d["CB/m1n"] * (T / U("300 K"))
mp = (
d["VB/m0p"]
+ d["VB/m1p"] * (T / U("300 K"))
+ d["VB/m2p"] * (T / U("300 K")) ** 2
)
m_e = U.electron_mass
k_B = U.boltzmann_constant
h = U.planck_constant
NC = 2 * d["CB/MCL"] * (2 * pi * mn * m_e * k_B * T / h ** 2) ** (3 / 2)
NV = 2 * (2 * pi * mp * m_e * k_B * T / h ** 2) ** (3 / 2)
d.update(
{
"CB/mDOS": mn,
"VB/mDOS": mp,
"CB/energy_level": -Chi,
"VB/energy_level": -Chi - Eg,
"CB/effective_density_of_states": NC,
"VB/effective_density_of_states": NV,
# TODO - update these from Palankovski
"CB/mobility": U("1400 cm^2/V/s"),
"VB/mobility": U(" 450 cm^2/V/s"),
# SRH energy level position
"SRH/energy_level": -Chi - Eg / 2,
}
)
return d