jaxlayerlumos.utils_graded_layers

Utilities for replacing sharp interfaces with graded material layers.

jaxlayerlumos.utils_graded_layers._get_grade_thicknesses(grade_thickness, interface_indices)
jaxlayerlumos.utils_graded_layers._get_interface_indices(thicknesses, interface_indices)
jaxlayerlumos.utils_graded_layers.get_graded_layers(n_k, thicknesses, num_graded_layers=10, grade_thickness=None, method='linear', beta=3.0, interface_indices=None)

Replace selected sharp interfaces with mixed graded layers.

Parameters:
  • n_k (jnp.ndarray) – Complex refractive indices with shape (n_frequencies, n_layers).

  • thicknesses (jnp.ndarray) – Layer thicknesses with shape (n_layers,).

  • num_graded_layers (int) – Number of true intermediate mixed layers per selected interface. Pure endpoint materials are not counted.

  • grade_thickness – Total thickness assigned to each graded interface. May be a scalar or a 1D array with one value per selected interface.

  • method (str) – Mixing method. Use “linear”, “sine”, or “exponential”.

  • beta (float) – Exponential steepness. Used only when method=”exponential”. beta=0 falls back to linear.

  • interface_indices – Optional layer indices i selecting interfaces between layer i and layer i + 1. By default, all interfaces whose left and right layers both have positive thickness are selected.

Returns:

The graded n_k stack and matching thickness array, ready to pass to stackrt.

Return type:

tuple[jnp.ndarray, jnp.ndarray]

jaxlayerlumos.utils_graded_layers.get_mixing_ratios(num_graded_layers, method='linear', beta=3.0)

Return material-2 fractions for true intermediate graded layers.

The pure endpoint materials are not included in the graded layer set. For 10 linear graded layers this returns 1/11, 2/11, …, 10/11.

Parameters:
  • num_graded_layers (int) – Number of true intermediate mixed layers.

  • method (str) – One of “linear”, “sine”, or “exponential”.

  • beta (float) – Exponential steepness. beta=0 falls back to linear.