PEDOT:PSS material model
1. Introduction
This page contains the OghmaNano material model for PEDOT:PSS ((C6H4O2S)m:(C8H8O3S)n).
Poly(3,4-ethylenedioxythiophene):poly(styrenesulfonate) conducting polymer, hole-transport layer
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 = {}
-- ============================================================================
-- IMPORTANT MODELLING NOTE
-- ----------------------------------------------------------------------------
-- PEDOT:PSS is a heavily p-doped, quasi-metallic conducting polymer, normally
-- used as a hole-transport / hole-injection (anode) interlayer, NOT as an
-- intrinsic photoactive semiconductor. In a device stack it is most often
-- represented either as a metallic contact with a defined work function
-- (~5.0-5.2 eV) or as a very heavily p-doped thin HTL.
--
-- Several fields below (band gap, radiative recombination, Auger, SRH traps)
-- are therefore only weakly physical for this material and are given notional
-- / representative values so the interface stays complete. Treat the work
-- function, permittivity and (vertical) hole mobility as the meaningful
-- numbers, and set the p-doping via the device rather than inferring it from
-- the intrinsic DOS.
-- ============================================================================
function material.name()
local enabled = true
return "PEDOT:PSS", enabled
end
function material.description()
local enabled = true
return "Poly(3,4-ethylenedioxythiophene):poly(styrenesulfonate) conducting polymer, hole-transport layer", enabled
end
function material.formula()
local enabled = true
-- Blend of PEDOT (repeat ~C6H4O2S) and PSS (repeat ~C8H8O3S), typically
-- with a PSS:PEDOT mass ratio in the range ~2.5:1 to 6:1.
return "(C6H4O2S)m:(C8H8O3S)n", enabled
end
function material.Eg(state)
-- Units: eV
--
-- Optical band gap of NEUTRAL (undoped) PEDOT is ~1.6-1.7 eV. As used,
-- PEDOT:PSS is heavily oxidised (p-doped): polaron/bipolaron states fill
-- the gap and it shows broad free-carrier absorption into the NIR, i.e.
-- it behaves quasi-metallically rather than as a clean-gap semiconductor.
-- A single "band gap" is thus only notional here. The Varshni model used
-- for crystalline GaAs does not apply; a constant value is returned.
--
-- Reference:
-- L. Groenendaal, F. Jonas, D. Freitag, H. Pielartzik,
-- J. R. Reynolds, "Poly(3,4-ethylenedioxythiophene) and Its
-- Derivatives: Past, Present, and Future", Adv. Mater., 12,
-- 481-494, 2000 (neutral PEDOT gap ~1.6-1.7 eV).
local enabled = true
local value = 1.6
return value, enabled
end
function material.Xi(state)
-- Electron affinity (LUMO level below vacuum)
-- Units: eV
--
-- The practically important energetic quantity for PEDOT:PSS is its
-- WORK FUNCTION, ~5.0-5.2 eV (tunable by processing), which is what makes
-- it an efficient hole injector into donor HOMOs near -5.0 to -5.2 eV.
-- With a HOMO of ~-5.1 eV and Eg ~1.6 eV the implied electron affinity
-- (LUMO) is ~-3.5 eV, returned here. If the layer is modelled as a metal
-- contact, use the work function (~5.1 eV) directly instead.
--
-- Reference:
-- PEDOT:PSS work function is tunable over ~4.8-5.3 eV (higher-PSS
-- grades such as Clevios AI 4083 ~5.0-5.2 eV), measured by UPS;
-- see the review by X. Fan et al., J. Mater. Chem. A, 2023,
-- DOI: 10.1039/D3TA03213B (and Ossila PEDOT:PSS work-function data).
local enabled = true
local value = 3.5
return value, enabled
end
function material.Nc(state)
-- Effective conduction-band (LUMO) density of states
-- Units: m^-3
--
-- Disordered organic: constant effective DOS is used (the crystalline
-- (T/300)^1.5 scaling does not apply). Note that the very high hole
-- density responsible for PEDOT:PSS's conductivity comes from doping,
-- not from the intrinsic DOS, and should be set via the device doping
-- rather than inferred here. A representative value is used.
--
-- Reference:
-- Add the precise reference used for the effective density of states.
local enabled = true
local value = 1.0e26
return value, enabled
end
function material.Nv(state)
-- Effective valence-band (HOMO) density of states
-- Units: m^-3
--
-- See material.Nc. Constant effective DOS; representative value.
--
-- Reference:
-- Add the precise reference used for the effective density of states.
local enabled = true
local value = 1.0e26
return value, enabled
end
function material.mu_e(state)
-- Low-field electron mobility
-- Units: m^2 V^-1 s^-1
--
-- PEDOT:PSS is a hole conductor; electron transport is not relevant and
-- is poorly defined. A small representative value is used.
--
-- Note: organic mobility is thermally activated, field dependent
-- (Poole-Frenkel) and carrier-density dependent; the crystalline
-- (300/T)^n form is not used.
--
-- Reference:
-- Not applicable / negligible for this hole-transport material.
local enabled = true
local value = 1.0e-11
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
--
-- PEDOT:PSS mobility spans several orders of magnitude with formulation
-- and processing (standard grade vs high-conductivity grades treated with
-- DMSO / ethylene glycol / acid). Transport is strongly anisotropic:
-- in-plane mobility greatly exceeds through-film (vertical) mobility, and
-- the high electrical conductivity (~0.1 to >1000 S/cm) is driven mainly
-- by the very high carrier density rather than by high mobility. A
-- representative through-film (device-relevant) value for a standard-type
-- grade is used; adjust for the specific formulation.
--
-- Reference:
-- J. Ouyang, Q. Xu, C.-W. Chu, Y. Yang, G. Li, J. Shinar,
-- "On the mechanism of conductivity enhancement in
-- poly(3,4-ethylenedioxythiophene):poly(styrene sulfonate) film through
-- solvent treatment", Polymer, 45, 8443-8450, 2004.
local enabled = true
local value = 1.0e-6
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
--
-- Reported values scatter (~2-3 at optical/high frequency); the
-- low-frequency static value can be substantially higher because of
-- ionic/polaronic contributions. A representative value commonly used in
-- device modelling is returned.
--
-- Reference:
-- Add the precise reference used for this value.
local enabled = true
local value = 3.0
return value, enabled
end
function material.free_to_free_recombination(state)
-- Bimolecular (band-to-band) recombination coefficient
-- Units: m^3 s^-1
--
-- As a doped transport/injection interlayer, band-to-band recombination
-- is not usually a meaningful loss channel for PEDOT:PSS. A notional
-- Langevin-scale value is used to keep the interface complete.
--
-- Reference:
-- Not typically modelled for a hole-transport layer.
local enabled = true
local value = 1.0e-17
return value, enabled
end
function material.auger_Cn(state)
-- Electron Auger recombination coefficient
-- Units: m^6 s^-1
--
-- Negligible / not applicable for this organic HTL. A very small
-- representative value is used so the channel is effectively inactive.
--
-- Reference:
-- Not applicable for organic semiconductors.
local enabled = true
local value = 1.0e-45
return value, enabled
end
function material.auger_Cp(state)
-- Hole Auger recombination coefficient
-- Units: m^6 s^-1
--
-- See material.auger_Cn. Very small representative value.
--
-- Reference:
-- Not applicable for organic semiconductors.
local enabled = true
local value = 1.0e-45
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/LUMO band).
-- Negative values are below mid-gap (towards the valence/HOMO band).
--
-- Placed at mid-gap as a notional single-level default; SRH recombination
-- is not the dominant physics for a doped transport layer.
local enabled = true
local value = 0.0
return value, enabled
end
function material.ss_srh_Nt(state)
-- SRH trap density
-- Units: m^-3
--
-- Representative value.
local enabled = true
local value = 1.0e22
return value, enabled
end
function material.ss_srh_sigma_n(state)
-- Electron capture cross section
-- Units: m^2
--
-- Representative value.
local enabled = true
local value = 1.0e-20
return value, enabled
end
function material.ss_srh_sigma_p(state)
-- Hole capture cross section
-- Units: m^2
--
-- Representative value.
local enabled = true
local value = 1.0e-20
return value, enabled
end
function material.thermal_conductivity(state)
-- Thermal conductivity
-- Units: W m^-1 K^-1
--
-- PEDOT:PSS thermal conductivity is low and anisotropic; reported values
-- are ~0.2-0.5 W/m/K (cross-plane at the lower end, in-plane higher,
-- especially for high-conductivity grades). The crystalline phonon
-- (300/T)^n scaling does not apply; a constant representative value is
-- used.
--
-- Reference:
-- Add the precise reference used for this value (measurements report
-- ~0.2-0.5 W/m/K depending on grade and orientation).
local enabled = true
local value = 0.3
return value, enabled
end
function material.heat_capacity(state)
-- Specific heat capacity
-- Units: J kg^-1 K^-1
--
-- Organic polymers typically fall in the ~1000-1500 J/kg/K range near
-- room temperature. A representative value is used.
--
-- Reference:
-- Add the precise reference used for this value.
local enabled = true
local value = 1300.0
return value, enabled
end
function material.density(state)
-- Mass density
-- Units: kg m^-3
--
-- Reported film densities of PEDOT:PSS span ~1.0-1.5 g/cm^3. A
-- representative value is used.
--
-- Reference:
-- Add the precise reference used for this value.
local enabled = true
local value = 1000.0
return value, enabled
end
function material.lattice_constant(state)
-- Characteristic structural spacing
-- Units: m
--
-- PEDOT:PSS films are largely amorphous with small PEDOT nanocrystallites,
-- so a single cubic lattice constant is not meaningful. GIWAXS reports a
-- lamellar (100) spacing of ~1.3-1.4e-9 m and a pi-pi (010) stacking
-- distance of ~0.34e-9 m. The lamellar spacing is returned as a
-- representative value.
--
-- Reference:
-- T. Takano, H. Masunaga, A. Fujiwara, H. Okuzaki, A. Sasaki,
-- "PEDOT Nanocrystal in Highly Conductive PEDOT:PSS Polymer Films",
-- Macromolecules, 45, 3859-3865, 2012.
local enabled = true
local value = 1.3e-9
return value, enabled
end
function material.Ntrape(state)
-- Electron tail (exponential band-tail) trap density
-- Units: m^-3
--
-- Representative magnitude for a disordered organic; adjust for the
-- specific film.
local enabled = true
local value = 1.0e26
return value, enabled
end
function material.Ntraph(state)
-- Hole tail (exponential band-tail) trap density
-- Units: m^-3
--
-- See material.Ntrape. Representative value.
local enabled = true
local value = 1.0e26
return value, enabled
end
function material.Etrape(state)
-- Electron tail characteristic (Urbach) energy
-- Units: eV
--
-- Representative disordered-organic value.
local enabled = true
local value = 0.06
return value, enabled
end
function material.Etraph(state)
-- Hole tail characteristic (Urbach) energy
-- Units: eV
--
-- See material.Etrape. Representative value.
local enabled = true
local value = 0.06
return value, enabled
end
function material.srhsigman_e(state)
-- Electron-to-electron capture cross section
-- Units: m^2
--
-- Representative value for the tail-state SRH model.
local enabled = true
local value = 1.0e-20
return value, enabled
end
function material.srhsigmap_e(state)
-- Hole-to-electron capture cross section
-- Units: m^2
--
-- Representative value for the tail-state SRH model.
local enabled = true
local value = 1.0e-20
return value, enabled
end
function material.srhsigman_h(state)
-- Electron-to-hole capture cross section
-- Units: m^2
--
-- Representative value for the tail-state SRH model.
local enabled = true
local value = 1.0e-20
return value, enabled
end
function material.srhsigmap_h(state)
-- Hole-to-hole capture cross section
-- Units: m^2
--
-- Representative value for the tail-state SRH model.
local enabled = true
local value = 1.0e-20
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)))
print(string.format("Electron trap density: %.6e m^-3", material.Ntrape(state)))
print(string.format("Hole trap density: %.6e m^-3", material.Ntraph(state)))
print(string.format("Electron trap energy: %.6f eV", material.Etrape(state)))
print(string.format("Hole trap energy: %.6f eV", material.Etraph(state)))
print(string.format("SRH sigma n->e: %.6e m^2", material.srhsigman_e(state)))
print(string.format("SRH sigma p->e: %.6e m^2", material.srhsigmap_e(state)))
print(string.format("SRH sigma n->h: %.6e m^2", material.srhsigman_h(state)))
print(string.format("SRH sigma p->h: %.6e m^2", material.srhsigmap_h(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.
-- ============================================================================