pulsesuite.libpulsesuite.materialproperties

Material properties module.

Accesses the materials database and retrieves various material parameters such as refractive index, dispersion coefficients, nonlinear index, absorption, and plasma parameters.

Converted from materialproperties.F90.

Author: Rahul R. Sah

Attributes

log

Classes

MatError

Enum where members are also (and must be) ints

Functions

set_database_file(→ None)

Set the local materials database file path.

sellmeiercoeff(→ Tuple[float, numpy.ndarray, ...)

Retrieve the Sellmeier coefficients from the materials database.

n0_sellmeier(→ float)

Calculate the index of refraction from Sellmeier coefficients.

n0(→ float)

Calculate or retrieve the index of refraction.

n2I(→ float)

Retrieve the intensity-based nonlinear refractive index n2I [m^2/W].

n2F(→ float)

Retrieve the field-based nonlinear refractive index n2F [m^2/V^2].

alpha(→ float)

Return the linear absorption coefficient [1/m].

beta(→ float)

Retrieve the two-photon absorption coefficient.

Vp(→ float)

Calculate the phase velocity [m/s].

k0_val(→ float)

Calculate the magnitude of the wavevector k0 = 2*pi*n0/lam.

Vg(→ float)

Calculate the group velocity as 1/k1 [m/s].

k1(→ float)

Calculate dk/dw (first-order dispersion, inverse group velocity) [s/m].

k2(→ float)

Calculate d^2k/dw^2 (group velocity dispersion) [s^2/m].

k3(→ float)

Calculate d^3k/dw^3 (third-order dispersion) [s^3/m].

k4(→ float)

Calculate d^4k/dw^4 (fourth-order dispersion) [s^4/m].

k5(→ float)

Calculate d^5k/dw^5 (fifth-order dispersion) [s^5/m].

GetKW(→ numpy.ndarray)

Create an array of k values for the given angular frequencies.

Tr(→ float)

Retrieve the Raman response parameter [s].

GetPlasmaElectronMass(→ float)

Retrieve the plasma electron mass.

GetPlasmaBandGap(→ float)

Retrieve the plasma band gap.

GetPlasmaTrappingTime(→ float)

Retrieve the plasma trapping time.

GetPlasmaCollisionTime(→ float)

Retrieve the plasma collision time.

GetPlasmaMaximumDensity(→ float)

Retrieve the plasma maximum density.

GetPlasmaOrder(→ float)

Retrieve the plasma multi-photon ionisation order.

GetPlasmaCrossSection(→ float)

Retrieve the plasma multi-photon cross section.

Module Contents

pulsesuite.libpulsesuite.materialproperties.log
class pulsesuite.libpulsesuite.materialproperties.MatError

Bases: enum.IntEnum

Enum where members are also (and must be) ints

NOERROR = 0
NOFILE = 1
NOTFOUND = 2
FILE_FORMAT = 3
OUTOFRANGE = 4
BADVALUE = 5
DEFAULTUSED = 6
pulsesuite.libpulsesuite.materialproperties.set_database_file(path: str) None

Set the local materials database file path.

pulsesuite.libpulsesuite.materialproperties.sellmeiercoeff(mat: str, lam: float) Tuple[float, numpy.ndarray, numpy.ndarray, int]

Retrieve the Sellmeier coefficients from the materials database.

Returns (A, B, C, err).

pulsesuite.libpulsesuite.materialproperties.n0_sellmeier(A: float, B: numpy.ndarray, C: numpy.ndarray, lam: float) float

Calculate the index of refraction from Sellmeier coefficients.

n0 = sqrt(A + sum(B * lam^2 / (lam^2 - C)))

pulsesuite.libpulsesuite.materialproperties.n0(mat: str, lam: float, err: list | None = None) float

Calculate or retrieve the index of refraction.

Uses Sellmeier coefficients when available, otherwise looks for discrete values in the database.

Parameters:
  • mat (str) – Material name (case-insensitive).

  • lam (float) – Wavelength in metres.

  • err (list, optional) – Single-element list [0]; on return holds the error code.

Returns:

Linear refractive index.

Return type:

float

pulsesuite.libpulsesuite.materialproperties.n2I(mat: str, lam: float, err: list | None = None) float

Retrieve the intensity-based nonlinear refractive index n2I [m^2/W].

pulsesuite.libpulsesuite.materialproperties.n2F(mat: str, lam: float, err: list | None = None) float

Retrieve the field-based nonlinear refractive index n2F [m^2/V^2].

pulsesuite.libpulsesuite.materialproperties.alpha(mat: str, lam: float, err: list | None = None) float

Return the linear absorption coefficient [1/m].

Uses spline interpolation of the Absorption array when available, falls back to discrete lookup.

pulsesuite.libpulsesuite.materialproperties.beta(mat: str, lam: float, err: list | None = None) float

Retrieve the two-photon absorption coefficient.

pulsesuite.libpulsesuite.materialproperties.Vp(mat: str, lam: float, err: list | None = None) float

Calculate the phase velocity [m/s].

pulsesuite.libpulsesuite.materialproperties.k0_val(mat: str, lam: float, err: list | None = None) float

Calculate the magnitude of the wavevector k0 = 2*pi*n0/lam.

pulsesuite.libpulsesuite.materialproperties.Vg(mat: str, lam: float, err: list | None = None) float

Calculate the group velocity as 1/k1 [m/s].

pulsesuite.libpulsesuite.materialproperties.k1(mat: str, lam: float, err: list | None = None) float

Calculate dk/dw (first-order dispersion, inverse group velocity) [s/m].

Uses frequency-domain Sellmeier when available, then falls back to discrete k1 or Vg values.

pulsesuite.libpulsesuite.materialproperties.k2(mat: str, lam: float, err: list | None = None) float

Calculate d^2k/dw^2 (group velocity dispersion) [s^2/m].

pulsesuite.libpulsesuite.materialproperties.k3(mat: str, lam: float, err: list | None = None) float

Calculate d^3k/dw^3 (third-order dispersion) [s^3/m].

pulsesuite.libpulsesuite.materialproperties.k4(mat: str, lam: float, err: list | None = None) float

Calculate d^4k/dw^4 (fourth-order dispersion) [s^4/m].

pulsesuite.libpulsesuite.materialproperties.k5(mat: str, lam: float, err: list | None = None) float

Calculate d^5k/dw^5 (fifth-order dispersion) [s^5/m].

pulsesuite.libpulsesuite.materialproperties.GetKW(mat: str, W: numpy.ndarray, err: list | None = None) numpy.ndarray

Create an array of k values for the given angular frequencies.

Parameters:
  • mat (str) – Material name.

  • W (ndarray) – Angular frequency array [rad/s].

  • err (list, optional) – Single-element list for error code.

Returns:

k(w) array.

Return type:

ndarray

pulsesuite.libpulsesuite.materialproperties.Tr(mat: str, lam: float, err: list | None = None) float

Retrieve the Raman response parameter [s].

pulsesuite.libpulsesuite.materialproperties.GetPlasmaElectronMass(mat: str, lam: float, err: list | None = None) float

Retrieve the plasma electron mass.

pulsesuite.libpulsesuite.materialproperties.GetPlasmaBandGap(mat: str, lam: float, err: list | None = None) float

Retrieve the plasma band gap.

pulsesuite.libpulsesuite.materialproperties.GetPlasmaTrappingTime(mat: str, lam: float, err: list | None = None) float

Retrieve the plasma trapping time.

pulsesuite.libpulsesuite.materialproperties.GetPlasmaCollisionTime(mat: str, lam: float, err: list | None = None) float

Retrieve the plasma collision time.

pulsesuite.libpulsesuite.materialproperties.GetPlasmaMaximumDensity(mat: str, lam: float, err: list | None = None) float

Retrieve the plasma maximum density.

pulsesuite.libpulsesuite.materialproperties.GetPlasmaOrder(mat: str, lam: float, err: list | None = None) float

Retrieve the plasma multi-photon ionisation order.

pulsesuite.libpulsesuite.materialproperties.GetPlasmaCrossSection(mat: str, lam: float, err: list | None = None) float

Retrieve the plasma multi-photon cross section.