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

ITO material model

1. Introduction

This page contains the OghmaNano material model for ITO (In2O3:Sn).

Indium tin oxide (In2O3:Sn), degenerate transparent conducting oxide

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


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

local material = {}

function material.name()
	local enabled = true

	return "ITO", enabled
end


function material.description()
	local enabled = true

	return "Indium tin oxide (In2O3:Sn), degenerate transparent conducting oxide", enabled
end


function material.formula()
	local enabled = true

	return "In2O3:Sn", enabled
end


function material.Eg(state)
	-- Units: eV
	--
	-- Reference:
	-- A. Walsh et al., "Nature of the band gap of In2O3 revealed by
	-- first-principles calculations and X-ray spectroscopy",
	-- Phys. Rev. Lett. 100, 167402, 2008.
	--
	-- Subtlety: the true fundamental (direct) gap of In2O3 is ~2.9 eV,
	-- but the onset transition is weak/dipole-forbidden, so the strong
	-- optical absorption edge sits higher (~3.75 eV), and in degenerate
	-- ITO the Burstein-Moss shift widens the apparent optical gap
	-- further to ~3.75-4.3 eV.
	--
	-- A device-relevant value of 3.6 eV is used. Constant.

	local enabled = true
	local value = 3.6

	return value, enabled
end


function material.Xi(state)
	-- Electron affinity
	-- Units: eV
	--
	-- Reference:
	-- ITO electrode work-function literature.
	--
	-- ITO work function is treatment-dependent (~4.4-4.8 eV; ~4.7 eV
	-- after oxygen-plasma / UV-ozone). Because ITO is DEGENERATE, the
	-- Fermi level sits in the conduction band and the effective work
	-- function nearly coincides with the electron affinity. The work
	-- function is the number that sets contact alignment. Approximate.

	local enabled = true
	local value = 4.7

	return value, enabled
end


function material.Nc(state)
	-- Effective conduction-band density of states
	-- Units: m^-3
	--
	-- Reference:
	-- From In2O3 CB effective mass m_e* ~ 0.3 m0:
	-- Nc(300 K) ~ 4e18 cm^-3 = 4e24 m^-3.
	--
	-- Note: ITO is degenerate (free-electron density ~1e21 cm^-3), so
	-- this parabolic Nc is a formal quantity only; carrier density is
	-- set by doping. Approximate.

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

	return value, enabled
end


function material.Nv(state)
	-- Effective valence-band density of states
	-- Units: m^-3
	--
	-- Reference:
	-- From a heavy valence-band mass (m_h* ~ 1 m0):
	-- Nv(300 K) ~ 2.5e19 cm^-3 = 2.5e25 m^-3.
	--
	-- Note: the In2O3 hole mass is poorly constrained; approximate.
	-- Rarely relevant for an n-type TCO.

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

	return value, enabled
end


function material.mu_e(state)
	-- Low-field electron mobility
	-- Units: m^2 V^-1 s^-1
	--
	-- Reference:
	-- Representative ITO thin-film Hall mobility ~15-50 cm^2/V/s; a
	-- mid value of 35 cm^2/V/s = 0.0035 m^2/V/s is used.
	--
	-- Note: transport is ionised-impurity limited in this degenerate
	-- material (not phonon limited), so no (300/T)^n law is applied.
	-- Approximate.

	local enabled = true
	local value = 0.0035

	return value, enabled
end

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

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

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


function material.mu_h(state)
	-- Low-field hole mobility
	-- Units: m^2 V^-1 s^-1
	--
	-- Note: ITO is an n-type electrode; hole transport is essentially
	-- irrelevant to device operation and not experimentally
	-- constrained. Small placeholder; do not rely on it.

	local enabled = true
	local value = 1.0e-4

	return value, enabled
end

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

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

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


function material.epsilonr(state)
	-- Relative static permittivity
	-- Dimensionless
	--
	-- Reference:
	-- In2O3 / ITO static permittivity ~8.9-9.5 (In2O3 optical and
	-- dielectric literature).
	--
	-- A representative value of 9.0 is used.

	local enabled = true
	local value = 9.0

	return value, enabled
end


function material.free_to_free_recombination(state)
	-- Radiative (band-to-band) recombination coefficient
	-- Units: m^3 s^-1
	--
	-- Note: as a degenerate electrode, bulk radiative recombination is
	-- not the operative physics (contact recombination dominates).
	-- Poorly constrained placeholder.

	local enabled = true
	local value = 1.0e-21

	return value, enabled
end


function material.auger_Cn(state)
	-- Electron Auger recombination coefficient
	-- Units: m^6 s^-1
	--
	-- Note: not characterised for ITO. Order-of-magnitude placeholder.

	local enabled = true
	local value = 1.0e-43

	return value, enabled
end


function material.auger_Cp(state)
	-- Hole Auger recombination coefficient
	-- Units: m^6 s^-1
	--
	-- Note: not characterised for ITO. Order-of-magnitude placeholder.

	local enabled = true
	local value = 1.0e-43

	return value, enabled
end


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


function material.ss_srh_Nt(state)
	-- SRH trap density
	-- Units: m^-3
	--
	-- Material-quality dependent placeholder.

	local enabled = true
	local value = 1.0e21

	return value, enabled
end


function material.ss_srh_sigma_n(state)
	-- Electron capture cross section
	-- Units: m^2

	local enabled = true
	local value = 1.0e-19

	return value, enabled
end


function material.ss_srh_sigma_p(state)
	-- Hole capture cross section
	-- Units: m^2

	local enabled = true
	local value = 1.0e-19

	return value, enabled
end


function material.thermal_conductivity(state)
	-- Thermal conductivity
	-- Units: W m^-1 K^-1
	--
	-- Reference:
	-- ITO thin-film thermal conductivity ~3-11 W/m/K (thin-film
	-- thermal-transport literature).
	--
	-- A representative 8 W/m/K is used. Poorly constrained /
	-- thickness-dependent.

	local enabled = true
	local value = 8.0

	return value, enabled
end


function material.heat_capacity(state)
	-- Specific heat capacity
	-- Units: J kg^-1 K^-1
	--
	-- Reference:
	-- In2O3, c_p(300 K) ~ 360 J/kg/K (CRC Handbook of Chemistry and
	-- Physics). Approximate.

	local enabled = true
	local value = 360.0

	return value, enabled
end


function material.density(state)
	-- Mass density
	-- Units: kg m^-3
	--
	-- Reference:
	-- In2O3 / ITO rho ~ 7.15 g/cm^3 (CRC Handbook of Chemistry and
	-- Physics).

	local enabled = true
	local value = 7150.0

	return value, enabled
end


function material.lattice_constant(state)
	-- Cubic lattice constant
	-- Units: m
	--
	-- ENABLED: unlike the other TCOs here, the parent oxide In2O3
	-- crystallises in the CUBIC bixbyite structure, so a single cubic
	-- lattice constant IS meaningful.
	--
	-- Reference (crystallography):
	-- R. W. G. Wyckoff, "Crystal Structures".
	-- Bixbyite In2O3: a = 10.117 A at 300 K (large 80-atom cell); Sn
	-- substitutes on In sites in ITO. Linear thermal expansion
	-- ~6.7e-6 /K near 300 K is applied (approximate).

	local enabled = true
	local T = state.T
	local a300 = 10.117e-10
	local expansion = 6.7e-6
	local value = a300*(1.0 + expansion*(T - 300.0))

	return value, enabled
end


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("Thermal conductivity:   %.6e W/m/K", material.thermal_conductivity(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.
-- ============================================================================