data_provider

class mqed.Dyadic_GF.data_provider.DataProvider(material_config)[source]

Handles loading and providing material permittivity. It is optimized to create interpolation functions only once and performs interpolation in frequency space for better numerical accuracy.

__init__(material_config)[source]
_epsilon_drude(omega)[source]

Evaluate single-pole Drude permittivity.

_epsilon_drude_lorentz(omega)[source]

Evaluate Drude-Lorentz permittivity with configured oscillators.

static _normalize_source_type(source_type)[source]

Normalize source type values from YAML into internal enum-like strings.

_read_omega_parameter(cfg, param_name)[source]

Read frequency-like model parameters from either eV or rad/s YAML keys.

Supported keys for a parameter named omega_p are:
  • omega_p_eV (preferred for material-model fits in literature)

  • omega_p_rad_s

  • omega_p (legacy fallback interpreted as rad/s)

_setup_constant_epsilon()[source]

Sets up the provider for a non-dispersive material.

_setup_drude_lorentz_model()[source]

Set up Drude-Lorentz parameters.

Model form used in this code:
epsilon(omega) = eps_inf
  • omega_p^2 / (omega^2 + i*gamma_D*omega)

  • sum_j [ f_j * omega_0j^2 /

    (omega_0j^2 - omega^2 - i*gamma_j*omega) ]

where each oscillator entry provides:
  • strength (f_j)

  • omega_0 in eV or rad/s

  • gamma in eV or rad/s

_setup_drude_model()[source]

Set up single-pole Drude parameters.

Model form used in this code:

epsilon(omega) = eps_inf - omega_p^2 / (omega^2 + i*gamma*omega)

_setup_interpolator_from_excel()[source]

Loads data, converts to frequency space, and creates interpolators.

static _to_omega_from_ev(value_eV)[source]

Convert an energy in eV to angular frequency in rad/s.

get_epsilon(omega)[source]

Returns the complex relative permittivity (ε_r) for a given angular frequency.

Parameters:

omega (float) – The target angular frequency in rad/s.

Returns:

The complex relative permittivity ε_r(ω).

Return type:

complex