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
-- See end of file for copyright, licensing and documentation links.
local material = {}
function material.name()
local enabled = true
return "FTO", enabled
end
function material.description()
local enabled = true
return "Fluorine-doped tin oxide (SnO2:F), transparent conducting oxide", enabled
end
function material.formula()
local enabled = true
return "SnO2:F", enabled
end
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
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
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
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
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
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: 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
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:
-- 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
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
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
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
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:
-- 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
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
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
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
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.
-- ============================================================================