R/dispersion_scan.R
dispersion_scan.Rd
Calculate reflectivity, transmission and absorption as a function of both angle and wavelength
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)
layers | A list object containing the stack parameters. Must include index, thickness and 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 is a progress bar is to be printed to console |
Returns a dataframe object with the following parts:
The wavelength range in meters
The angle range in radians
The calculated reflectivity
The calculated transmission
The calculated absorption
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.
Introduction to Optics 3rd Edition, Pearson international edition by Frank L. Pedrotti, Leno Matthew Pedrotti, Leno S. Pedrotti
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)")