psfsim.mirror_properties

Attributes

parser

Functions

n_medium(epsilon, mu)

Compute n of this medium.

cosine_theta_medium(theta_inc, n_inc, n_medium)

Compute cos(theta_medium) from conserved transverse wavevector.

tilted_optical_admittance(cos_theta_medium, epsilon, ...)

Tilted optical admittance, Q(z) = [U(z),V(z)]

thin_film_characteristic_matrix(thickness, k_0, n_inc, ...)

Characteristic matrix for a single thin film layer.

effective_admittance(matrix, Q_0)

Effective admittance seen at the entrance of the layer stack, given substrate

reflection_coefficient(Q_vacuum, Q_medium)

Reflection coefficient for an incident beam going from vacuum into a medium

sio2_epsilon(wavelength)

Computes the Sellmeier formula for n^2 from Malitson, 1965.

ag_epsilon(wavelength)

Computes the Yang et al 2015 dielectric function.

reflect_RB_off_mirror(thetas, wavelength[, ...])

Mirror class that calculates the S and P reflectances for a set

reflect_RB_model(thetas, wavelength)

Mirror reflection coefficient model.

Module Contents

n_medium(epsilon, mu)[source]

Compute n of this medium.

Parameters:
  • epsilon (complex) – The dielectric and diamagnetic constants.

  • mu (complex) – The dielectric and diamagnetic constants.

Returns:

The complex index of refraction.

Return type:

complex

cosine_theta_medium(theta_inc, n_inc, n_medium)[source]

Compute cos(theta_medium) from conserved transverse wavevector.

This is n_inc * sin(theta_inc) = n_med * sin(theta_med)

Parameters:
  • theta_inc (float) – Incident angle of RomanRayBundle onto the surface of the medium

  • n_inc (complex) – Indices of refraction for the incident (usually vacuum) and medium

  • n_medium (complex) – Indices of refraction for the incident (usually vacuum) and medium

Returns:

Cosine of the reduced angle in the medium. May be complex if the medium is lossy.

Return type:

complex

tilted_optical_admittance(cos_theta_medium, epsilon, mu, polarisation_mode)[source]

Tilted optical admittance, Q(z) = [U(z),V(z)]

For TE: Q = (1/z) * cos(theta_medium) For TM: Q = z * cos(theta_medium)

Parameters:
  • cos_theta_medium (float or np.ndarray of float) – Cosine of the angle theta in that layer

  • epsilon (complex) – Elec. permittivity and mag. permeability of the layer

  • mu (complex) – Elec. permittivity and mag. permeability of the layer

  • polarisation_mode (str) – Can pass either {TM or P} or {TE or S} as choices

Returns:

Q(z); form depends on polarisation_mode.

Return type:

complex

thin_film_characteristic_matrix(thickness, k_0, n_inc, theta_inc, epsilon, mu, polarisation_mode)[source]

Characteristic matrix for a single thin film layer.

Parameters:
  • thickness (float) – Thickness of the thin film in nm

  • k_0 (float) – Vacuum wavevector in inverse mm

  • n_inc (complex) – Refractive index of the incident medium, used to define the conserved transverse wavevector

  • theta_inc (float or np.ndarray of float) – Angle of incidence rel. to normal in radians

  • epsilon (complex) – Relative elec. permittivity and mag. permeability of this layer

  • mu (complex) – Relative elec. permittivity and mag. permeability of this layer

  • polarisation_mode (str) – Which polarisation mode is being solved for, TE or TM

Returns:

Characteristic matrix for this layer, (2x2)

Return type:

np.array of complex

effective_admittance(matrix, Q_0)[source]

Effective admittance seen at the entrance of the layer stack, given substrate admittance Q_0 and the characteristic matrix for the thin film above it.

Parameters:
  • matrix (np.array) – Characteristic matrix of thin film above substrate

  • Q_0 (complex) – The optical admittance of the substrate

Returns:

Q – Effective admittance for the layer stack

Return type:

complex

reflection_coefficient(Q_vacuum, Q_medium)[source]

Reflection coefficient for an incident beam going from vacuum into a medium

Parameters:
  • Q_vacuum (complex) – Admittance in vacuum

  • Q_medium (complex or np.ndarray of complex) – Optical admittance of the medium

Returns:

Complex-valued reflection coefficient

Return type:

complex or np.ndarray of complex

sio2_epsilon(wavelength: float)[source]

Computes the Sellmeier formula for n^2 from Malitson, 1965.

Parameters:

wavelength (float) – Wavelength in microns.

Returns:

epsilon – SiO2 electric permittivity (real valued).

Return type:

float

ag_epsilon(wavelength: float)[source]

Computes the Yang et al 2015 dielectric function.

Parameters:

wavelength (float) – wavelength in microns

Returns:

Complex-valued dielectric constant of silver.

Return type:

complex

reflect_RB_off_mirror(thetas, wavelength, epsilon_coat=2.1, thickness=110.0, reduce=0.0)[source]

Mirror class that calculates the S and P reflectances for a set of angles theta, for a given wavelength

Parameters:
  • thetas (np.array) – Angles in radians

  • wavelength (float) – wavelength in mm

  • epsilon_coat (float or list, optional) – The dielectric constant of the coating layer (set to None for SiO2).

  • thickness (float or list, optional) – Thickness of the coating in nm.

  • reduce (float, optional) – If specified, adjust the epsilon_2 (lossy part) of the silver at short wavelengths. (This varies by sample, so we allow it when doing an empirical fit.)

Returns:

te_ceofs, tm_coefs – Complex-valued reflection coefficients for the TE & TM modes

Return type:

complex

Notes

epsilon_coat and thickness should be either both floats (single layer) or lists (multi-layer, in order from the silver toward vacuum).

reflect_RB_model(thetas, wavelength)[source]

Mirror reflection coefficient model.

This is packaged so you can use it in romantrace.py.

Right now this is an idealized 1-layer coating. It gets the right behavior for the reflectivities, and the correct linear retardance behavior with zero-crossing at 600 nm.

The reflectivities at 45 degrees (compared to the data we got from L3 Harris) are:

Wavelength

S-pol model

S-pol data

P-pol model

P-pol data

500 nm

98.8%

99.0%

97.5%

97.8%

1100 nm

97.9%

97.8%

98.2%

97.8%

2400 nm

99.2%

99.5%

98.7%

98.5%

So for now I recommend using this only to assess how significant the polarization effects are likely to be — this isn’t the “truth”!

There is a phase shift inserted here so that the reflectivity is measured relative to an ideal surface at 160 nm below (toward substrate) relative to the top surface of the protective coating.

Parameters:
  • thetas (np.array) – Angles in radians

  • wavelength (float) – wavelength in mm

Returns:

te_ceofs, tm_coefs – Complex-valued reflection coefficients for the TE & TM modes

Return type:

complex

parser[source]