pyoptics.interfaces

Fresnel coefficients of a single planar interface between two media.

All functions take the angle of incidence phi_1 (in radians, measured from the surface normal) and the refractive indices n_1 of the incident and n_2 of the second medium. Every argument may be a number or an array; arrays broadcast against each other with the usual NumPy rules, so a sweep over angles and wavelengths is a single call.

Conventions

Fields vary as exp(i(k.r - omega*t)): a wave travelling in +z is exp(+i*k_z*z), and absorbing media have refractive indices n + i*kappa with kappa > 0. The normal component of the transmitted wave vector, k_0*n_2*cos(phi_2), is chosen with a non-negative imaginary part, so that transmitted waves (evanescent ones under total internal reflection, or waves in absorbing media) decay away from the interface.

The amplitude coefficients are ratios of the full electric field amplitudes with the sign convention of Hecht, Optics, eqs. (4.42) - (4.45): at normal incidence r_s = (n_1 - n_2)/(n_1 + n_2) and r_p = (n_2 - n_1)/(n_1 + n_2). The p-wave reference directions are such that r_p = tan(phi_1 - phi_2)/ tan(phi_1 + phi_2) for dielectrics, which vanishes at Brewster’s angle.

The energy coefficients R and T are ratios of the normal components of the time averaged Poynting vectors. They are well defined for a lossless incident medium (real n_1) only; then R + T = 1 also for an absorbing second medium, T being the power that enters it.

References

M. Born and E. Wolf, “Principles of Optics”, 7th ed., Cambridge University Press (1999), section 1.5.

  1. Hecht, “Optics”, 5th ed., Pearson (2017), section 4.6.

  1. Zangwill, “Modern Electrodynamics”, Cambridge University Press (2013).

R. M. A. Azzam and N. M. Bashara, “Ellipsometry and Polarized Light”, North-Holland (1977).

Functions

R_p

Reflectance (power reflection coefficient) for p-polarized waves.

R_s

Reflectance (power reflection coefficient) for s-polarized waves.

T_p

Transmittance (power transmission coefficient) for p-polarized waves.

T_s

Transmittance (power transmission coefficient) for s-polarized waves.

brewster_angle

Brewster's angle, at which the p-wave reflectance vanishes.

critical_angle

Critical angle for total internal reflection.

r_p

Reflection coefficient (field amplitude) for p-polarized waves.

r_s

Reflection coefficient (field amplitude) for s-polarized waves.

refracted_angle

Angle of the refracted wave from Snell's law.

t_p

Transmission coefficient (field amplitude) for p-polarized waves.

t_s

Transmission coefficient (field amplitude) for s-polarized waves.

pyoptics.interfaces.refracted_angle(phi_1, n_1, n_2)[source]

Angle of the refracted wave from Snell’s law.

Parameters:
phi_1number or array

Angle of incidence in radians.

n_1, n_2numbers or arrays

(Complex) refractive indices of the incident and the second medium.

Returns:
phi_2number or array

Refracted angle in radians, solving n_1*sin(phi_1) = n_2*sin(phi_2). Real for propagating waves between lossless media, complex under total internal reflection or for absorbing media. Of the two solutions of Snell’s law, the one with Im(n_2*cos(phi_2)) >= 0 is returned, i.e. the transmitted wave exp(i*n_2*k_0*cos(phi_2)*z) decays (exp(-i*omega*t) convention).

pyoptics.interfaces.r_s(phi_1, n_1, n_2)[source]

Reflection coefficient (field amplitude) for s-polarized waves.

Parameters:
phi_1number or array

Angle of incidence in radians.

n_1, n_2numbers or arrays

(Complex) refractive indices of the incident and the second medium.

Returns:
rnumber or array

(n_1*cos(phi_1) - n_2*cos(phi_2))/(n_1*cos(phi_1) + n_2*cos(phi_2)). Real for propagating waves between lossless media, complex otherwise.

pyoptics.interfaces.r_p(phi_1, n_1, n_2)[source]

Reflection coefficient (field amplitude) for p-polarized waves.

Parameters:
phi_1number or array

Angle of incidence in radians.

n_1, n_2numbers or arrays

(Complex) refractive indices of the incident and the second medium.

Returns:
rnumber or array

(n_2*cos(phi_1) - n_1*cos(phi_2))/(n_2*cos(phi_1) + n_1*cos(phi_2)). Real for propagating waves between lossless media, complex otherwise.

pyoptics.interfaces.t_s(phi_1, n_1, n_2)[source]

Transmission coefficient (field amplitude) for s-polarized waves.

Parameters:
phi_1number or array

Angle of incidence in radians.

n_1, n_2numbers or arrays

(Complex) refractive indices of the incident and the second medium.

Returns:
tnumber or array

2*n_1*cos(phi_1)/(n_1*cos(phi_1) + n_2*cos(phi_2)). Note t_s = 1 + r_s.

pyoptics.interfaces.t_p(phi_1, n_1, n_2)[source]

Transmission coefficient (field amplitude) for p-polarized waves.

Parameters:
phi_1number or array

Angle of incidence in radians.

n_1, n_2numbers or arrays

(Complex) refractive indices of the incident and the second medium.

Returns:
tnumber or array

2*n_1*cos(phi_1)/(n_2*cos(phi_1) + n_1*cos(phi_2)). Note n_2*t_p = n_1*(1 + r_p).

pyoptics.interfaces.R_s(phi_1, n_1, n_2)[source]

Reflectance (power reflection coefficient) for s-polarized waves.

Parameters:
phi_1number or array

Angle of incidence in radians.

n_1, n_2numbers or arrays

(Complex) refractive indices of the incident and the second medium.

Returns:
Rnumber or array

|r_s|**2.

pyoptics.interfaces.R_p(phi_1, n_1, n_2)[source]

Reflectance (power reflection coefficient) for p-polarized waves.

Parameters:
phi_1number or array

Angle of incidence in radians.

n_1, n_2numbers or arrays

(Complex) refractive indices of the incident and the second medium.

Returns:
Rnumber or array

|r_p|**2.

pyoptics.interfaces.T_s(phi_1, n_1, n_2)[source]

Transmittance (power transmission coefficient) for s-polarized waves.

Ratio of the normal components of the time averaged Poynting vectors of the transmitted and the incident wave. T_s = 0 under total internal reflection, and R_s + T_s = 1 for a lossless incident medium.

Parameters:
phi_1number or array

Angle of incidence in radians.

n_1, n_2numbers or arrays

Refractive indices of the incident (real) and the second (complex) medium.

Returns:
Tnumber or array

Re(n_2*cos(phi_2))/Re(n_1*cos(phi_1))*|t_s|**2.

pyoptics.interfaces.T_p(phi_1, n_1, n_2)[source]

Transmittance (power transmission coefficient) for p-polarized waves.

Ratio of the normal components of the time averaged Poynting vectors of the transmitted and the incident wave. T_p = 0 under total internal reflection, and R_p + T_p = 1 for a lossless incident medium.

Parameters:
phi_1number or array

Angle of incidence in radians.

n_1, n_2numbers or arrays

Refractive indices of the incident (real) and the second (complex) medium.

Returns:
Tnumber or array

Re(conj(n_2)*cos(phi_2))/Re(conj(n_1)*cos(phi_1))*|t_p|**2.

pyoptics.interfaces.brewster_angle(n_1, n_2)[source]

Brewster’s angle, at which the p-wave reflectance vanishes.

Parameters:
n_1, n_2numbers or arrays

Real refractive indices of the incident and the second medium.

Returns:
phi_Bnumber or array

arctan(n_2/n_1) in radians. Brewster’s angle exists for both directions of incidence; going from the denser medium, it lies below the critical angle.

pyoptics.interfaces.critical_angle(n_1, n_2)[source]

Critical angle for total internal reflection.

Parameters:
n_1, n_2numbers or arrays

Real refractive indices of the incident and the second medium.

Returns:
phi_cnumber or array

arcsin(n_2/n_1) in radians where n_1 >= n_2, NaN where n_1 < n_2 (no total internal reflection when going into a denser medium).