Home Examples Screenshots User manual Bluesky logo YouTube ☰
OghmaNano Multiphysics simulation platform for optoelectronic devices and photonic systems DOWNLOAD Quick Start guide

SiGe material model

1. Introduction

This page contains the OghmaNano material model for SiGe (SiGe).

Relaxed bulk Si(1-x)Ge(x) alloy, x = Ge fraction ~ 0.30

The model is written in Lua and provides simulation-ready material parameterisations for use within OghmaNano. For documentation, licensing, references, and information about the scope and accuracy of these models, see the material scripting documentation.

2. Lua material model

Supporting definitions

-- See end of file for copyright, licensing and documentation links.

local material = {}

-- ---------------------------------------------------------------------------
-- NOTES ON SiGe (read before using):
--
-- Si(1-x)Ge(x) is a group-IV alloy, INDIRECT gap throughout, diamond lattice.
-- The Ge fraction x is the design knob. Key features:
--   * Conduction band is Si-like (Delta/X minimum, 6 valleys) for x < 0.85 and
--     Ge-like (L minimum, 4 valleys) for x > 0.85 - the gap has a kink there.
--   * Thermal conductivity COLLAPSES with alloying: ~148 W/m/K (Si) falls to
--     ~10 W/m/K across 0.2 < x < 0.8 due to mass-disorder phonon scattering.
--     This is why SiGe is a thermoelectric, and it is modelled below rather
--     than linearly interpolated.
--   * Real SiGe is very often strained (grown on Si); strain shifts the band
--     edges and masses substantially. Values here are for RELAXED bulk alloy.
-- Modelled at a representative x = 0.30 (Si0.7Ge0.3). Eg, lattice constant and
-- thermal conductivity are computed from x; the remaining parameters are given
-- at x = 0.30 with the Si/Ge end points in comments for interpolation.
--
-- REFERENCES
--
-- [1]  J. Weber, M. I. Alonso, "Near-band-gap photoluminescence of Si-Ge
--      alloys", Phys. Rev. B 40, 5683 (1989). [Eg(x)]
-- [2]  R. Braunstein, A. R. Moore, F. Herman, "Intrinsic optical absorption in
--      germanium-silicon alloys", Phys. Rev. 109, 695 (1958). [room-T Eg(x)]
-- [3]  J. P. Dismukes et al., J. Phys. Chem. 68, 3021 (1964). [lattice
--      constant; thermal conductivity of the alloy series]
-- [4]  B. Abeles, "Lattice thermal conductivity of disordered semiconductor
--      alloys at high temperatures", Phys. Rev. 131, 1906 (1963). [alloy
--      phonon-scattering thermal conductivity]
-- [5]  F. Schaffler, "Si(1-x)Ge(x)", in "Properties of Advanced Semiconductor
--      Materials", Wiley (2001); O. Madelung, "Semiconductors: Data Handbook",
--      Springer (2004). [general compilation]
-- ---------------------------------------------------------------------------

Material name (material.name)

function material.name()
	local enabled = true

	return "SiGe", enabled
end

Material description (material.description)

function material.description()
	local enabled = true

	return "Relaxed bulk Si(1-x)Ge(x) alloy, x = Ge fraction ~ 0.30", enabled
end

Chemical formula (material.formula)

function material.formula()
	local enabled = true

	return "SiGe", enabled
end

Band gap energy (material.Eg)

function material.Eg(state)
	-- Units: eV
	-- Refs: [1],[2]
	--
	-- Room-temperature indirect gap, two-branch fit in Ge fraction x:
	--   x <= 0.85 (Si-like X/Delta minimum): 1.12 - 0.41*x + 0.008*x^2
	--   x >  0.85 (Ge-like L minimum):       1.86 - 1.20*x
	-- Reproduces Si (1.12 eV) and Ge (0.66 eV). x = 0.30 -> 1.00 eV.
	-- There is a small (~0.05 eV) kink at the x = 0.85 crossover, inherent
	-- to the two-valley fit. Low-temperature (4.2 K) coefficients differ
	-- (Weber & Alonso [1]): 1.155 - 0.43*x + 0.0206*x^2 and 2.010 - 1.27*x.
	-- To retune composition, change ge_fraction here and in the functions
	-- noted in the header.

	local enabled = true
	local ge_fraction = 0.30
	local x = ge_fraction
	local value
	if x <= 0.85 then
		value = 1.12 - 0.41*x + 0.008*x*x
	else
		value = 1.86 - 1.20*x
	end

	return value, enabled
end

Deformation potential Xi (material.Xi)

function material.Xi(state)
	-- Electron affinity
	-- Units: eV
	-- Refs: [5]
	--
	-- ~4.05 eV at x = 0.30. Endpoints are similar (Si 4.05, Ge 4.00 eV),
	-- so this varies little with composition; strain matters more.

	local enabled = true
	local value = 4.04

	return value, enabled
end

Electron effective mass (material.me)

function material.me(state)
    local x = state.x

    -- [001] confinement mass of the Si-like Delta-z valleys.
    -- For Si1-xGex, x < 0.85:
    --     ml = 0.92 m0
    --     mt = 0.19 m0
    --
    -- Ref:
    -- F. Schaffler, "Silicon-Germanium (SiGe)",
    -- in Properties of Advanced Semiconductor Materials,
    -- Wiley, 2001, pp. 149-188.
    --
    -- Above x ~= 0.85 the conduction-band minimum becomes Ge-like (L),
    -- so this Delta-valley scalar mass should not be used.

    if x < 0.85 then
        local enabled = true
        local value = 0.92
        return value, enabled
    end

    local enabled = false
    local value = 0.0
    return value, enabled
end

Hole effective mass (material.mh)

function material.mh(state)
    local enabled = true
    local x = state.x

    -- [001] heavy-hole confinement mass for strained Si1-xGex.
    --
    -- m_hh,z / m0 = 0.278 - 0.07*x
    --
    -- Ref:
    -- X. Xiao, C. W. Liu, J. C. Sturm, L. C. Lenchyshyn,
    -- M. L. W. Thewalt, R. B. Gregory and P. Fejes,
    -- "Quantum confinement effects in strained silicon-germanium
    -- alloy quantum wells",
    -- Appl. Phys. Lett. 60, 2135-2137 (1992).
    -- DOI: 10.1063/1.107061
    --
    -- This expression applies to the [001] QW confinement mass at
    -- k_parallel = 0; a multiband treatment is required more generally.

    local value = 0.278 - 0.07*x

    return value, enabled
end

Effective conduction-band density of states (material.Nc)

function material.Nc(state)
	-- Effective conduction-band density of states
	-- Units: m^-3
	-- Refs: [5]
	--
	-- ~2.5e25 m^-3 at 300 K for x = 0.30 (Si-like, 6 Delta valleys).
	-- Endpoints: Si 2.8e25, Ge 1.0e25 m^-3. For x > 0.85 the band becomes
	-- Ge-like (4 L valleys) and this value should be revised.

	local enabled = true
	local T = state.T
	local value = 2.5e25*(T/300.0)^1.5

	return value, enabled
end

Effective valence-band density of states (material.Nv)

function material.Nv(state)
	-- Effective valence-band density of states
	-- Units: m^-3
	-- Refs: [5]
	--
	-- ~1.5e25 m^-3 at 300 K for x = 0.30. Endpoints: Si 1.8e25,
	-- Ge 5.0e24 m^-3.

	local enabled = true
	local T = state.T
	local value = 1.5e25*(T/300.0)^1.5

	return value, enabled
end

Electron mobility (material.mu_e)

function material.mu_e(state)
	-- Low-field electron mobility
	-- Units: m^2 V^-1 s^-1
	-- Refs: [5]
	--
	-- ~0.045 m^2/V/s (450 cm^2/V/s) at x = 0.30, 300 K. Strongly
	-- alloy-scattering-reduced from the pure endpoints (Si ~1400,
	-- Ge ~3900 cm^2/V/s) and highly strain/doping dependent. The
	-- (300/T)^1.5 factor is an approximate lattice-limited dependence.

	local enabled = true
	local T = state.T
	local value = 0.045*(300.0/T)^1.5

	return value, enabled
end

Electron mobility in the x direction (material.mue_x)

function material.mue_x(state)
	return material.mu_e(state)
end

Electron mobility in the y direction (material.mue_y)

function material.mue_y(state)
	return material.mu_e(state)
end

Electron mobility in the z direction (material.mue_z)

function material.mue_z(state)
	return material.mu_e(state)
end

Hole mobility (material.mu_h)

function material.mu_h(state)
	-- Low-field hole mobility
	-- Units: m^2 V^-1 s^-1
	-- Refs: [5]
	--
	-- ~0.02 m^2/V/s (200 cm^2/V/s) at x = 0.30, 300 K; alloy-reduced from
	-- Si ~450, Ge ~1900 cm^2/V/s. Strongly strain/doping dependent.

	local enabled = true
	local T = state.T
	local value = 0.02*(300.0/T)^1.5

	return value, enabled
end

Hole mobility in the x direction (material.muh_x)

function material.muh_x(state)
	return material.mu_h(state)
end

Hole mobility in the y direction (material.muh_y)

function material.muh_y(state)
	return material.mu_h(state)
end

Hole mobility in the z direction (material.muh_z)

function material.muh_z(state)
	return material.mu_h(state)
end

Relative dielectric permittivity (material.epsilonr)

function material.epsilonr(state)
	-- Relative static permittivity
	-- Dimensionless
	-- Refs: [5]
	--
	-- ~13.0 at x = 0.30 (linear between Si 11.7 and Ge 16.0).

	local enabled = true
	local value = 13.0

	return value, enabled
end

Free-carrier radiative recombination (material.free_to_free_recombination)

function material.free_to_free_recombination(state)
	-- Radiative recombination coefficient
	-- Units: m^3 s^-1
	-- Refs: representative (see note)
	--
	-- Small representative value ~1e-14 cm^3/s = 1e-20 m^3/s. SiGe is
	-- indirect, so band-to-band radiative recombination is weak; carrier
	-- lifetime is governed by SRH (and Auger at high injection).

	local enabled = true
	local value = 1.0e-20

	return value, enabled
end

Electron Auger recombination coefficient (material.auger_Cn)

function material.auger_Cn(state)
	-- Electron Auger recombination coefficient
	-- Units: m^6 s^-1
	-- Refs: representative (see note)
	--
	-- Representative ~1e-31 cm^6/s = 1e-43 m^6/s (between Si and Ge
	-- Auger coefficients). Matters mainly at high injection / high doping.

	local enabled = true
	local value = 1.0e-43

	return value, enabled
end

Hole Auger recombination coefficient (material.auger_Cp)

function material.auger_Cp(state)
	-- Hole Auger recombination coefficient
	-- Units: m^6 s^-1
	-- Refs: representative (see note)
	--
	-- As auger_Cn: representative 1e-31 cm^6/s = 1e-43 m^6/s.

	local enabled = true
	local value = 1.0e-43

	return value, enabled
end

Interface trap energy (material.ss_srh_trap_energy)

function material.ss_srh_trap_energy(state)
	-- SRH trap energy relative to the middle of the band gap.
	-- Units: eV
	--
	-- Positive values are above mid-gap (towards the conduction band).
	-- Negative values are below mid-gap (towards the valence band).
	--
	-- Defect-dependent, not an intrinsic constant. In indirect SiGe, SRH
	-- sets the lifetime; set the level and density from your own data.
	-- Mid-gap is a neutral default.

	local enabled = true
	local value = 0.0

	return value, enabled
end

Interface trap density (material.ss_srh_Nt)

function material.ss_srh_Nt(state)
	-- SRH trap density
	-- Units: m^-3
	--
	-- Defect-dependent placeholder; set from the intended material
	-- quality (dislocation density scales with Ge content / strain).

	local enabled = true
	local value = 1.0e21

	return value, enabled
end

Interface electron capture cross-section (material.ss_srh_sigma_n)

function material.ss_srh_sigma_n(state)
	-- Electron capture cross section
	-- Units: m^2
	--
	-- Defect-dependent placeholder; set from measurement.

	local enabled = true
	local value = 1.0e-19

	return value, enabled
end

Interface hole capture cross-section (material.ss_srh_sigma_p)

function material.ss_srh_sigma_p(state)
	-- Hole capture cross section
	-- Units: m^2
	--
	-- Defect-dependent placeholder; set from measurement.

	local enabled = true
	local value = 1.0e-19

	return value, enabled
end

Lattice thermal conductivity (material.thermal_kl)

function material.thermal_kl(state)
	-- Thermal conductivity
	-- Units: W m^-1 K^-1
	-- Refs: [3],[4]
	--
	-- Alloy-disorder model (Abeles-type [4]): the mass-disorder phonon
	-- scattering term x*(1-x) collapses kappa far below the Si-Ge linear
	-- interpolation. Modelled as
	--   1/kappa = (1-x)/148 + x/60 + 0.45*x*(1-x)   (W/m/K)^-1
	-- giving ~148 (Si), ~10 (x=0.3), ~9 (x=0.5), ~60 (Ge). The (300/T)^0.5
	-- factor is a WEAK dependence appropriate to the alloy-scattering
	-- regime; near the pure endpoints (x -> 0 or 1) the crystalline
	-- ~T^-1.3 behaviour applies instead.

	local enabled = true
	local ge_fraction = 0.30
	local x = ge_fraction
	local T = state.T
	local inv_k = (1.0 - x)/148.0 + x/60.0 + 0.45*x*(1.0 - x)
	local value = (1.0/inv_k)*(300.0/T)^0.5

	return value, enabled
end

Specific heat capacity (material.heat_capacity)

function material.heat_capacity(state)
	-- Specific heat capacity
	-- Units: J kg^-1 K^-1
	-- Refs: [5]
	--
	-- ~590 J/kg/K at x = 0.30 (linear between Si 700 and Ge 320 J/kg/K).

	local enabled = true
	local value = 590.0

	return value, enabled
end

Mass density (material.density)

function material.density(state)
	-- Mass density
	-- Units: kg m^-3
	-- Refs: [3],[5]
	--
	-- ~3230 kg/m^3 at x = 0.30 (linear between Si 2329 and Ge 5323).

	local enabled = true
	local value = 3230.0

	return value, enabled
end

Crystal lattice constant (material.lattice_constant)

function material.lattice_constant(state)
	-- Cubic lattice constant
	-- Units: m
	-- Refs: [3]
	--
	-- Dismukes fit [3]: a(x) = 5.431 + 0.20*x + 0.027*x^2 (angstrom),
	-- a slight positive deviation from Vegard's rule. Si 5.431 A,
	-- Ge 5.658 A; x = 0.30 -> 5.494 A. Linear thermal expansion
	-- ~3.5e-6 /K at x = 0.30 (between Si 2.6e-6 and Ge 5.9e-6).

	local enabled = true
	local ge_fraction = 0.30
	local x = ge_fraction
	local T = state.T
	local a300 = (5.431 + 0.20*x + 0.027*x*x)*1.0e-10
	local expansion = 3.5e-6
	local value = a300*(1.0 + expansion*(T - 300.0))

	return value, enabled
end

Electron thermal relaxation time (material.thermal_tau_e)

function material.thermal_tau_e(state)
	-- Electron energy relaxation time towards the lattice temperature
	-- Units: s
	--
	-- Value basis: Conventional semiconductor estimate
	-- Confidence: Medium
	--
	-- Reference:
	-- https://doi.org/10.1109/16.381985
	--
	-- Comments:
	-- Representative sub-ps energy relaxation for a conventional semiconductor
	-- near room temperature. Actual value is field and carrier-energy
	-- dependent.

	local enabled = true
	local value = 3.000000e-13

	return value, enabled
end

Hole thermal relaxation time (material.thermal_tau_h)

function material.thermal_tau_h(state)
	-- Hole energy relaxation time towards the lattice temperature
	-- Units: s
	--
	-- Value basis: Conventional semiconductor estimate
	-- Confidence: Medium
	--
	-- Reference:
	-- https://doi.org/10.1109/16.381985
	--
	-- Comments:
	-- Representative sub-ps energy relaxation for a conventional semiconductor
	-- near room temperature. Actual value is field and carrier-energy
	-- dependent.

	local enabled = true
	local value = 3.000000e-13

	return value, enabled
end


-- Alloy: Si_(1-x) Ge_x ,  x = state.x = Ge mole fraction (x=0 Si, x=1 Ge).
--
-- Interpolation policy (justified per parameter in the VALIDATION NOTES):
--   * gamma1/2/3, delta_so, a_v, b, d, C11, C12 : LINEAR in x (virtual-crystal).
--       These reproduce Si (x=0) and Ge (x=1) endpoints exactly.
--   * lattice_a : Vegard + small documented bowing (Dismukes 1964).
--   * Delta-valley conduction (ml, mt, Xi_d, Xi_u) : held at the Si-like Delta
--       values (the Delta valleys are Si-derived). NOT interpolated toward the
--       Ge L-valley numbers -- those are a different set of valleys. Validity
--       restricted to the Si-rich range; see the crossover warning below.

------------------------------------------------------------------------
-- SIX-BAND LUTTINGER-KOHN VALENCE PARAMETERS (SiGe)
-- Valid across the WHOLE alloy range 0 <= x <= 1 (VB max stays at Gamma).
------------------------------------------------------------------------

Luttinger parameter gamma1 (material.gamma1)

function material.gamma1(state)
	-- Luttinger gamma1 (dimensionless), linear VCA interpolation.
	-- Endpoints exact: x=0 -> 4.22 (Si), x=1 -> 13.38 (Ge).
	-- MEDIUM-HIGH: linear VCA is standard; a small bowing exists (Rieger-Vogl)
	-- but is minor for gamma1 and vanishes at the endpoints.
	--
	-- Full reference (endpoints):
	-- P. Lawaetz, Physical Review B 4, 3460-3467 (1971).
	-- DOI: 10.1103/PhysRevB.4.3460
	-- Interpolation practice:
	-- M. M. Rieger and P. Vogl, Physical Review B 48, 14276-14287 (1993).
	-- DOI: 10.1103/PhysRevB.48.14276

	local x = state.x
	local enabled = true
	local value = (1.0 - x) * 4.22 + x * 13.38

	return value, enabled
end

Luttinger parameter gamma2 (material.gamma2)

function material.gamma2(state)
	-- Luttinger gamma2 (dimensionless), linear VCA. Endpoints: 0.39 -> 4.24.
	--
	-- Full reference:
	-- P. Lawaetz, Physical Review B 4, 3460-3467 (1971).
	-- DOI: 10.1103/PhysRevB.4.3460

	local x = state.x
	local enabled = true
	local value = (1.0 - x) * 0.39 + x * 4.24

	return value, enabled
end

Luttinger parameter gamma3 (material.gamma3)

function material.gamma3(state)
	-- Luttinger gamma3 (dimensionless), linear VCA. Endpoints: 1.44 -> 5.69.
	--
	-- Full reference:
	-- P. Lawaetz, Physical Review B 4, 3460-3467 (1971).
	-- DOI: 10.1103/PhysRevB.4.3460

	local x = state.x
	local enabled = true
	local value = (1.0 - x) * 1.44 + x * 5.69

	return value, enabled
end

Spin–orbit splitting energy (material.delta_so)

function material.delta_so(state)
	-- Spin-orbit split-off delta_so (eV), linear VCA. Endpoints: 0.044 -> 0.29.
	-- Bowing is negligible; linear is standard.
	--
	-- Full reference:
	-- O. Madelung (Ed.), "Semiconductors: Data Handbook", 3rd ed.,
	-- Springer, 2004 (Si and Ge sections).

	local x = state.x
	local enabled = true
	local value = (1.0 - x) * 0.044 + x * 0.29

	return value, enabled
end

Optical absorption / extinction parameter (material.av)

function material.av(state)
	-- VB-average hydrostatic deformation potential a_v (eV), linear VCA.
	-- Endpoints: 2.46 (Si) -> 1.24 (Ge). MEDIUM. See header note *.
	--
	-- Full reference:
	-- C. G. Van de Walle, Physical Review B 39, 1871-1883 (1989).
	-- DOI: 10.1103/PhysRevB.39.1871

	local x = state.x
	local enabled = true
	local value = (1.0 - x) * 2.46 + x * 1.24

	return value, enabled
end

Recombination parameter b (material.b)

function material.b(state)
	-- Tetragonal shear b (eV), linear VCA, b < 0. Endpoints: -2.10 -> -2.86.
	-- MEDIUM (endpoint spreads noted in Si.lua / Ge.lua).
	--
	-- Full reference:
	-- O. Madelung (Ed.), "Semiconductors: Data Handbook", 3rd ed., 2004.
	-- Convention: G. L. Bir and G. E. Pikus, Wiley, 1974.

	local x = state.x
	local enabled = true
	local value = (1.0 - x) * (-2.10) + x * (-2.86)

	return value, enabled
end

Material parameter d (material.d)

function material.d(state)
	-- Trigonal shear d (eV), linear VCA, d < 0. Endpoints: -4.85 -> -5.28.
	-- MEDIUM.
	--
	-- Full reference:
	-- O. Madelung (Ed.), "Semiconductors: Data Handbook", 3rd ed., 2004.
	-- Convention: G. L. Bir and G. E. Pikus, Wiley, 1974.

	local x = state.x
	local enabled = true
	local value = (1.0 - x) * (-4.85) + x * (-5.28)

	return value, enabled
end

------------------------------------------------------------------------
-- SHARED STRUCTURAL PARAMETERS (SiGe)
------------------------------------------------------------------------

Lattice constant a (material.lattice_a)

function material.lattice_a(state)
	-- Relaxed cubic lattice constant (metres). Vegard's law with the small
	-- measured negative bowing of Dismukes et al. (deviation ~0.019 Angstrom
	-- at midpoint). Endpoints exact: 5.431e-10 (Si) -> 5.658e-10 (Ge).
	-- HIGH confidence.
	--
	-- a(x) = (1-x)*a_Si + x*a_Ge - bow*x*(1-x),  bow = 1.88e-12 m.
	--
	-- Full reference:
	-- J. P. Dismukes, L. Ekstrom, R. J. Paff,
	-- "Lattice Parameter and Density in Germanium-Silicon Alloys",
	-- Journal of Physical Chemistry 68, 3021-3027 (1964).
	-- DOI: 10.1021/j100792a049

	local x = state.x
	local enabled = true
	local a_Si = 5.431e-10
	local a_Ge = 5.658e-10
	local bow  = 1.88e-12
	local value = (1.0 - x) * a_Si + x * a_Ge - bow * x * (1.0 - x)

	return value, enabled
end

Elastic stiffness constant C11 (material.C11)

function material.C11(state)
	-- Elastic stiffness C11 (Pa), linear interpolation in x.
	-- Endpoints exact: 165.8e9 (Si) -> 128.5e9 (Ge). SiGe elastic moduli are
	-- well described as linear in x. HIGH confidence.
	--
	-- Full reference:
	-- F. Schaeffler,
	-- "High-mobility Si and Ge structures",
	-- Semiconductor Science and Technology 12, 1515-1549 (1997).
	-- DOI: 10.1088/0268-1242/12/12/001
	-- (Endpoints: J. J. Wortman and R. A. Evans, J. Appl. Phys. 36, 153 (1965).)

	local x = state.x
	local enabled = true
	local value = (1.0 - x) * 165.8e9 + x * 128.5e9

	return value, enabled
end

Elastic stiffness constant C12 (material.C12)

function material.C12(state)
	-- Elastic stiffness C12 (Pa), linear interpolation in x.
	-- Endpoints exact: 63.9e9 (Si) -> 48.3e9 (Ge). HIGH confidence.
	--
	-- Full reference:
	-- F. Schaeffler, Semiconductor Science and Technology 12, 1515 (1997).
	-- DOI: 10.1088/0268-1242/12/12/001
	-- (Endpoints: J. J. Wortman and R. A. Evans, J. Appl. Phys. 36, 153 (1965).)

	local x = state.x
	local enabled = true
	local value = (1.0 - x) * 63.9e9 + x * 48.3e9

	return value, enabled
end

------------------------------------------------------------------------
-- SIX-DELTA-VALLEY CONDUCTION PARAMETERS (SiGe)
--
-- *** CONDUCTION-VALLEY VALIDITY WARNING ***
-- In RELAXED Si_(1-x)Ge_x the conduction-band minimum is the Si-like sixfold
-- Delta set only for x below ~0.83-0.85; above that the Ge-like fourfold L set
-- becomes the true CBM (Weber & Alonso 1989). This six-Delta solver therefore
-- describes the true lowest conduction band only in the Si-rich range.
--
-- The crossover is STRONGLY strain dependent and is NOT a single universal
-- number: biaxial compression (SiGe on Si) pushes it toward higher x, biaxial
-- tension (Si or Si-rich SiGe on a relaxed SiGe buffer) pushes it to much lower
-- x and can even make L the minimum in nominally pure Si. Do not hard-code one
-- threshold; judge Delta-vs-L per structure from the actual strain, using the
-- Delta parameters here together with the Ge L parameters in Ge.lua.
--
-- The functions below return the Si-like Delta-valley properties (weak alloy
-- dependence neglected) and stay enabled across x so the solver can always
-- evaluate the Delta subband ladder. They are PHYSICALLY MEANINGFUL as "the
-- Delta valleys of the alloy"; they are the GLOBAL CBM only for x below ~0.85
-- in relaxed material. They deliberately do NOT interpolate toward Ge, because
-- the x=1 endpoint (Si-like Delta valleys in Ge) does not exist as a CBM.
------------------------------------------------------------------------

Longitudinal effective mass (material.qw_ml)

function material.qw_ml(state)
	-- Longitudinal mass of the Si-like Delta valleys in SiGe (units of m0).
	-- Held at the Si value; the Delta valleys keep Si-like curvature across the
	-- Si-rich range. Global-CBM validity: relaxed x below ~0.85 (see warning).
	--
	-- Full reference:
	-- J. C. Hensel, H. Hasegawa, M. Nakayama,
	-- Physical Review 138, A225-A238 (1965). DOI: 10.1103/PhysRev.138.A225
	-- Alloy CBM crossover:
	-- J. Weber and M. I. Alonso, Physical Review B 40, 5683-5693 (1989).
	-- DOI: 10.1103/PhysRevB.40.5683

	local enabled = true
	local value = 0.916

	return value, enabled
end

Transverse effective mass (material.qw_mt)

function material.qw_mt(state)
	-- Transverse mass of the Si-like Delta valleys in SiGe (units of m0).
	-- Held at the Si value. Global-CBM validity: relaxed x below ~0.85.
	--
	-- Full reference:
	-- J. C. Hensel, H. Hasegawa, M. Nakayama,
	-- Physical Review 138, A225-A238 (1965). DOI: 10.1103/PhysRev.138.A225

	local enabled = true
	local value = 0.190

	return value, enabled
end

Dilatational deformation potential (material.qw_Xi_d)

function material.qw_Xi_d(state)
	-- Dilatation deformation potential of the Si-like Delta valleys (eV).
	-- Convention: Delta Ec = Xi_d*Tr(eps) + Xi_u*(n.eps.n), n along <100>.
	-- Held at the Si value. Global-CBM validity: relaxed x below ~0.85.
	--
	-- Full reference:
	-- M. V. Fischetti and S. E. Laux,
	-- Journal of Applied Physics 80, 2234-2252 (1996).
	-- DOI: 10.1063/1.363052

	local enabled = true
	local value = 1.1

	return value, enabled
end

Uniaxial deformation potential (material.qw_Xi_u)

function material.qw_Xi_u(state)
	-- Uniaxial deformation potential of the Si-like Delta valleys (eV).
	-- Held at the Si value (spread 8.5-9.3 eV; 9.16 eV chosen). Convention as
	-- in qw_Xi_d. Global-CBM validity: relaxed x below ~0.85.
	--
	-- Full reference:
	-- I. Balslev, Physical Review 143, 636-647 (1966).
	-- DOI: 10.1103/PhysRev.143.636

	local enabled = true
	local value = 9.16

	return value, enabled
end

Elastic stiffness constant C44 (material.C44)

function material.C44(state)
    -- Elastic stiffness constant C44
    -- Units: Pa
    --
    -- Composition: Si_(1-x) Ge_x, x = state.x (Ge fraction).
    --
    -- Endpoints (both from):
    -- M. Levinshtein, S. Rumyantsev, M. Shur (eds.),
    -- Handbook Series on Semiconductor Parameters, Vols. 1 and 2
    -- (World Scientific, 1996 and 1999), as reproduced in the Ioffe
    -- Institute NSM archive (www.ioffe.ru/SVA/NSM/Semicond/).
    -- Si: 7.96e11 dyn/cm^2 = 79.6 GPa; Ge: 6.77e11 dyn/cm^2 = 67.7 GPa (300 K).
    --
    -- Interpolation:
    -- Linear in state.x (Vegard-type); no bowing applied (none verified).

    local enabled = true
    local x = state.x

    local Si = 79.6e9
    local Ge = 67.7e9

    local value = (1.0-x)*Si + x*Ge

    return value, enabled
end

Optical absorption coefficient (material.ac)

function material.ac(state)
    -- Hydrostatic conduction-band deformation potential ac
    -- Units: eV
    --
    -- No sufficiently reliable value/reference identified.
    -- Disabled rather than estimated.
    --
    -- Notes:
    -- The conduction minimum changes from Delta (Si-like) to L (Ge-like)
    -- near x ~ 0.85; a single linear ac across that crossover is not
    -- physical, and the Ge L-valley endpoint was not verified.

    local enabled = false
    local value = 0.0

    return value, enabled
end

Longitudinal optical phonon energy (material.phonon_lo_energy)

function material.phonon_lo_energy(state)
    -- Representative LO phonon energy for polar optical (Frohlich) scattering
    -- Units: eV
    --
    -- No sufficiently reliable value/reference identified.
    -- Disabled rather than estimated.
    --
    -- Notes:
    -- SiGe has three zone-centre optical modes (Si-Si, Si-Ge, Ge-Ge) and is
    -- essentially non-polar; no single defensible LO energy.

    local enabled = false
    local value = 0.0

    return value, enabled
end

Static dielectric constant (material.epsilon_static)

function material.epsilon_static(state)
    -- Static relative dielectric constant (lattice + electronic)
    -- Dimensionless
    --
    -- Composition: Si_(1-x) Ge_x, x = state.x.
    --
    -- Endpoints (both from):
    -- M. Levinshtein, S. Rumyantsev, M. Shur (eds.),
    -- Handbook Series on Semiconductor Parameters, Vols. 1 and 2
    -- (World Scientific, 1996 and 1999), as reproduced in the Ioffe
    -- Institute NSM archive (www.ioffe.ru/SVA/NSM/Semicond/).
    -- Si: 11.7; Ge: 16.2 (300 K).
    --
    -- Interpolation:
    -- Linear in state.x (first-order approximation; no bowing applied).

    local enabled = true
    local x = state.x

    local Si = 11.7
    local Ge = 16.2

    local value = (1.0-x)*Si + x*Ge

    return value, enabled
end

High-frequency dielectric constant (material.epsilon_inf)

function material.epsilon_inf(state)
    -- High-frequency (electronic) relative dielectric constant
    -- Dimensionless
    --
    -- Composition: Si_(1-x) Ge_x, x = state.x.
    --
    -- Endpoints (both from):
    -- M. Levinshtein, S. Rumyantsev, M. Shur (eds.),
    -- Handbook Series on Semiconductor Parameters, Vols. 1 and 2
    -- (World Scientific, 1996 and 1999), as reproduced in the Ioffe
    -- Institute NSM archive (www.ioffe.ru/SVA/NSM/Semicond/).
    -- Si: 11.7; Ge: 16.2 (non-polar endpoints, eps_inf = eps_s).
    --
    -- Interpolation:
    -- Linear in state.x. The random alloy has only a very weak IR-active
    -- lattice polarisation, so eps_inf = eps_s is retained.

    local enabled = true
    local x = state.x

    local Si = 11.7
    local Ge = 16.2

    local value = (1.0-x)*Si + x*Ge

    return value, enabled
end

Piezoelectric coefficient e14 (material.e14)

function material.e14(state)
    -- Zincblende piezoelectric stress coefficient e14
    -- Units: C m^-2
    --
    -- Reference:
    -- J. F. Nye, Physical Properties of Crystals
    -- (Oxford University Press, 1957) - piezoelectric tensor vanishes
    -- identically in centrosymmetric point groups.
    --
    -- Notes:
    -- Random Si_(1-x)Ge_x retains average diamond (centrosymmetric) symmetry:
    -- no bulk piezoelectricity; e14 = 0 by symmetry. Long-range-ordered
    -- SiGe phases are not represented.

    local enabled = true
    local value = 0.0

    return value, enabled
end

Material parameter summary (material.print)

function material.print()
	local state = {
		T = 300.0,
		x = 0.0,
		y = 0.0,
		z = 0.0,
		photon_density = 0.0,
	}

	print(string.format("Material:               %s", material.name()))
	print(string.format("Description:            %s", material.description()))
	print(string.format("Formula:                %s", material.formula()))
	print(string.format("Temperature:            %.2f K", state.T))
	print(string.format("Position:               %.6e, %.6e, %.6e m", state.x, state.y, state.z))
	print(string.format("Photon density:         %.6e m^-3", state.photon_density))

	print(string.format("Band gap:               %.6f eV", material.Eg(state)))
	print(string.format("Electron affinity:      %.6f eV", material.Xi(state)))
	print(string.format("Electron mobility:      %.6e m^2/V/s", material.mu_e(state)))
	print(string.format("Hole mobility:          %.6e m^2/V/s", material.mu_h(state)))
	print(string.format("Nc:                     %.6e m^-3", material.Nc(state)))
	print(string.format("Nv:                     %.6e m^-3", material.Nv(state)))
	print(string.format("Relative permittivity:  %.6f", material.epsilonr(state)))

	print(string.format("Radiative coeff.:       %.6e m^3/s", material.free_to_free_recombination(state)))
	print(string.format("Electron Auger coeff.:  %.6e m^6/s", material.auger_Cn(state)))
	print(string.format("Hole Auger coeff.:      %.6e m^6/s", material.auger_Cp(state)))

	print(string.format("SRH trap energy:        %.6f eV", material.ss_srh_trap_energy(state)))
	print(string.format("SRH trap density:       %.6e m^-3", material.ss_srh_Nt(state)))
	print(string.format("SRH sigma n:            %.6e m^2", material.ss_srh_sigma_n(state)))
	print(string.format("SRH sigma p:            %.6e m^2", material.ss_srh_sigma_p(state)))

	print(string.format("Electron energy relax.:  %.6e s", material.thermal_tau_e(state)))
	print(string.format("Hole energy relax.:      %.6e s", material.thermal_tau_h(state)))

	print(string.format("Thermal conductivity:   %.6e W/m/K", material.thermal_kl(state)))
	print(string.format("Heat capacity:          %.6e J/kg/K", material.heat_capacity(state)))
	print(string.format("Mass density:           %.6e kg/m^3", material.density(state)))
end

return material

-- ============================================================================
-- Copyright (C) 2026 The OghmaNano Project
-- All rights reserved.
--
-- This file is part of the OghmaNano Materials Model Library.
--
-- Website:
-- https://www.oghma-nano.com
--
-- Documentation and accuracy statement:
-- https://www.oghma-nano.com/manual/material-scripts.html
--
-- These material models are provided to support scientific research and
-- semiconductor device simulation. If you find them useful, please cite
-- OghmaNano where appropriate. Please do not redistribute these files or
-- incorporate them into other software or databases without permission.
-- ============================================================================