materials.abbe
Abbe Material
This module defines a material based on the refractive index and Abbe number. It provides support for both d-line (587.56 nm) and e-line (546.07 nm) definitions.
Models: 1. “polynomial”: A polynomial fit to glass data (Legacy, D-line only). 2. “buchdahl”: A Buchdahl 3-term model with LASSO-derived coefficients.
Kramer Harrison, 2024
Classes
|
Represents a material based on the refractive index and Abbe number. |
|
Represents a material based on the refractive index and Abbe number at e-line. |
Abstract base class for Abbe number based material models. |
|
|
Legacy polynomial model for Abbe materials (d-line). |
|
Buchdahl model for d-line (587.56 nm) materials. |
|
Buchdahl model for e-line (546.07 nm) materials. |
|
Base class for Buchdahl 3-term models. |
- class AbbeMaterial(n, abbe, model=None)[source]
Represents a material based on the refractive index and Abbe number.
This class serves as a wrapper around specific model implementations. Currently supported models: - ‘polynomial’: The legacy polynomial fit (Default, deprecated). - ‘buchdahl’: The new Buchdahl 3-term model (Recommended).
- Parameters:
n (float) – The refractive index of the material at 587.56 nm (n_d).
abbe (float) – The Abbe number of the material (V_d).
model (str, optional) – The model to use. Defaults to “polynomial”. Valid options are “polynomial” and “buchdahl”.
- index
The refractive index of the material at 587.56 nm.
- Type:
float
- abbe
The Abbe number of the material.
- Type:
float
- model_name
The name of the model being used.
- Type:
str
- abbe() float
Calculate the Abbe number (Vd) of the material.
The Abbe number is a measure of the material’s dispersion, defined as Vd = (n_d - 1) / (n_F - n_C), where n_d, n_F, and n_C are the refractive indices at the Fraunhofer d (587.5618 nm), F (486.1327 nm), and C (656.2725 nm) spectral lines, respectively.
- Returns:
The Abbe number of the material.
- Return type:
float
- k(wavelength: float | be.ndarray, **kwargs) float | be.ndarray
Calculates the extinction coefficient at a given wavelength with caching.
- Parameters:
wavelength (float | be.ndarray) – The wavelength(s) of light in microns. Can be a float, numpy array, or torch tensor.
**kwargs – Additional keyword arguments for calculation.
- Returns:
The extinction coefficient at the given wavelength(s).
- Return type:
float | be.ndarray
- n(wavelength: float | be.ndarray, **kwargs) float | be.ndarray
Calculates the refractive index at a given wavelength with caching.
- Parameters:
wavelength (float | be.ndarray) – The wavelength(s) of light in microns. Can be a float, numpy array, or torch tensor.
**kwargs – Additional keyword arguments for calculation (e.g., temperature).
- Returns:
The refractive index at the given wavelength(s).
- Return type:
float | be.ndarray
- class AbbeMaterialE(n, abbe)[source]
Represents a material based on the refractive index and Abbe number at e-line.
This class uses a Buchdahl 3-term model fitted to e-line (546.07 nm) data.
- Parameters:
n (float) – The refractive index of the material at 546.07 nm (n_e).
abbe (float) – The Abbe number of the material (V_e).
- index
The refractive index of the material at 546.07 nm.
- Type:
float
- abbe
The Abbe number of the material (V_e).
- Type:
float
- model
The underlying model instance.
- Type:
- abbe() float
Calculate the Abbe number (Vd) of the material.
The Abbe number is a measure of the material’s dispersion, defined as Vd = (n_d - 1) / (n_F - n_C), where n_d, n_F, and n_C are the refractive indices at the Fraunhofer d (587.5618 nm), F (486.1327 nm), and C (656.2725 nm) spectral lines, respectively.
- Returns:
The Abbe number of the material.
- Return type:
float
- k(wavelength: float | be.ndarray, **kwargs) float | be.ndarray
Calculates the extinction coefficient at a given wavelength with caching.
- Parameters:
wavelength (float | be.ndarray) – The wavelength(s) of light in microns. Can be a float, numpy array, or torch tensor.
**kwargs – Additional keyword arguments for calculation.
- Returns:
The extinction coefficient at the given wavelength(s).
- Return type:
float | be.ndarray
- n(wavelength: float | be.ndarray, **kwargs) float | be.ndarray
Calculates the refractive index at a given wavelength with caching.
- Parameters:
wavelength (float | be.ndarray) – The wavelength(s) of light in microns. Can be a float, numpy array, or torch tensor.
**kwargs – Additional keyword arguments for calculation (e.g., temperature).
- Returns:
The refractive index at the given wavelength(s).
- Return type:
float | be.ndarray
- class AbbeModel[source]
Abstract base class for Abbe number based material models.
- class AbbePolynomialModel(index: float, abbe: float)[source]
Legacy polynomial model for Abbe materials (d-line).
This model uses a polynomial fit to glass data from the Schott catalog. It corresponds to the original implementation of AbbeMaterial.
- class BuchdahlDModel(index: float, abbe: float)[source]
Buchdahl model for d-line (587.56 nm) materials.
- ALPHA = 2.5
- V1_COEFFS = [0.00416, 4.462559, 2.32666, 0.00233, -0.003697, -4.697604]
- V2_COEFFS = [0.066434, -7.636396, 12.597434, -0.037014, 5.551013]
- V3_COEFFS = [-0.032218, 2.230357, -103.318994, -0.009654, 1.934983]
- WAVE_REF = 0.5875618
- predict_k(wavelength: float | be.ndarray) float | be.ndarray
Predicts the extinction coefficient at a given wavelength.
- predict_n(wavelength: float | be.ndarray) float | be.ndarray
Predicts the refractive index at a given wavelength.
- class BuchdahlEModel(index: float, abbe: float)[source]
Buchdahl model for e-line (546.07 nm) materials.
- ALPHA = 2.5
- WAVE_REF = 0.546074
- predict_k(wavelength: float | be.ndarray) float | be.ndarray
Predicts the extinction coefficient at a given wavelength.
- predict_n(wavelength: float | be.ndarray) float | be.ndarray
Predicts the refractive index at a given wavelength.
- class BuchdahlModel(index: float, abbe: float)[source]
Base class for Buchdahl 3-term models.
- ALPHA = 2.5
- abstract property WAVE_REF: float
Reference wavelength in microns.