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

AlGaAs material model

1. Introduction

This page contains the OghmaNano material model for AlGaAs (Al(x)Ga(1-x)As).

Al(x)Ga(1-x)As ternary alloy

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 = {}

-- =====================================================================
-- Al(x)Ga(1-x)As ternary alloy.
--
-- Composition convention:
--   x = Al fraction   (Ga fraction = 1 - x)
--   (This is a ternary: state.y is not used.)
--
-- Binary corners:
--   (x=0) -> GaAs
--   (x=1) -> AlAs
--
-- Most properties are linear (Vegard-style) interpolation between the
-- GaAs and AlAs corner values, each evaluated at state.T so the alloy
-- inherits the temperature dependence of its endpoints:
--
--   Q(x) = (1-x) Q_GaAs + x Q_AlAs
--
-- Two properties are treated more carefully because linear
-- interpolation is qualitatively wrong for them:
--   * Eg          -- direct/indirect (Gamma/X) crossover near x~0.45.
--   * thermal cond -- strong alloy-disorder dip mid-composition.
--
-- FIRST-PASS LIMITATIONS (read before trusting quantitative output):
--   * Electron MOBILITY is badly modelled by linear interpolation: it
--     collapses near the Gamma-X crossover (light Gamma -> heavy X
--     electrons) AND is suppressed by alloy scattering, giving a deep
--     minimum near x~0.45 that this file does NOT capture. See mu_e.
--   * Nc changes character across the crossover (Gamma -> multi-valley
--     X); the linear form smooths this.
-- =====================================================================

-- Two-corner linear interpolation helper (v0 at x=0 = GaAs).

Linear interpolation (lerp)

local function lerp(x, v_GaAs, v_AlAs)
	return (1.0 - x)*v_GaAs + x*v_AlAs
end

-- Varshni helper (eV).

Temperature dependence of the band gap (Varshni equation) (varshni)

local function varshni(T, Eg0, a, b)
	return Eg0 - a*T*T/(T + b)
end

Material name (material.name)

function material.name()
	local enabled = true

	return "AlGaAs", enabled
end

Material description (material.description)

function material.description()
	local enabled = true

	return "Al(x)Ga(1-x)As ternary alloy", enabled
end

Chemical formula (material.formula)

function material.formula()
	local enabled = true

	return "Al(x)Ga(1-x)As", enabled
end

Band gap energy (material.Eg)

function material.Eg(state)
	-- Units: eV
	--
	-- Fundamental band gap of Al(x)Ga(1-x)As, taken as the minimum of
	-- the Gamma-valley (direct) and X-valley (indirect) gaps. AlGaAs
	-- is direct for x below ~0.45 and indirect above it.
	--
	-- Method:
	--  1. Interpolate the Gamma gap between GaAs and AlAs (Varshni
	--     endpoints, temperature dependent) with Gamma bowing.
	--  2. Interpolate the X gap similarly with X bowing.
	--  3. Return min(Eg_Gamma, Eg_X).
	--
	-- Parameters from
	-- I. Vurgaftman, J. R. Meyer, L. R. Ram-Mohan,
	-- "Band parameters for III-V compound semiconductors and their
	-- alloys", J. Appl. Phys. 89, 5815-5875, 2001.
	--   GaAs Gamma: Eg0=1.519, a=5.405e-4, b=204
	--   AlAs Gamma: Eg0=3.099, a=8.85e-4,  b=530
	--   GaAs X:     Eg0=1.981, a=4.60e-4,  b=204
	--   AlAs X:     Eg0=2.24,  a=7.0e-4,   b=530
	--   Gamma bowing (composition dependent): -0.127 + 1.310*x
	--   X bowing:                              0.055
	--
	-- Gives Eg(300 K) = 1.42 eV (x=0), crossover near x=0.45 at
	-- ~2.0 eV, and 2.16 eV (x=1, indirect AlAs).

	local enabled = true
	local T = state.T
	local x = state.x

	local EgG_GaAs = varshni(T, 1.519, 5.405e-4, 204.0)
	local EgG_AlAs = varshni(T, 3.099, 8.85e-4, 530.0)
	local bowG = x*(1.0 - x)*(-0.127 + 1.310*x)
	local Eg_Gamma = lerp(x, EgG_GaAs, EgG_AlAs) - bowG

	local EgX_GaAs = varshni(T, 1.981, 4.60e-4, 204.0)
	local EgX_AlAs = varshni(T, 2.24, 7.0e-4, 530.0)
	local bowX = x*(1.0 - x)*0.055
	local Eg_X = lerp(x, EgX_GaAs, EgX_AlAs) - bowX

	local value = Eg_Gamma
	if Eg_X < value then
		value = Eg_X
	end

	return value, enabled
end

Deformation potential Xi (material.Xi)

function material.Xi(state)
	-- Electron affinity
	-- Units: eV
	--
	-- Linear interpolation of the binary corner affinities:
	-- GaAs 4.07, AlAs 3.5 eV.
	--
	-- Note: for AlGaAs/GaAs heterojunctions the conduction-band offset
	-- is conventionally set from the ~60:40 (dEc:dEg) rule rather than
	-- from affinity differencing, which is unreliable for this pair.

	local enabled = true
	local x = state.x

	local value = lerp(x, 4.07, 3.5)

	return value, enabled
end

Electron effective mass (material.me)

function material.me(state)
    local enabled = true
    local x = state.x     -- Al fraction, AlxGa1-xAs
    -- Gamma mass, GaAs 0.067 -> AlAs 0.15 (Vurgaftman 2001)
    -- NOTE: alloy is X-indirect for x > ~0.45; Gamma mass only physical below that.
    local value = 0.067 + 0.083*x
    return value, enabled
end

Hole effective mass (material.mh)

function material.mh(state)
    local enabled = true
    local x = state.x
    -- HH[001] linear: GaAs 0.35 -> AlAs 0.47
    local value = 0.35 + 0.12*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
	--
	-- Linear interpolation of the binary corner values, each with the
	-- (T/300)^1.5 parabolic-band temperature dependence.
	-- Nc(300 K): GaAs 4.7e23, AlAs 1.5e25 m^-3.
	--
	-- Note: Nc rises with x partly because the heavier, multi-valley X
	-- minima take over above the crossover. The linear form smooths
	-- this transition rather than stepping it.

	local enabled = true
	local T = state.T
	local x = state.x
	local f = (T/300.0)^1.5

	local value = lerp(x, 4.7e23, 1.5e25)*f

	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
	--
	-- Linear interpolation of the binary corner values, each with the
	-- (T/300)^1.5 temperature dependence.
	-- Nv(300 K): GaAs 7.0e24, AlAs 1.7e25 m^-3.

	local enabled = true
	local T = state.T
	local x = state.x
	local f = (T/300.0)^1.5

	local value = lerp(x, 7.0e24, 1.7e25)*f

	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
	--
	-- Linear interpolation of the binary corner mobilities, each with
	-- its own phonon-limited temperature dependence:
	--   GaAs 0.80  * (300/T)^(2/3)
	--   AlAs 0.028 * (300/T)^2.1
	--
	-- WARNING: this is a POOR model of AlGaAs electron mobility. The
	-- real mobility has a deep minimum near x~0.45 caused by (a) the
	-- Gamma-to-X transfer of electrons from the light Gamma valley to
	-- the heavy X valleys, and (b) alloy-disorder scattering. Neither
	-- effect is captured by linear interpolation. For quantitative
	-- work in direct AlGaAs (x < 0.4), override with a measured
	-- mobility; near and above the crossover the interpolated value is
	-- unreliable.

	local enabled = true
	local T = state.T
	local x = state.x

	local m_GaAs = 0.80 *(300.0/T)^(2.0/3.0)
	local m_AlAs = 0.028*(300.0/T)^2.1

	local value = lerp(x, m_GaAs, m_AlAs)

	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
	--
	-- Linear interpolation of the binary corner mobilities:
	--   GaAs 0.04  * (300/T)^2.3
	--   AlAs 0.010 * (300/T)^2.1
	--
	-- Note: as for mu_e, alloy-disorder scattering reduces the real
	-- hole mobility below this interpolation at intermediate x.

	local enabled = true
	local T = state.T
	local x = state.x

	local m_GaAs = 0.04 *(300.0/T)^2.3
	local m_AlAs = 0.010*(300.0/T)^2.1

	local value = lerp(x, m_GaAs, m_AlAs)

	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
	--
	-- Linear interpolation of the binary corner values:
	-- GaAs 12.9, AlAs 10.06.
	-- (Gives the familiar AlGaAs form ~13.1 - 3.0x.)

	local enabled = true
	local x = state.x

	local value = lerp(x, 12.9, 10.06)

	return value, enabled
end

Free-carrier radiative recombination (material.free_to_free_recombination)

function material.free_to_free_recombination(state)
	-- Radiative (band-to-band) recombination coefficient
	-- Units: m^3 s^-1
	--
	-- Linear interpolation of the binary corner values:
	-- GaAs 1.0e-16, AlAs 1.0e-19.
	--
	-- Note: physically B should fall sharply once the alloy becomes
	-- indirect (x > ~0.45), more steeply than this linear form. In the
	-- direct region (x < 0.4) the interpolation is reasonable. Adjust
	-- by hand as needed.

	local enabled = true
	local x = state.x

	local value = lerp(x, 1.0e-16, 1.0e-19)

	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
	--
	-- Linear interpolation of the binary corner values:
	-- GaAs 7.0e-42, AlAs 1.0e-43.
	--
	-- Note: representative values; adjust by hand for quantitative
	-- work.

	local enabled = true
	local x = state.x

	local value = lerp(x, 7.0e-42, 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
	--
	-- Linear interpolation of the binary corner values:
	-- GaAs 1.0e-41, AlAs 1.0e-43.

	local enabled = true
	local x = state.x

	local value = lerp(x, 1.0e-41, 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).

	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
	--
	-- Material-quality dependent; set from the intended bulk lifetime.
	-- Representative placeholder for device-grade material.
	--
	-- Note: high-Al AlGaAs is prone to oxygen-related deep traps (the
	-- DX centre becomes important for n-type doping above x~0.22),
	-- which raise the effective non-radiative rate; set from your
	-- material.

	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
	--
	-- Representative value ~1e-15 cm^2 = 1e-19 m^2.

	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
	--
	-- Representative value ~1e-15 cm^2 = 1e-19 m^2.

	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
	--
	-- Alloy thermal conductivity via a thermal-resistivity model
	-- (after S. Adachi, J. Appl. Phys. 58, R1, 1985): the resistivity
	-- W = 1/kappa interpolates linearly between the binaries PLUS a
	-- bimodal alloy-disorder term that peaks mid-composition:
	--
	--   W(x,T) = (1-x) W_GaAs(T) + x W_AlAs(T) + C_alloy * x(1-x)
	--   kappa  = 1 / W
	--
	-- with C_alloy = 0.30 m*K/W (= 30 cm*K/W, Adachi), and endpoint
	-- conductivities kappa_GaAs = 55*(300/T)^1.25 and
	-- kappa_AlAs = 91*(300/T)^1.4 W/m/K.
	--
	-- This reproduces the characteristic deep AlGaAs conductivity dip:
	-- kappa falls to ~11 W/m/K near x=0.5, far below the ~55-91 W/m/K
	-- of the binaries. Using a linear interpolation here would badly
	-- overestimate mid-composition conductivity and under-predict
	-- self-heating.

	local enabled = true
	local T = state.T
	local x = state.x

	local W_GaAs = 1.0/(55.0*(300.0/T)^1.25)
	local W_AlAs = 1.0/(91.0*(300.0/T)^1.4)
	local C_alloy = 0.30

	local W = (1.0 - x)*W_GaAs + x*W_AlAs + C_alloy*x*(1.0 - x)
	local value = 1.0/W

	return value, enabled
end

Specific heat capacity (material.heat_capacity)

function material.heat_capacity(state)
	-- Specific heat capacity
	-- Units: J kg^-1 K^-1
	--
	-- Linear interpolation (approximately Neumann-Kopp) of the binary
	-- corner values: GaAs 330, AlAs 450.

	local enabled = true
	local x = state.x

	local value = lerp(x, 330.0, 450.0)

	return value, enabled
end

Mass density (material.density)

function material.density(state)
	-- Mass density
	-- Units: kg m^-3
	--
	-- Linear interpolation of the binary corner values:
	-- GaAs 5317, AlAs 3760.

	local enabled = true
	local x = state.x

	local value = lerp(x, 5317.0, 3760.0)

	return value, enabled
end

Crystal lattice constant (material.lattice_constant)

function material.lattice_constant(state)
	-- Cubic lattice constant
	-- Units: m
	--
	-- Vegard's law between the binary corners, each with its own
	-- linear thermal expansion:
	--   GaAs a=5.65325 A, exp 5.7e-6 /K
	--   AlAs a=5.6611 A,  exp 5.2e-6 /K
	-- (Vurgaftman et al., 2001.)
	--
	-- GaAs and AlAs are nearly lattice-matched (mismatch ~0.14%), so
	-- AlGaAs of any composition grows essentially coherently on GaAs.
	-- This near-match is what makes the AlGaAs/GaAs system so useful.

	local enabled = true
	local T = state.T
	local x = state.x

	local a_GaAs = 5.65325e-10*(1.0 + 5.7e-6*(T - 300.0))
	local a_AlAs = 5.6611e-10 *(1.0 + 5.2e-6*(T - 300.0))

	local value = lerp(x, a_GaAs, a_AlAs)

	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: III-V family estimate
	-- Confidence: Medium
	--
	-- Reference:
	-- https://www.mdpi.com/2673-3978/3/2/16
	--
	-- Comments:
	-- Representative III-V carrier-to-lattice relaxation time. GaAs-like values
	-- are typically sub-ps to ps and field dependent.

	local enabled = true
	local value = 5.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: III-V family estimate
	-- Confidence: Medium
	--
	-- Reference:
	-- https://www.mdpi.com/2673-3978/3/2/16
	--
	-- Comments:
	-- Representative III-V carrier-to-lattice relaxation time. GaAs-like values
	-- are typically sub-ps to ps and field dependent.

	local enabled = true
	local value = 5.000000e-13

	return value, enabled
end

Spin–orbit splitting energy (material.delta_so)

function material.delta_so(state)
	-- Spin-orbit splitting energy (Delta_SO)
	-- Units: eV
	--
	-- Reference:
	-- Linear interpolation of binary endpoints AlAs, GaAs from
	-- Vurgaftman, Meyer, Ram-Mohan, J. Appl. Phys. 89, 5815 (2001).
	--
	-- Note:
	-- Composition: Al(x)Ga(1-x)As; x = Al mole fraction.
	-- Linear interpolation of endpoints (no bowing applied).

	local enabled = true
	local x = state.x
	local value = (x)*0.28 + ((1.0-x))*0.341

	return value, enabled
end

Kane interband coupling energy (material.Ep)

function material.Ep(state)
	-- Kane energy E_P (optical matrix element parameter)
	-- Units: eV
	--
	-- Reference:
	-- Linear interpolation of binary endpoints AlAs, GaAs from
	-- Vurgaftman, Meyer, Ram-Mohan, J. Appl. Phys. 89, 5815 (2001).
	--
	-- Note:
	-- Composition: Al(x)Ga(1-x)As; x = Al mole fraction.
	-- Linear interpolation of endpoints (no bowing applied).

	local enabled = true
	local x = state.x
	local value = (x)*21.1 + ((1.0-x))*28.8

	return value, enabled
end

Luttinger parameter gamma1 (material.gamma1)

function material.gamma1(state)
	-- Luttinger parameter gamma1
	-- Units: dimensionless
	--
	-- Reference:
	-- Linear interpolation of binary endpoints AlAs, GaAs from
	-- Vurgaftman, Meyer, Ram-Mohan, J. Appl. Phys. 89, 5815 (2001).
	--
	-- Note:
	-- Composition: Al(x)Ga(1-x)As; x = Al mole fraction.
	-- Linear interpolation of endpoints (no bowing applied).

	local enabled = true
	local x = state.x
	local value = (x)*3.76 + ((1.0-x))*6.98

	return value, enabled
end

Luttinger parameter gamma2 (material.gamma2)

function material.gamma2(state)
	-- Luttinger parameter gamma2
	-- Units: dimensionless
	--
	-- Reference:
	-- Linear interpolation of binary endpoints AlAs, GaAs from
	-- Vurgaftman, Meyer, Ram-Mohan, J. Appl. Phys. 89, 5815 (2001).
	--
	-- Note:
	-- Composition: Al(x)Ga(1-x)As; x = Al mole fraction.
	-- Linear interpolation of endpoints (no bowing applied).

	local enabled = true
	local x = state.x
	local value = (x)*0.82 + ((1.0-x))*2.06

	return value, enabled
end

Luttinger parameter gamma3 (material.gamma3)

function material.gamma3(state)
	-- Luttinger parameter gamma3
	-- Units: dimensionless
	--
	-- Reference:
	-- Linear interpolation of binary endpoints AlAs, GaAs from
	-- Vurgaftman, Meyer, Ram-Mohan, J. Appl. Phys. 89, 5815 (2001).
	--
	-- Note:
	-- Composition: Al(x)Ga(1-x)As; x = Al mole fraction.
	-- Linear interpolation of endpoints (no bowing applied).

	local enabled = true
	local x = state.x
	local value = (x)*1.42 + ((1.0-x))*2.93

	return value, enabled
end

Optical absorption coefficient (material.ac)

function material.ac(state)
	-- Conduction-band hydrostatic deformation potential a_c
	-- Units: eV
	--
	-- Reference:
	-- Linear interpolation of binary endpoints AlAs, GaAs from
	-- Vurgaftman, Meyer, Ram-Mohan, J. Appl. Phys. 89, 5815 (2001).
	--
	-- Note:
	-- Composition: Al(x)Ga(1-x)As; x = Al mole fraction.
	-- VMR sign convention: interband hydrostatic deformation potential
	-- a_gap = a_c - a_v, with a_c negative and a_v tabulated positive.
	-- Sign preserved from source; no sign flip applied.
	-- Linear interpolation of endpoints (no bowing applied).

	local enabled = true
	local x = state.x
	local value = (x)*-5.64 + ((1.0-x))*-7.17

	return value, enabled
end

Optical absorption / extinction parameter (material.av)

function material.av(state)
	-- Valence-band hydrostatic deformation potential a_v
	-- Units: eV
	--
	-- Reference:
	-- Linear interpolation of binary endpoints AlAs, GaAs from
	-- Vurgaftman, Meyer, Ram-Mohan, J. Appl. Phys. 89, 5815 (2001).
	--
	-- Note:
	-- Composition: Al(x)Ga(1-x)As; x = Al mole fraction.
	-- VMR sign convention: a_v tabulated as a POSITIVE number; the
	-- interband hydrostatic deformation potential is a_gap = a_c - a_v.
	-- Sign preserved from source; no sign flip applied.
	-- Linear interpolation of endpoints (no bowing applied).

	local enabled = true
	local x = state.x
	local value = (x)*2.47 + ((1.0-x))*1.16

	return value, enabled
end

Recombination parameter b (material.b)

function material.b(state)
	-- Valence-band shear (tetragonal) deformation potential b
	-- Units: eV
	--
	-- Reference:
	-- Linear interpolation of binary endpoints AlAs, GaAs from
	-- Vurgaftman, Meyer, Ram-Mohan, J. Appl. Phys. 89, 5815 (2001).
	--
	-- Note:
	-- Composition: Al(x)Ga(1-x)As; x = Al mole fraction.
	-- Sign convention as in VMR (b negative). Sign preserved; not flipped.
	-- Linear interpolation of endpoints (no bowing applied).

	local enabled = true
	local x = state.x
	local value = (x)*-2.3 + ((1.0-x))*-2

	return value, enabled
end

Material parameter d (material.d)

function material.d(state)
	-- Valence-band shear (rhombohedral) deformation potential d
	-- Units: eV
	--
	-- Reference:
	-- Linear interpolation of binary endpoints AlAs, GaAs from
	-- Vurgaftman, Meyer, Ram-Mohan, J. Appl. Phys. 89, 5815 (2001).
	--
	-- Note:
	-- Composition: Al(x)Ga(1-x)As; x = Al mole fraction.
	-- Sign convention as in VMR (d negative). Sign preserved; not flipped.
	-- Linear interpolation of endpoints (no bowing applied).

	local enabled = true
	local x = state.x
	local value = (x)*-3.4 + ((1.0-x))*-4.8

	return value, enabled
end

Lattice constant a (material.lattice_a)

function material.lattice_a(state)
	-- Cubic (zincblende) lattice constant a
	-- Units: m
	--
	-- Reference:
	-- Vegard's law (linear) interpolation of AlAs, GaAs endpoints,
	-- Vurgaftman, Meyer, Ram-Mohan, J. Appl. Phys. 89, 5815 (2001).
	--
	-- Note:
	-- Composition: Al(x)Ga(1-x)As; x = Al mole fraction.
	-- Endpoint a(T)=a300+da/dT*(T-300); linear (Vegard) mixing.

	local enabled = true
	local x = state.x
	local T = state.T
	local value = ((x)*(5.6611 + 2.90e-05*(T-300.0)) + ((1.0-x))*(5.65325 + 3.88e-05*(T-300.0)))*1e-10

	return value, enabled
end

Elastic stiffness constant C11 (material.C11)

function material.C11(state)
	-- Elastic stiffness constant C11
	-- Units: Pa
	--
	-- Reference:
	-- Linear interpolation of binary endpoints AlAs, GaAs from
	-- Vurgaftman, Meyer, Ram-Mohan, J. Appl. Phys. 89, 5815 (2001).
	--
	-- Note:
	-- Composition: Al(x)Ga(1-x)As; x = Al mole fraction.
	-- Linear interpolation of endpoints (no bowing applied).

	local enabled = true
	local x = state.x
	local value = ((x)*125 + ((1.0-x))*122.1)*1e9

	return value, enabled
end

Elastic stiffness constant C12 (material.C12)

function material.C12(state)
	-- Elastic stiffness constant C12
	-- Units: Pa
	--
	-- Reference:
	-- Linear interpolation of binary endpoints AlAs, GaAs from
	-- Vurgaftman, Meyer, Ram-Mohan, J. Appl. Phys. 89, 5815 (2001).
	--
	-- Note:
	-- Composition: Al(x)Ga(1-x)As; x = Al mole fraction.
	-- Linear interpolation of endpoints (no bowing applied).

	local enabled = true
	local x = state.x
	local value = ((x)*53.4 + ((1.0-x))*56.6)*1e9

	return value, enabled
end

Elastic stiffness constant C44 (material.C44)

function material.C44(state)
    -- Elastic stiffness constant C44
    -- Units: Pa
    --
    -- Composition: Al_x Ga_(1-x) As, x = state.x
    --
    -- Reference:
    -- S. Adachi,
    -- "GaAs, AlAs, and AlxGa1-xAs: Material parameters for use in research
    -- and device applications,"
    -- J. Appl. Phys. 58, R1 (1985).
    -- DOI: 10.1063/1.336070
    --
    -- Notes:
    -- C44(x) = (5.94 - 0.05x) x 1e11 dyn/cm^2 at 300 K (Adachi 1985, as
    -- reproduced in the Ioffe NSM archive) = (59.4 - 0.5x) GPa.
    -- Endpoints: GaAs 59.4 GPa (x=0), AlAs 58.9 GPa (x=1). Linear (from source).
    -- Cross-check: Vurgaftman et al., J. Appl. Phys. 89, 5815 (2001)
    -- (DOI 10.1063/1.1368156) recommend GaAs 60.0 GPa and AlAs 54.2 GPa.
    -- The Adachi relation is retained so that the whole AlGaAs set (C44,
    -- LO energy, e14) comes from a single consistent compilation.

    local enabled = true
    local x = state.x

    local value = 59.4e9 - 0.5e9*x

    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
    --
    -- Composition: Al_x Ga_(1-x) As, x = state.x
    --
    -- Reference:
    -- S. Adachi,
    -- "GaAs, AlAs, and AlxGa1-xAs: Material parameters for use in research
    -- and device applications,"
    -- J. Appl. Phys. 58, R1 (1985).
    -- DOI: 10.1063/1.336070
    --
    -- Notes:
    -- AlGaAs has two-mode (GaAs-like and AlAs-like) LO phonons. Adachi gives
    -- a single effective optical-phonon energy for the alloy:
    -- E(x) = 36.25 + 1.83x + 17.12x^2 - 5.11x^3 meV (as reproduced in the
    -- Ioffe NSM archive); converted to eV. This is a recognised effective
    -- one-mode representation, not a single measured LO branch.

    local enabled = true
    local x = state.x

    local value = (36.25 + 1.83*x + 17.12*x*x - 5.11*x*x*x)*1e-3

    return value, enabled
end

Static dielectric constant (material.epsilon_static)

function material.epsilon_static(state)
    -- Static relative dielectric constant (lattice + electronic)
    -- Dimensionless
    --
    -- Composition: Al_x Ga_(1-x) As, x = state.x
    --
    -- Reference:
    -- 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/).
    -- AlxGa1-xAs chapter: eps_s(x) = 12.90 - 2.84x (300 K, linear from source).
    --
    -- Notes:
    -- Adachi (1985) quotes a slightly different GaAs endpoint; the
    -- compilation relation is used for consistency with epsilon_inf.

    local enabled = true
    local x = state.x

    local value = 12.90 - 2.84*x

    return value, enabled
end

High-frequency dielectric constant (material.epsilon_inf)

function material.epsilon_inf(state)
    -- High-frequency (electronic) relative dielectric constant
    -- Dimensionless
    --
    -- Composition: Al_x Ga_(1-x) As, x = state.x
    --
    -- Reference:
    -- 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/).
    -- AlxGa1-xAs chapter: eps_inf(x) = 10.89 - 2.73x (300 K, linear from source).

    local enabled = true
    local x = state.x

    local value = 10.89 - 2.73*x

    return value, enabled
end

Piezoelectric coefficient e14 (material.e14)

function material.e14(state)
    -- Zincblende piezoelectric stress coefficient e14
    -- Units: C m^-2
    --
    -- Composition: Al_x Ga_(1-x) As, x = state.x
    --
    -- Reference:
    -- S. Adachi,
    -- "GaAs, AlAs, and AlxGa1-xAs: Material parameters for use in research
    -- and device applications,"
    -- J. Appl. Phys. 58, R1 (1985).
    -- DOI: 10.1063/1.336070
    -- Relation e14(x) = -0.16 - 0.065x C/m^2, as reproduced in the Ioffe NSM
    -- archive (AlGaAs mechanical properties).
    --
    -- Notes:
    -- Endpoints: GaAs -0.16, AlAs -0.225 C/m^2. Linear (from source).
    -- Sign as tabulated; e14 sign conventions differ between sources.
    -- Piezoelectric scattering depends on e14^2.

    local enabled = true
    local x = state.x

    local value = -0.16 - 0.065*x

    return value, enabled
end

Electron acoustic deformation potential (material.D_ac_e)

function material.D_ac_e(state)
    -- Gamma-valley electron acoustic deformation potential
    -- Units: eV
    -- Reference: Adachi, J. Appl. Phys. 58, R1 (1985).
    -- DOI: 10.1063/1.336070
    -- GaAs: 6.8 eV; AlAs: 6.3 eV.

    local enabled = true
    local x = state.x

    local value = 6.8 - 0.5*x

    return value, enabled
end

Hole acoustic deformation potential (material.D_ac_h)

function material.D_ac_h(state)
    -- Hydrostatic valence-band deformation potential
    -- Units: eV
    -- Reference: Vurgaftman et al., J. Appl. Phys. 89, 5815 (2001).
    -- DOI: 10.1063/1.1368156
    -- GaAs: 1.16 eV; AlAs: 2.47 eV.
    -- Scalar longitudinal acoustic approximation; excludes shear coupling.

    local enabled = true
    local x = state.x

    local value = 1.16 + 1.31*x

    return value, enabled
end

Material parameter summary (material.print)

function material.print()
	-- Representative composition: Al(0.3)Ga(0.7)As, a common
	-- direct-gap barrier/cladding composition (below the x~0.45
	-- crossover).
	local state = {
		T = 300.0,
		x = 0.30,
		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("Composition x (Al):     %.4f", state.x))
	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.
-- ============================================================================