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

CdS material model

1. Introduction

This page contains the OghmaNano material model for CdS (CdS).

Bulk crystalline cadmium sulphide (wurtzite)

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 "CdS", enabled
end

Material description (material.description)

function material.description()
	local enabled = true

	return "Bulk crystalline cadmium sulphide (wurtzite)", enabled
end

Chemical formula (material.formula)

function material.formula()
	local enabled = true

	return "CdS", enabled
end

Band gap energy (material.Eg)

function material.Eg(state)
	-- Units: eV
	--
	-- Reference:
	-- Y. P. Varshni,
	-- "Temperature dependence of the energy gap in semiconductors",
	-- Physica, 34, 149-154, 1967.
	--
	-- Wurtzite CdS parameter set (Eg(0) = 2.55 eV, alpha = 7.0e-4 eV/K,
	-- beta = 250 K); representative II-VI compilation values (e.g.
	-- Landolt-Boernstein). Gives Eg(300 K) = 2.44 eV. Direct gap.
	--
	-- Note: reported CdS room-temperature gaps span ~2.42-2.50 eV
	-- depending on crystal form (wurtzite vs zinc-blende), measurement
	-- method and film quality. The parameters here are chosen close to
	-- the ~2.42 eV value conventionally used for the CdS window layer
	-- in photovoltaic device modelling; adjust to your measured gap.

	local enabled = true
	local T = state.T
	local value = 2.55 - 7.0e-4*T*T/(T + 250.0)

	return value, enabled
end

Deformation potential Xi (material.Xi)

function material.Xi(state)
	-- Electron affinity
	-- Units: eV
	--
	-- Reference:
	-- Device / photovoltaic modelling literature.
	--
	-- IMPORTANT (for PV use): the CdS affinity sets the conduction-band
	-- offset to the absorber (CdTe, CIGS, ...) and strongly affects the
	-- simulated junction. Reported values scatter (~4.2-4.5 eV); 4.5 eV
	-- used here. This offset is best fixed from a measured band
	-- alignment rather than from affinity differencing.

	local enabled = true
	local value = 4.5

	return value, enabled
end

Electron effective mass (material.me)

function material.me(state)
    local enabled = true
    -- wurtzite, near-isotropic; c-axis (0001) confinement (Adachi 2005)
    local value = 0.20
    return value, enabled
end

Hole effective mass (material.mh)

function material.mh(state)
    local enabled = true
    -- A-band HH along c-axis; anisotropic + large spread, treat as approximate
    local value = 0.70
    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:
	-- From electron effective mass m_e* ~ 0.20 m0 (CdS).
	-- Nc(300 K) ~ 2.2e18 cm^-3 = 2.2e24 m^-3.
	--
	-- Note: the (T/300)^1.5 form is the simple parabolic-band model.

	local enabled = true
	local T = state.T
	local value = 2.2e24*(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:
	-- From the (heavy) hole effective mass m_h* ~ 0.8 m0 (CdS).
	-- Nv(300 K) ~ 1.8e19 cm^-3 = 1.8e25 m^-3.

	local enabled = true
	local T = state.T
	local value = 1.8e25*(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:
	-- CdS experimental compilation.
	-- Representative mu_n(300 K) ~ 100 cm^2/V/s = 0.01 m^2/V/s,
	-- temperature dependence approximately (300/T)^1.5.
	--
	-- IMPORTANT: CdS electron mobility is extremely process dependent.
	-- Single-crystal CdS reaches ~300-350 cm^2/V/s, whereas the thin
	-- polycrystalline CdS used as a PV window layer is often far lower
	-- (~1-50 cm^2/V/s) due to grain-boundary scattering. Set this from
	-- your film.

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

	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
	--
	-- Reference:
	-- CdS experimental compilation.
	-- Representative mu_p(300 K) ~ 25 cm^2/V/s = 0.0025 m^2/V/s,
	-- temperature dependence approximately (300/T)^1.5.
	--
	-- Note: CdS is intrinsically n-type and cannot be made appreciably
	-- p-type; hole transport rarely matters in its usual window-layer
	-- role. Poorly constrained.

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

	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:
	-- CdS compilation.
	-- Static value ~8.9 (high-frequency value ~5.3).
	--
	-- Note: wurtzite CdS is anisotropic about the c-axis; a
	-- representative value is used. Some PV models use ~10.

	local enabled = true
	local value = 8.9

	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
	--
	-- Reference:
	-- Representative direct-gap II-VI value,
	-- ~1e-10 cm^3/s = 1e-16 m^3/s.
	--
	-- CdS is direct-gap, so B is significant. Poorly characterised;
	-- adjust by hand. Note that in a CdS/absorber solar cell,
	-- INTERFACE recombination and CdS bulk defects usually dominate
	-- over band-to-band radiative recombination.

	local enabled = true
	local value = 1.0e-16

	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
	--
	-- Reference:
	-- Representative placeholder, ~1e-30 cm^6/s = 1e-42 m^6/s.
	--
	-- Note: CdS Auger coefficients are poorly characterised; being
	-- wide gap, Auger is expected to be weak. Placeholder only; adjust
	-- by hand.

	local enabled = true
	local value = 1.0e-42

	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
	--
	-- Reference:
	-- Representative placeholder, ~1e-30 cm^6/s = 1e-42 m^6/s.
	--
	-- Note: as for Cn, poorly characterised. Placeholder only.

	local enabled = true
	local value = 1.0e-42

	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; set from the intended bulk lifetime.
	-- Representative placeholder for device-grade material.
	--
	-- Note: chemical-bath / sputtered CdS window layers are highly
	-- defective and their trap density (and the CdS/absorber interface
	-- defect density) usually controls device performance; set from
	-- your material.

	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
	--
	-- Representative value ~1e-15 cm^2 = 1e-19 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
	--
	-- Representative value ~1e-15 cm^2 = 1e-19 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:
	-- CdS compilation.
	-- kappa(300 K) ~ 20 W/m/K; near room temperature kappa decreases
	-- with T with an effective exponent of about -1.4.
	--
	-- Note: thin-film / polycrystalline CdS is lower than the
	-- single-crystal value.

	local enabled = true
	local T = state.T
	local value = 20.0*(300.0/T)^1.4

	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:
	-- CdS compilation. c_p(300 K) ~ 330 J/kg/K.

	local enabled = true
	local value = 330.0

	return value, enabled
end

Mass density (material.density)

function material.density(state)
	-- Mass density
	-- Units: kg m^-3
	--
	-- Reference:
	-- CdS compilation. rho = 4.82 g/cm^3 (wurtzite).

	local enabled = true
	local value = 4820.0

	return value, enabled
end

Crystal lattice constant (material.lattice_constant)

function material.lattice_constant(state)
	-- Lattice constant (hexagonal a-axis)
	-- Units: m
	--
	-- Reference:
	-- CdS compilation (Landolt-Boernstein).
	-- a(300 K) = 4.136 A; linear expansion ~4.3e-6 /K near 300 K.
	--
	-- IMPORTANT: wurtzite CdS is hexagonal, with two lattice constants
	-- a = 4.136 A and c = 6.714 A. This single scalar field holds the
	-- a-axis constant only; the c-axis constant is not representable
	-- here.
	--
	-- Note: CdS also has a metastable zinc-blende (cubic) form with
	-- a = 5.832 A. This file describes the wurtzite phase.

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

	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: II-VI family estimate
	-- Confidence: Low
	--
	-- Reference:
	-- https://doi.org/10.1109/16.381985
	--
	-- Comments:
	-- II-VI family default. Direct carrier-specific hydrodynamic parameters are
	-- scarce; use sensitivity analysis.

	local enabled = true
	local value = 1.000000e-12

	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: II-VI family estimate
	-- Confidence: Low
	--
	-- Reference:
	-- https://doi.org/10.1109/16.381985
	--
	-- Comments:
	-- II-VI family default. Direct carrier-specific hydrodynamic parameters are
	-- scarce; use sensitivity analysis.

	local enabled = true
	local value = 1.000000e-12

	return value, enabled
end

Quantum-well elastic stiffness constant C13 (material.qw_C13)

function material.qw_C13(state)
-- Elastic stiffness constant C13. Units: Pa.
--
-- Wurtzite (hexagonal, greenockite) is the thermodynamically
-- stable phase of bulk CdS at ambient conditions.
--
-- Reference:
-- D. Berlincourt, H. Jaffe, and L. R. Shiozawa, "Electroelastic
--  properties of the sulfides, selenides, and tellurides of zinc
--  and cadmium," Physical Review 129, 1009-1017 (1963).
--  DOI: 10.1103/PhysRev.129.1009
	local value = 51.0e9
	local enabled = true
	return value, enabled
end

Quantum-well elastic stiffness constant C33 (material.qw_C33)

function material.qw_C33(state)
-- Elastic stiffness constant C33. Units: Pa.
--
-- Wurtzite (hexagonal, greenockite) is the thermodynamically
-- stable phase of bulk CdS at ambient conditions.
--
-- Reference:
-- D. Berlincourt, H. Jaffe, and L. R. Shiozawa, "Electroelastic
--  properties of the sulfides, selenides, and tellurides of zinc
--  and cadmium," Physical Review 129, 1009-1017 (1963).
--  DOI: 10.1103/PhysRev.129.1009
	local value = 93.8e9
	local enabled = true
	return value, enabled
end

Lattice constant a (material.lattice_a)

function material.lattice_a(state)
	-- Lattice constant, a-axis
	-- Units: m
	--
	-- Reference:
	-- O. Madelung, "Semiconductors: Data Handbook," 3rd ed.,
	-- Springer (2004), DOI: 10.1007/978-3-642-18865-7.
	--
	-- Notes:
	-- Wurtzite CdS (greenockite, space group P6_3mc), the stable bulk
	-- phase at room temperature. In-plane a-axis a = 4.1365 Angstrom at
	-- ~300 K; the c-axis (c = 6.716 Angstrom) is NOT returned here.
	-- If your CdS model is instead cubic zinc-blende (hawleyite),
	-- use a = 5.832 Angstrom (5.832e-10 m) instead.
	-- Room-temperature value; no thermal dependence applied.

	local enabled = true
	local value = 4.1365e-10

	return value, enabled
end

Quantum-well elastic stiffness constant C11 (material.qw_C11)

function material.qw_C11(state)
    -- Elastic stiffness constant C11
    -- Units: Pa
    --
    -- Crystal phase: wurtzite CdS.
    --
    -- Reference:
    -- S. Adachi, Handbook on Physical Properties of Semiconductors
    -- (Kluwer Academic, 2004), as tabulated in Planelles et al.,
    -- arXiv:1611.00973, Supporting Information Table S1.
    --
    -- Notes:
    -- 86.5 GPa -> 86.5e9 Pa (room temperature).
    -- Cross-check: experimental column of Grunwald et al., J. Chem. Phys.
    -- 136, 234111 (2012): 90.7 GPa.
    -- C11, C12 and C44 are the requested subset of the hexagonal tensor;
    -- C13 and C33 are also needed for a complete wurtzite description.

    local enabled = true
    local value = 86.5e9

    return value, enabled
end

Quantum-well elastic stiffness constant C12 (material.qw_C12)

function material.qw_C12(state)
    -- Elastic stiffness constant C12
    -- Units: Pa
    --
    -- Crystal phase: wurtzite CdS.
    --
    -- Reference:
    -- S. Adachi, Handbook on Physical Properties of Semiconductors
    -- (Kluwer Academic, 2004), as tabulated in Planelles et al.,
    -- arXiv:1611.00973, Supporting Information Table S1.
    --
    -- Notes:
    -- 54.0 GPa -> 54.0e9 Pa. Grunwald et al. (2012) experimental column:
    -- 52.1 GPa.

    local enabled = true
    local value = 54.0e9

    return value, enabled
end

Quantum-well elastic stiffness constant C44 (material.qw_C44)

function material.qw_C44(state)
    -- Elastic stiffness constant C44
    -- Units: Pa
    --
    -- Crystal phase: wurtzite CdS.
    --
    -- Reference:
    -- S. Adachi, Handbook on Physical Properties of Semiconductors
    -- (Kluwer Academic, 2004), as tabulated in Planelles et al.,
    -- arXiv:1611.00973, Supporting Information Table S1.
    --
    -- Notes:
    -- 15.0 GPa -> 15.0e9 Pa. Grunwald et al. (2012) experimental column:
    -- 15.0 GPa (agrees).

    local enabled = true
    local value = 15.0e9

    return value, enabled
end

Quantum-well parameter a1 (material.qw_a1)

function material.qw_a1(state)
    -- Wurtzite conduction-band deformation potential a1
    -- Units: eV
    --
    -- No sufficiently reliable value/reference identified.
    -- Disabled rather than estimated.
    --
    -- Notes:
    -- Planelles et al. (arXiv:1611.00973, SI) note that conduction/valence
    -- partitioning of the measured exciton deformation potentials (Langer &
    -- Euwema, Phys. Rev. B 2, 4005 (1970)) is not available for wurtzite CdS;
    -- their a_c and D_i values rest on an assumed a_c = 2*D partition. A
    -- defensible separate a1, a2, D1-D6 set was therefore not identified.

    local enabled = false
    local value = 0.0

    return value, enabled
end

Quantum-well parameter a2 (material.qw_a2)

function material.qw_a2(state)
    -- Wurtzite conduction-band deformation potential a2
    -- Units: eV
    --
    -- No sufficiently reliable value/reference identified.
    -- Disabled rather than estimated.
    --
    -- Notes:
    -- Planelles et al. (arXiv:1611.00973, SI) note that conduction/valence
    -- partitioning of the measured exciton deformation potentials (Langer &
    -- Euwema, Phys. Rev. B 2, 4005 (1970)) is not available for wurtzite CdS;
    -- their a_c and D_i values rest on an assumed a_c = 2*D partition. A
    -- defensible separate a1, a2, D1-D6 set was therefore not identified.

    local enabled = false
    local value = 0.0

    return value, enabled
end

Wurtzite deformation potential D1 (material.qw_D1)

function material.qw_D1(state)
    -- Wurtzite valence-band deformation potential D1
    -- Units: eV
    --
    -- No sufficiently reliable value/reference identified.
    -- Disabled rather than estimated.
    --
    -- Notes:
    -- Planelles et al. (arXiv:1611.00973, SI) note that conduction/valence
    -- partitioning of the measured exciton deformation potentials (Langer &
    -- Euwema, Phys. Rev. B 2, 4005 (1970)) is not available for wurtzite CdS;
    -- their a_c and D_i values rest on an assumed a_c = 2*D partition. A
    -- defensible separate a1, a2, D1-D6 set was therefore not identified.

    local enabled = false
    local value = 0.0

    return value, enabled
end

Wurtzite deformation potential D2 (material.qw_D2)

function material.qw_D2(state)
    -- Wurtzite valence-band deformation potential D2
    -- Units: eV
    --
    -- No sufficiently reliable value/reference identified.
    -- Disabled rather than estimated.
    --
    -- Notes:
    -- Planelles et al. (arXiv:1611.00973, SI) note that conduction/valence
    -- partitioning of the measured exciton deformation potentials (Langer &
    -- Euwema, Phys. Rev. B 2, 4005 (1970)) is not available for wurtzite CdS;
    -- their a_c and D_i values rest on an assumed a_c = 2*D partition. A
    -- defensible separate a1, a2, D1-D6 set was therefore not identified.

    local enabled = false
    local value = 0.0

    return value, enabled
end

Wurtzite deformation potential D3 (material.qw_D3)

function material.qw_D3(state)
    -- Wurtzite valence-band deformation potential D3
    -- Units: eV
    --
    -- No sufficiently reliable value/reference identified.
    -- Disabled rather than estimated.
    --
    -- Notes:
    -- Planelles et al. (arXiv:1611.00973, SI) note that conduction/valence
    -- partitioning of the measured exciton deformation potentials (Langer &
    -- Euwema, Phys. Rev. B 2, 4005 (1970)) is not available for wurtzite CdS;
    -- their a_c and D_i values rest on an assumed a_c = 2*D partition. A
    -- defensible separate a1, a2, D1-D6 set was therefore not identified.

    local enabled = false
    local value = 0.0

    return value, enabled
end

Wurtzite deformation potential D4 (material.qw_D4)

function material.qw_D4(state)
    -- Wurtzite valence-band deformation potential D4
    -- Units: eV
    --
    -- No sufficiently reliable value/reference identified.
    -- Disabled rather than estimated.
    --
    -- Notes:
    -- Planelles et al. (arXiv:1611.00973, SI) note that conduction/valence
    -- partitioning of the measured exciton deformation potentials (Langer &
    -- Euwema, Phys. Rev. B 2, 4005 (1970)) is not available for wurtzite CdS;
    -- their a_c and D_i values rest on an assumed a_c = 2*D partition. A
    -- defensible separate a1, a2, D1-D6 set was therefore not identified.

    local enabled = false
    local value = 0.0

    return value, enabled
end

Wurtzite deformation potential D5 (material.qw_D5)

function material.qw_D5(state)
    -- Wurtzite valence-band deformation potential D5
    -- Units: eV
    --
    -- No sufficiently reliable value/reference identified.
    -- Disabled rather than estimated.
    --
    -- Notes:
    -- Planelles et al. (arXiv:1611.00973, SI) note that conduction/valence
    -- partitioning of the measured exciton deformation potentials (Langer &
    -- Euwema, Phys. Rev. B 2, 4005 (1970)) is not available for wurtzite CdS;
    -- their a_c and D_i values rest on an assumed a_c = 2*D partition. A
    -- defensible separate a1, a2, D1-D6 set was therefore not identified.

    local enabled = false
    local value = 0.0

    return value, enabled
end

Wurtzite deformation potential D6 (material.qw_D6)

function material.qw_D6(state)
    -- Wurtzite valence-band deformation potential D6
    -- Units: eV
    --
    -- No sufficiently reliable value/reference identified.
    -- Disabled rather than estimated.
    --
    -- Notes:
    -- Planelles et al. (arXiv:1611.00973, SI) note that conduction/valence
    -- partitioning of the measured exciton deformation potentials (Langer &
    -- Euwema, Phys. Rev. B 2, 4005 (1970)) is not available for wurtzite CdS;
    -- their a_c and D_i values rest on an assumed a_c = 2*D partition. A
    -- defensible separate a1, a2, D1-D6 set was therefore not identified.

    local enabled = false
    local value = 0.0

    return value, enabled
end

Longitudinal optical phonon energy (material.phonon_lo_energy)

function material.phonon_lo_energy(state)
    -- Representative LO phonon energy for polar optical (Frohlich) scattering
    -- Units: eV
    --
    -- Crystal phase: wurtzite CdS.
    --
    -- Reference:
    -- A. Debernardi, N. M. Pyka, A. Gobel, T. Ruf, R. Lauck, S. Kramp,
    -- M. Cardona, Solid State Commun. 103, 297 (1997) (CdS phonons),
    -- frequencies as tabulated (Table 1) in:
    -- O. P. Malyk, V. M. Rodych, H. A. Ilchuk, J. Nano- Electron. Phys. 7,
    -- 03019 (2015) (CdS electron-transport parameter table).
    --
    -- Notes:
    -- Long-wavelength optical phonons (single crystal, inelastic neutron /
    -- Raman data of Debernardi et al.), as tabulated by Malyk et al.:
    -- omega(E1-LO) = 5.77e13 rad/s, omega(A1-LO) = 5.71e13 rad/s,
    -- omega(E1-TO) = 4.56e13 rad/s, omega(A1-TO) = 4.37e13 rad/s.
    -- The ordinary (E1) LO mode is used, consistent with the E perp c
    -- dielectric constants below.
    -- Conversion: E = hbar*omega = 5.77e13 x 6.582120e-16 eV s = 0.03798 eV
    -- (= 306 cm^-1, consistent with Raman LO ~305 cm^-1).
    -- The E1/A1 LO modes differ by ~1%.

    local enabled = true
    local value = 0.03798

    return value, enabled
end

Static dielectric constant (material.epsilon_static)

function material.epsilon_static(state)
    -- Static relative dielectric constant (lattice + electronic)
    -- Dimensionless
    --
    -- Crystal phase: wurtzite CdS, E perp c.
    --
    -- Reference:
    -- J. Planelles, F. Rajadell, J. I. Climente,
    -- "Electronic origin of linearly polarized emission in CdSe/CdS
    -- dot-in-rod heterostructures," arXiv:1611.00973,
    -- Supporting Information Table S1.
    -- citing S. Ninomiya and S. Adachi, "Optical properties of wurtzite CdS,"
    -- J. Appl. Phys. 78, 1183 (1995), via Madelung et al. (Landolt-Bornstein).
    --
    -- Notes:
    -- eps_perp = 8.28 (eps_par = 8.73). Ordinary component used.

    local enabled = true
    local value = 8.28

    return value, enabled
end

High-frequency dielectric constant (material.epsilon_inf)

function material.epsilon_inf(state)
    -- High-frequency (electronic) relative dielectric constant
    -- Dimensionless
    --
    -- Crystal phase: wurtzite CdS, E perp c.
    --
    -- Derived (Lyddane-Sachs-Teller) from:
    -- eps_s(perp) = 8.28 (Ninomiya & Adachi 1995, see epsilon_static) and
    -- the E1 phonon frequencies of:
    -- A. Debernardi, N. M. Pyka, A. Gobel, T. Ruf, R. Lauck, S. Kramp,
    -- M. Cardona, Solid State Commun. 103, 297 (1997) (CdS phonons),
    -- frequencies as tabulated (Table 1) in:
    -- O. P. Malyk, V. M. Rodych, H. A. Ilchuk, J. Nano- Electron. Phys. 7,
    -- 03019 (2015) (CdS electron-transport parameter table).
    --
    -- Notes:
    -- eps_inf = eps_s*(omega_TO/omega_LO)^2 = 8.28*(4.56/5.77)^2 = 5.17.
    -- Derived so that eps_s, eps_inf and phonon_lo_energy form a
    -- self-consistent Frohlich set. Note the inputs come from two different
    -- sources (dielectric: Ninomiya & Adachi; phonons: Debernardi et al.).

    local enabled = true
    local value = 5.17

    return value, enabled
end

Wurtzite piezoelectric coefficient e15 (material.qw_e15)

function material.qw_e15(state)
    -- Wurtzite piezoelectric stress coefficient e15
    -- Units: C m^-2
    --
    -- Reference:
    -- D. Berlincourt, H. Jaffe, L. R. Shiozawa,
    -- "Electroelastic properties of the sulfides, selenides, and tellurides
    -- of zinc and cadmium,"
    -- Phys. Rev. 129, 1009 (1963).
    -- DOI: 10.1103/PhysRev.129.1009
    -- as tabulated in Planelles et al., arXiv:1611.00973, SI Table S1.
    --
    -- Notes:
    -- e15 = -0.21 C/m^2. Berlincourt sign convention (e33 > 0).
    -- Alternative set: Kobiakov, Solid State Commun. 35, 305 (1980), as
    -- tabulated in Malyk et al., J. Nano- Electron. Phys. 7, 03019 (2015):
    -- e15 = -0.183, e31 = -0.262, e33 = 0.385 C/m^2. The Berlincourt set is
    -- kept because it is the original electroelastic measurement used by
    -- the elastic/dielectric sources above.

    local enabled = true
    local value = -0.21

    return value, enabled
end

Piezoelectric coefficient e31 (material.e31)

function material.e31(state)
    -- Wurtzite piezoelectric stress coefficient e31
    -- Units: C m^-2
    --
    -- Reference:
    -- D. Berlincourt, H. Jaffe, L. R. Shiozawa,
    -- "Electroelastic properties of the sulfides, selenides, and tellurides
    -- of zinc and cadmium,"
    -- Phys. Rev. 129, 1009 (1963).
    -- DOI: 10.1103/PhysRev.129.1009
    -- as tabulated in Planelles et al., arXiv:1611.00973, SI Table S1.
    --
    -- Notes:
    -- e31 = -0.24 C/m^2 (Berlincourt convention, e33 > 0).
    -- Kobiakov (1980) alternative: -0.262 C/m^2.

    local enabled = true
    local value = -0.24

    return value, enabled
end

Piezoelectric coefficient e33 (material.e33)

function material.e33(state)
    -- Wurtzite piezoelectric stress coefficient e33
    -- Units: C m^-2
    --
    -- Reference:
    -- D. Berlincourt, H. Jaffe, L. R. Shiozawa,
    -- "Electroelastic properties of the sulfides, selenides, and tellurides
    -- of zinc and cadmium,"
    -- Phys. Rev. 129, 1009 (1963).
    -- DOI: 10.1103/PhysRev.129.1009
    -- as tabulated in Planelles et al., arXiv:1611.00973, SI Table S1.
    --
    -- Notes:
    -- e33 = +0.44 C/m^2. Kobiakov (1980) alternative: 0.385 C/m^2.

    local enabled = true
    local value = 0.44

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