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

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.
-- ============================================================================