Source code for solprop.physdata.metals

# SPDX-FileCopyrightText: 2026 John C. Travers and contributors
#
# SPDX-License-Identifier: GPL-3.0-or-later

"""Provide silver and aluminium optical constants for waveguide walls.

The historical name ``GlassIndex`` denotes the common index interface, including
metals. Each metal is optmat's stitched table with the interpolant's exact derivative
(:doc:`/guide/media/materials`).
"""

from solprop.physdata.glasses import GlassIndex, _resolve
from solprop.physdata.selection import ModelChoice

__all__ = ["aluminium", "silver"]


[docs] def silver(*, model: ModelChoice | None = None) -> GlassIndex: """Return the silver index, with positive imaginary part for loss. Parameters ---------- model : str or OptmatModel or None, optional ``None`` or ``"recommended"`` is optmat's ``table/Ag``, stitched from primary sets, 4.1 nm to 12.4 um, with the interpolant's exact derivative, holding its end values outside its range with a warning; an optmat model name or object selects another (:class:`~solprop.physdata.glasses.OptmatGlass`). Returns ------- solprop.physdata.glasses.GlassIndex The complex index. Raises ------ MaterialError If the optmat model is unknown or not silver. Examples -------- >>> from solprop.physdata import silver >>> silver().source 'table/Ag' """ return _resolve("Ag", model)
[docs] def aluminium(*, model: ModelChoice | None = None) -> GlassIndex: """Return the aluminium index, with positive imaginary part for loss. Parameters ---------- model : str or OptmatModel or None, optional ``None`` or ``"recommended"`` is optmat's ``table/Al``, 0.79 nm to 200 um, holding its end values outside its range with a warning; an optmat model name or object selects another (:class:`~solprop.physdata.glasses.OptmatGlass`). Returns ------- solprop.physdata.glasses.GlassIndex The complex index. Raises ------ MaterialError If the optmat model is unknown or not aluminium. """ return _resolve("Al", model)