Technical Issues - Importing Index Tables and Functions
Dr. Mikhail Polyanskiy laudably maintains RefractiveIndex.INFO, a web compendium of n,k data for a number of materials. Data is presented in two formats: tables and dispersive formulas. Users should verify data and realize that film properties are different from bulk properties.
1. Tabulated tables have the following format (CSV). Note that wavelength is in microns and that the format was changed in 2014. n and k arrays do not need to have the same wavelength values and the k array will be absent in nonabsorbing materials. This is quite different from the original format.
CSV files can be automatically imported with FilmStar INDEX macro RefractiveIndexInfo.bas, included in the FilmStar installer. Some of the tables have very wide wavelength range. We have consequently modified INDEX's auto-scale function to use log wavelength axis when the max/min wavelength ratio is >=20. The graph below illustrates Al (Rakic). Please contact us if you find a CSV file that INDEX fails to import.
2. A variety of Sellmeier-type relations are utilized for glasses and similar materials. These can be imported into DESIGN and INDEX by clicking 'Expressions for n' and copying the Visual Basic code to the clipboard and pasting into the User Index Function Formula dialog as shown below. Be sure to leave out 'n ='.
Dy2O3 DESIGN/INDEX: SQR( 1 + x^2/(0.3653*x^2-.0073) )
Since DESIGN 2.61.0103 and INDEX 2.51.0102, most formulas can be used directly because x now substitutes for WM (wavelength in microns). A few formulas utilize scientific number notation which causes difficulties for FilmStar's equation parser. For this reason we replaced 73e-4 with .0073 (73*10^-4 works equally well.)
Another source for refractive index data is Guillaume Boisset's Luxpop.com. Click here for a direct link to the list of n,k files. While these have the same extension (NK) as Sopra files, formats are different. Users should verify data and realize that film properties are different from bulk properties.
Luxpop NK files can be imported with FilmStar INDEX macro LuxpopNK.bas, included in the FilmStar installer. Some of the tables have very wide wavelength range. INDEX's auto-scale function uses log wavelength axis when the max/min wavelength ratio is >=20.
INDEX 2.51.0120 adds Sub Display so that users may review the file header before proceeding. Users of older versions should comment out the following lines:
Display s$, "File Viewer - click <Close> to proceed", _ 9000, 4500, "Verdana", 10, 0 If MsgBox("Continue to import file?", vbQuestion + _ vbYesNo, "Luxpop n,k") = vbNo Then End
Wavelengths are in Angstroms as indicated by the string '(A)'. If '(A)' is not found, a 'Wavelength multiplier' prompt is provided for nm and Ám. (If you discover files in other units, please let us know.) NK files will open in Excel; use 'Text to Column' to convert column A into three columns A-C.
As displayed below, files may include hard X-ray to FIR wavelength ranges. The graph below includes 1175 data points.
In the graph below, wavelength range was reduced to VIS-NIR (52 points) by deleting lines in the Index Table. Hold down the <Ctrl+D> key to rapidly delete lines.
A third option is to extract data from published graphs. Recently a user requested n,k data for CrN. We couldn't find data in table form, but did find it in Figure 2 in a journal article by Aouadi et al.
The following instructions describe a
step-by-step procedure (with links) for creating INDEX (*.itw) files with
The following shows how to import Excel n,k tables. The first row contains labels Wave (nm) | n | k . Thus the number of data points is one less than the number of rows.
' IndexXL.bas for FilmStar INDEX ' Import n,k table from Excel Option Explicit Option Base 1 Sub Main Dim i%, nRows&, xIndx!() XLopen "C:\Winfilm\Index\HfO2-Sopra.xls" ' .xlsx also supported XLinfo nRows ReDim xIndx(nRows - 1, 3) ' Compensate for header row For i = 1 To nRows - 1 xIndx(i, 1) = XLcell(i + 1, 1) ' Wave in nm (or convert to nm) xIndx(i, 2) = XLcell(i + 1, 2) ' n xIndx(i, 3) = XLcell(i + 1, 3) ' k Next i nkTable = xIndx XLclose End Sub
Adding BASIC's FileSave, a modification of the above could loop through a directory and automatically save multiple .itw files. IsNumeric(XLcell(1, 1)) determines if the first cell is a header cell or not.