QPMS
Electromagnetic multiple scattering library and toolkit.
|
Optical properties of materials. More...
Go to the source code of this file.
Data Structures | |
struct | qpms_epsmu_generator_t |
Prototype for general optical property generator for isotropic materials. More... | |
struct | qpms_ldparams_triple_t |
A \( (f_j, \omega_j, \gamma_j) \) triple for qpms_ldparams_t. More... | |
struct | qpms_ldparams_t |
Structure holding Lorentz-Drude model parameters of a material. More... | |
struct | qpms_permittivity_interpolator_t |
Interpolator of tabulated optical properties. More... | |
Macros | |
#define | SPEED_OF_LIGHT (2.99792458e8) |
Speed of light in m/s. | |
Typedefs | |
typedef struct qpms_epsmu_generator_t | qpms_epsmu_generator_t |
Prototype for general optical property generator for isotropic materials. | |
typedef struct qpms_ldparams_triple_t | qpms_ldparams_triple_t |
A \( (f_j, \omega_j, \gamma_j) \) triple for qpms_ldparams_t. | |
typedef struct qpms_ldparams_t | qpms_ldparams_t |
Structure holding Lorentz-Drude model parameters of a material. More... | |
typedef struct qpms_permittivity_interpolator_t | qpms_permittivity_interpolator_t |
Interpolator of tabulated optical properties. | |
Functions | |
static qpms_epsmu_t | qpms_epsmu_generator_eval (qpms_epsmu_generator_t gen, complex double omega) |
Convenience function for generating material properties at given frequency. | |
qpms_epsmu_t | qpms_epsmu_const_g (complex double omega, const void *epsmu) |
Constant optical property "generator" for qpms_epsmu_generator_t. More... | |
static complex double | qpms_refindex (qpms_epsmu_t em) |
Gets refractive index of a material from its permeability and permittivity. More... | |
static complex double | qpms_wavenumber (complex double omega, qpms_epsmu_t em) |
Gets wave number k from angular frequency and material permeability and permittivity. More... | |
static complex double | qpms_waveimpedance (qpms_epsmu_t em) |
Gets (relative) wave impedance \( \eta_r \) from material permeability and permittivity. More... | |
complex double | qpms_lorentzdrude_eps (complex double omega, const qpms_ldparams_t *) |
Lorentz-Drude permittivity. | |
qpms_epsmu_t | qpms_lorentzdrude_epsmu (complex double omega, const qpms_ldparams_t *) |
Lorentz-Drude optical properties, with relative permeability set always to one. | |
qpms_epsmu_t | qpms_lorentzdrude_epsmu_g (complex double omega, const void *ldparams) |
Lorentz-Drude optical properties, with relative permeability set always to one, compatible with qpms_epsmu_generator_t. More... | |
qpms_permittivity_interpolator_t * | qpms_permittivity_interpolator_create (const size_t incount, const double *wavelength_m, const double *n, const double *k, const gsl_interp_type *iptype) |
Creates a permittivity interpolator from tabulated wavelengths, refraction indices and extinction coeffs. More... | |
qpms_permittivity_interpolator_t * | qpms_permittivity_interpolator_from_yml (const char *path, const gsl_interp_type *iptype) |
Creates a permittivity interpolator from an yml file downloaded from refractiveindex.info website. More... | |
complex double | qpms_permittivity_interpolator_eps_at_omega (const qpms_permittivity_interpolator_t *interp, double omega_SI) |
Evaluates interpolated material permittivity at a given angular frequency. | |
qpms_epsmu_t | qpms_permittivity_interpolator_epsmu_g (complex double omega, const void *interpolator) |
Evaluates interpolated material permittivity at a given angular frequency, qpms_epsmu_generator_t compatible version. More... | |
double | qpms_permittivity_interpolator_omega_min (const qpms_permittivity_interpolator_t *ip) |
Returns the minimum angular frequency supported by the interpolator. | |
double | qpms_permittivity_interpolator_omega_max (const qpms_permittivity_interpolator_t *ip) |
Returns the minimum angular frequency supported by the interpolator. | |
void | qpms_permittivity_interpolator_free (qpms_permittivity_interpolator_t *interp) |
Destroy a permittivity interpolator. | |
static complex double | qpms_drude_epsilon (complex double eps_inf, complex double omega_p, complex double gamma_p, complex double omega) |
Relative permittivity from the Drude model. More... | |
Variables | |
const qpms_ldparams_t *const | QPMS_LDPARAMS_AG |
Lorentz-Drude parameters from [rakic_optical_1998] for silver. | |
const qpms_ldparams_t *const | QPMS_LDPARAMS_AU |
Lorentz-Drude parameters from [rakic_optical_1998] for gold. | |
const qpms_ldparams_t *const | QPMS_LDPARAMS_CU |
Lorentz-Drude parameters from [rakic_optical_1998] for copper. | |
const qpms_ldparams_t *const | QPMS_LDPARAMS_AL |
Lorentz-Drude parameters from [rakic_optical_1998] for aluminium. | |
const qpms_ldparams_t *const | QPMS_LDPARAMS_CR |
Lorentz-Drude parameters from [rakic_optical_1998] for chromium. | |
const qpms_ldparams_t *const | QPMS_LDPARAMS_TI |
Lorentz-Drude parameters from [rakic_optical_1998] for titanium. | |
const qpms_ldparams_t *const | QPMS_LDPARAMS_BE |
Lorentz-Drude parameters from [rakic_optical_1998] for beryllium. | |
const qpms_ldparams_t *const | QPMS_LDPARAMS_NI |
Lorentz-Drude parameters from [rakic_optical_1998] for nickel. | |
const qpms_ldparams_t *const | QPMS_LDPARAMS_PD |
Lorentz-Drude parameters from [rakic_optical_1998] for polonium. | |
const qpms_ldparams_t *const | QPMS_LDPARAMS_PT |
Lorentz-Drude parameters from [rakic_optical_1998] for platinum. | |
const qpms_ldparams_t *const | QPMS_LDPARAMS_W |
Lorentz-Drude parameters from [rakic_optical_1998] for tungsten. | |
Optical properties of materials.
typedef struct qpms_ldparams_t qpms_ldparams_t |
Structure holding Lorentz-Drude model parameters of a material.
\[ \varepsilon = \varepsilon_\infty + \sum_j=0^{n-1} \frac{f_j \omega_p^2}{\omega_j^2-\omega^2+i\omega\gamma_j} \]
|
inlinestatic |
Relative permittivity from the Drude model.
eps_inf | Relative permittivity "at infinity". |
omega_p | Plasma frequency \( \omega_p \) of the material. |
gamma_p | Decay constant \( \gamma_p \) of the material. |
omega | Frequency \( \omega \) at which the permittivity is evaluated. |
qpms_epsmu_t qpms_epsmu_const_g | ( | complex double | omega, |
const void * | epsmu | ||
) |
Constant optical property "generator" for qpms_epsmu_generator_t.
omega | Frequency ignored. |
epsmu | Points to the qpms_epsmu_t to be returned. |
qpms_epsmu_t qpms_lorentzdrude_epsmu_g | ( | complex double | omega, |
const void * | ldparams | ||
) |
Lorentz-Drude optical properties, with relative permeability set always to one, compatible with qpms_epsmu_generator_t.
ldparams | Lorentz-Drude parameters, in reality const qpms_ldparams_t *. |
qpms_permittivity_interpolator_t* qpms_permittivity_interpolator_create | ( | const size_t | incount, |
const double * | wavelength_m, | ||
const double * | n, | ||
const double * | k, | ||
const gsl_interp_type * | iptype | ||
) |
Creates a permittivity interpolator from tabulated wavelengths, refraction indices and extinction coeffs.
wavelength_m | Tabulated vacuum wavelength in metres, in strictly increasing order. |
n | Tabulated refraction indices at omega. |
k | Tabulated extinction coefficients. |
iptype | GSL interpolator type |
qpms_epsmu_t qpms_permittivity_interpolator_epsmu_g | ( | complex double | omega, |
const void * | interpolator | ||
) |
Evaluates interpolated material permittivity at a given angular frequency, qpms_epsmu_generator_t compatible version.
Permeability is always set to one. Imaginary part of omega is discarded.
omega | Angular frequency. The imaginary part is ignored! |
interpolator | Interpolator of type qpms_permittivity_interpolator_t |
qpms_permittivity_interpolator_t* qpms_permittivity_interpolator_from_yml | ( | const char * | path, |
const gsl_interp_type * | iptype | ||
) |
Creates a permittivity interpolator from an yml file downloaded from refractiveindex.info website.
path | Path to the yml file. |
iptype | GSL interpolator type |
|
inlinestatic |
Gets refractive index of a material from its permeability and permittivity.
\[ n = \sqrt{\mu_r \varepsilon_r} \]
|
inlinestatic |
Gets (relative) wave impedance \( \eta_r \) from material permeability and permittivity.
\eta_r = \sqrt{\mu_r / \varepsilon_r} \f]
|
inlinestatic |
Gets wave number k from angular frequency and material permeability and permittivity.
\[ k = \frac{n\omega}{c_0} = \frac{\omega\sqrt{\mu_r \varepsilon_r}}{c_0} \]