FTO material model
1. Introduction
This page contains the OghmaNano material model for FTO (SnO2:F).
Fluorine-doped tin oxide (SnO2:F), 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
Supporting definitions
-- See end of file for copyright, licensing and documentation links.
local material = {}
Material name (material.name)
function material.name()
local enabled = true
return "FTO", enabled
end
Material description (material.description)
function material.description()
local enabled = true
return "Fluorine-doped tin oxide (SnO2:F), transparent conducting oxide", enabled
end
Chemical formula (material.formula)
function material.formula()
local enabled = true
return "SnO2:F", enabled
end
Band gap energy (material.Eg)
function material.Eg(state)
-- Units: eV
--
-- Reference:
-- M. Batzill, U. Diebold, "The surface and materials science of
-- tin oxide", Prog. Surf. Sci. 79, 47-154, 2005.
--
-- Fundamental (direct) gap of SnO2 ~3.6 eV at 300 K.
--
-- Note: FTO is a DEGENERATE n-type semiconductor. Heavy doping
-- fills the conduction band, so the *optical* (apparent) gap is
-- widened by the Burstein-Moss shift to ~4.0-4.6 eV. This function
-- returns the fundamental gap, not the optical gap.
--
-- Temperature dependence is weak and not well characterised for
-- device films, so a constant value is used rather than a fitted
-- Varshni expression.
local enabled = true
local value = 3.6
return value, enabled
end
Deformation potential Xi (material.Xi)
function material.Xi(state)
-- Electron affinity
-- Units: eV
--
-- Reference:
-- M. Batzill, U. Diebold, Prog. Surf. Sci. 79, 47, 2005;
-- and device-alignment literature.
--
-- SnO2 electron affinity ~4.5 eV. Because FTO is degenerate, the
-- Fermi level sits in/near the conduction band and the effective
-- work function (~4.4 eV, treatment-dependent, ~4.4-4.8 eV) nearly
-- coincides with the affinity. The work function is the number
-- that actually sets contact alignment when FTO is used as an
-- electrode.
local enabled = true
local value = 4.5
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
--
-- Reference:
-- Estimated from SnO2 conduction-band effective mass
-- m_e* ~ 0.3 m0 (M. Batzill, U. Diebold, Prog. Surf. Sci. 79,
-- 47-154, 2005): Nc(300 K) ~ 4e18 cm^-3 = 4e24 m^-3. Approximate.
--
-- Note: FTO is degenerate (free-electron density ~1e20-1e21
-- cm^-3), so this parabolic-band Nc is a formal quantity only; the
-- carrier density is set by doping, not by Nc*exp(...). The
-- (T/300)^1.5 form is the simple non-degenerate model.
local enabled = true
local T = state.T
local value = 4.0e24*(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
--
-- Reference:
-- Estimated from a heavy valence-band mass (m_h* ~ 1 m0):
-- Nv(300 K) ~ 2.5e19 cm^-3 = 2.5e25 m^-3.
--
-- Note: the SnO2 hole mass is poorly constrained (see M. Batzill,
-- U. Diebold, Prog. Surf. Sci. 79, 47, 2005); treat as 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
Electron mobility (material.mu_e)
function material.mu_e(state)
-- Low-field electron mobility
-- Units: m^2 V^-1 s^-1
--
-- Reference:
-- Representative FTO thin-film Hall mobility from the
-- transparent-conducting-oxide literature (~10-30 cm^2/V/s); a
-- mid value of 15 cm^2/V/s = 0.0015 m^2/V/s is used. Approximate.
--
-- Note: transport is ionised-impurity limited in this degenerate
-- material, NOT phonon limited, so no (300/T)^n phonon power law
-- is applied. Temperature dependence is weak; a constant is used.
local enabled = true
local value = 0.0015
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
--
-- Note: FTO is an n-type electrode; hole transport is essentially
-- irrelevant to device operation and is not experimentally
-- constrained. A small placeholder is used. Enabled left true so
-- the solver has a finite value, but do not rely on it.
local enabled = true
local value = 1.0e-4
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
--
-- Reference:
-- SnO2 (rutile) static permittivity, M. Batzill, U. Diebold,
-- Prog. Surf. Sci. 79, 47, 2005.
--
-- Note: rutile SnO2 is anisotropic (~9 perpendicular to c, ~14
-- parallel to c). A representative perpendicular value is used.
local enabled = true
local value = 9.0
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
--
-- Note: SnO2 is an indirect/wide-gap oxide and, 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
Electron Auger recombination coefficient (material.auger_Cn)
function material.auger_Cn(state)
-- Electron Auger recombination coefficient
-- Units: m^6 s^-1
--
-- Note: not characterised for FTO. Order-of-magnitude placeholder.
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
--
-- Note: not characterised for FTO. Order-of-magnitude placeholder.
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).
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 placeholder.
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
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
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
--
-- Reference:
-- Bulk rutile SnO2 ~55-98 W/m/K, anisotropic (CRC Handbook of
-- Chemistry and Physics; thermal-transport literature).
--
-- Note: polycrystalline FTO device FILMS are much lower
-- (~1-15 W/m/K) owing to grain-boundary and thickness-dependent
-- scattering. A low film-appropriate value is used. Approximate /
-- poorly constrained.
local enabled = true
local value = 5.0
return value, enabled
end
Specific heat capacity (material.heat_capacity)
function material.heat_capacity(state)
-- Specific heat capacity
-- Units: J kg^-1 K^-1
--
-- Reference:
-- SnO2, c_p(300 K) ~ 350 J/kg/K (CRC Handbook of Chemistry and
-- Physics; thermochemical data). Approximate.
local enabled = true
local value = 350.0
return value, enabled
end
Mass density (material.density)
function material.density(state)
-- Mass density
-- Units: kg m^-3
--
-- Reference:
-- SnO2 (rutile/cassiterite) rho = 6.95 g/cm^3 (CRC Handbook of
-- Chemistry and Physics).
local enabled = true
local value = 6950.0
return value, enabled
end
Crystal lattice constant (material.lattice_constant)
function material.lattice_constant(state)
-- Cubic lattice constant
-- Units: m
--
-- DISABLED: SnO2 is tetragonal (rutile), NOT cubic, so a single
-- cubic lattice constant is not meaningful.
--
-- Reference (crystallography):
-- R. W. G. Wyckoff, "Crystal Structures"; CRC Handbook.
-- Rutile SnO2: a = b = 4.737 A, c = 3.186 A at 300 K.
-- The a-axis value is returned for reference only.
local enabled = false
local value = 4.737e-10
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: Numerical fallback
-- Confidence: Low
--
-- Reference:
-- No specific reference supplied.
--
-- Comments:
-- Normally used as a degenerate conductor/electrode, not as a bipolar
-- non-degenerate DD layer. Fast fallback only.
local enabled = false
local value = 1.000000e-14
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: Numerical fallback
-- Confidence: Low
--
-- Reference:
-- No specific reference supplied.
--
-- Comments:
-- Normally used as a degenerate conductor/electrode, not as a bipolar
-- non-degenerate DD layer. Fast fallback only.
local enabled = false
local value = 1.000000e-14
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.
-- ============================================================================