Technical Issues - Importing Index Tables and Functions

New June 2020...Click here for access to optical glass databases.

1. Copy and Paste

If you can view W|n|k columns in Excel you can copy and paste (File.. Paste Table) in INDEX. Note, however, that there are several format options in Setup.. Parameters. Unsure about format? Open any INDEX .itw file and click File.. Copy Table to view in Excel or in a text editor like Notepad++. After importing, click Graph.. Auto Scale before saving in INDEX .itw format. Another option is to directly import Excel .xls or .xlsx files.

2. Sopra Materials Database

Soprank.exe installs the Sopra database (278 materials measured by spectroscopic ellipsometry) of optical indices. Using program INDEX, Sopra index files (*.nk) can be imported and re-stored as FilmStar index files (*.itw) via File...Import. Install after installing FilmStar.

3. RefractiveIndex.INFO

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.

a. 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.

wl,n
0.3800,1.7905788
0.4012,1.7776074
0.4224,1.7673621
0.4436,1.7590649
...
...
wl,k
0.380,1.9467E-06
0.390,9.9127E-07
0.400,5.6823E-07
0.405,4.5981E-07

CSV files can be automatically imported with FilmStar INDEX macro RefractiveIndexInfo.bas. 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.

RefractiveIndex.INFO

b. 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 website original: SQR( 1 + x^2/(0.3653*x^2-73e-4) )

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.)

As shown below, published n,k values can vary significant. Data for Kischkat, Luke, and Philipp are from RefractiveIndex.INFO. Filmetrics data are found here and include the warning No guarantee of accuracy - use at your own risk.

Si3N4 (Silicon Nitride)


4. Luxpop.com

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.

Luxpop

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.


5. Extract from n,k Graphs

A fourth 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 Dagra digitizing software.
 

a. Digitize the graph (CrN-Aouadi.dag) and export a CSV file (CrN-Aouadi.csv).

b. Open INDEX and (in this case) select eV in Setup.. Parameters. Open and review the CSV file in Excel. It should be in wave, n, k format. In this case we deleted wavelength column C after making sure it had the same values as column A.

c. Copy data to the clipboard and paste into INDEX with File.. Paste <Ctrl+V>. Optionally change scale to nm and click Graph.. Auto Scale <Ctrl+A>. Tweak axes settings and save as INDEX file (CrN-Aouadi.itw).


INDEX Setup Parameters

Other programs which may be useful are DigitizeIt and Engauge Digitizer (free).


6. Importing Excel Data

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. (If there are only a few Excel tables to import, it's easier to just copy and paste.)

' 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.

Copyright © 2023 FTG Software Associates
Last updated on January 31, 2023