dispersion_scan: Calculate optical response as a function of both angle and...

Description Usage Arguments Details Value References Examples

View source: R/dispersion_scan.R

Description

Calculate reflectivity, transmission and absorption as a function of both angle and wavelength

Usage

1
2
3
4
5
6
7
8
9
dispersion_scan(
  layers,
  angles = seq(0, 90, length.out = 100),
  wavelengths = seq(3.5e-07, 8.5e-07, length.out = 100),
  polarisation = "p",
  incident_medium.index = complex(real = 1, imaginary = 0),
  exit_medium.index = complex(real = 1, imaginary = 0),
  show.progress = TRUE
)

Arguments

layers

A list object containing the stack parameters. Must include index, thickness and (optionally) repetitions. See details and examples for more information.

angles

The angle range in degrees. The default angle range is from 0 to 90.

wavelengths

The wavelength range of the calculated spectra, in meters. The default covers the visible range from 350 nm to 850 nm.

polarisation

Linear polarisation of the light. Acceptable arguments are 'p' (Transverse Magnetic) or 's' (Transverse Electric).

incident_medium.index

The global incident medium. Default is n=1+0i (air)

exit_medium.index

The global exit medium. Default is n=1+0i (air)

show.progress

Determine if a progress bar is to be printed to console

Details

The layers list should be constructed like so:

layers <- list(index = ..., thickness = ..., repetitions = ...)

where index and thickness are vectors containing the stack parameters in order from the top interface to the bottom. Repetitions is an integer repeating the stack.

Value

Returns a data.frame object with the following parts:

wavlength

The wavelength range in meters

angle

The angle range in radians

Reflection

The calculated reflectivity

Transmission

The calculated transmission

Absorption

The calculated absorption

References

Introduction to Optics 3rd Edition, Pearson international edition by Frank L. Pedrotti, Leno Matthew Pedrotti, Leno S. Pedrotti

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
layers <- list(index = c(2.35+0i,1.38+0i),
thickness = c(550e-9/(4*2.35),550e-9/(4*1.38)),
repetitions = 6)

R_highlowStack6 <- dispersion_scan(angles = seq(0,89,,100),
                                   incident_medium.index=1+0i,
                                   exit_medium.index = 1.52+0i,
                                   layers = layers,
                                   show.progress = FALSE)

x <- unique(R_highlowStack6$angle)
y <- unique(R_highlowStack6$wavelength)
image(x = x,
      y = y*1e9,
      z = matrix(R_highlowStack6$Reflection,nrow=100), 
      xlab = expression(angle~(degree)),
      ylab = "wavelength (nm)")

tjconstant/mlfilms documentation built on April 25, 2020, 3:24 p.m.